@shwfed/nuxt 0.11.23 → 0.11.25
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 +27 -21
- package/dist/runtime/components/ui/table/Table.vue +11 -4
- 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,18 @@ 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
|
+
id: "string"
|
|
10
|
+
};
|
|
5
11
|
export const KIND = "shwfed.component.fields";
|
|
6
12
|
export const CURRENT_COMPATIBILITY_DATE = "2026-03-20";
|
|
7
13
|
export const SUPPORTED_COMPATIBILITY_DATES = [CURRENT_COMPATIBILITY_DATE];
|
|
8
14
|
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
|
|
15
|
+
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\u3001index \u548C id \u53D8\u91CF"),
|
|
16
|
+
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\u3001index \u548C id \u53D8\u91CF")
|
|
11
17
|
}).readonly();
|
|
12
18
|
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
19
|
export const StringFieldC = z.object({
|
|
@@ -19,10 +25,10 @@ export const StringFieldC = z.object({
|
|
|
19
25
|
icon: z.string().optional().describe("Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u663E\u793A\u5728\u8F93\u5165\u6846\u5185\u4FA7"),
|
|
20
26
|
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
27
|
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",
|
|
28
|
+
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\u3001index \u548C id \u53D8\u91CF"),
|
|
23
29
|
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",
|
|
30
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
31
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
26
32
|
validation: validationC
|
|
27
33
|
});
|
|
28
34
|
export const TextareaFieldC = z.object({
|
|
@@ -34,10 +40,10 @@ export const TextareaFieldC = z.object({
|
|
|
34
40
|
icon: z.string().optional().describe("Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u663E\u793A\u5728\u8F93\u5165\u6846\u5185\u4FA7"),
|
|
35
41
|
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
42
|
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",
|
|
43
|
+
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\u3001index \u548C id \u53D8\u91CF"),
|
|
38
44
|
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",
|
|
45
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
46
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
41
47
|
validation: validationC
|
|
42
48
|
});
|
|
43
49
|
export const NumberFieldC = z.object({
|
|
@@ -48,12 +54,12 @@ export const NumberFieldC = z.object({
|
|
|
48
54
|
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
55
|
icon: z.string().optional().describe("Iconify \u56FE\u6807\u6807\u8BC6\u7B26\uFF0C\u663E\u793A\u5728\u8F93\u5165\u6846\u5185\u4FA7"),
|
|
50
56
|
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"
|
|
57
|
+
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\u3001index \u548C id \u53D8\u91CF"),
|
|
52
58
|
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
59
|
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
60
|
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",
|
|
61
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
62
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
57
63
|
validation: validationC
|
|
58
64
|
});
|
|
59
65
|
export const SelectFieldC = z.object({
|
|
@@ -68,9 +74,9 @@ export const SelectFieldC = z.object({
|
|
|
68
74
|
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
75
|
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
76
|
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",
|
|
77
|
+
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\u3001index \u548C id \u53D8\u91CF"),
|
|
78
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
79
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
74
80
|
validation: validationC
|
|
75
81
|
});
|
|
76
82
|
export const CalendarFieldC = z.object({
|
|
@@ -84,10 +90,10 @@ export const CalendarFieldC = z.object({
|
|
|
84
90
|
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
91
|
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
92
|
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",
|
|
93
|
+
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\u3001index \u548C id \u53D8\u91CF"),
|
|
94
|
+
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"),
|
|
95
|
+
hidden: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
96
|
+
disabled: expressionC(["bool", "dyn"], inheritedFieldContext).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF"),
|
|
91
97
|
validation: validationC
|
|
92
98
|
});
|
|
93
99
|
export const SlotFieldC = z.strictObject({
|
|
@@ -110,9 +116,9 @@ export const FieldC = z.discriminatedUnion("type", [
|
|
|
110
116
|
EmptyFieldC
|
|
111
117
|
]);
|
|
112
118
|
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");
|
|
119
|
+
export const FieldsStyleC = expressionC([/^map/, "dyn"], {
|
|
120
|
+
...inheritedFieldContext
|
|
121
|
+
}).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\u3001index \u548C id \u53D8\u91CF\u3002");
|
|
116
122
|
const FieldsBodyObjectC = z.object({
|
|
117
123
|
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
124
|
style: FieldsStyleC,
|
|
@@ -79,10 +79,11 @@ function getColumnTitle(column) {
|
|
|
79
79
|
function getColumnTooltip(column) {
|
|
80
80
|
return getLocalizedText(column.tooltip, locale.value);
|
|
81
81
|
}
|
|
82
|
-
function getRowDslContext(row, index) {
|
|
82
|
+
function getRowDslContext(row, index, id) {
|
|
83
83
|
return mergeDslContexts({
|
|
84
84
|
row,
|
|
85
|
-
index: BigInt(index)
|
|
85
|
+
index: BigInt(index),
|
|
86
|
+
id
|
|
86
87
|
}, inheritedDslContext);
|
|
87
88
|
}
|
|
88
89
|
function translate(column) {
|
|
@@ -114,7 +115,7 @@ function translate(column) {
|
|
|
114
115
|
}
|
|
115
116
|
return renderer.cell({
|
|
116
117
|
ctx,
|
|
117
|
-
dslContext: getRowDslContext(ctx.row.original, ctx.row.index),
|
|
118
|
+
dslContext: getRowDslContext(ctx.row.original, ctx.row.index, ctx.row.id),
|
|
118
119
|
options
|
|
119
120
|
});
|
|
120
121
|
},
|
|
@@ -162,12 +163,17 @@ const TableRowCELContext = defineComponent({
|
|
|
162
163
|
index: {
|
|
163
164
|
type: Number,
|
|
164
165
|
required: true
|
|
166
|
+
},
|
|
167
|
+
id: {
|
|
168
|
+
type: String,
|
|
169
|
+
default: void 0
|
|
165
170
|
}
|
|
166
171
|
},
|
|
167
172
|
setup(props2, { slots: slots2 }) {
|
|
168
173
|
provideCELContext({
|
|
169
174
|
row: props2.row,
|
|
170
|
-
index: BigInt(props2.index)
|
|
175
|
+
index: BigInt(props2.index),
|
|
176
|
+
id: props2.id
|
|
171
177
|
});
|
|
172
178
|
return () => slots2.default?.();
|
|
173
179
|
}
|
|
@@ -763,6 +769,7 @@ export {
|
|
|
763
769
|
}"
|
|
764
770
|
>
|
|
765
771
|
<TableRowCELContext
|
|
772
|
+
:id="cell.row.id"
|
|
766
773
|
:row="cell.row.original"
|
|
767
774
|
:index="cell.row.index"
|
|
768
775
|
>
|
|
@@ -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);
|