fix(feeder): compact card grid for units and equipment selection modal
- Fix unit-config-list grid by increasing specificity over .list flex - Equipment selection modal uses card grid (auto-fill 150px) instead of one-per-line list - Widen modal to accommodate card grid Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3e026e1b99
commit
3a9b52864b
|
|
@ -143,12 +143,13 @@ body {
|
||||||
|
|
||||||
.grid-app-config .panel.app-config-main { grid-column: 1; grid-row: 1; }
|
.grid-app-config .panel.app-config-main { grid-column: 1; grid-row: 1; }
|
||||||
|
|
||||||
.unit-config-list {
|
.list.unit-config-list {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
align-content: start;
|
align-content: start;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.unit-config-list .unit-card {
|
.unit-config-list .unit-card {
|
||||||
|
|
@ -168,6 +169,34 @@ body {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.unit-equip-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
||||||
|
gap: 6px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unit-equip-grid .unit-equip-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 6px 8px;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 13px;
|
||||||
|
transition: border-color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unit-equip-grid .unit-equip-item:hover {
|
||||||
|
border-color: rgba(37, 99, 235, 0.3);
|
||||||
|
background: var(--accent-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.unit-equip-grid .unit-equip-item input[type="checkbox"] {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* config view slot assignments */
|
/* config view slot assignments */
|
||||||
.grid-config .panel.top-left { grid-column: 1; grid-row: 1; }
|
.grid-config .panel.top-left { grid-column: 1; grid-row: 1; }
|
||||||
.grid-config .panel.top-right { grid-column: 2 / 4; grid-row: 1; }
|
.grid-config .panel.top-right { grid-column: 2 / 4; grid-row: 1; }
|
||||||
|
|
|
||||||
|
|
@ -24,12 +24,12 @@
|
||||||
<div data-partial="/ui/html/unit-modal.html"></div>
|
<div data-partial="/ui/html/unit-modal.html"></div>
|
||||||
|
|
||||||
<div class="modal hidden" id="unitEquipmentModal">
|
<div class="modal hidden" id="unitEquipmentModal">
|
||||||
<div class="modal-content modal-sm">
|
<div class="modal-content">
|
||||||
<div class="modal-head">
|
<div class="modal-head">
|
||||||
<h3>选择设备</h3>
|
<h3>选择设备</h3>
|
||||||
<button class="secondary" id="closeUnitEquipmentModal">X</button>
|
<button class="secondary" id="closeUnitEquipmentModal">X</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="list" id="unitEquipmentList" style="max-height:400px;overflow:auto"></div>
|
<div id="unitEquipmentList" style="max-height:400px;overflow:auto"></div>
|
||||||
<div class="form-actions" style="padding:10px">
|
<div class="form-actions" style="padding:10px">
|
||||||
<button type="button" class="secondary" id="cancelUnitEquipment">取消</button>
|
<button type="button" class="secondary" id="cancelUnitEquipment">取消</button>
|
||||||
<button type="button" id="confirmUnitEquipment">确认绑定</button>
|
<button type="button" id="confirmUnitEquipment">确认绑定</button>
|
||||||
|
|
|
||||||
|
|
@ -300,17 +300,18 @@ function openUnitEquipmentModal(unit) {
|
||||||
bound.forEach((id) => _unitEquipmentSelected.add(id));
|
bound.forEach((id) => _unitEquipmentSelected.add(id));
|
||||||
|
|
||||||
dom.unitEquipmentList.innerHTML = "";
|
dom.unitEquipmentList.innerHTML = "";
|
||||||
|
dom.unitEquipmentList.className = "unit-equip-grid";
|
||||||
allEquipments.forEach((e) => {
|
allEquipments.forEach((e) => {
|
||||||
const row = document.createElement("label");
|
const item = document.createElement("label");
|
||||||
row.className = "list-item";
|
item.className = "unit-equip-item";
|
||||||
row.style.cssText = "display:flex;align-items:center;gap:8px;cursor:pointer;padding:6px 10px";
|
|
||||||
const checked = bound.has(e.id) ? "checked" : "";
|
const checked = bound.has(e.id) ? "checked" : "";
|
||||||
row.innerHTML = `<input type="checkbox" data-equip-id="${e.id}" ${checked} /> <span>${e.code} / ${e.name}</span>`;
|
item.innerHTML = `<input type="checkbox" ${checked} /><span>${e.code}</span>`;
|
||||||
row.querySelector("input").addEventListener("change", (ev) => {
|
item.title = e.name;
|
||||||
|
item.querySelector("input").addEventListener("change", (ev) => {
|
||||||
if (ev.target.checked) _unitEquipmentSelected.add(e.id);
|
if (ev.target.checked) _unitEquipmentSelected.add(e.id);
|
||||||
else _unitEquipmentSelected.delete(e.id);
|
else _unitEquipmentSelected.delete(e.id);
|
||||||
});
|
});
|
||||||
dom.unitEquipmentList.appendChild(row);
|
dom.unitEquipmentList.appendChild(item);
|
||||||
});
|
});
|
||||||
|
|
||||||
dom.unitEquipmentModal.classList.remove("hidden");
|
dom.unitEquipmentModal.classList.remove("hidden");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue