Indent nested guide editor steps

This commit is contained in:
2026-06-15 14:02:34 -05:00
parent 8cc1ba3532
commit b85eaad0cb
+17 -9
View File
@@ -87,6 +87,16 @@ function stepNumberMap(steps) {
return numbers;
}
function stepDepth(step, stepMap) {
let depth = 0;
let parent = step.parentStepId;
while (parent && stepMap.has(parent)) {
depth += 1;
parent = stepMap.get(parent).parentStepId;
}
return depth;
}
function isEditableTarget(target) {
return target && (
target.tagName === 'INPUT' ||
@@ -761,15 +771,10 @@ class GuideEditor {
this.dom.selectStepsBtn.className = this.stepSelectMode ? 'primary' : '';
for (const step of this.steps) {
const number = numbers.get(step.stepId) || '';
let depth = 0;
let parent = step.parentStepId;
while (parent && this.stepMap.has(parent)) {
depth += 1;
parent = this.stepMap.get(parent).parentStepId;
}
const depth = stepDepth(step, this.stepMap);
const selected = current && current.stepId === step.stepId;
const checked = this.selectedSteps.has(step.stepId);
const item = el('div.step-item', {
const itemProps = {
className: `step-item${selected ? ' selected' : ''}${depth ? ' sub' : ''}${step.skipped ? ' skipped' : ''}${step.hidden ? ' hiddenstep' : ''}`,
dataset: { stepId: step.stepId },
onClick: () => {
@@ -802,7 +807,9 @@ class GuideEditor {
{ label: 'Delete step', danger: true, action: () => this.deleteSelectedStep() },
]);
},
},
};
if (depth) itemProps.style = { marginLeft: `${depth * 18}px` };
const item = el('div.step-item', itemProps,
this.stepSelectMode
? el('input', {
type: 'checkbox',
@@ -818,7 +825,8 @@ class GuideEditor {
step.parentStepId ? 'sub' : '',
step.hidden ? 'hidden' : '',
step.skipped ? 'skipped' : '',
].filter(Boolean).join(' · ')));
].filter(Boolean).join(' · ')),
);
this.dom.stepsList.append(item);
}
if (!this.steps.length) {