@shwfed/nuxt 0.11.37 → 0.11.38

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.
@@ -2,6 +2,7 @@ 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 fieldGroupIdC = z.uuid().describe("\u5B57\u6BB5\u7EC4\u552F\u4E00\u6807\u8BC6\uFF0C\u5FC5\u987B\u662F UUID");
5
6
  const inheritedFieldContext = {
6
7
  form: "map<string, dyn>",
7
8
  row: "map<string, dyn>",
@@ -15,6 +16,7 @@ const fieldCellStyleShape = {
15
16
  export const KIND = "shwfed.component.fields";
16
17
  export const CURRENT_COMPATIBILITY_DATE = "2026-03-20";
17
18
  export const SUPPORTED_COMPATIBILITY_DATES = [CURRENT_COMPATIBILITY_DATE];
19
+ export const LEGACY_DEFAULT_GROUP_ID = "00000000-0000-4000-8000-000000000000";
18
20
  export const ValidationRuleC = z.object({
19
21
  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"),
20
22
  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")
@@ -69,6 +71,15 @@ export const NumberFieldC = z.object({
69
71
  validation: validationC,
70
72
  ...fieldCellStyleShape
71
73
  });
74
+ export const MarkdownFieldC = z.object({
75
+ id: fieldIdC,
76
+ type: z.literal("markdown").describe("\u5C55\u793A\u578B Markdown \u5B57\u6BB5\uFF0C\u663E\u793A\u5E26\u6807\u7B7E\u7684\u672C\u5730\u5316 Markdown \u5185\u5BB9"),
77
+ title: localeC.describe("\u5B57\u6BB5\u6807\u7B7E\u7684\u672C\u5730\u5316\u663E\u793A\u6587\u672C"),
78
+ locale: localeC.describe("\u5B57\u6BB5\u5185\u5BB9\u7684\u672C\u5730\u5316 Markdown \u6587\u672C\uFF0C\u652F\u6301 {{ expression }} \u8BED\u6CD5"),
79
+ style: z.string().optional().describe("CSS \u6837\u5F0F\u5BF9\u8C61\u8868\u8FBE\u5F0F\uFF0C\u63A7\u5236\u5B57\u6BB5\u7684\u5E03\u5C40\u4E0E\u5916\u89C2"),
80
+ 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"),
81
+ ...fieldCellStyleShape
82
+ }).strict();
72
83
  export const SelectFieldC = z.object({
73
84
  id: fieldIdC,
74
85
  type: z.literal("select").describe("\u4E0B\u62C9\u9009\u62E9\u5B57\u6BB5\uFF0C\u4ECE\u9884\u5B9A\u4E49\u9009\u9879\u4E2D\u9009\u53D6\u4E00\u4E2A\u503C"),
@@ -156,6 +167,7 @@ export const FieldC = z.discriminatedUnion("type", [
156
167
  StringFieldC,
157
168
  TextareaFieldC,
158
169
  NumberFieldC,
170
+ MarkdownFieldC,
159
171
  SelectFieldC,
160
172
  RadioGroupFieldC,
161
173
  CalendarFieldC,
@@ -167,18 +179,82 @@ export const FieldsOrientationC = z.enum(["horizontal", "vertical", "floating",
167
179
  export const FieldsStyleC = expressionC([/^map/, "dyn"], {
168
180
  ...inheritedFieldContext
169
181
  }).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");
170
- const FieldsBodyObjectC = z.object({
182
+ export const FieldGroupStyleC = expressionC([/^map/, "dyn"], {
183
+ ...inheritedFieldContext
184
+ }).optional().describe("\u8FD4\u56DE\u5B57\u6BB5\u7EC4\u5BB9\u5668\u6837\u5F0F\u5BF9\u8C61\u7684 CEL \u8868\u8FBE\u5F0F\uFF0C\u53EF\u4F7F\u7528 form\u3001row\u3001index \u548C id \u53D8\u91CF\u3002");
185
+ export const FieldGroupC = z.strictObject({
186
+ id: fieldGroupIdC,
187
+ title: localeC.optional().describe("\u5B57\u6BB5\u7EC4\u6807\u9898\u7684\u672C\u5730\u5316\u663E\u793A\u6587\u672C\uFF0C\u7559\u7A7A\u65F6\u4E0D\u6E32\u67D3\u6807\u9898"),
188
+ style: FieldGroupStyleC,
189
+ fields: z.array(FieldC).readonly().describe("\u5B57\u6BB5\u7EC4\u5185\u5B57\u6BB5\u5217\u8868")
190
+ }).readonly();
191
+ const fieldsSharedShape = {
171
192
  orientation: FieldsOrientationC.optional().describe("\u5B57\u6BB5\u5E03\u5C40\u65B9\u5411\uFF0C\u53EF\u9009 horizontal\u3001vertical\u3001floating \u6216 contents\uFF1B\u7559\u7A7A\u65F6\u9ED8\u8BA4 horizontal"),
172
193
  bordered: z.boolean().optional().describe("\u4E3A true \u65F6\uFF0C\u5728 contents \u5E03\u5C40\u6A21\u5F0F\u4E0B\u4E3A\u5BB9\u5668\u548C\u6BCF\u4E2A\u5355\u5143\u683C\u6DFB\u52A0\u8868\u683C\u5F0F\u8FB9\u6846"),
173
- style: FieldsStyleC,
174
- fields: z.array(FieldC).readonly().describe("\u5B57\u6BB5\u5217\u8868")
194
+ style: FieldsStyleC
195
+ };
196
+ const FieldsBodyNormalizedObjectC = z.object({
197
+ ...fieldsSharedShape,
198
+ groups: z.array(FieldGroupC).readonly().describe("\u6839\u7EA7\u5B57\u6BB5\u7EC4\u5217\u8868")
199
+ });
200
+ const FieldsBodyInputObjectC = z.object({
201
+ ...fieldsSharedShape,
202
+ fields: z.array(FieldC).readonly().optional().describe("\u65E7\u7248\u6839\u7EA7\u5B57\u6BB5\u5217\u8868\uFF0C\u4EC5\u7528\u4E8E\u517C\u5BB9\u8F93\u5165"),
203
+ groups: z.array(FieldGroupC).readonly().optional().describe("\u6839\u7EA7\u5B57\u6BB5\u7EC4\u5217\u8868")
204
+ }).superRefine((value, ctx) => {
205
+ if (value.fields && value.groups) {
206
+ ctx.addIssue({
207
+ code: "custom",
208
+ message: "fields and groups cannot be provided together",
209
+ path: ["groups"]
210
+ });
211
+ }
212
+ if (!value.fields && !value.groups) {
213
+ ctx.addIssue({
214
+ code: "custom",
215
+ message: "groups is required",
216
+ path: ["groups"]
217
+ });
218
+ }
175
219
  });
176
- export const FieldsBodyC = FieldsBodyObjectC.readonly();
177
- export const FieldsBodyInputC = FieldsBodyC;
178
- export const FieldsConfigC = FieldsBodyObjectC.extend(
220
+ function normalizeFieldsBody(input) {
221
+ const nextBody = {
222
+ groups: input.groups ?? [
223
+ {
224
+ id: LEGACY_DEFAULT_GROUP_ID,
225
+ fields: input.fields ?? []
226
+ }
227
+ ]
228
+ };
229
+ if (input.orientation) {
230
+ nextBody.orientation = input.orientation;
231
+ }
232
+ if (input.bordered) {
233
+ nextBody.bordered = input.bordered;
234
+ }
235
+ if (input.style) {
236
+ nextBody.style = input.style;
237
+ }
238
+ return nextBody;
239
+ }
240
+ export const FieldsBodyInputC = FieldsBodyInputObjectC.readonly();
241
+ export const FieldsBodyC = FieldsBodyInputObjectC.transform(normalizeFieldsBody).pipe(FieldsBodyNormalizedObjectC).readonly();
242
+ const FieldsConfigInputObjectC = FieldsBodyInputObjectC.extend(
243
+ createComponentConfigMetadataShape(KIND, SUPPORTED_COMPATIBILITY_DATES)
244
+ );
245
+ const FieldsConfigNormalizedObjectC = FieldsBodyNormalizedObjectC.extend(
179
246
  createComponentConfigMetadataShape(KIND, SUPPORTED_COMPATIBILITY_DATES)
180
- ).readonly();
181
- export const FieldsConfigInputC = FieldsConfigC;
247
+ );
248
+ function normalizeFieldsConfig(input) {
249
+ const body = normalizeFieldsBody(input);
250
+ return {
251
+ ...body,
252
+ kind: input.kind,
253
+ compatibilityDate: input.compatibilityDate
254
+ };
255
+ }
256
+ export const FieldsConfigInputC = FieldsConfigInputObjectC.readonly();
257
+ export const FieldsConfigC = FieldsConfigInputObjectC.transform(normalizeFieldsConfig).pipe(FieldsConfigNormalizedObjectC).readonly();
182
258
  export function createFieldsConfig(body) {
183
- return createComponentConfig(KIND, CURRENT_COMPATIBILITY_DATE, body);
259
+ return FieldsConfigC.parse(createComponentConfig(KIND, CURRENT_COMPATIBILITY_DATE, body));
184
260
  }