mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-31 22:04:06 +08:00
feat(界面设计): 图片排序改为自适应分段按钮
This commit is contained in:
1 parent
6a30e0d840
commit
8d60b1c45b
3 files changed
+25
-4
No files matched your search
@@ -356,7 +356,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="createImagesRow" class="form-row" hidden><span>图片</span><div class="create-image-actions"><button id="createImageAdd" class="button" type="button">添加</button><span id="createImageCount">0</span><input id="createImages" type="file" accept=".png,.jpg,.jpeg,.bmp,.tif,.tiff,.jb2,.jbig2" multiple hidden disabled></div></div>
|
<div id="createImagesRow" class="form-row" hidden><span>图片</span><div class="create-image-actions"><button id="createImageAdd" class="button" type="button">添加</button><span id="createImageCount">0</span><input id="createImages" type="file" accept=".png,.jpg,.jpeg,.bmp,.tif,.tiff,.jb2,.jbig2" multiple hidden disabled></div></div>
|
||||||
<div id="createImageQueue" hidden>
|
<div id="createImageQueue" hidden>
|
||||||
<div class="form-row"><label for="createImageOrder">排序</label><select id="createImageOrder"><option value="name-asc">名称升序</option><option value="name-desc">名称降序</option><option value="time-asc">时间升序</option><option value="time-desc">时间降序</option><option value="added">添加顺序</option><option value="custom">自定顺序</option></select></div>
|
<div class="form-row"><span>排序</span><div id="createImageOrder" class="form-options"><label><input type="radio" name="imageOrder" value="name-asc" checked><span>名称升序</span></label><label><input type="radio" name="imageOrder" value="name-desc"><span>名称降序</span></label><label><input type="radio" name="imageOrder" value="time-asc"><span>时间升序</span></label><label><input type="radio" name="imageOrder" value="time-desc"><span>时间降序</span></label><label><input type="radio" name="imageOrder" value="added"><span>添加顺序</span></label></div></div>
|
||||||
<div id="createImageList" class="create-image-list"></div>
|
<div id="createImageList" class="create-image-list"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="createSizeRow" class="form-row"><label for="createSize">纸张</label><select id="createSize"><option value="image" hidden disabled>随图</option><option value="a4" selected>A4</option><option value="a3">A3</option><option value="a5">A5</option><option value="custom">自定</option></select></div>
|
<div id="createSizeRow" class="form-row"><label for="createSize">纸张</label><select id="createSize"><option value="image" hidden disabled>随图</option><option value="a4" selected>A4</option><option value="a3">A3</option><option value="a5">A5</option><option value="custom">自定</option></select></div>
|
||||||
|
|||||||
@@ -1846,6 +1846,26 @@ button:not(:disabled):hover {
|
|||||||
outline-offset: 2px;
|
outline-offset: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#createImageOrder {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(6em, 1fr));
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#createImageOrder span {
|
||||||
|
border-left: 1px solid var(--line);
|
||||||
|
border-radius: var(--radius-control);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#createImageOrder input:not(:disabled):not(:checked) + span:hover {
|
||||||
|
background: var(--hover-fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
#createImageOrder input:disabled + span {
|
||||||
|
opacity: 0.48;
|
||||||
|
}
|
||||||
|
|
||||||
.info-rows textarea,
|
.info-rows textarea,
|
||||||
.gradient-stop-row input[type="number"],
|
.gradient-stop-row input[type="number"],
|
||||||
.structure-attribute > input,
|
.structure-attribute > input,
|
||||||
|
|||||||
@@ -1691,7 +1691,7 @@ el.createImageAdd.addEventListener("click", () => {
|
|||||||
});
|
});
|
||||||
el.createImages.addEventListener("change", addCreateImages);
|
el.createImages.addEventListener("change", addCreateImages);
|
||||||
el.createImages.addEventListener("cancel", () => { createImagePicker = null; });
|
el.createImages.addEventListener("cancel", () => { createImagePicker = null; });
|
||||||
el.createImageOrder.addEventListener("change", () => { state.createImageQueue.order = el.createImageOrder.value; sortCreateImages(); });
|
el.createImageOrder.addEventListener("change", event => { state.createImageQueue.order = event.target.value; sortCreateImages(); });
|
||||||
el.createImageList.addEventListener("click", event => {
|
el.createImageList.addEventListener("click", event => {
|
||||||
const row = event.target.closest("[data-image-id]");
|
const row = event.target.closest("[data-image-id]");
|
||||||
if (!row || state.imageImporting) return;
|
if (!row || state.imageImporting) return;
|
||||||
@@ -3855,7 +3855,8 @@ function updateCreateOptions() {
|
|||||||
el.createSize.querySelector('[value="image"]').disabled = !images;
|
el.createSize.querySelector('[value="image"]').disabled = !images;
|
||||||
el.createImageQueue.hidden = !images || !state.createImageQueue?.entries.length;
|
el.createImageQueue.hidden = !images || !state.createImageQueue?.entries.length;
|
||||||
el.createPanel.classList.toggle("create-images", images);
|
el.createPanel.classList.toggle("create-images", images);
|
||||||
el.createImageAdd.disabled = el.createImageOrder.disabled = busy;
|
el.createImageAdd.disabled = busy;
|
||||||
|
for (const input of el.createImageOrder.querySelectorAll("input")) input.disabled = busy;
|
||||||
const dimensions = !images || el.createSize.value !== "image";
|
const dimensions = !images || el.createSize.value !== "image";
|
||||||
toggle("createDimensions", dimensions);
|
toggle("createDimensions", dimensions);
|
||||||
toggle("createDirectionRow", dimensions);
|
toggle("createDirectionRow", dimensions);
|
||||||
@@ -3960,7 +3961,7 @@ function renderCreateImages() {
|
|||||||
const top = el.createImageList.scrollTop;
|
const top = el.createImageList.scrollTop;
|
||||||
const focused = el.createImageList.contains(document.activeElement);
|
const focused = el.createImageList.contains(document.activeElement);
|
||||||
el.createImageList.replaceChildren();
|
el.createImageList.replaceChildren();
|
||||||
el.createImageOrder.value = queue.order;
|
for (const input of el.createImageOrder.querySelectorAll("input")) input.checked = input.value === queue.order;
|
||||||
el.createImageCount.textContent = String(queue.entries.length);
|
el.createImageCount.textContent = String(queue.entries.length);
|
||||||
if (!queue.entries.some(entry => entry.id === queue.selected)) queue.selected = queue.entries[0]?.id ?? null;
|
if (!queue.entries.some(entry => entry.id === queue.selected)) queue.selected = queue.entries[0]?.id ?? null;
|
||||||
queue.observer = new IntersectionObserver(items => {
|
queue.observer = new IntersectionObserver(items => {
|
||||||
|
|||||||
Reference in new issue
Block a user