@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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shwfed/nuxt",
3
3
  "configKey": "shwfed",
4
- "version": "0.11.23",
4
+ "version": "0.11.25",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.1"
@@ -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", form: "map<string, dyn>" }).describe("\u8FD4\u56DE\u5E03\u5C14\u503C\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u53EF\u4F7F\u7528 value \u548C form \u53D8\u91CF"),
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 form \u53D8\u91CF")
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", { form: "map<string, dyn>" }).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 \u53D8\u91CF"),
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", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5"),
25
- disabled: expressionC("bool", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5"),
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", { form: "map<string, dyn>" }).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 \u53D8\u91CF"),
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", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5"),
40
- disabled: expressionC("bool", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5"),
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"], { form: "map<string, dyn>" }).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 \u53D8\u91CF"),
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", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5"),
56
- disabled: expressionC("bool", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5"),
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(/.+/, { form: "map<string, dyn>" }).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 \u53D8\u91CF"),
72
- hidden: expressionC("bool", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5"),
73
- disabled: expressionC("bool", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5"),
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", { form: "map<string, dyn>" }).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 \u53D8\u91CF"),
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", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u9690\u85CF\u8FD9\u4E2A\u5B57\u6BB5"),
90
- disabled: expressionC("bool", { form: "map<string, dyn>" }).optional().describe("\u4E3A true \u65F6\uFF0C\u7981\u7528\u8FD9\u4E2A\u5B57\u6BB5"),
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
- form: "map<string, dyn>"
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shwfed/nuxt",
3
- "version": "0.11.23",
3
+ "version": "0.11.25",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "type": "module",