@shwfed/config 2.9.5 → 2.9.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/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-BZCeJsQD.js → FieldGroup.vue_vue_type_script_setup_true_lang-tkU7rYrs.js} +1 -1
- package/dist/preview/assets/{badge-muf_N5bh.js → badge-C55P2V8D.js} +1 -1
- package/dist/preview/assets/{config-BDWlpbYr.js → config-B3-xqMew.js} +1 -1
- package/dist/preview/assets/{config-CX1fFOhS.js → config-Bc2N2jlD.js} +1 -1
- package/dist/preview/assets/{config-CZHJLTaX.js → config-Bu1S_DR5.js} +1 -1
- package/dist/preview/assets/{config-CoEYHQXh.js → config-CH2QpakU.js} +1 -1
- package/dist/preview/assets/{config-r9XM4u1X.js → config-CnxzerC5.js} +1 -1
- package/dist/preview/assets/{config-BmmWdZ8T.js → config-D0j4njOQ.js} +1 -1
- package/dist/preview/assets/{config-DygE8cbP.js → config-DeaHg7ps.js} +1 -1
- package/dist/preview/assets/{config-BeW9pIO6.js → config-DqibnZH4.js} +1 -1
- package/dist/preview/assets/{config-DkiDpKM2.js → config-DzKcQKJj.js} +1 -1
- package/dist/preview/assets/{config-qlTY-CeE.js → config-j1oKH3Ci.js} +1 -1
- package/dist/preview/assets/{config-BbrX8RJn.js → config-rL7m78ZC.js} +1 -1
- package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js → definition.vue_vue_type_script_setup_true_lang-G748uLwi.js} +1 -1
- package/dist/preview/assets/{index-CJHF5AcW.js → index-C16exop7.js} +29 -29
- package/dist/preview/assets/index-CSm6dB4o.js +1 -0
- package/dist/preview/assets/{index-CHKIlDe0.js → index-dIh1Jn4U.js} +1 -1
- package/dist/preview/assets/{item-9Thi-zcK.js → item-BCWcrKaL.js} +1 -1
- package/dist/preview/assets/runtime-BTFesnrJ.js +1 -0
- package/dist/preview/assets/runtime-BsqCaddm.js +1 -0
- package/dist/preview/assets/{runtime-CdDJ6rEl.js → runtime-C-KLJ71q.js} +1 -1
- package/dist/preview/assets/{runtime-CE6eAbTE.js → runtime-C5-cN3M1.js} +1 -1
- package/dist/preview/assets/runtime-CBg0VVCJ.js +1 -0
- package/dist/preview/assets/runtime-D3LGPlv3.js +1 -0
- package/dist/preview/assets/runtime-DO8ov3J6.js +1 -0
- package/dist/preview/assets/runtime-DZiqhnCm.js +1 -0
- package/dist/preview/assets/{runtime-DM9caqw1.js → runtime-bRCsEM7S.js} +1 -1
- package/dist/preview/assets/{runtime-DEHzrByN.js → runtime-zoq6YaMz.js} +1 -1
- package/dist/preview/index.html +1 -1
- package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/runtime.vue +1 -1
- package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/runtime.vue +1 -1
- package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/runtime.vue +5 -1
- package/dist/runtime/components/actions/buttons/2026-05-21/com.shwfed.actions.button.http.download/runtime.vue +2 -2
- package/dist/runtime/components/actions/buttons/2026-05-24/com.shwfed.actions.button.state.write/runtime.vue +1 -1
- package/dist/runtime/components/actions/buttons/2026-06-08/com.shwfed.actions.button.http.request.json.batch/runtime.vue +1 -1
- package/dist/runtime/components/actions/utils/resolve.js +1 -1
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +4 -4
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +4 -4
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +4 -4
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +4 -4
- package/dist/runtime/components/operations/utils/resolve.d.ts +7 -0
- package/dist/runtime/components/operations/utils/resolve.js +7 -4
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/runtime.vue +2 -1
- package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch.remote/runtime.vue +2 -1
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue +1 -1
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
- package/dist/runtime/share/event-bus.d.ts +20 -2
- package/dist/runtime/share/event-bus.js +4 -3
- package/package.json +1 -1
- package/dist/preview/assets/index-OJPhCe6w.js +0 -1
- package/dist/preview/assets/runtime-B2Q3DRbZ.js +0 -1
- package/dist/preview/assets/runtime-BnExhm-v.js +0 -1
- package/dist/preview/assets/runtime-BrCQ7TVd.js +0 -1
- package/dist/preview/assets/runtime-BstyXj1z.js +0 -1
- package/dist/preview/assets/runtime-ByhubOtA.js +0 -1
- package/dist/preview/assets/runtime-DkLPBvxW.js +0 -1
package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/runtime.vue
CHANGED
|
@@ -15,6 +15,7 @@ const props = defineProps({
|
|
|
15
15
|
});
|
|
16
16
|
const celContext = injectCELContext();
|
|
17
17
|
const eventChannel = useEventChannel();
|
|
18
|
+
const triggerCel = (expression, context) => $cel(expression, { ...celBindings(celContext), ...context });
|
|
18
19
|
const rawValue = computed(() => props.ctx.cell.getValue());
|
|
19
20
|
const isMissing = computed(() => rawValue.value === void 0 || rawValue.value === null);
|
|
20
21
|
const checked = computed(() => rawValue.value === true);
|
|
@@ -54,7 +55,7 @@ async function onUpdate(next) {
|
|
|
54
55
|
console.error("[shwfed-table] switch successMessage failed", e);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
58
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, triggerCel));
|
|
58
59
|
} catch (e) {
|
|
59
60
|
console.error("[shwfed-table] switch onChange failed", e);
|
|
60
61
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -15,6 +15,7 @@ const props = defineProps({
|
|
|
15
15
|
});
|
|
16
16
|
const celContext = injectCELContext();
|
|
17
17
|
const eventChannel = useEventChannel();
|
|
18
|
+
const triggerCel = (expression, context) => $cel(expression, { ...celBindings(celContext), ...context });
|
|
18
19
|
const rawValue = computed(() => props.ctx.cell.getValue());
|
|
19
20
|
const isMissing = computed(() => rawValue.value === void 0 || rawValue.value === null);
|
|
20
21
|
const checked = computed(() => rawValue.value === true);
|
|
@@ -54,7 +55,7 @@ async function onUpdate(next) {
|
|
|
54
55
|
console.error("[shwfed-table] switch successMessage failed", e);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
58
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, triggerCel));
|
|
58
59
|
} catch (e) {
|
|
59
60
|
console.error("[shwfed-table] switch onChange failed", e);
|
|
60
61
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -204,7 +204,7 @@ async function submit(next) {
|
|
|
204
204
|
console.error("[shwfed-table] combobox-single.remote.options-remote successMessage failed", e);
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
207
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, $cel));
|
|
208
208
|
} catch (e) {
|
|
209
209
|
console.error("[shwfed-table] combobox-single.remote.options-remote onChange failed", e);
|
|
210
210
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -126,7 +126,7 @@ async function submit(next) {
|
|
|
126
126
|
console.error("[shwfed-table] combobox-single.remote.options-static successMessage failed", e);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
129
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, $cel));
|
|
130
130
|
} catch (e) {
|
|
131
131
|
console.error("[shwfed-table] combobox-single.remote.options-static onChange failed", e);
|
|
132
132
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -218,7 +218,7 @@ async function submit(next) {
|
|
|
218
218
|
console.error("[shwfed-table] combobox-multi.remote.options-remote successMessage failed", e);
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
221
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, $cel));
|
|
222
222
|
} catch (e) {
|
|
223
223
|
console.error("[shwfed-table] combobox-multi.remote.options-remote onChange failed", e);
|
|
224
224
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -140,7 +140,7 @@ async function submit(next) {
|
|
|
140
140
|
console.error("[shwfed-table] combobox-multi.remote.options-static successMessage failed", e);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
143
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, $cel));
|
|
144
144
|
} catch (e) {
|
|
145
145
|
console.error("[shwfed-table] combobox-multi.remote.options-static onChange failed", e);
|
|
146
146
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -253,7 +253,7 @@ async function submit(next) {
|
|
|
253
253
|
console.error("[shwfed-table] combobox-multi.remote successMessage failed", e);
|
|
254
254
|
}
|
|
255
255
|
}
|
|
256
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
256
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, $cel));
|
|
257
257
|
} catch (e) {
|
|
258
258
|
console.error("[shwfed-table] combobox-multi.remote onChange failed", e);
|
|
259
259
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -233,7 +233,7 @@ async function submit(next) {
|
|
|
233
233
|
console.error("[shwfed-table] combobox-single.remote successMessage failed", e);
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers));
|
|
236
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, props.column.triggers, $cel));
|
|
237
237
|
} catch (e) {
|
|
238
238
|
console.error("[shwfed-table] combobox-single.remote onChange failed", e);
|
|
239
239
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -292,7 +292,7 @@ async function submit(next) {
|
|
|
292
292
|
console.error("[shwfed-table] combobox-multi successMessage failed", e);
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, triggers));
|
|
295
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, triggers, $cel));
|
|
296
296
|
} catch (e) {
|
|
297
297
|
console.error("[shwfed-table] combobox-multi onChange failed", e);
|
|
298
298
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -271,7 +271,7 @@ async function submit(next) {
|
|
|
271
271
|
console.error("[shwfed-table] combobox-single successMessage failed", e);
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
|
-
await Effect.runPromise(dispatchTriggers(eventChannel, triggers));
|
|
274
|
+
await Effect.runPromise(dispatchTriggers(eventChannel, triggers, $cel));
|
|
275
275
|
} catch (e) {
|
|
276
276
|
console.error("[shwfed-table] combobox-single onChange failed", e);
|
|
277
277
|
toast.error("\u8BF7\u6C42\u5931\u8D25");
|
|
@@ -24,8 +24,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
24
24
|
"onUpdate:modelValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
25
25
|
}>, {
|
|
26
26
|
size: "sm" | "md" | "lg";
|
|
27
|
-
clearable: boolean;
|
|
28
27
|
clearIcon: string;
|
|
28
|
+
clearable: boolean;
|
|
29
29
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
30
30
|
declare const _default: typeof __VLS_export;
|
|
31
31
|
export default _default;
|
|
@@ -24,8 +24,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
24
24
|
"onUpdate:modelValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
25
25
|
}>, {
|
|
26
26
|
size: "sm" | "md" | "lg";
|
|
27
|
-
clearable: boolean;
|
|
28
27
|
clearIcon: string;
|
|
28
|
+
clearable: boolean;
|
|
29
29
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
30
30
|
declare const _default: typeof __VLS_export;
|
|
31
31
|
export default _default;
|
|
@@ -22,8 +22,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
22
22
|
size: "sm" | "md" | "lg";
|
|
23
23
|
granularity: "hour" | "minute" | "second";
|
|
24
24
|
hourCycle: 12 | 24;
|
|
25
|
-
clearable: boolean;
|
|
26
25
|
clearIcon: string;
|
|
26
|
+
clearable: boolean;
|
|
27
27
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
28
28
|
declare const _default: typeof __VLS_export;
|
|
29
29
|
export default _default;
|
|
@@ -22,8 +22,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
22
22
|
size: "sm" | "md" | "lg";
|
|
23
23
|
granularity: "hour" | "minute" | "second";
|
|
24
24
|
hourCycle: 12 | 24;
|
|
25
|
-
clearable: boolean;
|
|
26
25
|
clearIcon: string;
|
|
26
|
+
clearable: boolean;
|
|
27
27
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
28
28
|
declare const _default: typeof __VLS_export;
|
|
29
29
|
export default _default;
|
|
@@ -29,8 +29,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
29
29
|
"onUpdate:endValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
30
30
|
}>, {
|
|
31
31
|
size: "sm" | "md" | "lg";
|
|
32
|
-
clearable: boolean;
|
|
33
32
|
clearIcon: string;
|
|
33
|
+
clearable: boolean;
|
|
34
34
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
35
35
|
declare const _default: typeof __VLS_export;
|
|
36
36
|
export default _default;
|
|
@@ -29,8 +29,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
29
29
|
"onUpdate:endValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
30
30
|
}>, {
|
|
31
31
|
size: "sm" | "md" | "lg";
|
|
32
|
-
clearable: boolean;
|
|
33
32
|
clearIcon: string;
|
|
33
|
+
clearable: boolean;
|
|
34
34
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
35
35
|
declare const _default: typeof __VLS_export;
|
|
36
36
|
export default _default;
|
|
@@ -26,9 +26,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
26
26
|
size: "sm" | "md" | "lg";
|
|
27
27
|
granularity: "hour" | "minute" | "second";
|
|
28
28
|
hourCycle: 12 | 24;
|
|
29
|
-
clearable: boolean;
|
|
30
|
-
clearIcon: string;
|
|
31
29
|
rangeSeparatorIcon: string;
|
|
30
|
+
clearIcon: string;
|
|
31
|
+
clearable: boolean;
|
|
32
32
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
33
|
declare const _default: typeof __VLS_export;
|
|
34
34
|
export default _default;
|
|
@@ -26,9 +26,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
26
26
|
size: "sm" | "md" | "lg";
|
|
27
27
|
granularity: "hour" | "minute" | "second";
|
|
28
28
|
hourCycle: 12 | 24;
|
|
29
|
-
clearable: boolean;
|
|
30
|
-
clearIcon: string;
|
|
31
29
|
rangeSeparatorIcon: string;
|
|
30
|
+
clearIcon: string;
|
|
31
|
+
clearable: boolean;
|
|
32
32
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
33
|
declare const _default: typeof __VLS_export;
|
|
34
34
|
export default _default;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema } from 'effect';
|
|
2
2
|
import type { InjectionKey, Ref } from 'vue';
|
|
3
|
+
import type { CelEvaluator } from './interpolate.js';
|
|
3
4
|
/** A descendant button asking an ancestor instance to run an operation. */
|
|
4
5
|
export type OpRequest = Readonly<{
|
|
5
6
|
/** Instance id of the ancestor that should handle this request. */
|
|
@@ -13,6 +14,17 @@ export type OpRequest = Readonly<{
|
|
|
13
14
|
* CEL/locale in them resolves, is the receiving operation's own concern.
|
|
14
15
|
*/
|
|
15
16
|
params?: unknown;
|
|
17
|
+
/**
|
|
18
|
+
* The *emit-site* CEL evaluator — the dispatching button's own context, where
|
|
19
|
+
* descendant bindings like a table row's `row` are live. Params are authored
|
|
20
|
+
* on the trigger row that sits on the button, so any CEL in them reads most
|
|
21
|
+
* naturally in this scope, not the handling ancestor's. Carried (not the
|
|
22
|
+
* pre-rendered string) so interpolation stays in the receiving operation,
|
|
23
|
+
* which alone knows which param fields are CEL — the bus stays param-opaque.
|
|
24
|
+
* Absent when the emitter has no CEL context; the handler then falls back to
|
|
25
|
+
* its host's own evaluator.
|
|
26
|
+
*/
|
|
27
|
+
cel?: CelEvaluator;
|
|
16
28
|
}>;
|
|
17
29
|
/**
|
|
18
30
|
* The persisted form of a trigger — one stored row addressing an ancestor
|
|
@@ -79,7 +91,7 @@ export type EventChannel = Readonly<{
|
|
|
79
91
|
* pre-request trigger list, so validation is explicit and configured rather
|
|
80
92
|
* than an implicit host gate.
|
|
81
93
|
*/
|
|
82
|
-
export type OperationHandlers = Readonly<Record<string, (params?: unknown) => Effect.Effect<void>>>;
|
|
94
|
+
export type OperationHandlers = Readonly<Record<string, (params?: unknown, cel?: CelEvaluator) => Effect.Effect<void>>>;
|
|
83
95
|
export declare const EVENT_CHANNEL_KEY: InjectionKey<EventChannel>;
|
|
84
96
|
/**
|
|
85
97
|
* Build a channel node for an operation-exposing instance. `dispatch` runs
|
|
@@ -109,8 +121,14 @@ export declare function useEventChannel(): EventChannel | undefined;
|
|
|
109
121
|
*
|
|
110
122
|
* A button that fires triggers composes this into its runtime effect at the
|
|
111
123
|
* lifecycle point the triggers should fire — the bus no longer runs them.
|
|
124
|
+
*
|
|
125
|
+
* `cel` is the emitter's own evaluator, stamped onto every request so a
|
|
126
|
+
* parameterized operation can resolve CEL in its params against the *emit-site*
|
|
127
|
+
* scope (e.g. a table row's `row`) rather than the handling ancestor's. Pass it
|
|
128
|
+
* whenever the emitter has a CEL context; omit it and ops fall back to their
|
|
129
|
+
* host evaluator. See `OpRequest.cel`.
|
|
112
130
|
*/
|
|
113
|
-
export declare function dispatchTriggers(channel: EventChannel | undefined, triggers: ReadonlyArray<TriggerValue> | undefined): Effect.Effect<void>;
|
|
131
|
+
export declare function dispatchTriggers(channel: EventChannel | undefined, triggers: ReadonlyArray<TriggerValue> | undefined, cel?: CelEvaluator): Effect.Effect<void>;
|
|
114
132
|
/**
|
|
115
133
|
* One operation a component type exposes. `id` is what the trigger stores;
|
|
116
134
|
* `name`/`icon` are display only.
|
|
@@ -33,7 +33,7 @@ export const EVENT_CHANNEL_KEY = Symbol("shwfed/event-channel");
|
|
|
33
33
|
export function createEventChannel(instanceId, operations, parent) {
|
|
34
34
|
return {
|
|
35
35
|
dispatch(request) {
|
|
36
|
-
const handled = request.target === instanceId ? operations[request.operation]?.(request.params) ?? Effect.void : Effect.void;
|
|
36
|
+
const handled = request.target === instanceId ? operations[request.operation]?.(request.params, request.cel) ?? Effect.void : Effect.void;
|
|
37
37
|
return parent ? Effect.andThen(handled, parent.dispatch(request)) : handled;
|
|
38
38
|
}
|
|
39
39
|
};
|
|
@@ -45,14 +45,15 @@ export function provideEventTarget(instanceId, operations) {
|
|
|
45
45
|
export function useEventChannel() {
|
|
46
46
|
return inject(EVENT_CHANNEL_KEY, void 0);
|
|
47
47
|
}
|
|
48
|
-
export function dispatchTriggers(channel, triggers) {
|
|
48
|
+
export function dispatchTriggers(channel, triggers, cel) {
|
|
49
49
|
if (!channel || !triggers || triggers.length === 0) return Effect.void;
|
|
50
50
|
return Effect.forEach(
|
|
51
51
|
triggers,
|
|
52
52
|
(trigger) => channel.dispatch({
|
|
53
53
|
target: trigger.target,
|
|
54
54
|
operation: trigger.operation,
|
|
55
|
-
params: trigger.params
|
|
55
|
+
params: trigger.params,
|
|
56
|
+
cel
|
|
56
57
|
}),
|
|
57
58
|
{ discard: true }
|
|
58
59
|
);
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b8 as e}from"./index-CJHF5AcW.js";import{b9 as f,ba as r,bb as s}from"./index-CJHF5AcW.js";export{f as TableConfig,r as createTableConfig,e as default,s as getColumnTechnicalKey};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as f,W as g,A as l,aK as u,$ as d,aL as p,aM as m,aN as x,c as E,e as _,C as h,I as C,aO as w,K as I,o as k}from"./index-CJHF5AcW.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js";const L=f({name:"ShwfedHttpRequestConfirmActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(s){const e=s,{locale:i}=g(),a=I(),c=(n,o)=>h(n,{...C(a),...o}),t=w(),r=l(function*(){yield*u(t,e.config.before);const n=d(e.config.markdown,i.value)??"",o=p(n,c);(yield*m({content:o,icon:e.config.icon,color:e.config.color}))||(yield*x(e.config.expression,c,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:t,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}}))});return(n,o)=>(k(),E(b,{"action-id":s.buttonId,effect:_(r)},null,8,["action-id","effect"]))}});export{L as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as _,aP as E,A as S,aW as r,aK as m,a$ as b,b0 as j,c as v,e as x,C as B,I as C,aO as L,K as k,o as R}from"./index-CJHF5AcW.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js";const A=_({name:"ShwfedHttpDownloadActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(d){const c=d,g=k(),t=(e,n)=>B(e,{...C(g),...n}),l=L(),p=new Set(["success","error","warning","info"]);function f(e){const n=URL.createObjectURL(e),o=document.createElement("a");o.href=n,o.download=e.name,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(n)}const y=E(()=>S(function*(){const{template:e,messageExpression:n,resultExpression:o}=c.config,u=yield*t(e.request);if(!e.download){const s=yield*u.file();return yield*r(()=>f(s)),yield*m(l,c.config.onSuccess)}const a={json:yield*u.json()},i=o===void 0?"success":yield*b(t(o,a),s=>p.has(s)?s:"success");if(n!==void 0){const s=yield*t(n,a);yield*r(()=>j[i](s))}if(i==="success"||i==="info"){const h=yield*(yield*t(e.download,a)).file();yield*r(()=>f(h))}const w={success:c.config.onSuccess,warning:c.config.onWarning,error:c.config.onError,info:c.config.onInfo};return yield*m(l,w[i])}));return(e,n)=>(R(),v(I,{"action-id":d.buttonId,effect:x(y)},null,8,["action-id","effect"]))}});export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as f,W as u,aP as p,aQ as d,aK as l,b3 as m,$ as g,c as x,e as h,C as E,I as _,aO as B,o as C,K as b}from"./index-CJHF5AcW.js";import{_ as k}from"./definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js";const O=f({name:"ShwfedHttpRequestBatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,{locale:o}=u(),a=b(),c=(s,t)=>E(s,{..._(a),...t}),i=B(),r=p(()=>d(l(i,e.config.before),()=>m(e.config.expression,c,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,continueOnError:e.config.continueOnError,markdown:g(e.config.markdown,o.value)??""})));return(s,t)=>(C(),x(k,{"action-id":n.buttonId,effect:h(r)},null,8,["action-id","effect"]))}});export{O as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as l,b1 as g,aP as A,aS as y,aK as b,c as S,e as _,C as h,I as C,aO as j,b2 as k,K as O,o as B}from"./index-CJHF5AcW.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js";const E=l({name:"ShwfedStateWriteActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(s){const a=s,i=O(),f=(e,t)=>h(e,{...C(i),...t}),n=g(),c=n.kind==="form"&&n.parent?n.parent:n,u=j(),m=k((e,t,r)=>{if(Array.isArray(e[t])&&Array.isArray(r))return e[t]=r,!0});function o(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,t){return o(e)&&o(t)?m({...t},e):t}const d=A(()=>y(f(a.config.expression),e=>{for(const t of Object.keys(e)){const r=p(c.getAt(t),e[t]);c.setAt(t,r)}return b(u,a.config.onSuccess)}));return(e,t)=>(B(),S(I,{"action-id":s.buttonId,effect:_(d)},null,8,["action-id","effect"]))}});export{E as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as r,aP as f,aQ as u,aK as g,aN as p,c as d,e as m,C as l,I as x,aO as h,K as E,o as _}from"./index-CJHF5AcW.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js";const B=r({name:"ShwfedHttpRequestActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,c=E(),i=(o,t)=>l(o,{...x(c),...t}),s=h(),a=f(()=>u(g(s,e.config.before),()=>p(e.config.expression,i,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:s,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}})));return(o,t)=>(_(),d(C,{"action-id":n.buttonId,effect:m(a)},null,8,["action-id","effect"]))}});export{B as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as c}from"./definition.vue_vue_type_script_setup_true_lang-BFjgX5YL.js";import{d as s,aP as o,aK as i,c as r,e as f,aO as u,o as m}from"./index-CJHF5AcW.js";const g=s({name:"ShwfedEventDispatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const n=e,t=u(),a=o(()=>i(t,n.config.triggers));return(p,d)=>(m(),r(c,{"action-id":e.buttonId,effect:f(a)},null,8,["action-id","effect"]))}});export{g as default};
|