@shwfed/nuxt 0.11.23 → 0.11.24
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/ui/app/OverlayHost.vue +8 -0
- package/dist/runtime/components/ui/buttons/Buttons.vue +4 -1
- package/dist/runtime/components/ui/fields/Fields.vue +4 -2
- package/dist/runtime/components/ui/fields/schema.js +26 -21
- package/dist/runtime/composables/useButtonAction.d.ts +2 -0
- package/dist/runtime/composables/useOverlay.d.ts +2 -0
- package/dist/runtime/composables/useOverlay.js +2 -0
- package/package.json +1 -1
package/dist/module.json
CHANGED
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
import { computed, defineComponent } from "vue";
|
|
3
3
|
import ShwfedModal from "../../modal.vue";
|
|
4
4
|
import { useOverlay } from "../../../composables/useOverlay";
|
|
5
|
+
import { provideCELContext } from "../../../plugins/cel/context";
|
|
5
6
|
const overlay = useOverlay();
|
|
6
7
|
const OverlayBody = defineComponent({
|
|
7
8
|
name: "OverlayBody",
|
|
8
9
|
props: {
|
|
10
|
+
celContext: {
|
|
11
|
+
type: Object,
|
|
12
|
+
required: true
|
|
13
|
+
},
|
|
9
14
|
render: {
|
|
10
15
|
type: Function,
|
|
11
16
|
required: true
|
|
@@ -16,6 +21,7 @@ const OverlayBody = defineComponent({
|
|
|
16
21
|
}
|
|
17
22
|
},
|
|
18
23
|
setup(props) {
|
|
24
|
+
provideCELContext(props.celContext);
|
|
19
25
|
return () => props.render(props.slotProps);
|
|
20
26
|
}
|
|
21
27
|
});
|
|
@@ -51,6 +57,7 @@ const renderedSessions = computed(() => {
|
|
|
51
57
|
},
|
|
52
58
|
descriptionSrOnly: session.shell.descriptionSrOnly,
|
|
53
59
|
props: session.props,
|
|
60
|
+
celContext: session.celContext,
|
|
54
61
|
definition
|
|
55
62
|
});
|
|
56
63
|
}
|
|
@@ -95,6 +102,7 @@ const renderedSessions = computed(() => {
|
|
|
95
102
|
|
|
96
103
|
<template #default="modalSlotProps">
|
|
97
104
|
<OverlayBody
|
|
105
|
+
:cel-context="session.celContext"
|
|
98
106
|
:render="session.definition.render"
|
|
99
107
|
:slot-props="{
|
|
100
108
|
props: session.props,
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
provideOverlay,
|
|
14
14
|
useOverlay
|
|
15
15
|
} from "../../../composables/useOverlay";
|
|
16
|
+
import { useCELContext } from "../../../plugins/cel/context";
|
|
16
17
|
import { getLocalizedText, hasVisibleLocaleValue } from "../../../utils/coders";
|
|
17
18
|
import { cn } from "../../../utils/cn";
|
|
18
19
|
import ButtonConfiguratorDialog from "../button-configurator/ButtonConfiguratorDialog.vue";
|
|
@@ -45,6 +46,7 @@ const attrs = useAttrs();
|
|
|
45
46
|
const { locale, t } = useI18n();
|
|
46
47
|
const { $dsl } = useNuxtApp();
|
|
47
48
|
const overlay = useOverlay();
|
|
49
|
+
const celContext = useCELContext();
|
|
48
50
|
const isCheating = useCheating();
|
|
49
51
|
const isConfiguratorOpen = ref(false);
|
|
50
52
|
const pendingIds = ref([]);
|
|
@@ -253,7 +255,8 @@ function createButtonActionRuntime(button) {
|
|
|
253
255
|
locale: locale.value,
|
|
254
256
|
title: getButtonLabel(button),
|
|
255
257
|
description: tooltip,
|
|
256
|
-
tooltip
|
|
258
|
+
tooltip,
|
|
259
|
+
celContext
|
|
257
260
|
};
|
|
258
261
|
}
|
|
259
262
|
function resolveButtonEffect(button) {
|
|
@@ -10,6 +10,7 @@ import { deleteProperty, getProperty, hasProperty, setProperty } from "dot-prop"
|
|
|
10
10
|
import { computed, nextTick, readonly, ref, toRaw, useId, watch, watchEffect } from "vue";
|
|
11
11
|
import { useI18n } from "vue-i18n";
|
|
12
12
|
import { useCheating } from "#imports";
|
|
13
|
+
import { mergeDslContexts, useCELContext } from "../../../plugins/cel/context";
|
|
13
14
|
import { Calendar } from "../calendar";
|
|
14
15
|
import { Button } from "../button";
|
|
15
16
|
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "../command";
|
|
@@ -33,6 +34,7 @@ const emit = defineEmits(["update:config", "initial-value-ready"]);
|
|
|
33
34
|
const config = computedAsync(async () => FieldsConfigC.parse(await props.config.pipe(Effect.runPromise) ?? defaultConfig));
|
|
34
35
|
const { t, locale } = useI18n();
|
|
35
36
|
const { $dsl, $md } = useNuxtApp();
|
|
37
|
+
const dslContext = useCELContext();
|
|
36
38
|
const modelValue = defineModel("modelValue", { type: Object, ...{
|
|
37
39
|
default: () => ({})
|
|
38
40
|
} });
|
|
@@ -67,7 +69,7 @@ function tryEvaluateExpression(source, context) {
|
|
|
67
69
|
try {
|
|
68
70
|
return {
|
|
69
71
|
ok: true,
|
|
70
|
-
value: $dsl.evaluate`${source}`(context)
|
|
72
|
+
value: $dsl.evaluate`${source}`(mergeDslContexts(context, dslContext))
|
|
71
73
|
};
|
|
72
74
|
} catch {
|
|
73
75
|
return {
|
|
@@ -338,7 +340,7 @@ function isFieldRequired(field) {
|
|
|
338
340
|
function renderValidationMessage(field) {
|
|
339
341
|
const error = validationErrors.value[field.path];
|
|
340
342
|
if (!error) return "";
|
|
341
|
-
return $md.inline`${error.message}`(error.context);
|
|
343
|
+
return $md.inline`${error.message}`(mergeDslContexts(error.context, dslContext));
|
|
342
344
|
}
|
|
343
345
|
function isCalendarDateDisabled(field, date) {
|
|
344
346
|
if (!field.disableDate) {
|
|
@@ -2,12 +2,17 @@ import z from "zod";
|
|
|
2
2
|
import { createComponentConfig, createComponentConfigMetadataShape } from "../../component-config.js";
|
|
3
3
|
import { dotPropC, expressionC, localeC } from "../../../utils/coders.js";
|
|
4
4
|
const fieldIdC = z.uuid().describe("\u5B57\u6BB5\u552F\u4E00\u6807\u8BC6\uFF0C\u5FC5\u987B\u662F UUID");
|
|
5
|
+
const inheritedFieldContext = {
|
|
6
|
+
form: "map<string, dyn>",
|
|
7
|
+
row: "map<string, dyn>",
|
|
8
|
+
index: "int"
|
|
9
|
+
};
|
|
5
10
|
export const KIND = "shwfed.component.fields";
|
|
6
11
|
export const CURRENT_COMPATIBILITY_DATE = "2026-03-20";
|
|
7
12
|
export const SUPPORTED_COMPATIBILITY_DATES = [CURRENT_COMPATIBILITY_DATE];
|
|
8
13
|
export const ValidationRuleC = z.object({
|
|
9
|
-
expression: expressionC("bool", { value: "dyn",
|
|
10
|
-
message: z.string().describe("\u6821\u9A8C\u5931\u8D25\u65F6\u5C55\u793A\u7684 Markdown \u6D88\u606F\uFF0C\u53EF\u5728 {{ expression }} \u4E2D\u4F7F\u7528 value \u548C
|
|
14
|
+
expression: expressionC(["bool", "dyn"], { value: "dyn", ...inheritedFieldContext }).describe("\u8FD4\u56DE\u5E03\u5C14\u503C\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u53EF\u4F7F\u7528 value\u3001form\u3001row \u548C index \u53D8\u91CF"),
|
|
15
|
+
message: z.string().describe("\u6821\u9A8C\u5931\u8D25\u65F6\u5C55\u793A\u7684 Markdown \u6D88\u606F\uFF0C\u53EF\u5728 {{ expression }} \u4E2D\u4F7F\u7528 value\u3001form\u3001row \u548C index \u53D8\u91CF")
|
|
11
16
|
}).readonly();
|
|
12
17
|
export const validationC = z.array(ValidationRuleC).readonly().optional().describe("\u5B57\u6BB5\u5931\u7126\u65F6\u6309\u987A\u5E8F\u6267\u884C\u7684\u6821\u9A8C\u89C4\u5219\uFF0C\u547D\u4E2D\u7B2C\u4E00\u4E2A\u5931\u8D25\u89C4\u5219\u540E\u505C\u6B62");
|
|
13
18
|
export const StringFieldC = z.object({
|
|
@@ -19,10 +24,10 @@ export const StringFieldC = z.object({
|
|
|
19
24
|
icon: z.string().optional().describe("Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u663E\u793A\u5728\u8F93\u5165\u6846\u5185\u4FA7"),
|
|
20
25
|
style: z.string().optional().describe("CSS \u6837\u5F0F\u5BF9\u8C61\u8868\u8FBE\u5F0F\uFF0C\u63A7\u5236\u5B57\u6BB5\u7684\u5E03\u5C40\u4E0E\u5916\u89C2"),
|
|
21
26
|
discardEmptyString: z.boolean().optional().describe("\u4E3A true \u65F6\uFF0C\u7A7A\u5B57\u7B26\u4E32\u4F5C\u4E3A\u6709\u6548\u503C\u5B58\u50A8\uFF1B\u5426\u5219\u6E05\u7A7A\u8F93\u5165\u5C06\u5220\u9664\u5BF9\u5E94\u5C5E\u6027"),
|
|
22
|
-
initialValue: expressionC("string",
|
|
27
|
+
initialValue: expressionC(["string", "dyn"], inheritedFieldContext).optional().describe("\u8FD4\u56DE string \u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u5728\u5B57\u6BB5\u9996\u6B21\u521D\u59CB\u5316\u4E14 path \u4E0D\u5B58\u5728\u65F6\u5199\u5165\u521D\u59CB\u503C\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
23
28
|
maxLength: expressionC("int").optional().describe('\u8FD4\u56DE\u6574\u6570\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u9650\u5236\u8F93\u5165\u7684\u6700\u5927\u5B57\u7B26\u6570\uFF0C\u5982 "100"'),
|
|
24
|
-
hidden: expressionC("bool",
|
|
25
|
-
disabled: expressionC("bool",
|
|
29
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
30
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
26
31
|
validation: validationC
|
|
27
32
|
});
|
|
28
33
|
export const TextareaFieldC = z.object({
|
|
@@ -34,10 +39,10 @@ export const TextareaFieldC = z.object({
|
|
|
34
39
|
icon: z.string().optional().describe("Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u663E\u793A\u5728\u8F93\u5165\u6846\u5185\u4FA7"),
|
|
35
40
|
style: z.string().optional().describe("CSS \u6837\u5F0F\u5BF9\u8C61\u8868\u8FBE\u5F0F\uFF0C\u63A7\u5236\u5B57\u6BB5\u7684\u5E03\u5C40\u4E0E\u5916\u89C2"),
|
|
36
41
|
discardEmptyString: z.boolean().optional().describe("\u4E3A true \u65F6\uFF0C\u7A7A\u5B57\u7B26\u4E32\u4F5C\u4E3A\u6709\u6548\u503C\u5B58\u50A8\uFF1B\u5426\u5219\u6E05\u7A7A\u8F93\u5165\u5C06\u5220\u9664\u5BF9\u5E94\u5C5E\u6027"),
|
|
37
|
-
initialValue: expressionC("string",
|
|
42
|
+
initialValue: expressionC(["string", "dyn"], inheritedFieldContext).optional().describe("\u8FD4\u56DE string \u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u5728\u5B57\u6BB5\u9996\u6B21\u521D\u59CB\u5316\u4E14 path \u4E0D\u5B58\u5728\u65F6\u5199\u5165\u521D\u59CB\u503C\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
38
43
|
maxLength: expressionC("int").optional().describe('\u8FD4\u56DE\u6574\u6570\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u9650\u5236\u8F93\u5165\u7684\u6700\u5927\u5B57\u7B26\u6570\uFF0C\u5982 "100"'),
|
|
39
|
-
hidden: expressionC("bool",
|
|
40
|
-
disabled: expressionC("bool",
|
|
44
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
45
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
41
46
|
validation: validationC
|
|
42
47
|
});
|
|
43
48
|
export const NumberFieldC = z.object({
|
|
@@ -48,12 +53,12 @@ export const NumberFieldC = z.object({
|
|
|
48
53
|
required: z.boolean().optional().describe("\u4E3A true \u65F6\uFF0C\u4EC5\u5728\u5B57\u6BB5\u6807\u7B7E\u540E\u663E\u793A\u5FC5\u586B\u63D0\u793A\u661F\u53F7\uFF0C\u4E0D\u5F71\u54CD\u5B9E\u9645\u6821\u9A8C\u903B\u8F91"),
|
|
49
54
|
icon: z.string().optional().describe("Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u663E\u793A\u5728\u8F93\u5165\u6846\u5185\u4FA7"),
|
|
50
55
|
style: z.string().optional().describe("CSS \u6837\u5F0F\u5BF9\u8C61\u8868\u8FBE\u5F0F\uFF0C\u63A7\u5236\u5B57\u6BB5\u7684\u5E03\u5C40\u4E0E\u5916\u89C2"),
|
|
51
|
-
initialValue: expressionC(["int", "double"
|
|
56
|
+
initialValue: expressionC(["int", "double", "dyn"], inheritedFieldContext).optional().describe("\u8FD4\u56DE number \u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u5728\u5B57\u6BB5\u9996\u6B21\u521D\u59CB\u5316\u4E14 path \u4E0D\u5B58\u5728\u65F6\u5199\u5165\u521D\u59CB\u503C\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
52
57
|
min: expressionC("double").optional().describe('\u8FD4\u56DE\u6D6E\u70B9\u6570\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u9650\u5236\u5141\u8BB8\u7684\u6700\u5C0F\u503C\uFF0C\u5982 "0.0"'),
|
|
53
58
|
max: expressionC("double").optional().describe('\u8FD4\u56DE\u6D6E\u70B9\u6570\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u9650\u5236\u5141\u8BB8\u7684\u6700\u5927\u503C\uFF0C\u5982 "100.0"'),
|
|
54
59
|
step: expressionC("double").optional().describe('\u8FD4\u56DE\u6D6E\u70B9\u6570\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u63A7\u5236\u6570\u503C\u9012\u589E\u6B65\u957F\uFF0C\u5982 "0.5"'),
|
|
55
|
-
hidden: expressionC("bool",
|
|
56
|
-
disabled: expressionC("bool",
|
|
60
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
61
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
57
62
|
validation: validationC
|
|
58
63
|
});
|
|
59
64
|
export const SelectFieldC = z.object({
|
|
@@ -68,9 +73,9 @@ export const SelectFieldC = z.object({
|
|
|
68
73
|
value: expressionC(/.+/, { option: "dyn" }).describe("\u8FD4\u56DE\u4EFB\u610F\u503C\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u63D0\u4F9B option \u53D8\u91CF\uFF0C\u8FD4\u56DE\u503C\u5C06\u88AB\u5199\u5165\u7ED1\u5B9A\u5B57\u6BB5"),
|
|
69
74
|
key: expressionC("string", { option: "dyn" }).describe("\u8FD4\u56DE\u5B57\u7B26\u4E32\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u63D0\u4F9B option \u53D8\u91CF\uFF0C\u8FD4\u56DE\u503C\u4E0E\u9009\u9879\u6784\u6210\u5168\u6620\u5C04"),
|
|
70
75
|
style: z.string().optional().describe("CSS \u6837\u5F0F\u5BF9\u8C61\u8868\u8FBE\u5F0F\uFF0C\u63A7\u5236\u5B57\u6BB5\u7684\u5E03\u5C40\u4E0E\u5916\u89C2"),
|
|
71
|
-
initialValue: expressionC(/.+/,
|
|
72
|
-
hidden: expressionC("bool",
|
|
73
|
-
disabled: expressionC("bool",
|
|
76
|
+
initialValue: expressionC(/.+/, inheritedFieldContext).optional().describe("\u8FD4\u56DE\u4EFB\u610F\u503C\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u5728\u5B57\u6BB5\u9996\u6B21\u521D\u59CB\u5316\u4E14 path \u4E0D\u5B58\u5728\u65F6\u5199\u5165\u521D\u59CB\u503C\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
77
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
78
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
74
79
|
validation: validationC
|
|
75
80
|
});
|
|
76
81
|
export const CalendarFieldC = z.object({
|
|
@@ -84,10 +89,10 @@ export const CalendarFieldC = z.object({
|
|
|
84
89
|
mode: z.enum(["year", "month", "date"]).describe("\u65E5\u5386\u9009\u62E9\u7CBE\u5EA6\uFF1Ayear \u4EC5\u9009\u5E74\uFF0Cmonth \u9009\u5E74\u6708\uFF0Cdate \u9009\u5E74\u6708\u65E5"),
|
|
85
90
|
display: z.string().optional().describe('date-fns \u683C\u5F0F\u5B57\u7B26\u4E32\uFF0C\u63A7\u5236\u8F93\u5165\u6846\u4E2D\u7684\u5C55\u793A\u683C\u5F0F\uFF0C\u5982 "yyyy\u5E74MM\u6708dd\u65E5"\uFF1B\u7559\u7A7A\u5219\u663E\u793A\u539F\u59CB\u5B58\u50A8\u503C'),
|
|
86
91
|
value: z.string().describe('date-fns \u683C\u5F0F\u5B57\u7B26\u4E32\uFF0C\u5B9A\u4E49\u65E5\u671F\u5728 model \u4E2D\u7684\u5B58\u50A8\u683C\u5F0F\uFF0C\u5982 "yyyy-MM-dd"'),
|
|
87
|
-
initialValue: expressionC("string",
|
|
88
|
-
disableDate: expressionC("bool", { date: "Date" }).optional().describe("\u8FD4\u56DE\u5E03\u5C14\u503C\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u4EE5 date\uFF08Date \u7C7B\u578B\uFF09\u4E3A\u53D8\u91CF\uFF0C\u8FD4\u56DE true \u65F6\u8BE5\u65E5\u671F\u5728\u65E5\u5386\u4E2D\u88AB\u7981\u7528"),
|
|
89
|
-
hidden: expressionC("bool",
|
|
90
|
-
disabled: expressionC("bool",
|
|
92
|
+
initialValue: expressionC(["string", "dyn"], inheritedFieldContext).optional().describe("\u8FD4\u56DE string \u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u5728\u5B57\u6BB5\u9996\u6B21\u521D\u59CB\u5316\u4E14 path \u4E0D\u5B58\u5728\u65F6\u5199\u5165\u521D\u59CB\u503C\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
93
|
+
disableDate: expressionC(["bool", "dyn"], { date: "Date" }).optional().describe("\u8FD4\u56DE\u5E03\u5C14\u503C\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u4EE5 date\uFF08Date \u7C7B\u578B\uFF09\u4E3A\u53D8\u91CF\uFF0C\u8FD4\u56DE true \u65F6\u8BE5\u65E5\u671F\u5728\u65E5\u5386\u4E2D\u88AB\u7981\u7528"),
|
|
94
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
95
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF"),
|
|
91
96
|
validation: validationC
|
|
92
97
|
});
|
|
93
98
|
export const SlotFieldC = z.strictObject({
|
|
@@ -110,9 +115,9 @@ export const FieldC = z.discriminatedUnion("type", [
|
|
|
110
115
|
EmptyFieldC
|
|
111
116
|
]);
|
|
112
117
|
export const FieldsOrientationC = z.enum(["horizontal", "vertical", "floating"]);
|
|
113
|
-
export const FieldsStyleC = expressionC(/^map/, {
|
|
114
|
-
|
|
115
|
-
}).optional().describe("\u8FD4\u56DE\u5B57\u6BB5\u96C6\u5408\u5BB9\u5668\u6837\u5F0F\u5BF9\u8C61\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u53EF\u4F7F\u7528 form \u53D8\u91CF\u3002");
|
|
118
|
+
export const FieldsStyleC = expressionC([/^map/, "dyn"], {
|
|
119
|
+
...inheritedFieldContext
|
|
120
|
+
}).optional().describe("\u8FD4\u56DE\u5B57\u6BB5\u96C6\u5408\u5BB9\u5668\u6837\u5F0F\u5BF9\u8C61\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u53EF\u4F7F\u7528 form\u3001row \u548C index \u53D8\u91CF\u3002");
|
|
116
121
|
const FieldsBodyObjectC = z.object({
|
|
117
122
|
orientation: FieldsOrientationC.optional().describe("\u5B57\u6BB5\u5E03\u5C40\u65B9\u5411\uFF0C\u53EF\u9009 horizontal\u3001vertical \u6216 floating\uFF1B\u7559\u7A7A\u65F6\u9ED8\u8BA4 horizontal"),
|
|
118
123
|
style: FieldsStyleC,
|
|
@@ -6,6 +6,7 @@ export type ButtonActionRuntime = Readonly<{
|
|
|
6
6
|
title: string;
|
|
7
7
|
description?: string;
|
|
8
8
|
tooltip?: string;
|
|
9
|
+
celContext: Record<string, unknown>;
|
|
9
10
|
}>;
|
|
10
11
|
declare const ButtonActionService_base: Context.TagClass<ButtonActionService, "shwfed/ButtonActionService", Readonly<{
|
|
11
12
|
id: string;
|
|
@@ -13,6 +14,7 @@ declare const ButtonActionService_base: Context.TagClass<ButtonActionService, "s
|
|
|
13
14
|
title: string;
|
|
14
15
|
description?: string;
|
|
15
16
|
tooltip?: string;
|
|
17
|
+
celContext: Record<string, unknown>;
|
|
16
18
|
}>>;
|
|
17
19
|
export declare class ButtonActionService extends ButtonActionService_base {
|
|
18
20
|
}
|
|
@@ -12,6 +12,7 @@ export type OverlayBodyProps = Readonly<Record<string, unknown>>;
|
|
|
12
12
|
export type OverlaySessionInput = Readonly<{
|
|
13
13
|
shell?: Partial<OverlayShellProps>;
|
|
14
14
|
props?: Record<string, unknown>;
|
|
15
|
+
celContext?: Record<string, unknown>;
|
|
15
16
|
}>;
|
|
16
17
|
export type OverlaySessionPatch = Readonly<{
|
|
17
18
|
shell?: Partial<OverlayShellProps>;
|
|
@@ -41,6 +42,7 @@ type OverlaySession = {
|
|
|
41
42
|
open: boolean;
|
|
42
43
|
shell: OverlayShellState;
|
|
43
44
|
props: Record<string, unknown>;
|
|
45
|
+
celContext: Record<string, unknown>;
|
|
44
46
|
deferred: Deferred.Deferred<OverlayResult, never>;
|
|
45
47
|
pendingResult?: OverlayResult;
|
|
46
48
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, Deferred, Effect, Option } from "effect";
|
|
2
2
|
import { reactive, ref } from "vue";
|
|
3
3
|
import { ButtonActionService } from "./useButtonAction.js";
|
|
4
|
+
import { mergeDslContexts } from "../plugins/cel/context.js";
|
|
4
5
|
export class OverlayService extends Context.Tag("shwfed/OverlayService")() {
|
|
5
6
|
}
|
|
6
7
|
function createDefinitionNotFoundError(definitionId) {
|
|
@@ -180,6 +181,7 @@ function createOverlayRuntime() {
|
|
|
180
181
|
props: {
|
|
181
182
|
...options?.props
|
|
182
183
|
},
|
|
184
|
+
celContext: mergeDslContexts(options?.celContext, buttonAction?.celContext),
|
|
183
185
|
deferred
|
|
184
186
|
};
|
|
185
187
|
sessions.value.push(session);
|