@shwfed/config 3.0.4 → 3.0.7
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/module.json +1 -1
- package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/runtime.vue +4 -10
- package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/schema.d.ts +1 -1
- package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/schema.js +2 -2
- package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/runtime.vue +1 -1
- package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/schema.d.ts +4 -2
- package/dist/runtime/components/actions/buttons/2026-07-13/com.shwfed.actions.button.state.write/schema.js +1 -1
- package/dist/runtime/components/actions/config.vue +109 -3
- package/dist/runtime/components/actions/utils/steps.d.ts +1 -1
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +74 -74
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +74 -74
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +74 -74
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +74 -74
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +37 -37
- package/dist/runtime/components/config/history-picker.vue +6 -4
- package/dist/runtime/components/config/index.vue +25 -0
- package/dist/runtime/components/config/prune-dialog.d.vue.ts +14 -0
- package/dist/runtime/components/config/prune-dialog.vue +83 -0
- package/dist/runtime/components/config/prune-dialog.vue.d.ts +14 -0
- package/dist/runtime/components/config/schema.js +2 -2
- package/dist/runtime/components/config/use-editor.d.ts +9 -0
- package/dist/runtime/components/config/use-editor.js +39 -11
- package/dist/runtime/components/config/utils/linkage.d.ts +8 -0
- package/dist/runtime/components/config/utils/linkage.js +7 -2
- package/dist/runtime/components/config/utils/prune.d.ts +68 -0
- package/dist/runtime/components/config/utils/prune.js +92 -0
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +22 -22
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +22 -22
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/config.d.vue.ts +31 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/config.vue +191 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/config.vue.d.ts +31 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/expand.d.ts +49 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/expand.js +87 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/runtime.d.vue.ts +8 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/runtime.vue +72 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/runtime.vue.d.ts +8 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/schema.d.ts +59 -0
- package/dist/runtime/components/form/fields/2026-07-13/com.shwfed.form.field.dynamic/schema.js +139 -0
- package/dist/runtime/components/form/unit-config.vue +2 -2
- package/dist/runtime/components/form/utils/form-vars.d.ts +5 -15
- package/dist/runtime/components/form/utils/form-vars.js +12 -6
- package/dist/runtime/components/operations/2026-06-11/com.shwfed.operation.http.request.json/schema.js +2 -2
- package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.http.download/schema.js +2 -2
- package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/runtime.js +5 -11
- package/dist/runtime/components/operations/2026-06-15/com.shwfed.operation.navigation/schema.js +1 -1
- package/dist/runtime/components/operations/utils/resolve.d.ts +1 -1
- package/dist/runtime/components/operations/utils/step-vars.d.ts +4 -2
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/runtime.vue +1 -21
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.d.ts +2 -0
- package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/schema.js +16 -1
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/config.vue +2 -2
- package/dist/runtime/components/table/index.vue +15 -0
- package/dist/runtime/components/table/schema.d.ts +74 -74
- package/dist/runtime/components/table/utils/resolve.d.ts +26 -0
- package/dist/runtime/components/table/utils/resolve.js +2 -1
- package/dist/runtime/components/ui/expression-editor/picker-entries.js +1 -1
- package/dist/runtime/components/ui/expression-editor/step-chip-extension.js +1 -1
- package/dist/runtime/components/ui/expression-editor/step-refs.js +1 -1
- package/dist/runtime/share/clipboard.d.ts +15 -9
- package/dist/runtime/share/clipboard.js +22 -10
- package/dist/runtime/share/event-bus.js +2 -2
- package/dist/runtime/share/navigation.d.ts +1 -0
- package/dist/runtime/share/navigation.js +4 -0
- package/dist/runtime/utils/cel-context.d.ts +2 -2
- package/dist/runtime/vendor/cel-js/CLAUDE.md +7 -2
- package/dist/runtime/vendor/cel-js/PROMPT.md +27 -0
- package/dist/runtime/vendor/cel-js/lib/evaluator.js +2 -0
- package/dist/runtime/vendor/cel-js/lib/globals.d.ts +2 -0
- package/dist/runtime/vendor/cel-js/lib/globals.js +10 -0
- package/dist/runtime/vendor/cel-js/lib/map-builtins.d.ts +2 -0
- package/dist/runtime/vendor/cel-js/lib/map-builtins.js +80 -0
- package/dist/runtime/vendor/cel-js/lib/operators.js +2 -12
- package/package.json +1 -1
package/dist/module.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import { navigateTo, useRouter } from "#app";
|
|
4
|
+
import { isAbsoluteUrl } from "../../../../../share/navigation";
|
|
4
5
|
import { cel as _rawCel } from "../../../../../utils/cel";
|
|
5
6
|
import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
|
|
6
7
|
import ShwfedActionDefinition from "../../../components/definition.vue";
|
|
@@ -12,23 +13,16 @@ const props = defineProps({
|
|
|
12
13
|
const router = useRouter();
|
|
13
14
|
const inherited = injectCELContext();
|
|
14
15
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
15
|
-
function isExternal(url) {
|
|
16
|
-
try {
|
|
17
|
-
return new URL(url, window.location.href).origin !== window.location.origin;
|
|
18
|
-
} catch {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
16
|
const effect = Effect.suspend(
|
|
23
17
|
() => Effect.flatMap(
|
|
24
18
|
$cel(props.config.url),
|
|
25
19
|
(url) => Effect.promise(async () => {
|
|
26
|
-
const
|
|
20
|
+
const absolute = isAbsoluteUrl(url);
|
|
27
21
|
if (props.config.mode === "_blank") {
|
|
28
|
-
window.open(
|
|
22
|
+
window.open(absolute ? url : router.resolve(url).href, "_blank");
|
|
29
23
|
return;
|
|
30
24
|
}
|
|
31
|
-
await navigateTo(url, { external });
|
|
25
|
+
await navigateTo(url, { external: absolute });
|
|
32
26
|
})
|
|
33
27
|
)
|
|
34
28
|
);
|
|
@@ -5,7 +5,7 @@ export declare const compatibilityDate: "2026-05-21";
|
|
|
5
5
|
export declare const metadata: {
|
|
6
6
|
readonly name: "下载文件";
|
|
7
7
|
readonly icon: "fluent:arrow-download-20-regular";
|
|
8
|
-
readonly deprecated: "本按钮已废弃:改用「触发事件」按钮,其触发列表串联页面的「下载文件」操作;原两步式(先取凭据再下载)现为一个「发送请求」行后接一个引用 `steps[
|
|
8
|
+
readonly deprecated: "本按钮已废弃:改用「触发事件」按钮,其触发列表串联页面的「下载文件」操作;原两步式(先取凭据再下载)现为一个「发送请求」行后接一个引用 `steps[?\"<步骤标识>\"]` 的「下载文件」行。";
|
|
9
9
|
};
|
|
10
10
|
export declare const JSON_VAR: {
|
|
11
11
|
readonly type: "dyn";
|
|
@@ -9,8 +9,8 @@ export const metadata = {
|
|
|
9
9
|
icon: "fluent:arrow-download-20-regular",
|
|
10
10
|
// No structured migrate target — designers rebuild downloads by hand. Use a
|
|
11
11
|
// 触发事件 按钮,其触发列表串联页面的「下载文件」操作即可替代本按钮;原来的两步式
|
|
12
|
-
// (先取凭据再下载)现为一个「发送请求」行后接一个引用 `steps["<步骤标识>"]` 的「下载文件」行。
|
|
13
|
-
deprecated: '\u672C\u6309\u94AE\u5DF2\u5E9F\u5F03\uFF1A\u6539\u7528\u300C\u89E6\u53D1\u4E8B\u4EF6\u300D\u6309\u94AE\uFF0C\u5176\u89E6\u53D1\u5217\u8868\u4E32\u8054\u9875\u9762\u7684\u300C\u4E0B\u8F7D\u6587\u4EF6\u300D\u64CD\u4F5C\uFF1B\u539F\u4E24\u6B65\u5F0F\uFF08\u5148\u53D6\u51ED\u636E\u518D\u4E0B\u8F7D\uFF09\u73B0\u4E3A\u4E00\u4E2A\u300C\u53D1\u9001\u8BF7\u6C42\u300D\u884C\u540E\u63A5\u4E00\u4E2A\u5F15\u7528 `steps["<\u6B65\u9AA4\u6807\u8BC6>"]` \u7684\u300C\u4E0B\u8F7D\u6587\u4EF6\u300D\u884C\u3002'
|
|
12
|
+
// (先取凭据再下载)现为一个「发送请求」行后接一个引用 `steps[?"<步骤标识>"]` 的「下载文件」行。
|
|
13
|
+
deprecated: '\u672C\u6309\u94AE\u5DF2\u5E9F\u5F03\uFF1A\u6539\u7528\u300C\u89E6\u53D1\u4E8B\u4EF6\u300D\u6309\u94AE\uFF0C\u5176\u89E6\u53D1\u5217\u8868\u4E32\u8054\u9875\u9762\u7684\u300C\u4E0B\u8F7D\u6587\u4EF6\u300D\u64CD\u4F5C\uFF1B\u539F\u4E24\u6B65\u5F0F\uFF08\u5148\u53D6\u51ED\u636E\u518D\u4E0B\u8F7D\uFF09\u73B0\u4E3A\u4E00\u4E2A\u300C\u53D1\u9001\u8BF7\u6C42\u300D\u884C\u540E\u63A5\u4E00\u4E2A\u5F15\u7528 `steps[?"<\u6B65\u9AA4\u6807\u8BC6>"]` \u7684\u300C\u4E0B\u8F7D\u6587\u4EF6\u300D\u884C\u3002'
|
|
14
14
|
};
|
|
15
15
|
export const JSON_VAR = {
|
|
16
16
|
type: "dyn",
|
|
@@ -53,7 +53,7 @@ const effect = Effect.suspend(() => {
|
|
|
53
53
|
formState.setAt(path, merged);
|
|
54
54
|
}).pipe(
|
|
55
55
|
// A row that blows up here — an expression that parses but throws on
|
|
56
|
-
// this click's data (`steps["r1"].json.rate` when the response was
|
|
56
|
+
// this click's data (`steps[?"r1"].json.rate` when the response was
|
|
57
57
|
// null), a path dot-prop cannot descend — is a *config* bug, not a
|
|
58
58
|
// condition the end user can act on. So: no toast, but never silent
|
|
59
59
|
// either. The failure otherwise reaches only the action runner's
|
|
@@ -35,8 +35,10 @@ export type WriteValue = Value['writes'][number];
|
|
|
35
35
|
* Adopts 2026-06-25 values, whose「写入前」was a `requests` list of bare
|
|
36
36
|
* HTTP-request expressions. Each row becomes one「发送请求」op trigger on the
|
|
37
37
|
* page target — the op the button now dispatches instead of fetching itself.
|
|
38
|
-
* The row's `id` is carried over verbatim, so every
|
|
39
|
-
* written into a write value keeps resolving
|
|
38
|
+
* The row's `id` is carried over verbatim, so every step reference already
|
|
39
|
+
* written into a write value keeps resolving — the strict `steps["<id>"]` those
|
|
40
|
+
* values carry as much as the optional `steps[?"<id>"]` the picker writes today,
|
|
41
|
+
* both addressing the same id; the op publishes its parsed
|
|
40
42
|
* response under that same id and halts the chain on failure, which is what the
|
|
41
43
|
* old inline requests did.
|
|
42
44
|
*
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
import { Environment } from "../../vendor/cel-js/lib/index";
|
|
13
13
|
import { cel as rawCel } from "../../utils/cel";
|
|
14
14
|
import { celBindings, injectCELContext, provideCELContext } from "../../utils/cel-context";
|
|
15
|
+
import { readClip, reidFragment, writeClip } from "../../share/clipboard";
|
|
15
16
|
import { BUTTONS, findButton, ITEMS, findItem } from "./utils/resolve";
|
|
16
17
|
import { SIDEBAR_TAKEOVER_KEY } from "../sidebar-takeover";
|
|
17
18
|
import { BREADCRUMB_EXTENSION_KEY } from "../config/breadcrumb-extension";
|
|
@@ -175,6 +176,9 @@ const editingStyle = computed({
|
|
|
175
176
|
}
|
|
176
177
|
});
|
|
177
178
|
const selected = ref({ kind: "general" });
|
|
179
|
+
const pickedItemIds = ref([]);
|
|
180
|
+
const pickedItemIdSet = computed(() => new Set(pickedItemIds.value));
|
|
181
|
+
const pickAnchor = ref(null);
|
|
178
182
|
function itemsOfGroup(groupId) {
|
|
179
183
|
return editingItems.value.filter((it) => it.groupId === groupId);
|
|
180
184
|
}
|
|
@@ -528,12 +532,107 @@ function selectGeneral() {
|
|
|
528
532
|
function selectGroup(id) {
|
|
529
533
|
selected.value = { kind: "group", id };
|
|
530
534
|
}
|
|
531
|
-
|
|
535
|
+
const orderedItemIds = computed(
|
|
536
|
+
() => editingGroups.value.flatMap((g) => itemsOfGroup(g.id).map((it) => it.id))
|
|
537
|
+
);
|
|
538
|
+
function itemRange(a, b) {
|
|
539
|
+
const ord = orderedItemIds.value;
|
|
540
|
+
const ia = ord.indexOf(a);
|
|
541
|
+
const ib = ord.indexOf(b);
|
|
542
|
+
if (ia === -1 || ib === -1) return [b];
|
|
543
|
+
const [lo, hi] = ia <= ib ? [ia, ib] : [ib, ia];
|
|
544
|
+
return ord.slice(lo, hi + 1);
|
|
545
|
+
}
|
|
546
|
+
function selectItem(id, e) {
|
|
547
|
+
const meta = !!e && (e.metaKey || e.ctrlKey);
|
|
548
|
+
if (meta && e.shiftKey) {
|
|
549
|
+
const range = pickAnchor.value ? itemRange(pickAnchor.value, id) : [id];
|
|
550
|
+
const set = new Set(pickedItemIds.value);
|
|
551
|
+
for (const iid of range) set.add(iid);
|
|
552
|
+
pickedItemIds.value = orderedItemIds.value.filter((iid) => set.has(iid));
|
|
553
|
+
pickAnchor.value = id;
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
if (meta) {
|
|
557
|
+
const set = new Set(pickedItemIds.value);
|
|
558
|
+
if (set.has(id)) set.delete(id);
|
|
559
|
+
else set.add(id);
|
|
560
|
+
pickedItemIds.value = orderedItemIds.value.filter((iid) => set.has(iid));
|
|
561
|
+
pickAnchor.value = id;
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
pickedItemIds.value = [];
|
|
565
|
+
pickAnchor.value = null;
|
|
532
566
|
selected.value = { kind: "item", id };
|
|
533
567
|
}
|
|
534
568
|
function selectSub(id) {
|
|
535
569
|
selected.value = { kind: "sub", id };
|
|
536
570
|
}
|
|
571
|
+
watch(selected, (s) => {
|
|
572
|
+
if (s?.kind !== "item") {
|
|
573
|
+
pickedItemIds.value = [];
|
|
574
|
+
pickAnchor.value = null;
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
async function copyItems() {
|
|
578
|
+
if (pickedItemIds.value.length === 0) return;
|
|
579
|
+
const set = pickedItemIdSet.value;
|
|
580
|
+
const items = orderedItemIds.value.filter((id) => set.has(id)).map((id) => findItemNode(id)).filter((it) => !!it);
|
|
581
|
+
if (items.length === 0) return;
|
|
582
|
+
const groupIds = new Set(items.map((it) => it.groupId));
|
|
583
|
+
const groups = editingGroups.value.filter((g) => groupIds.has(g.id));
|
|
584
|
+
const ok = await writeClip("actions", { items, groups });
|
|
585
|
+
if (ok) toast.success(`\u5DF2\u590D\u5236 ${items.length} \u4E2A\u6309\u94AE`);
|
|
586
|
+
else toast.error("\u590D\u5236\u5931\u8D25");
|
|
587
|
+
}
|
|
588
|
+
async function pasteItems() {
|
|
589
|
+
const clip = await readClip();
|
|
590
|
+
if (!clip || clip.surface !== "actions") return;
|
|
591
|
+
const { items, groups } = reidFragment(clip);
|
|
592
|
+
const pastedItems = items;
|
|
593
|
+
if (pastedItems.length === 0) return;
|
|
594
|
+
const w = snapshot();
|
|
595
|
+
const pastedGroups = [...groups ?? []];
|
|
596
|
+
const known = new Set(pastedGroups.map((g) => g.id));
|
|
597
|
+
const repaired = pastedItems.map((it) => {
|
|
598
|
+
if (known.has(it.groupId)) return it;
|
|
599
|
+
const group = { id: crypto.randomUUID() };
|
|
600
|
+
pastedGroups.push(group);
|
|
601
|
+
known.add(group.id);
|
|
602
|
+
return { ...it, groupId: group.id };
|
|
603
|
+
});
|
|
604
|
+
w.groups = [...w.groups, ...pastedGroups];
|
|
605
|
+
w.items = sortByGroupOrder(w.groups, [...w.items, ...repaired]);
|
|
606
|
+
commit(w);
|
|
607
|
+
const ids = repaired.map((it) => it.id);
|
|
608
|
+
pickedItemIds.value = ids;
|
|
609
|
+
pickAnchor.value = ids[ids.length - 1] ?? null;
|
|
610
|
+
selected.value = { kind: "item", id: ids[ids.length - 1] };
|
|
611
|
+
toast.success(`\u5DF2\u7C98\u8D34 ${repaired.length} \u4E2A\u6309\u94AE`);
|
|
612
|
+
}
|
|
613
|
+
function isTextInput(el) {
|
|
614
|
+
if (!(el instanceof HTMLElement)) return false;
|
|
615
|
+
const tag = el.tagName;
|
|
616
|
+
return tag === "INPUT" || tag === "TEXTAREA" || el.isContentEditable;
|
|
617
|
+
}
|
|
618
|
+
function onItemListKeydown(e) {
|
|
619
|
+
if (isTextInput(e.target)) return;
|
|
620
|
+
const mod = e.metaKey || e.ctrlKey;
|
|
621
|
+
if (!mod || e.shiftKey || e.altKey) return;
|
|
622
|
+
const key = e.key.toLowerCase();
|
|
623
|
+
if (key === "c") {
|
|
624
|
+
if (pickedItemIds.value.length === 0) return;
|
|
625
|
+
const sel = window.getSelection();
|
|
626
|
+
if (sel && !sel.isCollapsed) return;
|
|
627
|
+
e.preventDefault();
|
|
628
|
+
e.stopPropagation();
|
|
629
|
+
void copyItems();
|
|
630
|
+
} else if (key === "v") {
|
|
631
|
+
e.preventDefault();
|
|
632
|
+
e.stopPropagation();
|
|
633
|
+
void pasteItems();
|
|
634
|
+
}
|
|
635
|
+
}
|
|
537
636
|
function isSourceDropdown(src) {
|
|
538
637
|
if (src.kind !== ITEM_DRAG_KIND) return false;
|
|
539
638
|
const it = editingItems.value.find((i) => i.id === src.id);
|
|
@@ -795,6 +894,10 @@ function wrapActionItemInDropdown(itemId) {
|
|
|
795
894
|
selected.value = { kind: "item", id: dropdown.id };
|
|
796
895
|
}
|
|
797
896
|
function resolveSelection() {
|
|
897
|
+
const live = new Set(editingItems.value.map((it) => it.id));
|
|
898
|
+
if (pickedItemIds.value.some((id) => !live.has(id))) {
|
|
899
|
+
pickedItemIds.value = pickedItemIds.value.filter((id) => live.has(id));
|
|
900
|
+
}
|
|
798
901
|
const s = selected.value;
|
|
799
902
|
if (!s || s.kind === "general") return;
|
|
800
903
|
if (s.kind === "group" && findGroup(s.id)) return;
|
|
@@ -959,7 +1062,10 @@ const newGroupZoneId = (insertIndex) => `new-group-${insertIndex}`;
|
|
|
959
1062
|
:disabled="!outerTakeoverTarget"
|
|
960
1063
|
>
|
|
961
1064
|
<div
|
|
1065
|
+
class="outline-none"
|
|
962
1066
|
:class="outerTakeoverTarget ? 'flex flex-1 flex-col gap-2 min-h-0' : 'flex gap-2 w-72 shrink-0 flex-col'"
|
|
1067
|
+
tabindex="-1"
|
|
1068
|
+
@keydown="onItemListKeydown"
|
|
963
1069
|
>
|
|
964
1070
|
<div
|
|
965
1071
|
v-if="selectedDrillableAction"
|
|
@@ -1040,9 +1146,9 @@ const newGroupZoneId = (insertIndex) => `new-group-${insertIndex}`;
|
|
|
1040
1146
|
<div
|
|
1041
1147
|
class="row group item-row pl-5"
|
|
1042
1148
|
:class="[
|
|
1043
|
-
selected?.kind === 'item' && selected.id === item.id ? 'bg-[color-mix(in_srgb,var(--primary)_10%,white)] text-(--primary)' : 'text-zinc-600 hover:bg-zinc-50'
|
|
1149
|
+
selected?.kind === 'item' && selected.id === item.id ? 'bg-[color-mix(in_srgb,var(--primary)_10%,white)] text-(--primary)' : pickedItemIdSet.has(item.id) ? 'bg-zinc-100 text-zinc-700' : 'text-zinc-600 hover:bg-zinc-50'
|
|
1044
1150
|
]"
|
|
1045
|
-
@click.stop="selectItem(item.id)"
|
|
1151
|
+
@click.stop="selectItem(item.id, $event)"
|
|
1046
1152
|
>
|
|
1047
1153
|
<Icon
|
|
1048
1154
|
icon="fluent:re-order-dots-vertical-20-regular"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TriggerValue } from '../../../share/event-bus.js';
|
|
2
2
|
/**
|
|
3
3
|
* One row of a trigger list that publishes a chain-step output — the rows a
|
|
4
|
-
* later expression can address as `steps["<id>"]`.
|
|
4
|
+
* later expression can address as `steps[?"<id>"]`.
|
|
5
5
|
*
|
|
6
6
|
* A row qualifies on two counts, neither of them a type check: its operation's
|
|
7
7
|
* registry `metadata.output` marks it as publishing (so a new publishing op
|
package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts
CHANGED
|
@@ -34,40 +34,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
34
34
|
readonly message: string;
|
|
35
35
|
}[]] | undefined;
|
|
36
36
|
}[];
|
|
37
|
-
readonly query?: {
|
|
38
|
-
readonly style?: string | undefined;
|
|
39
|
-
readonly id?: string | undefined;
|
|
40
|
-
readonly initial?: {
|
|
41
|
-
readonly data: string;
|
|
42
|
-
readonly request?: string | undefined;
|
|
43
|
-
} | undefined;
|
|
44
|
-
readonly displayName?: string | undefined;
|
|
45
|
-
readonly kind: "shwfed.component.form";
|
|
46
|
-
readonly fields: readonly any[];
|
|
47
|
-
readonly layouts: readonly {
|
|
48
|
-
readonly name: string;
|
|
49
|
-
readonly layout: {
|
|
50
|
-
readonly style?: string | undefined;
|
|
51
|
-
readonly columns: number;
|
|
52
|
-
readonly gap?: number | undefined;
|
|
53
|
-
readonly rows?: number | undefined;
|
|
54
|
-
readonly placements: {
|
|
55
|
-
readonly [x: string]: {
|
|
56
|
-
readonly area: readonly [readonly [number, number], readonly [number, number]];
|
|
57
|
-
readonly v?: "stretch" | "center" | "end" | "start" | undefined;
|
|
58
|
-
readonly h?: "stretch" | "center" | "end" | "start" | undefined;
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
readonly media?: string | undefined;
|
|
63
|
-
}[];
|
|
64
|
-
readonly readonly?: string | undefined;
|
|
65
|
-
} | undefined;
|
|
66
|
-
readonly dataSource?: {
|
|
67
|
-
readonly data: string;
|
|
68
|
-
readonly total?: string | undefined;
|
|
69
|
-
readonly request?: string | undefined;
|
|
70
|
-
} | undefined;
|
|
71
37
|
readonly actions?: {
|
|
72
38
|
readonly size: "default" | "sm" | "xs";
|
|
73
39
|
readonly style?: string | undefined;
|
|
@@ -135,6 +101,40 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
135
101
|
readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
|
|
136
102
|
}[];
|
|
137
103
|
} | undefined;
|
|
104
|
+
readonly query?: {
|
|
105
|
+
readonly style?: string | undefined;
|
|
106
|
+
readonly id?: string | undefined;
|
|
107
|
+
readonly initial?: {
|
|
108
|
+
readonly data: string;
|
|
109
|
+
readonly request?: string | undefined;
|
|
110
|
+
} | undefined;
|
|
111
|
+
readonly displayName?: string | undefined;
|
|
112
|
+
readonly kind: "shwfed.component.form";
|
|
113
|
+
readonly fields: readonly any[];
|
|
114
|
+
readonly layouts: readonly {
|
|
115
|
+
readonly name: string;
|
|
116
|
+
readonly layout: {
|
|
117
|
+
readonly style?: string | undefined;
|
|
118
|
+
readonly columns: number;
|
|
119
|
+
readonly gap?: number | undefined;
|
|
120
|
+
readonly rows?: number | undefined;
|
|
121
|
+
readonly placements: {
|
|
122
|
+
readonly [x: string]: {
|
|
123
|
+
readonly area: readonly [readonly [number, number], readonly [number, number]];
|
|
124
|
+
readonly v?: "stretch" | "center" | "end" | "start" | undefined;
|
|
125
|
+
readonly h?: "stretch" | "center" | "end" | "start" | undefined;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
readonly media?: string | undefined;
|
|
130
|
+
}[];
|
|
131
|
+
readonly readonly?: string | undefined;
|
|
132
|
+
} | undefined;
|
|
133
|
+
readonly dataSource?: {
|
|
134
|
+
readonly data: string;
|
|
135
|
+
readonly total?: string | undefined;
|
|
136
|
+
readonly request?: string | undefined;
|
|
137
|
+
} | undefined;
|
|
138
138
|
readonly bottomActions?: {
|
|
139
139
|
readonly size: "default" | "sm" | "xs";
|
|
140
140
|
readonly style?: string | undefined;
|
|
@@ -228,6 +228,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
228
228
|
readonly expanded?: boolean | {
|
|
229
229
|
readonly [x: string]: boolean;
|
|
230
230
|
} | undefined;
|
|
231
|
+
readonly rowSelection?: {
|
|
232
|
+
readonly [x: string]: boolean;
|
|
233
|
+
} | undefined;
|
|
231
234
|
readonly columnVisibility?: {
|
|
232
235
|
readonly [x: string]: boolean;
|
|
233
236
|
} | undefined;
|
|
@@ -248,9 +251,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
248
251
|
readonly columnSizing?: {
|
|
249
252
|
readonly [x: string]: number;
|
|
250
253
|
} | undefined;
|
|
251
|
-
readonly rowSelection?: {
|
|
252
|
-
readonly [x: string]: boolean;
|
|
253
|
-
} | undefined;
|
|
254
254
|
} | undefined;
|
|
255
255
|
};
|
|
256
256
|
readonly compatibilityDate: "2026-05-06";
|
|
@@ -282,40 +282,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
282
282
|
readonly message: string;
|
|
283
283
|
}[]] | undefined;
|
|
284
284
|
}[];
|
|
285
|
-
readonly query?: {
|
|
286
|
-
readonly style?: string | undefined;
|
|
287
|
-
readonly id?: string | undefined;
|
|
288
|
-
readonly initial?: {
|
|
289
|
-
readonly data: string;
|
|
290
|
-
readonly request?: string | undefined;
|
|
291
|
-
} | undefined;
|
|
292
|
-
readonly displayName?: string | undefined;
|
|
293
|
-
readonly kind: "shwfed.component.form";
|
|
294
|
-
readonly fields: readonly any[];
|
|
295
|
-
readonly layouts: readonly {
|
|
296
|
-
readonly name: string;
|
|
297
|
-
readonly layout: {
|
|
298
|
-
readonly style?: string | undefined;
|
|
299
|
-
readonly columns: number;
|
|
300
|
-
readonly gap?: number | undefined;
|
|
301
|
-
readonly rows?: number | undefined;
|
|
302
|
-
readonly placements: {
|
|
303
|
-
readonly [x: string]: {
|
|
304
|
-
readonly area: readonly [readonly [number, number], readonly [number, number]];
|
|
305
|
-
readonly v?: "stretch" | "center" | "end" | "start" | undefined;
|
|
306
|
-
readonly h?: "stretch" | "center" | "end" | "start" | undefined;
|
|
307
|
-
};
|
|
308
|
-
};
|
|
309
|
-
};
|
|
310
|
-
readonly media?: string | undefined;
|
|
311
|
-
}[];
|
|
312
|
-
readonly readonly?: string | undefined;
|
|
313
|
-
} | undefined;
|
|
314
|
-
readonly dataSource?: {
|
|
315
|
-
readonly data: string;
|
|
316
|
-
readonly total?: string | undefined;
|
|
317
|
-
readonly request?: string | undefined;
|
|
318
|
-
} | undefined;
|
|
319
285
|
readonly actions?: {
|
|
320
286
|
readonly size: "default" | "sm" | "xs";
|
|
321
287
|
readonly style?: string | undefined;
|
|
@@ -383,6 +349,40 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
383
349
|
readonly variant?: "default" | "link" | "destructive" | "primary" | "ghost" | undefined;
|
|
384
350
|
}[];
|
|
385
351
|
} | undefined;
|
|
352
|
+
readonly query?: {
|
|
353
|
+
readonly style?: string | undefined;
|
|
354
|
+
readonly id?: string | undefined;
|
|
355
|
+
readonly initial?: {
|
|
356
|
+
readonly data: string;
|
|
357
|
+
readonly request?: string | undefined;
|
|
358
|
+
} | undefined;
|
|
359
|
+
readonly displayName?: string | undefined;
|
|
360
|
+
readonly kind: "shwfed.component.form";
|
|
361
|
+
readonly fields: readonly any[];
|
|
362
|
+
readonly layouts: readonly {
|
|
363
|
+
readonly name: string;
|
|
364
|
+
readonly layout: {
|
|
365
|
+
readonly style?: string | undefined;
|
|
366
|
+
readonly columns: number;
|
|
367
|
+
readonly gap?: number | undefined;
|
|
368
|
+
readonly rows?: number | undefined;
|
|
369
|
+
readonly placements: {
|
|
370
|
+
readonly [x: string]: {
|
|
371
|
+
readonly area: readonly [readonly [number, number], readonly [number, number]];
|
|
372
|
+
readonly v?: "stretch" | "center" | "end" | "start" | undefined;
|
|
373
|
+
readonly h?: "stretch" | "center" | "end" | "start" | undefined;
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
};
|
|
377
|
+
readonly media?: string | undefined;
|
|
378
|
+
}[];
|
|
379
|
+
readonly readonly?: string | undefined;
|
|
380
|
+
} | undefined;
|
|
381
|
+
readonly dataSource?: {
|
|
382
|
+
readonly data: string;
|
|
383
|
+
readonly total?: string | undefined;
|
|
384
|
+
readonly request?: string | undefined;
|
|
385
|
+
} | undefined;
|
|
386
386
|
readonly bottomActions?: {
|
|
387
387
|
readonly size: "default" | "sm" | "xs";
|
|
388
388
|
readonly style?: string | undefined;
|
|
@@ -476,6 +476,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
476
476
|
readonly expanded?: boolean | {
|
|
477
477
|
readonly [x: string]: boolean;
|
|
478
478
|
} | undefined;
|
|
479
|
+
readonly rowSelection?: {
|
|
480
|
+
readonly [x: string]: boolean;
|
|
481
|
+
} | undefined;
|
|
479
482
|
readonly columnVisibility?: {
|
|
480
483
|
readonly [x: string]: boolean;
|
|
481
484
|
} | undefined;
|
|
@@ -496,9 +499,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
|
|
|
496
499
|
readonly columnSizing?: {
|
|
497
500
|
readonly [x: string]: number;
|
|
498
501
|
} | undefined;
|
|
499
|
-
readonly rowSelection?: {
|
|
500
|
-
readonly [x: string]: boolean;
|
|
501
|
-
} | undefined;
|
|
502
502
|
} | undefined;
|
|
503
503
|
};
|
|
504
504
|
readonly compatibilityDate: "2026-05-06";
|