@wildwinter/app-shell 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-FPXEQKWM.js → chunk-62KWJPRP.js} +4 -4
- package/dist/{chunk-FPXEQKWM.js.map → chunk-62KWJPRP.js.map} +1 -1
- package/dist/{chunk-NKL6DNBZ.js → chunk-C245WRPF.js} +4 -4
- package/dist/{chunk-NKL6DNBZ.js.map → chunk-C245WRPF.js.map} +1 -1
- package/dist/{chunk-IFWLNIBR.js → chunk-CRUILFAT.js} +18 -4
- package/dist/chunk-CRUILFAT.js.map +1 -0
- package/dist/{chunk-5SQHL4YV.js → chunk-OMG6A5YB.js} +3 -3
- package/dist/{chunk-5SQHL4YV.js.map → chunk-OMG6A5YB.js.map} +1 -1
- package/dist/{chunk-XXDJCOXN.js → chunk-UQTUCOGV.js} +3 -3
- package/dist/{chunk-XXDJCOXN.js.map → chunk-UQTUCOGV.js.map} +1 -1
- package/dist/{chunk-XR4DRDMA.js → chunk-VXEFIL43.js} +3 -3
- package/dist/{chunk-XR4DRDMA.js.map → chunk-VXEFIL43.js.map} +1 -1
- package/dist/{chunk-QLVBKME7.js → chunk-W4WC4FO5.js} +70 -26
- package/dist/chunk-W4WC4FO5.js.map +1 -0
- package/dist/{chunk-IK3LWBQL.js → chunk-XSS7KM6F.js} +4 -4
- package/dist/{chunk-IK3LWBQL.js.map → chunk-XSS7KM6F.js.map} +1 -1
- package/dist/context-menu.cjs.map +1 -1
- package/dist/context-menu.js +2 -2
- package/dist/dialog.cjs.map +1 -1
- package/dist/dialog.js +2 -2
- package/dist/index.cjs +83 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -5
- package/dist/index.d.ts +21 -5
- package/dist/index.js +10 -10
- package/dist/kit-gallery.cjs.map +1 -1
- package/dist/kit-gallery.js +3 -3
- package/dist/link-status.cjs.map +1 -1
- package/dist/link-status.js +2 -2
- package/dist/{property-list-5mS4J2uy.d.cts → property-list-BgZlkcbz.d.cts} +11 -0
- package/dist/{property-list-5mS4J2uy.d.ts → property-list-BgZlkcbz.d.ts} +11 -0
- package/dist/property-list.cjs +83 -25
- package/dist/property-list.cjs.map +1 -1
- package/dist/property-list.d.cts +1 -1
- package/dist/property-list.d.ts +1 -1
- package/dist/property-list.js +2 -2
- package/dist/settings.css +24 -0
- package/dist/settings.css.map +1 -1
- package/dist/updater-view.cjs.map +1 -1
- package/dist/updater-view.js +3 -3
- package/dist/welcome.cjs.map +1 -1
- package/dist/welcome.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-IFWLNIBR.js.map +0 -1
- package/dist/chunk-QLVBKME7.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -464,7 +464,7 @@ function tagChips(holder, onChange) {
|
|
|
464
464
|
wrap.append(input);
|
|
465
465
|
return wrap;
|
|
466
466
|
}
|
|
467
|
-
function stageChips(holder, onChange) {
|
|
467
|
+
function stageChips(holder, onChange, opts = {}) {
|
|
468
468
|
const wrap = el("div", "shell-tags shell-stages");
|
|
469
469
|
const input = el("input", "shell-tag-input");
|
|
470
470
|
input.type = "text";
|
|
@@ -479,35 +479,79 @@ function stageChips(holder, onChange) {
|
|
|
479
479
|
b.addEventListener("click", onClick);
|
|
480
480
|
return b;
|
|
481
481
|
};
|
|
482
|
+
const nameLabel = (chip2, v, i) => {
|
|
483
|
+
const label2 = el("span", "shell-tag-label", `${i + 1}. ${v}`);
|
|
484
|
+
label2.setAttribute("role", "button");
|
|
485
|
+
label2.tabIndex = 0;
|
|
486
|
+
label2.dataset["tip"] = `Rename ${v}`;
|
|
487
|
+
const edit = () => {
|
|
488
|
+
const field = el("input", "shell-tag-input shell-stage-rename");
|
|
489
|
+
field.type = "text";
|
|
490
|
+
field.value = v;
|
|
491
|
+
field.spellcheck = false;
|
|
492
|
+
field.setAttribute("aria-label", `Rename ${v}`);
|
|
493
|
+
let done = false;
|
|
494
|
+
const finish = (keep) => {
|
|
495
|
+
if (done) return;
|
|
496
|
+
done = true;
|
|
497
|
+
const to = field.value.trim();
|
|
498
|
+
const stages = holder.stages ?? [];
|
|
499
|
+
if (keep && to !== "" && to !== v && !stages.includes(to)) {
|
|
500
|
+
stages[stages.indexOf(v)] = to;
|
|
501
|
+
rebuild();
|
|
502
|
+
if (opts.onRename) opts.onRename(v, to);
|
|
503
|
+
else onChange?.();
|
|
504
|
+
} else {
|
|
505
|
+
rebuild();
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
field.addEventListener("keydown", (e) => {
|
|
509
|
+
if (e.key === "Enter") {
|
|
510
|
+
e.preventDefault();
|
|
511
|
+
finish(true);
|
|
512
|
+
} else if (e.key === "Escape") {
|
|
513
|
+
e.preventDefault();
|
|
514
|
+
e.stopPropagation();
|
|
515
|
+
finish(false);
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
field.addEventListener("blur", () => finish(true));
|
|
519
|
+
label2.replaceWith(field);
|
|
520
|
+
chip2.classList.add("editing");
|
|
521
|
+
field.focus();
|
|
522
|
+
field.select();
|
|
523
|
+
};
|
|
524
|
+
label2.addEventListener("click", (e) => {
|
|
525
|
+
e.preventDefault();
|
|
526
|
+
edit();
|
|
527
|
+
});
|
|
528
|
+
label2.addEventListener("keydown", (e) => {
|
|
529
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
530
|
+
e.preventDefault();
|
|
531
|
+
edit();
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
return label2;
|
|
535
|
+
};
|
|
536
|
+
const moved = () => {
|
|
537
|
+
rebuild();
|
|
538
|
+
onChange?.();
|
|
539
|
+
opts.onReorder?.();
|
|
540
|
+
};
|
|
482
541
|
const rebuild = () => {
|
|
483
542
|
for (const c of Array.from(wrap.children)) if (c !== input) c.remove();
|
|
484
543
|
const stages = holder.stages ?? [];
|
|
485
544
|
stages.forEach((v, i) => {
|
|
486
|
-
const chip2 = el("span", "shell-tag"
|
|
545
|
+
const chip2 = el("span", "shell-tag");
|
|
487
546
|
chip2.dataset["stage"] = v;
|
|
488
547
|
chip2.append(
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
onChange?.();
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
),
|
|
500
|
-
control(
|
|
501
|
-
"forward",
|
|
502
|
-
`Move ${v} later`,
|
|
503
|
-
i === stages.length - 1,
|
|
504
|
-
() => {
|
|
505
|
-
if (moveItem(stages, i, 1)) {
|
|
506
|
-
rebuild();
|
|
507
|
-
onChange?.();
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
)
|
|
548
|
+
nameLabel(chip2, v, i),
|
|
549
|
+
control("back", `Move ${v} earlier`, i === 0, () => {
|
|
550
|
+
if (moveItem(stages, i, -1)) moved();
|
|
551
|
+
}),
|
|
552
|
+
control("forward", `Move ${v} later`, i === stages.length - 1, () => {
|
|
553
|
+
if (moveItem(stages, i, 1)) moved();
|
|
554
|
+
})
|
|
511
555
|
);
|
|
512
556
|
const x = el("button", "shell-tag-x", iconNode("close", CHIP_ICON));
|
|
513
557
|
x.type = "button";
|
|
@@ -3193,7 +3237,21 @@ function mountPropertyList(host, decls, opts = {}) {
|
|
|
3193
3237
|
}, false, true);
|
|
3194
3238
|
const details = keep(opts.extraDetails?.(p, i));
|
|
3195
3239
|
if (p.type === "enum" || p.type === "flags") details.push(labelled("Values", tagChips(p, refreshDefault)));
|
|
3196
|
-
if (p.type === "quality")
|
|
3240
|
+
if (p.type === "quality") {
|
|
3241
|
+
const note = el("p", "shell-stage-note");
|
|
3242
|
+
const stages = stageChips(p, refreshDefault, {
|
|
3243
|
+
onRename: (from, to) => {
|
|
3244
|
+
if (p.default === from) p.default = to;
|
|
3245
|
+
const fresh = defaultControl(p, changed, opts);
|
|
3246
|
+
def.replaceWith(fresh);
|
|
3247
|
+
def = fresh;
|
|
3248
|
+
if (opts.onStageRename) opts.onStageRename(p, from, to);
|
|
3249
|
+
else changed();
|
|
3250
|
+
},
|
|
3251
|
+
onReorder: () => opts.onStageReorder?.(p, note)
|
|
3252
|
+
});
|
|
3253
|
+
details.push(labelled("Stages (in order)", stages), note);
|
|
3254
|
+
}
|
|
3197
3255
|
if (opts.purpose !== false) {
|
|
3198
3256
|
const purpose = el("input", "field set-purpose");
|
|
3199
3257
|
purpose.type = "text";
|