zova-module-a-form 5.1.49 → 5.1.51

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/index.js CHANGED
@@ -820,78 +820,80 @@ function formSceneFromFormMeta(formMeta) {
820
820
  //#endregion
821
821
  //#region src/lib/formLayout.ts
822
822
  function resolveFormLayout(layout, properties) {
823
- const propertyNames = new Set(properties?.filter((item) => item.rest?.visible !== false).map((item) => item.key).filter(Boolean));
823
+ const visibleProperties = properties?.filter((item) => item.rest?.visible !== false) ?? [];
824
+ const propertyNames = new Set(visibleProperties.map((item) => item.key).filter(Boolean));
825
+ const propertyAliases = /* @__PURE__ */ new Map();
826
+ for (const property of visibleProperties) {
827
+ if (!property.key) continue;
828
+ const schemaKeys = [property.schemaKey, ...property.schemaKeys ?? []];
829
+ for (const schemaKey of schemaKeys) {
830
+ if (!schemaKey || schemaKey === property.key) continue;
831
+ const aliases = propertyAliases.get(schemaKey) ?? /* @__PURE__ */ new Set();
832
+ aliases.add(property.key);
833
+ propertyAliases.set(schemaKey, aliases);
834
+ }
835
+ }
824
836
  const fieldNames = /* @__PURE__ */ new Set();
825
837
  const nodeIds = /* @__PURE__ */ new Set();
826
838
  const diagnostics = [];
827
839
  const fieldTabPaths = {};
828
- const children = layout.children.map((node, index) => resolveNode(node, [index], [], propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
829
- for (const property of properties ?? []) {
830
- const name = property.key;
831
- if (!name || !propertyNames.has(name) || fieldNames.has(name)) continue;
832
- fieldNames.add(name);
833
- children.push({
834
- type: "field",
835
- name
836
- });
837
- }
838
840
  return {
839
- children,
841
+ children: layout.children.map((node, index) => resolveNode(node, [index], [], propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean),
840
842
  fieldTabPaths,
841
843
  diagnostics
842
844
  };
843
845
  }
844
- function resolveNode(node, indexPath, tabPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths) {
845
- if (node.type === "field") return resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths);
846
+ function resolveNode(node, indexPath, tabPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths) {
847
+ if (node.type === "field") return resolveField(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths);
846
848
  if (node.type === "block") return node;
847
- if (node.type === "tabs") return resolveTabs(node, indexPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths);
849
+ if (node.type === "tabs") return resolveTabs(node, indexPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths);
848
850
  const id = resolveId(node, indexPath);
849
851
  if (!registerId(id, nodeIds, diagnostics)) return;
850
852
  if (node.type === "section") {
851
- const children = node.children.map((item) => resolveLeaf(item, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths)).filter(Boolean);
853
+ const children = node.children.map((item) => resolveLeaf(item, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths)).filter(Boolean);
852
854
  return children.length ? {
853
855
  ...node,
854
856
  id,
855
857
  children
856
858
  } : void 0;
857
859
  }
858
- const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
860
+ const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
859
861
  return children.length ? {
860
862
  ...node,
861
863
  id,
862
864
  children
863
865
  } : void 0;
864
866
  }
865
- function resolveLeaf(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths) {
867
+ function resolveLeaf(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths) {
866
868
  if (node.type === "block") return node;
867
- return resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths);
869
+ return resolveField(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths);
868
870
  }
869
- function resolveTabs(node, indexPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths) {
871
+ function resolveTabs(node, indexPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths) {
870
872
  const id = resolveId(node, indexPath);
871
873
  if (!registerId(id, nodeIds, diagnostics)) return;
872
- const children = node.children.map((tab, index) => resolveTab(tab, [...indexPath, index], id, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
874
+ const children = node.children.map((tab, index) => resolveTab(tab, [...indexPath, index], id, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
873
875
  return children.length ? {
874
876
  ...node,
875
877
  id,
876
878
  children
877
879
  } : void 0;
878
880
  }
879
- function resolveTab(node, indexPath, tabsId, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths) {
881
+ function resolveTab(node, indexPath, tabsId, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths) {
880
882
  const id = resolveId(node, indexPath);
881
883
  if (!registerId(id, nodeIds, diagnostics)) return;
882
884
  const tabPath = [{
883
885
  tabsId,
884
886
  tabId: id
885
887
  }];
886
- const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
888
+ const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);
887
889
  return children.length ? {
888
890
  ...node,
889
891
  id,
890
892
  children
891
893
  } : void 0;
892
894
  }
893
- function resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths) {
894
- const name = resolveFieldName(node.name, propertyNames);
895
+ function resolveField(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths) {
896
+ const name = resolveFieldName(node.name, propertyNames, propertyAliases);
895
897
  if (!name) {
896
898
  diagnostics.push({
897
899
  type: "unknownField",
@@ -913,8 +915,10 @@ function resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fie
913
915
  name
914
916
  };
915
917
  }
916
- function resolveFieldName(name, propertyNames) {
918
+ function resolveFieldName(name, propertyNames, propertyAliases) {
917
919
  if (propertyNames.has(name)) return name;
920
+ const aliases = propertyAliases.get(name);
921
+ if (aliases?.size === 1) return aliases.values().next().value;
918
922
  const fieldSourcePrefix = `${name}.`;
919
923
  const fieldSources = [...propertyNames].filter((item) => item.startsWith(fieldSourcePrefix));
920
924
  return fieldSources.length === 1 ? fieldSources[0] : void 0;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["catchError","celEnvBase","isEmptyObject","isNil","ZodMetadata","determineFormLevelErrorSourceAndValue","getBy","isGlobalFormValidationError","revalidateLogic","useSelector","cast","deepEqual","deepExtend","objectAssignReactive","UseScope","isJsxComponent","ZovaJsx","Controller","renderFormFieldTopPropsSystem","BeanControllerFormBase","constFieldProps","ControllerForm","_dec","_dec2","__z_BeanInfo","module","_dec3","_dec4","Reflect","metadata","ScopeModuleAOpenapi","Object","_class","_class2","_ControllerForm","constructor","args","formProvider","schema","zodSchema","properties","zovaJsx","fieldCelEnv","_initializerDefineProperty","_descriptor","__init__","bean","_setBean","form","_createForm","formState","store","state","$computed","$$scopeOpenapi","config","$props","_getZodSchema","$sdk","loadSchemaProperties","schemaScene","_getFieldCelEnv","_newBeanSimple","components","$watch","data","newValue","oldValue","reset","submit","submitMeta","formMeta","formScene","_","error","handleSubmit","isValid","values","opts","hasErrors","node","getErrorFieldCount","_getFormLayoutErrorFieldCount","getFieldValue","name","setFieldValue","value","disableNotifyChanged","onChanged","getFieldProperty","find","item","key","getFieldZodSchema","getFieldSchema","celEnv","clone","registerFunction","defaultValue","getFieldScope","scopeExtra","formScope","property","getFormScope","getFieldJsxRenderContext","$$formField","celScope","app","ctx","$scene","$host","$celScope","$jsx","$$form","getFormJsxRenderContext","getFieldComponentPropsTop","jsxRenderContext","props","_getFieldComponentPropsTopInner","rest","keys","filter","includes","length","keyValue","evaluateExpression","renderJsxOrCel","undefined","needAppend","render","isComponentFormField","type","propsAppend","assign","readonlyTemp","readonly","formMode","getRenderProvider","_patchZodSchema","schemaToZodSchema","def","options","Error","$useForm","defaultValues","validationLogic","validateOnDynamic","validateOnDynamicLogic","onSubmitInvalid","onSubmit","onSubmitData","resHandled","meta","event","emit","code","_handleError422","onShowError","renderField","propsExtra","_renderFieldByKey","visible","componentOptions","_getFieldComponentOptionsTop","renderProvider","fieldMeta","errors","children","reduce","count","child","cause","formApi","hasErrored","currentValidationErrorMap","rawError","parseIssues","formError","fieldErrors","normalizeError","errorMapKey","getErrorMapKey","field","baseStore","fieldMetaBase","getFieldMeta","errorMap","currentErrorMap","errorSourceMap","currentErrorMapSource","newFormValidatorError","newErrorValue","newSource","isPreviousErrorFromFormValidator","previousErrorValue","setFieldMeta","prev","setState","submitErrKey","serverErrKey","$propsDefault","formTag","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","issues","message","JSON","parse","fields","issue","path","join","isNil","useField","useSelector","markRaw","BeanControllerBase","deepEqual","Use","Controller","constFieldProps","ControllerFormField","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ControllerForm","Object","_dec5","_dec6","BeanBehaviorsHolder","_class","_class2","_ControllerFormField","constructor","args","_formField","propsBucket","_initializerDefineProperty","_descriptor","_descriptor2","__init__","$$form","Error","name","bean","_setBean","_createField","$computed","_getPropsBucket","$watch","property","newValue","oldValue","options","_getFormFieldOptions","api","update","form","resetField","$props","onFieldStateReady","$$beanBehaviorsHolder","initialize","behaviorTag","undefined","behaviors","_getFieldBehaviors","process","env","CLIENT","onEffect","getFieldValue","field","getFieldProperty","fieldZodSchema","getFieldZodSchema","formMeta","formProvider","setValue","value","disableNotifyChanged","setFieldValue","handleBlur","getRenderContext","props","key","class","readonly","celScope","getFieldScope","jsxRenderContext","getFieldJsxRenderContext","fieldState","store","state","propsTop","_getFieldComponentPropsTop","layoutOptions","assign","bordered","scope","config","formFieldLayout","label","title","layout","presetOptions","render","style","$cssMerge","$style","classTemp","styleTemp","readonlyTemp","formMode","renderProvider","getRenderProvider","getFieldComponentPropsTop","_prepareBehaviorFormField","_prepareBehaviorFormFieldLayout","behaviorFormField","FormField","behaviorFormFieldLayout","FormFieldLayout","defaultValue","sys","default","validators","_getFormFieldOptionsValidators","zodSchemaField","validateOnDynamicDefault","onDynamic","onBlur","onChange","validateOnDynamic","validateOnBlur","validateOnChange","_normalizeValidateSchema","$propsDefault","$componentOptions","inheritAttrs","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","validateSchema","BeanControllerBase","Use","Controller","ControllerForm","ControllerFormFieldBlank","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","Object","_class","_class2","_ControllerFormFieldBlank","constructor","args","_initializerDefineProperty","_descriptor","__init__","render","$slotDefault","$$form","$propsDefault","$componentOptions","inheritAttrs","deepExtendDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","BeanControllerBase","Use","Controller","ControllerFormFieldPreset","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ControllerForm","Object","_class","_class2","_ControllerFormFieldPreset","constructor","args","_initializerDefineProperty","_descriptor","__init__","render","name","$props","Error","$$form","renderField","$propsDefault","$componentOptions","inheritAttrs","deepExtendDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","h","BeanRenderBase","Render","RenderForm","_dec","_dec2","__z_BeanInfo","module","_class","_renderSchema","properties","children","property","child","_renderFieldByKey","key","Array","isArray","push","_renderChildren","$props","slotHeader","bodyInner","_renderBodyInner","slotBody","slotFooter","_renderFromBlocks","blocks","length","celScope","getFormScope","jsxRenderContext","getFormJsxRenderContext","domBlocks","forEach","block","index","options","Object","assign","domBlock","zovaJsx","render","FormTag","formTag","$slotDefault","_createVNode","_Fragment","display","_renderProps","props","onSubmit","e","onFormSubmit","preventDefault","stopPropagation","submit","slotWrapper","BeanRenderBase","SymbolController","Render","RenderFormField","_dec","_dec2","__z_BeanInfo","module","_class","render","renderContext","getRenderContext","$$beanBehaviorsHolder","_renderSlotDefault","$slotDefault","$$form","zovaJsx","propsBucket","props","celScope","jsxRenderContext"],"sources":["../src/lib/beanControllerFormBase.ts","../src/types/formField.ts","../src/component/form/controller.tsx","../src/component/formField/controller.tsx","../src/component/formFieldBlank/controller.tsx","../src/component/formFieldPreset/controller.tsx","../src/component/form/render.tsx","../src/.metadata/component/form.ts","../src/component/formField/render.tsx","../src/.metadata/component/formField.ts","../src/.metadata/component/formFieldBlank.ts","../src/.metadata/component/formFieldPreset.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/lib/beanControllerPageFormBase.ts","../src/lib/utils.ts","../src/lib/formLayout.ts"],"sourcesContent":["import { useForm } from '@tanstack/vue-form';\nimport { markRaw } from 'vue';\nimport { BeanControllerBase } from 'zova';\nexport class BeanControllerFormBase extends BeanControllerBase {\n constructor(...args) {\n super(...args);\n this.form = void 0;\n this.formState = void 0;\n }\n async submit(_submitMeta) {\n throw new Error('should implement submit');\n }\n reset(_values, _opts) {\n throw new Error('should implement reset');\n }\n $useForm(opts) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useForm(opts));\n });\n }\n}","export const constFieldProps = '$$FieldProps';\n\n// export interface IFormFieldRenderContextProps {\n// name?: string;\n// value?: any;\n// type?: any; // not use string for quasar\n// readonly?: boolean;\n// placeholder?: string;\n// class?: any;\n// onChange?: (e: Event) => void;\n// onInput?: (e: Event) => void;\n// onBlur?: (e: Event) => void;\n// }","import { catchError, celEnvBase, isEmptyObject, isNil } from '@cabloy/utils';\nimport { ZodMetadata } from '@cabloy/zod-openapi';\nimport {\n DeepKeys,\n determineFormLevelErrorSourceAndValue,\n FormValidationError,\n getBy,\n isGlobalFormValidationError,\n revalidateLogic,\n ValidationCause,\n ValidationError,\n} from '@tanstack/vue-form';\nimport { useSelector } from '@tanstack/vue-store';\nimport { SchemaObject } from 'openapi3-ts/oas31';\nimport { VNode } from 'vue';\nimport { z } from 'zod';\nimport { $ZodIssue } from 'zod/v4/core';\nimport { cast, deepEqual, deepExtend, objectAssignReactive, UseScope } from 'zova';\nimport { isJsxComponent, ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport {\n IFormMeta,\n IFormProvider,\n IResourceFormFieldLayoutOptions,\n IResourceRenderBlockOptionsBlock,\n ISchemaObjectExtensionField,\n renderFormFieldTopPropsSystem,\n ScopeModuleAOpenapi,\n TypeFormFieldRenderComponent,\n TypeFormFieldRenderComponentProvider,\n TypeFormSchemaScene,\n} from 'zova-module-a-openapi';\n\nimport type { IResolvedFormLayoutNode, IResolvedFormLayoutTab } from '../../types/formLayout.js';\n\nimport { BeanControllerFormBase } from '../../lib/beanControllerFormBase.js';\nimport {\n IFormScope,\n RevalidateLogicProps,\n TypeFormOnShowError,\n TypeFormOnSubmit,\n TypeFormOnSubmitInvalid,\n} from '../../types/form.js';\nimport {\n constFieldProps,\n IFormFieldOptions,\n IFormFieldRenderContextPropsBucket,\n IFormFieldScope,\n IJsxRenderContextForm,\n IJsxRenderContextFormField,\n} from '../../types/formField.js';\nimport { ControllerFormField } from '../formField/controller.jsx';\n\nexport interface ControllerFormProps<TFormData extends {} = {}, TSubmitMeta = never> {\n formTag?: string;\n data?: TFormData;\n schema?: SchemaObject;\n schemaScene?: TypeFormSchemaScene;\n zodSchema?: z.ZodObject<any>;\n validateOnDynamic?: boolean;\n validateOnDynamicLogic?: RevalidateLogicProps;\n formMeta?: IFormMeta;\n formProvider?: IFormProvider;\n formScope?: IFormScope;\n formFieldLayout?: IResourceFormFieldLayoutOptions;\n blocks?: IResourceRenderBlockOptionsBlock[];\n onFormSubmit?: (e: SubmitEvent, form: ControllerForm<TFormData, TSubmitMeta>) => any;\n onSubmitInvalid?: TypeFormOnSubmitInvalid<TFormData, TSubmitMeta>;\n onSubmitData?: TypeFormOnSubmit<TFormData, TSubmitMeta>;\n onShowError?: TypeFormOnShowError<TFormData, TSubmitMeta>;\n onChanged?: (data: TFormData) => void;\n slotDefault?: (form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotHeader?: (form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotBody?: (children: VNode, form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotFooter?: (form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotWrapper?: (\n children: (VNode | undefined)[],\n form: ControllerForm<TFormData, TSubmitMeta>,\n ) => VNode;\n}\n@Controller()\nexport class ControllerForm<\n TFormData extends {} = {},\n TSubmitMeta = never,\n> extends BeanControllerFormBase<TFormData, TSubmitMeta> {\n static $propsDefault = { formTag: 'form', schemaScene: 'form' };\n\n formProvider: IFormProvider;\n schema: SchemaObject | undefined;\n zodSchema: z.ZodObject<any> | undefined;\n properties: ISchemaObjectExtensionField[] | undefined;\n zovaJsx: ZovaJsx;\n fieldCelEnv: typeof celEnvBase;\n\n @UseScope()\n $$scopeOpenapi: ScopeModuleAOpenapi;\n\n protected async __init__() {\n this.bean._setBean('$$form', this);\n this.form = this._createForm();\n this.formState = useSelector(this.form.store, state => state) as any;\n this.formProvider = this.$computed(() => {\n const formProvider = this.$$scopeOpenapi.config.formProvider;\n return this.$props.formProvider\n ? deepExtend({}, formProvider, this.$props.formProvider)\n : formProvider;\n });\n this.schema = this.$computed(() => {\n return this.$props.schema;\n });\n this.zodSchema = this.$computed(() => {\n return this._getZodSchema();\n });\n this.properties = this.$computed(() => {\n return this.$sdk.loadSchemaProperties(this.schema, this.$props.schemaScene);\n });\n this.fieldCelEnv = this._getFieldCelEnv();\n this.zovaJsx = this.bean._newBeanSimple(\n ZovaJsx,\n false,\n this.formProvider.components,\n this.fieldCelEnv,\n );\n this.$watch(\n () => this.$props.data,\n (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n this.reset(this.$props.data);\n },\n );\n }\n\n public async submit(submitMeta?: TSubmitMeta): Promise<boolean> {\n if (this.formMeta?.formScene === 'view') return false;\n const [_, error] = await catchError(() => {\n return this.form.handleSubmit(submitMeta as any);\n });\n return !error && this.formState.isValid;\n }\n\n public reset(values?: TFormData, opts?: { keepDefaultValues?: boolean }): TFormData {\n this.form.reset(values ?? ({} as TFormData), opts);\n return this.form.state.values;\n }\n\n public get formMeta() {\n return this.$props.formMeta;\n }\n\n public hasErrors(node: IResolvedFormLayoutNode | IResolvedFormLayoutTab) {\n return this.getErrorFieldCount(node) > 0;\n }\n\n public getErrorFieldCount(node: IResolvedFormLayoutNode | IResolvedFormLayoutTab) {\n return this._getFormLayoutErrorFieldCount(node);\n }\n\n public getFieldValue<K extends DeepKeys<TFormData>>(name: K) {\n return getBy(this.formState.values, name) ?? null;\n }\n\n public setFieldValue<K extends DeepKeys<TFormData>>(\n name: K,\n value: any,\n disableNotifyChanged?: boolean,\n ) {\n this.form.setFieldValue(name, value);\n if (!disableNotifyChanged) {\n this.$props.onChanged?.(this.formState.values);\n }\n }\n\n public getFieldProperty<K extends DeepKeys<TFormData>>(\n name: K,\n ): ISchemaObjectExtensionField | undefined {\n if (!this.properties) return;\n return this.properties.find(item => item.key === name);\n }\n\n public getFieldZodSchema<K extends DeepKeys<TFormData>>(name: K) {\n return ZodMetadata.getFieldSchema(this.zodSchema, name as string);\n }\n\n private _getFieldCelEnv(): typeof celEnvBase {\n const celEnv = celEnvBase.clone();\n celEnv.registerFunction('getValue(string):dyn', name => {\n return this.form.getFieldValue(name) ?? null;\n });\n celEnv.registerFunction('getValue(string, dyn):dyn', (name, defaultValue) => {\n return this.form.getFieldValue(name) ?? defaultValue;\n });\n celEnv.registerFunction('getProperty(string):dyn', name => {\n return this.getFieldProperty(name) ?? null;\n });\n return celEnv;\n }\n\n public getFieldScope<K extends DeepKeys<TFormData>>(\n name: K,\n scopeExtra?: {},\n ): IFormFieldScope<TFormData> {\n return objectAssignReactive({}, this.$props.formScope, {\n name,\n value: this.getFieldValue(name),\n property: this.getFieldProperty(name),\n ...scopeExtra,\n });\n }\n\n public getFormScope(scopeExtra?: {}): IFormScope {\n return objectAssignReactive({}, this.$props.formScope, {\n ...scopeExtra,\n });\n }\n\n public getFieldJsxRenderContext(\n $$formField: ControllerFormField<TFormData> | undefined,\n celScope: IFormFieldScope<TFormData>,\n ): IJsxRenderContextFormField<TFormData, TSubmitMeta> {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'formField',\n $host: $$formField ?? this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$formField,\n $$form: this,\n };\n }\n\n public getFormJsxRenderContext(\n celScope: IFormScope,\n ): IJsxRenderContextForm<TFormData, TSubmitMeta> {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'form',\n $host: this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$form: this,\n };\n }\n\n public getFieldComponentPropsTop<K extends DeepKeys<TFormData>>(\n name: K,\n celScope: IFormFieldScope<TFormData>,\n jsxRenderContext: {},\n ): IFormFieldRenderContextPropsBucket {\n const props = this._getFieldComponentPropsTopInner(name, celScope, jsxRenderContext);\n return props;\n }\n\n private _getFieldComponentPropsTopInner<K extends DeepKeys<TFormData>>(\n name: K,\n celScope: IFormFieldScope<TFormData>,\n jsxRenderContext: {},\n ): IFormFieldRenderContextPropsBucket {\n let props: any = {\n [constFieldProps]: true,\n key: name,\n name,\n value: celScope.value,\n };\n const property = this.getFieldProperty(name);\n if (!property) return props;\n const rest = property.rest;\n if (!rest) return props;\n const keys = Object.keys(rest).filter(item => !renderFormFieldTopPropsSystem.includes(item));\n if (keys.length === 0) return props;\n for (const key of keys) {\n const value = rest[key];\n let keyValue;\n if (key === 'render') {\n if (typeof value === 'string') {\n keyValue = this.zovaJsx.evaluateExpression(value, celScope);\n } else {\n keyValue = value;\n }\n } else {\n keyValue = this.zovaJsx.renderJsxOrCel(value, undefined, celScope, jsxRenderContext);\n }\n props[key] = keyValue;\n }\n // render\n const needAppend = isJsxComponent(props.render) && this.isComponentFormField(props.render.type);\n if (needAppend && !isEmptyObject(props.render.props)) {\n const propsAppend = this.zovaJsx.renderJsxOrCel(\n props.render.props,\n undefined,\n celScope,\n jsxRenderContext,\n );\n props = Object.assign({}, props, propsAppend);\n }\n // readonly\n const readonlyTemp = props.readonly;\n if (isNil(readonlyTemp) && this.formMeta?.formMode === 'view') {\n props.readonly = true;\n }\n // ok\n return props;\n }\n\n // public getRenderFlattern(render: TypeFormFieldRenderComponent): TypeFormFieldRenderComponent {\n // return isJsxComponent(render) ? cast(render).type : render;\n // }\n\n public getRenderProvider(\n render: TypeFormFieldRenderComponent,\n ): TypeFormFieldRenderComponentProvider {\n if (isJsxComponent(render)) {\n return cast(render).type;\n }\n if (typeof render === 'string') {\n return this.formProvider.components?.[render] ?? render;\n }\n return render as TypeFormFieldRenderComponentProvider;\n }\n\n private _getZodSchema() {\n if (this.$props.zodSchema) return this._patchZodSchema(this.$props.zodSchema);\n if (!this.schema) return;\n return this._patchZodSchema(this.$sdk.schemaToZodSchema(this.schema));\n }\n\n private _patchZodSchema(schema: z.ZodObject<any> | z.ZodUnion<any>) {\n if (schema.def.type === 'object') return schema;\n if (schema.def.type === 'union') {\n return schema.def.options.find(item => item.def.type === 'object');\n }\n throw new Error('invalid zod schema');\n }\n\n private _createForm() {\n // not use $computed\n return this.$useForm<TFormData, TSubmitMeta>({\n defaultValues: this.$props.data,\n validationLogic:\n this.$props.validateOnDynamic !== false\n ? revalidateLogic(this.$props.validateOnDynamicLogic)\n : undefined,\n onSubmitInvalid: data => {\n this.$props.onSubmitInvalid?.(data, this);\n },\n onSubmit: async data => {\n const [_, error] = await catchError(() => {\n return this.$props.onSubmitData?.(data, this);\n });\n // emit event\n const resHandled = await this.app.meta.event.emit('a-form:formSubmission', {\n form: this.form as any,\n data,\n error,\n });\n if (!error) return;\n if (error.code === 422) {\n this._handleError422(error);\n this.$props.onSubmitInvalid?.(data, this);\n } else {\n if (!resHandled) {\n this.$props.onShowError?.({ data, error }, this);\n }\n }\n // must throw error for stop next logic\n throw error;\n },\n });\n }\n\n public renderField<K extends DeepKeys<TFormData>>(\n name: K,\n propsExtra?: IFormFieldOptions<TFormData>,\n ) {\n const property = this.getFieldProperty(name);\n const key = property?.key ?? name;\n return this._renderFieldByKey(key, propsExtra);\n }\n\n protected _renderFieldByKey(key: string, propsExtra?: IFormFieldOptions<TFormData>) {\n // celScope\n const celScope = this.getFieldScope(key);\n const jsxRenderContext = this.getFieldJsxRenderContext(undefined, celScope);\n // props\n let props = this.getFieldComponentPropsTop(key, celScope, jsxRenderContext);\n if (propsExtra) {\n props = Object.assign({}, props, propsExtra);\n }\n if (cast(props).visible === false) return;\n const componentOptions = this._getFieldComponentOptionsTop(props.render);\n return this.zovaJsx.render(componentOptions, props, celScope, jsxRenderContext);\n }\n\n private _getFieldComponentOptionsTop(\n render: TypeFormFieldRenderComponent,\n ): TypeFormFieldRenderComponent {\n render = render ?? 'Input';\n const renderProvider = this.getRenderProvider(render);\n if (this.isComponentFormField(renderProvider)) {\n return renderProvider as TypeFormFieldRenderComponent;\n }\n return 'a-form:formField';\n }\n\n public isComponentFormField(renderProvider?: TypeFormFieldRenderComponentProvider) {\n return typeof renderProvider === 'string' && renderProvider.includes(':formField');\n }\n\n private _getFormLayoutErrorFieldCount(node: IResolvedFormLayoutNode | IResolvedFormLayoutTab) {\n if (node.type === 'field') {\n return this.formState.fieldMeta[node.name]?.errors?.length ? 1 : 0;\n }\n if (node.type === 'block') return 0;\n return node.children.reduce((count, child) => {\n return count + this._getFormLayoutErrorFieldCount(child);\n }, 0);\n }\n\n private _handleError422(error: Error, cause: ValidationCause = 'submit') {\n const formApi = this.form;\n\n let hasErrored = false as boolean;\n\n // This map will only include fields that have errors in the current validation cycle\n const currentValidationErrorMap: any = {};\n\n const rawError = parseIssues(error);\n const { formError, fieldErrors } = normalizeError<TFormData>(rawError);\n\n const errorMapKey = getErrorMapKey(cause);\n\n for (const field of Object.keys(formApi.state.fieldMeta) as DeepKeys<TFormData>[]) {\n if (formApi.baseStore.state.fieldMetaBase[field] === undefined) {\n continue;\n }\n\n const fieldMeta = formApi.getFieldMeta(field);\n if (!fieldMeta) continue;\n\n const { errorMap: currentErrorMap, errorSourceMap: currentErrorMapSource } = fieldMeta;\n\n const newFormValidatorError = fieldErrors?.[field];\n\n const { newErrorValue, newSource } = determineFormLevelErrorSourceAndValue({\n newFormValidatorError,\n isPreviousErrorFromFormValidator: currentErrorMapSource?.[errorMapKey] === 'form',\n previousErrorValue: currentErrorMap?.[errorMapKey],\n });\n\n if (newSource === 'form') {\n currentValidationErrorMap[field] = {\n ...currentValidationErrorMap[field],\n [errorMapKey]: newFormValidatorError,\n };\n }\n\n if (currentErrorMap?.[errorMapKey] !== newErrorValue) {\n formApi.setFieldMeta(field, prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [errorMapKey]: newErrorValue,\n },\n errorSourceMap: {\n ...prev.errorSourceMap,\n [errorMapKey]: newSource,\n },\n }));\n }\n }\n\n if (formApi.state.errorMap?.[errorMapKey] !== formError) {\n formApi.baseStore.setState(prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [errorMapKey]: formError,\n },\n }));\n }\n\n if (formError || fieldErrors) {\n hasErrored = true;\n }\n\n /**\n * when we have an error for onSubmit in the state, we want\n * to clear the error as soon as the user enters a valid value in the field\n */\n const submitErrKey = getErrorMapKey('submit');\n if (formApi.state.errorMap?.[submitErrKey] && cause !== 'submit' && !hasErrored) {\n formApi.baseStore.setState(prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [submitErrKey]: undefined,\n },\n }));\n }\n\n /**\n * when we have an error for onServer in the state, we want\n * to clear the error as soon as the user enters a valid value in the field\n */\n const serverErrKey = getErrorMapKey('server');\n if (formApi.state.errorMap?.[serverErrKey] && cause !== 'server' && !hasErrored) {\n formApi.baseStore.setState(prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [serverErrKey]: undefined,\n },\n }));\n }\n }\n}\n\nfunction parseIssues(error: Error) {\n const issues: $ZodIssue[] =\n typeof error.message === 'string' ? JSON.parse(error.message) : error.message;\n const fields = {};\n for (const issue of issues) {\n const key = issue.path.join('.');\n fields[key] = issue;\n }\n return { fields };\n}\n\nfunction normalizeError<TFormData>(rawError?: FormValidationError<unknown>): {\n formError: ValidationError;\n fieldErrors?: Partial<Record<DeepKeys<TFormData>, ValidationError>>;\n} {\n if (rawError) {\n if (isGlobalFormValidationError(rawError)) {\n const formError = normalizeError(rawError.form).formError;\n const fieldErrors = rawError.fields;\n return { formError, fieldErrors } as never;\n }\n\n return { formError: rawError };\n }\n\n return { formError: undefined };\n}\n\nfunction getErrorMapKey(cause: ValidationCause) {\n switch (cause) {\n case 'submit':\n return 'onSubmit';\n case 'blur':\n return 'onBlur';\n case 'mount':\n return 'onMount';\n case 'server':\n return 'onServer';\n case 'dynamic':\n return 'onDynamic';\n case 'change':\n default:\n return 'onChange';\n }\n}\n","import { isNil } from '@cabloy/utils';\nimport { useField } from '@tanstack/vue-form';\nimport { useSelector } from '@tanstack/vue-store';\nimport { markRaw } from 'vue';\nimport z from 'zod';\nimport { BeanControllerBase, deepEqual, IComponentOptions, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport { BeanBehaviorsHolder, IBehaviorItem } from 'zova-module-a-behavior';\n\nimport type { ControllerForm } from '../form/controller.jsx';\n\nimport { TypeFormField } from '../../types/form.js';\nimport {\n constFieldProps,\n IFormFieldComponentOptions,\n IFormFieldOptions,\n IFormFieldRenderContext,\n IFormFieldRenderContextProps,\n IFormFieldRenderContextPropsBucket,\n} from '../../types/formField.js';\n\nexport interface ControllerFormFieldProps<\n TParentData extends {} = {},\n> extends IFormFieldComponentOptions<TParentData> {}\n\n@Controller()\nexport class ControllerFormField<TParentData extends {} = {}> extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false };\n\n private _formField: TypeFormField;\n public propsBucket: IFormFieldRenderContextPropsBucket<TParentData>;\n\n @Use({ injectionScope: 'host' })\n $$form: ControllerForm<TParentData>;\n\n @Use()\n $$beanBehaviorsHolder: BeanBehaviorsHolder;\n\n protected async __init__() {\n if (!this.$$form) {\n throw new Error(`FormField component should be used in Form component: ${this.name}`);\n }\n // provide\n this.bean._setBean('$$formField', this);\n // field\n this._formField = this._createField();\n // propsBucket\n this.propsBucket = this.$computed(() => {\n return this._getPropsBucket();\n });\n // defaultValue\n // this._handleDefaultValue();\n // watch\n this.$watch(\n () => this.property,\n (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n // defaultValue\n // this._handleDefaultValue();\n const options = this._getFormFieldOptions();\n this._formField.api.update(options as any);\n this.form.resetField(this.name);\n this.$props.onFieldStateReady?.(this);\n },\n );\n // behaviors\n await this.$$beanBehaviorsHolder.initialize({\n behaviorTag: undefined as any,\n behaviors: () => {\n return this._getFieldBehaviors();\n },\n });\n // onEffect\n if (process.env.CLIENT && this.$props.onEffect) {\n this.$watch(\n () => this.$$form.getFieldValue(this.name),\n (newValue, oldValue) => {\n if (newValue === oldValue) return;\n this.$props.onEffect?.(newValue);\n },\n );\n }\n this.$props.onFieldStateReady?.(this);\n }\n\n public get form() {\n return this.$$form.form;\n }\n\n public get field(): TypeFormField {\n return this._formField;\n }\n\n public get name() {\n return this.$props.name!;\n }\n\n public get property() {\n return this.$$form.getFieldProperty(this.name);\n }\n\n public get fieldZodSchema() {\n return this.$$form.getFieldZodSchema(this.name);\n }\n\n public get formMeta() {\n return this.$$form.formMeta;\n }\n\n public get formProvider() {\n return this.$$form.formProvider;\n }\n\n public setValue(value: any, disableNotifyChanged?: boolean) {\n if (disableNotifyChanged === undefined) {\n disableNotifyChanged = this.propsBucket.disableNotifyChanged;\n }\n return this.$$form.setFieldValue(this.name, value, disableNotifyChanged);\n }\n\n public handleBlur() {\n this.field.api.handleBlur();\n }\n\n public getRenderContext(): IFormFieldRenderContext<TParentData> {\n const name = this.name;\n // propsBucket\n const propsBucket = this.propsBucket;\n // props\n const props: IFormFieldRenderContextProps = { key: name, name };\n // class\n props.class = propsBucket.class;\n // readonly\n props.readonly = propsBucket.readonly;\n // celScope\n const celScope = this.$$form.getFieldScope(this.name, {});\n const jsxRenderContext = this.$$form.getFieldJsxRenderContext(this, celScope);\n return { propsBucket, props, celScope, jsxRenderContext };\n }\n\n private _createField() {\n const options = this._getFormFieldOptions();\n const field = markRaw(useField(options as any)) as any;\n const fieldState = useSelector(field.api.store, state => state) as any;\n return { api: field.api, state: fieldState };\n }\n\n private _getPropsBucket() {\n const property = this.property;\n const name = this.name;\n // options\n const propsTop = this._getFieldComponentPropsTop();\n // layout options\n const layoutOptions = Object.assign(\n {\n bordered: this.scope.config.formFieldLayout.bordered,\n label: property?.title ?? name,\n },\n this.$$form.$props.formFieldLayout,\n this.$props?.layout,\n propsTop?.layout,\n );\n // preset options\n const presetOptions = Object.assign({}, this.$props?.options, propsTop?.options);\n // propsBucket\n const propsBucket = Object.assign(\n {\n render: 'Input',\n },\n this.$props as IFormFieldOptions<TParentData>,\n propsTop,\n {\n layout: layoutOptions,\n options: presetOptions,\n },\n );\n // class/style: layout\n if (propsBucket.layout.class || propsBucket.layout.style) {\n propsBucket.layout.class = this.$cssMerge(\n propsBucket.layout.class,\n this.$style(propsBucket.layout.style),\n );\n delete propsBucket.layout.style;\n }\n // class/style: need not check typeof propsBucket.render === 'string' because maybe return false\n const classTemp = propsBucket.options?.class ?? propsBucket.class;\n const styleTemp = propsBucket.options?.style ?? propsBucket.style;\n if (classTemp || styleTemp) {\n propsBucket.class = this.$cssMerge(classTemp, this.$style(styleTemp));\n if (propsBucket.options?.class) delete propsBucket.options.class;\n if (propsBucket.options?.style) delete propsBucket.options.style;\n delete propsBucket.style;\n }\n // readonly\n const readonlyTemp = propsBucket.options?.readonly ?? propsBucket.readonly;\n if (!isNil(readonlyTemp)) {\n propsBucket.readonly = readonlyTemp;\n if (propsBucket.options?.readonly) delete propsBucket.options.readonly;\n } else if (this.formMeta?.formMode === 'view') {\n propsBucket.readonly = true;\n }\n // render\n // propsBucket.renderFlattern = this.$$form.getRenderFlattern(propsBucket.render);\n propsBucket.renderProvider = this.$$form.getRenderProvider(propsBucket.render);\n return propsBucket;\n }\n\n private _getFieldComponentPropsTop() {\n if (this.$props[constFieldProps] === true) return;\n const celScope = this.$$form.getFieldScope(this.name);\n const jsxRenderContext = this.$$form.getFieldJsxRenderContext(this, celScope);\n return this.$$form.getFieldComponentPropsTop(this.name, celScope, jsxRenderContext);\n }\n\n private _getFieldBehaviors() {\n const behaviors: IBehaviorItem = {};\n // custom\n if (this.$props.behaviors) {\n Object.assign(behaviors, this.$props.behaviors);\n }\n // formField\n this._prepareBehaviorFormField(behaviors);\n // formFieldLayout\n this._prepareBehaviorFormFieldLayout(behaviors);\n return behaviors;\n }\n\n private _prepareBehaviorFormField(behaviors: IBehaviorItem) {\n const behaviorFormField = this.formProvider.behaviors?.FormField;\n if (!behaviorFormField) return;\n behaviors[behaviorFormField] = {} as never;\n }\n\n private _prepareBehaviorFormFieldLayout(behaviors: IBehaviorItem) {\n const behaviorFormFieldLayout = this.formProvider.behaviors?.FormFieldLayout;\n if (!behaviorFormFieldLayout) return;\n behaviors[behaviorFormFieldLayout] = {} as never;\n }\n\n // private _handleDefaultValue() {\n // const defaultValue = this.$props.defaultValue ?? this.property?.default;\n // if (isNil(defaultValue)) return;\n // const value = this.$$form.getFieldValue(this.name);\n // if (isNil(value)) {\n // this.$$form.setFieldValue(this.name, defaultValue, true);\n // }\n // }\n\n private _getFormFieldOptions() {\n // defaultValue\n const value = this.$$form.getFieldValue(this.name);\n const defaultValue = isNil(value)\n ? (this.$props.sys?.defaultValue ?? this.property?.default)\n : undefined;\n // validators\n const validators = this._getFormFieldOptionsValidators();\n return Object.assign(\n {\n defaultValue,\n },\n this.$props.sys,\n {\n name: this.name,\n form: this.$$form.form,\n validators,\n },\n );\n }\n\n private _getFormFieldOptionsValidators() {\n const zodSchemaField = this.fieldZodSchema;\n const validators = this.$props.validators;\n const validateOnDynamicDefault =\n validators?.onDynamic === undefined &&\n validators?.onBlur === undefined &&\n validators?.onChange === undefined;\n const validateOnDynamic = validators?.onDynamic ?? validateOnDynamicDefault;\n const validateOnBlur = validators?.onBlur;\n const validateOnChange = validators?.onChange;\n return Object.assign(\n {},\n {\n onDynamic: _normalizeValidateSchema(validateOnDynamic, zodSchemaField),\n onBlur: _normalizeValidateSchema(validateOnBlur, zodSchemaField),\n onChange: _normalizeValidateSchema(validateOnChange, zodSchemaField),\n },\n this.$props.sys?.validators,\n );\n }\n}\n\nfunction _normalizeValidateSchema(\n validateSchema?: boolean | z.ZodType,\n zodSchemaField?: z.ZodType,\n) {\n if (!validateSchema) return undefined;\n if (validateSchema === true) return zodSchemaField;\n return validateSchema;\n}\n","import type { IComponentOptions } from 'zova';\n\nimport { VNode } from 'vue';\nimport { BeanControllerBase, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ControllerForm } from '../form/controller.jsx';\n\nexport interface ControllerFormFieldBlankProps<TParentData extends {} = {}, TSubmitMeta = never> {\n slotDefault?: (form: ControllerForm<TParentData, TSubmitMeta>) => VNode | undefined;\n}\n\n@Controller()\nexport class ControllerFormFieldBlank<TParentData extends {} = {}> extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };\n\n @Use({ injectionScope: 'host' })\n $$form: ControllerForm<TParentData>;\n\n protected async __init__() {}\n\n protected render() {\n if (this.$slotDefault) {\n return this.$slotDefault(this.$$form);\n }\n }\n}\n","import { BeanControllerBase, IComponentOptions, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport { ISchemaRenderComponentPresetRecord } from 'zova-module-a-openapi';\n\nimport type { ControllerForm } from '../form/controller.jsx';\n\nimport { IFormFieldPresetOptions } from '../../types/formField.js';\n\nexport interface ControllerFormFieldPresetProps<\n PresetName extends keyof ISchemaRenderComponentPresetRecord = never,\n> extends IFormFieldPresetOptions<PresetName> {}\n\n@Controller()\nexport class ControllerFormFieldPreset extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };\n\n @Use({ injectionScope: 'host' })\n $$form: ControllerForm;\n\n protected async __init__() {}\n\n protected render() {\n const name = this.$props.name;\n if (!name) throw new Error('should specify field name');\n return this.$$form.renderField(name, this.$props as any);\n }\n}\n","import { h, VNode } from 'vue';\nimport { BeanRenderBase } from 'zova';\nimport { Render } from 'zova-module-a-bean';\n\n@Render()\nexport class RenderForm extends BeanRenderBase {\n private _renderSchema() {\n if (!this.properties) return;\n const children: VNode[] = [];\n for (const property of this.properties) {\n const child = this._renderFieldByKey(property.key!);\n if (child) {\n if (Array.isArray(child)) {\n children.push(...child);\n } else {\n children.push(child);\n }\n }\n }\n return children;\n }\n\n private _renderChildren() {\n const children: (VNode | undefined)[] = [];\n children.push(this.$props.slotHeader?.(this));\n const bodyInner = this._renderBodyInner();\n if (this.$props.slotBody) {\n children.push(this.$props.slotBody(bodyInner, this));\n } else {\n children.push(bodyInner);\n }\n children.push(this.$props.slotFooter?.(this));\n return children;\n }\n\n private _renderFromBlocks() {\n const blocks = this.$props.blocks;\n if (!blocks || blocks.length === 0) {\n return this._renderSchema();\n }\n const celScope = this.getFormScope();\n const jsxRenderContext = this.getFormJsxRenderContext(celScope);\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = Object.assign({ key: index }, block.options);\n const domBlock = this.zovaJsx.render(block.render!, options, celScope, jsxRenderContext);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return domBlocks;\n }\n\n private _renderBodyInner() {\n const FormTag = this.$props.formTag;\n return this.$slotDefault ? (\n this.$slotDefault(this)\n ) : (\n <>\n {this.$props.blocks ? this._renderFromBlocks() : this._renderSchema()}\n {FormTag === 'form' && <button type=\"submit\" style={{ display: 'none' }}></button>}\n </>\n );\n }\n\n private _renderProps() {\n const FormTag = this.$props.formTag;\n const props: any = {};\n if (FormTag === 'form') {\n props.onSubmit = (e: SubmitEvent) => {\n if (this.$props.onFormSubmit) {\n this.$props.onFormSubmit(e, this);\n } else {\n e.preventDefault();\n e.stopPropagation();\n this.submit();\n }\n };\n }\n return props;\n }\n\n public render() {\n const FormTag = this.$props.formTag;\n const props = this._renderProps();\n const children = this._renderChildren();\n if (this.$props.slotWrapper) {\n return h(FormTag, props, this.$props.slotWrapper(children, this));\n }\n return h(FormTag, props, children);\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerForm } from '../../component/form/controller.jsx';\nimport { RenderForm } from '../../component/form/render.jsx';\nexport const ZForm = defineComponent(_props => {\n useController(ControllerForm, RenderForm, undefined);\n return () => {};\n}, prepareComponentOptions());","import { BeanRenderBase, SymbolController } from 'zova';\nimport { Render } from 'zova-module-a-bean';\n\nimport { IFormFieldRenderContext } from '../../types/formField.js';\n\n@Render()\nexport class RenderFormField<TParentData extends {} = {}> extends BeanRenderBase {\n public render() {\n const renderContext = this.getRenderContext();\n return this.$$beanBehaviorsHolder.render(\n (renderContext: IFormFieldRenderContext<TParentData>) => {\n return this._renderSlotDefault(renderContext);\n },\n renderContext,\n );\n }\n\n private _renderSlotDefault(renderContext: IFormFieldRenderContext<TParentData>) {\n if (this.$slotDefault) {\n return this.$slotDefault!(renderContext, this[SymbolController]);\n }\n return this.$$form.zovaJsx.render(\n renderContext.propsBucket.render,\n renderContext.props,\n renderContext.celScope,\n renderContext.jsxRenderContext,\n );\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerFormField } from '../../component/formField/controller.jsx';\nimport { RenderFormField } from '../../component/formField/render.jsx';\nexport const ZFormField = defineComponent(_props => {\n useController(ControllerFormField, RenderFormField, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerFormField.$componentOptions));","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerFormFieldBlank } from '../../component/formFieldBlank/controller.jsx';\nexport const ZFormFieldBlank = defineComponent(_props => {\n useController(ControllerFormFieldBlank, undefined, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerFormFieldBlank.$componentOptions));","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerFormFieldPreset } from '../../component/formFieldPreset/controller.jsx';\nexport const ZFormFieldPreset = defineComponent(_props => {\n useController(ControllerFormFieldPreset, undefined, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerFormFieldPreset.$componentOptions));","export const config = _sys => {\n return {\n formFieldLayout: {\n bordered: true\n }\n };\n};","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** controller: begin */\nexport * from '../component/form/controller.jsx';\nexport * from '../component/formField/controller.jsx';\nexport * from '../component/formFieldBlank/controller.jsx';\nexport * from '../component/formFieldPreset/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerForm } from '../component/form/controller.jsx';\nimport { ControllerFormField } from '../component/formField/controller.jsx';\nimport { ControllerFormFieldBlank } from '../component/formFieldBlank/controller.jsx';\nimport { ControllerFormFieldPreset } from '../component/formFieldPreset/controller.jsx';\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/form.js';\nimport { ZForm } from './component/form.js';\nexport * from './component/formField.js';\nimport { ZFormField } from './component/formField.js';\nexport * from './component/formFieldBlank.js';\nimport { ZFormFieldBlank } from './component/formFieldBlank.js';\nexport * from './component/formFieldPreset.js';\nimport { ZFormFieldPreset } from './component/formFieldPreset.js';\nexport const components = {\n 'form': ZForm,\n 'formField': ZFormField,\n 'formFieldBlank': ZFormFieldBlank,\n 'formFieldPreset': ZFormFieldPreset\n};\nimport 'zova';\n/** components: end */\n/** render: begin */\nexport * from '../component/form/render.jsx';\nexport * from '../component/formField/render.jsx';\nimport 'zova';\n/** render: end */\n/** render: begin */\nimport { RenderForm } from '../component/form/render.jsx';\nimport { RenderFormField } from '../component/formField/render.jsx';\nimport 'zova';\n/** render: end */\n/** config: begin */\nexport * from '../config/config.js';\n/** config: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleAForm = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-form\"\n}), _dec(_class = _dec2(_class = class ScopeModuleAForm extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */","import { useForm } from '@tanstack/vue-form';\nimport { markRaw } from 'vue';\nimport { BeanControllerPageBase } from 'zova';\nexport class BeanControllerPageFormBase extends BeanControllerPageBase {\n constructor(...args) {\n super(...args);\n this.form = void 0;\n this.formState = void 0;\n }\n async submit(_submitMeta) {\n throw new Error('should implement submit');\n }\n reset(_values, _opts) {\n throw new Error('should implement reset');\n }\n $useForm(opts) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useForm(opts));\n });\n }\n}","export function formMetaFromFormScene(formScene) {\n if (formScene === 'view') return {\n formScene,\n formMode: 'view',\n editMode: undefined\n };\n if (formScene === 'create') return {\n formScene,\n formMode: 'edit',\n editMode: 'create'\n };\n if (formScene === 'edit') return {\n formScene,\n formMode: 'edit',\n editMode: 'update'\n };\n throw new Error('invalid parameters');\n}\nexport function formSceneFromFormMeta(formMeta) {\n if (formMeta.formMode === 'view') return 'view';\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'create') return 'create';\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'update') return 'edit';\n if (formMeta.formMode === 'edit' && formMeta.editMode === undefined) return 'edit';\n return undefined;\n}","export function resolveFormLayout(layout, properties) {\n const propertyNames = new Set(properties?.filter(item => item.rest?.visible !== false).map(item => item.key).filter(Boolean));\n const fieldNames = new Set();\n const nodeIds = new Set();\n const diagnostics = [];\n const fieldTabPaths = {};\n const children = layout.children.map((node, index) => resolveNode(node, [index], [], propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n for (const property of properties ?? []) {\n const name = property.key;\n if (!name || !propertyNames.has(name) || fieldNames.has(name)) continue;\n fieldNames.add(name);\n children.push({\n type: 'field',\n name\n });\n }\n return {\n children,\n fieldTabPaths,\n diagnostics\n };\n}\nfunction resolveNode(node, indexPath, tabPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths) {\n if (node.type === 'field') {\n return resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths);\n }\n if (node.type === 'block') {\n return node;\n }\n if (node.type === 'tabs') {\n return resolveTabs(node, indexPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths);\n }\n const id = resolveId(node, indexPath);\n if (!registerId(id, nodeIds, diagnostics)) return;\n if (node.type === 'section') {\n const children = node.children.map(item => resolveLeaf(item, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n }\n const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n}\nfunction resolveLeaf(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths) {\n if (node.type === 'block') return node;\n return resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths);\n}\nfunction resolveTabs(node, indexPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths) {\n const id = resolveId(node, indexPath);\n if (!registerId(id, nodeIds, diagnostics)) return;\n const children = node.children.map((tab, index) => resolveTab(tab, [...indexPath, index], id, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n}\nfunction resolveTab(node, indexPath, tabsId, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths) {\n const id = resolveId(node, indexPath);\n if (!registerId(id, nodeIds, diagnostics)) return;\n const tabPath = [{\n tabsId,\n tabId: id\n }];\n const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n}\nfunction resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths) {\n const name = resolveFieldName(node.name, propertyNames);\n if (!name) {\n diagnostics.push({\n type: 'unknownField',\n value: node.name\n });\n return;\n }\n if (fieldNames.has(name)) {\n diagnostics.push({\n type: 'duplicateField',\n value: node.name\n });\n return;\n }\n fieldNames.add(name);\n fieldTabPaths[name] = tabPath;\n return name === node.name ? node : {\n ...node,\n name\n };\n}\nfunction resolveFieldName(name, propertyNames) {\n if (propertyNames.has(name)) return name;\n const fieldSourcePrefix = `${name}.`;\n const fieldSources = [...propertyNames].filter(item => item.startsWith(fieldSourcePrefix));\n return fieldSources.length === 1 ? fieldSources[0] : undefined;\n}\nfunction resolveId(node, indexPath) {\n return node.id || `${node.type}-${indexPath.join('-')}`;\n}\nfunction registerId(id, ids, diagnostics) {\n if (!ids.has(id)) {\n ids.add(id);\n return true;\n }\n diagnostics.push({\n type: 'duplicateId',\n value: id\n });\n return false;\n}"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["catchError","celEnvBase","isEmptyObject","isNil","ZodMetadata","determineFormLevelErrorSourceAndValue","getBy","isGlobalFormValidationError","revalidateLogic","useSelector","cast","deepEqual","deepExtend","objectAssignReactive","UseScope","isJsxComponent","ZovaJsx","Controller","renderFormFieldTopPropsSystem","BeanControllerFormBase","constFieldProps","ControllerForm","_dec","_dec2","__z_BeanInfo","module","_dec3","_dec4","Reflect","metadata","ScopeModuleAOpenapi","Object","_class","_class2","_ControllerForm","constructor","args","formProvider","schema","zodSchema","properties","zovaJsx","fieldCelEnv","_initializerDefineProperty","_descriptor","__init__","bean","_setBean","form","_createForm","formState","store","state","$computed","$$scopeOpenapi","config","$props","_getZodSchema","$sdk","loadSchemaProperties","schemaScene","_getFieldCelEnv","_newBeanSimple","components","$watch","data","newValue","oldValue","reset","submit","submitMeta","formMeta","formScene","_","error","handleSubmit","isValid","values","opts","hasErrors","node","getErrorFieldCount","_getFormLayoutErrorFieldCount","getFieldValue","name","setFieldValue","value","disableNotifyChanged","onChanged","getFieldProperty","find","item","key","getFieldZodSchema","getFieldSchema","celEnv","clone","registerFunction","defaultValue","getFieldScope","scopeExtra","formScope","property","getFormScope","getFieldJsxRenderContext","$$formField","celScope","app","ctx","$scene","$host","$celScope","$jsx","$$form","getFormJsxRenderContext","getFieldComponentPropsTop","jsxRenderContext","props","_getFieldComponentPropsTopInner","rest","keys","filter","includes","length","keyValue","evaluateExpression","renderJsxOrCel","undefined","needAppend","render","isComponentFormField","type","propsAppend","assign","readonlyTemp","readonly","formMode","getRenderProvider","_patchZodSchema","schemaToZodSchema","def","options","Error","$useForm","defaultValues","validationLogic","validateOnDynamic","validateOnDynamicLogic","onSubmitInvalid","onSubmit","onSubmitData","resHandled","meta","event","emit","code","_handleError422","onShowError","renderField","propsExtra","_renderFieldByKey","visible","componentOptions","_getFieldComponentOptionsTop","renderProvider","fieldMeta","errors","children","reduce","count","child","cause","formApi","hasErrored","currentValidationErrorMap","rawError","parseIssues","formError","fieldErrors","normalizeError","errorMapKey","getErrorMapKey","field","baseStore","fieldMetaBase","getFieldMeta","errorMap","currentErrorMap","errorSourceMap","currentErrorMapSource","newFormValidatorError","newErrorValue","newSource","isPreviousErrorFromFormValidator","previousErrorValue","setFieldMeta","prev","setState","submitErrKey","serverErrKey","$propsDefault","formTag","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","issues","message","JSON","parse","fields","issue","path","join","isNil","useField","useSelector","markRaw","BeanControllerBase","deepEqual","Use","Controller","constFieldProps","ControllerFormField","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ControllerForm","Object","_dec5","_dec6","BeanBehaviorsHolder","_class","_class2","_ControllerFormField","constructor","args","_formField","propsBucket","_initializerDefineProperty","_descriptor","_descriptor2","__init__","$$form","Error","name","bean","_setBean","_createField","$computed","_getPropsBucket","$watch","property","newValue","oldValue","options","_getFormFieldOptions","api","update","form","resetField","$props","onFieldStateReady","$$beanBehaviorsHolder","initialize","behaviorTag","undefined","behaviors","_getFieldBehaviors","process","env","CLIENT","onEffect","getFieldValue","field","getFieldProperty","fieldZodSchema","getFieldZodSchema","formMeta","formProvider","setValue","value","disableNotifyChanged","setFieldValue","handleBlur","getRenderContext","props","key","class","readonly","celScope","getFieldScope","jsxRenderContext","getFieldJsxRenderContext","fieldState","store","state","propsTop","_getFieldComponentPropsTop","layoutOptions","assign","bordered","scope","config","formFieldLayout","label","title","layout","presetOptions","render","style","$cssMerge","$style","classTemp","styleTemp","readonlyTemp","formMode","renderProvider","getRenderProvider","getFieldComponentPropsTop","_prepareBehaviorFormField","_prepareBehaviorFormFieldLayout","behaviorFormField","FormField","behaviorFormFieldLayout","FormFieldLayout","defaultValue","sys","default","validators","_getFormFieldOptionsValidators","zodSchemaField","validateOnDynamicDefault","onDynamic","onBlur","onChange","validateOnDynamic","validateOnBlur","validateOnChange","_normalizeValidateSchema","$propsDefault","$componentOptions","inheritAttrs","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","validateSchema","BeanControllerBase","Use","Controller","ControllerForm","ControllerFormFieldBlank","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","Object","_class","_class2","_ControllerFormFieldBlank","constructor","args","_initializerDefineProperty","_descriptor","__init__","render","$slotDefault","$$form","$propsDefault","$componentOptions","inheritAttrs","deepExtendDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","BeanControllerBase","Use","Controller","ControllerFormFieldPreset","_dec","_dec2","__z_BeanInfo","module","_dec3","injectionScope","_dec4","Reflect","metadata","ControllerForm","Object","_class","_class2","_ControllerFormFieldPreset","constructor","args","_initializerDefineProperty","_descriptor","__init__","render","name","$props","Error","$$form","renderField","$propsDefault","$componentOptions","inheritAttrs","deepExtendDefault","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer","h","BeanRenderBase","Render","RenderForm","_dec","_dec2","__z_BeanInfo","module","_class","_renderSchema","properties","children","property","child","_renderFieldByKey","key","Array","isArray","push","_renderChildren","$props","slotHeader","bodyInner","_renderBodyInner","slotBody","slotFooter","_renderFromBlocks","blocks","length","celScope","getFormScope","jsxRenderContext","getFormJsxRenderContext","domBlocks","forEach","block","index","options","Object","assign","domBlock","zovaJsx","render","FormTag","formTag","$slotDefault","_createVNode","_Fragment","display","_renderProps","props","onSubmit","e","onFormSubmit","preventDefault","stopPropagation","submit","slotWrapper","BeanRenderBase","SymbolController","Render","RenderFormField","_dec","_dec2","__z_BeanInfo","module","_class","render","renderContext","getRenderContext","$$beanBehaviorsHolder","_renderSlotDefault","$slotDefault","$$form","zovaJsx","propsBucket","props","celScope","jsxRenderContext"],"sources":["../src/lib/beanControllerFormBase.ts","../src/types/formField.ts","../src/component/form/controller.tsx","../src/component/formField/controller.tsx","../src/component/formFieldBlank/controller.tsx","../src/component/formFieldPreset/controller.tsx","../src/component/form/render.tsx","../src/.metadata/component/form.ts","../src/component/formField/render.tsx","../src/.metadata/component/formField.ts","../src/.metadata/component/formFieldBlank.ts","../src/.metadata/component/formFieldPreset.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/lib/beanControllerPageFormBase.ts","../src/lib/utils.ts","../src/lib/formLayout.ts"],"sourcesContent":["import { useForm } from '@tanstack/vue-form';\nimport { markRaw } from 'vue';\nimport { BeanControllerBase } from 'zova';\nexport class BeanControllerFormBase extends BeanControllerBase {\n constructor(...args) {\n super(...args);\n this.form = void 0;\n this.formState = void 0;\n }\n async submit(_submitMeta) {\n throw new Error('should implement submit');\n }\n reset(_values, _opts) {\n throw new Error('should implement reset');\n }\n $useForm(opts) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useForm(opts));\n });\n }\n}","export const constFieldProps = '$$FieldProps';\n\n// export interface IFormFieldRenderContextProps {\n// name?: string;\n// value?: any;\n// type?: any; // not use string for quasar\n// readonly?: boolean;\n// placeholder?: string;\n// class?: any;\n// onChange?: (e: Event) => void;\n// onInput?: (e: Event) => void;\n// onBlur?: (e: Event) => void;\n// }","import { catchError, celEnvBase, isEmptyObject, isNil } from '@cabloy/utils';\nimport { ZodMetadata } from '@cabloy/zod-openapi';\nimport {\n DeepKeys,\n determineFormLevelErrorSourceAndValue,\n FormValidationError,\n getBy,\n isGlobalFormValidationError,\n revalidateLogic,\n ValidationCause,\n ValidationError,\n} from '@tanstack/vue-form';\nimport { useSelector } from '@tanstack/vue-store';\nimport { SchemaObject } from 'openapi3-ts/oas31';\nimport { VNode } from 'vue';\nimport { z } from 'zod';\nimport { $ZodIssue } from 'zod/v4/core';\nimport { cast, deepEqual, deepExtend, objectAssignReactive, UseScope } from 'zova';\nimport { isJsxComponent, ZovaJsx } from 'zova-jsx';\nimport { Controller } from 'zova-module-a-bean';\nimport {\n IFormMeta,\n IFormProvider,\n IResourceFormFieldLayoutOptions,\n IResourceRenderBlockOptionsBlock,\n ISchemaObjectExtensionField,\n renderFormFieldTopPropsSystem,\n ScopeModuleAOpenapi,\n TypeFormFieldRenderComponent,\n TypeFormFieldRenderComponentProvider,\n TypeFormSchemaScene,\n} from 'zova-module-a-openapi';\n\nimport type { IResolvedFormLayoutNode, IResolvedFormLayoutTab } from '../../types/formLayout.js';\n\nimport { BeanControllerFormBase } from '../../lib/beanControllerFormBase.js';\nimport {\n IFormScope,\n RevalidateLogicProps,\n TypeFormOnShowError,\n TypeFormOnSubmit,\n TypeFormOnSubmitInvalid,\n} from '../../types/form.js';\nimport {\n constFieldProps,\n IFormFieldOptions,\n IFormFieldRenderContextPropsBucket,\n IFormFieldScope,\n IJsxRenderContextForm,\n IJsxRenderContextFormField,\n} from '../../types/formField.js';\nimport { ControllerFormField } from '../formField/controller.jsx';\n\nexport interface ControllerFormProps<TFormData extends {} = {}, TSubmitMeta = never> {\n formTag?: string;\n data?: TFormData;\n schema?: SchemaObject;\n schemaScene?: TypeFormSchemaScene;\n zodSchema?: z.ZodObject<any>;\n validateOnDynamic?: boolean;\n validateOnDynamicLogic?: RevalidateLogicProps;\n formMeta?: IFormMeta;\n formProvider?: IFormProvider;\n formScope?: IFormScope;\n formFieldLayout?: IResourceFormFieldLayoutOptions;\n blocks?: IResourceRenderBlockOptionsBlock[];\n onFormSubmit?: (e: SubmitEvent, form: ControllerForm<TFormData, TSubmitMeta>) => any;\n onSubmitInvalid?: TypeFormOnSubmitInvalid<TFormData, TSubmitMeta>;\n onSubmitData?: TypeFormOnSubmit<TFormData, TSubmitMeta>;\n onShowError?: TypeFormOnShowError<TFormData, TSubmitMeta>;\n onChanged?: (data: TFormData) => void;\n slotDefault?: (form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotHeader?: (form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotBody?: (children: VNode, form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotFooter?: (form: ControllerForm<TFormData, TSubmitMeta>) => VNode;\n slotWrapper?: (\n children: (VNode | undefined)[],\n form: ControllerForm<TFormData, TSubmitMeta>,\n ) => VNode;\n}\n@Controller()\nexport class ControllerForm<\n TFormData extends {} = {},\n TSubmitMeta = never,\n> extends BeanControllerFormBase<TFormData, TSubmitMeta> {\n static $propsDefault = { formTag: 'form', schemaScene: 'form' };\n\n formProvider: IFormProvider;\n schema: SchemaObject | undefined;\n zodSchema: z.ZodObject<any> | undefined;\n properties: ISchemaObjectExtensionField[] | undefined;\n zovaJsx: ZovaJsx;\n fieldCelEnv: typeof celEnvBase;\n\n @UseScope()\n $$scopeOpenapi: ScopeModuleAOpenapi;\n\n protected async __init__() {\n this.bean._setBean('$$form', this);\n this.form = this._createForm();\n this.formState = useSelector(this.form.store, state => state) as any;\n this.formProvider = this.$computed(() => {\n const formProvider = this.$$scopeOpenapi.config.formProvider;\n return this.$props.formProvider\n ? deepExtend({}, formProvider, this.$props.formProvider)\n : formProvider;\n });\n this.schema = this.$computed(() => {\n return this.$props.schema;\n });\n this.zodSchema = this.$computed(() => {\n return this._getZodSchema();\n });\n this.properties = this.$computed(() => {\n return this.$sdk.loadSchemaProperties(this.schema, this.$props.schemaScene);\n });\n this.fieldCelEnv = this._getFieldCelEnv();\n this.zovaJsx = this.bean._newBeanSimple(\n ZovaJsx,\n false,\n this.formProvider.components,\n this.fieldCelEnv,\n );\n this.$watch(\n () => this.$props.data,\n (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n this.reset(this.$props.data);\n },\n );\n }\n\n public async submit(submitMeta?: TSubmitMeta): Promise<boolean> {\n if (this.formMeta?.formScene === 'view') return false;\n const [_, error] = await catchError(() => {\n return this.form.handleSubmit(submitMeta as any);\n });\n return !error && this.formState.isValid;\n }\n\n public reset(values?: TFormData, opts?: { keepDefaultValues?: boolean }): TFormData {\n this.form.reset(values ?? ({} as TFormData), opts);\n return this.form.state.values;\n }\n\n public get formMeta() {\n return this.$props.formMeta;\n }\n\n public hasErrors(node: IResolvedFormLayoutNode | IResolvedFormLayoutTab) {\n return this.getErrorFieldCount(node) > 0;\n }\n\n public getErrorFieldCount(node: IResolvedFormLayoutNode | IResolvedFormLayoutTab) {\n return this._getFormLayoutErrorFieldCount(node);\n }\n\n public getFieldValue<K extends DeepKeys<TFormData>>(name: K) {\n return getBy(this.formState.values, name) ?? null;\n }\n\n public setFieldValue<K extends DeepKeys<TFormData>>(\n name: K,\n value: any,\n disableNotifyChanged?: boolean,\n ) {\n this.form.setFieldValue(name, value);\n if (!disableNotifyChanged) {\n this.$props.onChanged?.(this.formState.values);\n }\n }\n\n public getFieldProperty<K extends DeepKeys<TFormData>>(\n name: K,\n ): ISchemaObjectExtensionField | undefined {\n if (!this.properties) return;\n return this.properties.find(item => item.key === name);\n }\n\n public getFieldZodSchema<K extends DeepKeys<TFormData>>(name: K) {\n return ZodMetadata.getFieldSchema(this.zodSchema, name as string);\n }\n\n private _getFieldCelEnv(): typeof celEnvBase {\n const celEnv = celEnvBase.clone();\n celEnv.registerFunction('getValue(string):dyn', name => {\n return this.form.getFieldValue(name) ?? null;\n });\n celEnv.registerFunction('getValue(string, dyn):dyn', (name, defaultValue) => {\n return this.form.getFieldValue(name) ?? defaultValue;\n });\n celEnv.registerFunction('getProperty(string):dyn', name => {\n return this.getFieldProperty(name) ?? null;\n });\n return celEnv;\n }\n\n public getFieldScope<K extends DeepKeys<TFormData>>(\n name: K,\n scopeExtra?: {},\n ): IFormFieldScope<TFormData> {\n return objectAssignReactive({}, this.$props.formScope, {\n name,\n value: this.getFieldValue(name),\n property: this.getFieldProperty(name),\n ...scopeExtra,\n });\n }\n\n public getFormScope(scopeExtra?: {}): IFormScope {\n return objectAssignReactive({}, this.$props.formScope, {\n ...scopeExtra,\n });\n }\n\n public getFieldJsxRenderContext(\n $$formField: ControllerFormField<TFormData> | undefined,\n celScope: IFormFieldScope<TFormData>,\n ): IJsxRenderContextFormField<TFormData, TSubmitMeta> {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'formField',\n $host: $$formField ?? this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$formField,\n $$form: this,\n };\n }\n\n public getFormJsxRenderContext(\n celScope: IFormScope,\n ): IJsxRenderContextForm<TFormData, TSubmitMeta> {\n return {\n app: this.app,\n ctx: this.ctx,\n $scene: 'form',\n $host: this,\n $celScope: celScope,\n $jsx: this.zovaJsx,\n $$form: this,\n };\n }\n\n public getFieldComponentPropsTop<K extends DeepKeys<TFormData>>(\n name: K,\n celScope: IFormFieldScope<TFormData>,\n jsxRenderContext: {},\n ): IFormFieldRenderContextPropsBucket {\n const props = this._getFieldComponentPropsTopInner(name, celScope, jsxRenderContext);\n return props;\n }\n\n private _getFieldComponentPropsTopInner<K extends DeepKeys<TFormData>>(\n name: K,\n celScope: IFormFieldScope<TFormData>,\n jsxRenderContext: {},\n ): IFormFieldRenderContextPropsBucket {\n let props: any = {\n [constFieldProps]: true,\n key: name,\n name,\n value: celScope.value,\n };\n const property = this.getFieldProperty(name);\n if (!property) return props;\n const rest = property.rest;\n if (!rest) return props;\n const keys = Object.keys(rest).filter(item => !renderFormFieldTopPropsSystem.includes(item));\n if (keys.length === 0) return props;\n for (const key of keys) {\n const value = rest[key];\n let keyValue;\n if (key === 'render') {\n if (typeof value === 'string') {\n keyValue = this.zovaJsx.evaluateExpression(value, celScope);\n } else {\n keyValue = value;\n }\n } else {\n keyValue = this.zovaJsx.renderJsxOrCel(value, undefined, celScope, jsxRenderContext);\n }\n props[key] = keyValue;\n }\n // render\n const needAppend = isJsxComponent(props.render) && this.isComponentFormField(props.render.type);\n if (needAppend && !isEmptyObject(props.render.props)) {\n const propsAppend = this.zovaJsx.renderJsxOrCel(\n props.render.props,\n undefined,\n celScope,\n jsxRenderContext,\n );\n props = Object.assign({}, props, propsAppend);\n }\n // readonly\n const readonlyTemp = props.readonly;\n if (isNil(readonlyTemp) && this.formMeta?.formMode === 'view') {\n props.readonly = true;\n }\n // ok\n return props;\n }\n\n // public getRenderFlattern(render: TypeFormFieldRenderComponent): TypeFormFieldRenderComponent {\n // return isJsxComponent(render) ? cast(render).type : render;\n // }\n\n public getRenderProvider(\n render: TypeFormFieldRenderComponent,\n ): TypeFormFieldRenderComponentProvider {\n if (isJsxComponent(render)) {\n return cast(render).type;\n }\n if (typeof render === 'string') {\n return this.formProvider.components?.[render] ?? render;\n }\n return render as TypeFormFieldRenderComponentProvider;\n }\n\n private _getZodSchema() {\n if (this.$props.zodSchema) return this._patchZodSchema(this.$props.zodSchema);\n if (!this.schema) return;\n return this._patchZodSchema(this.$sdk.schemaToZodSchema(this.schema));\n }\n\n private _patchZodSchema(schema: z.ZodObject<any> | z.ZodUnion<any>) {\n if (schema.def.type === 'object') return schema;\n if (schema.def.type === 'union') {\n return schema.def.options.find(item => item.def.type === 'object');\n }\n throw new Error('invalid zod schema');\n }\n\n private _createForm() {\n // not use $computed\n return this.$useForm<TFormData, TSubmitMeta>({\n defaultValues: this.$props.data,\n validationLogic:\n this.$props.validateOnDynamic !== false\n ? revalidateLogic(this.$props.validateOnDynamicLogic)\n : undefined,\n onSubmitInvalid: data => {\n this.$props.onSubmitInvalid?.(data, this);\n },\n onSubmit: async data => {\n const [_, error] = await catchError(() => {\n return this.$props.onSubmitData?.(data, this);\n });\n // emit event\n const resHandled = await this.app.meta.event.emit('a-form:formSubmission', {\n form: this.form as any,\n data,\n error,\n });\n if (!error) return;\n if (error.code === 422) {\n this._handleError422(error);\n this.$props.onSubmitInvalid?.(data, this);\n } else {\n if (!resHandled) {\n this.$props.onShowError?.({ data, error }, this);\n }\n }\n // must throw error for stop next logic\n throw error;\n },\n });\n }\n\n public renderField<K extends DeepKeys<TFormData>>(\n name: K,\n propsExtra?: IFormFieldOptions<TFormData>,\n ) {\n const property = this.getFieldProperty(name);\n const key = property?.key ?? name;\n return this._renderFieldByKey(key, propsExtra);\n }\n\n protected _renderFieldByKey(key: string, propsExtra?: IFormFieldOptions<TFormData>) {\n // celScope\n const celScope = this.getFieldScope(key);\n const jsxRenderContext = this.getFieldJsxRenderContext(undefined, celScope);\n // props\n let props = this.getFieldComponentPropsTop(key, celScope, jsxRenderContext);\n if (propsExtra) {\n props = Object.assign({}, props, propsExtra);\n }\n if (cast(props).visible === false) return;\n const componentOptions = this._getFieldComponentOptionsTop(props.render);\n return this.zovaJsx.render(componentOptions, props, celScope, jsxRenderContext);\n }\n\n private _getFieldComponentOptionsTop(\n render: TypeFormFieldRenderComponent,\n ): TypeFormFieldRenderComponent {\n render = render ?? 'Input';\n const renderProvider = this.getRenderProvider(render);\n if (this.isComponentFormField(renderProvider)) {\n return renderProvider as TypeFormFieldRenderComponent;\n }\n return 'a-form:formField';\n }\n\n public isComponentFormField(renderProvider?: TypeFormFieldRenderComponentProvider) {\n return typeof renderProvider === 'string' && renderProvider.includes(':formField');\n }\n\n private _getFormLayoutErrorFieldCount(node: IResolvedFormLayoutNode | IResolvedFormLayoutTab) {\n if (node.type === 'field') {\n return this.formState.fieldMeta[node.name]?.errors?.length ? 1 : 0;\n }\n if (node.type === 'block') return 0;\n return node.children.reduce((count, child) => {\n return count + this._getFormLayoutErrorFieldCount(child);\n }, 0);\n }\n\n private _handleError422(error: Error, cause: ValidationCause = 'submit') {\n const formApi = this.form;\n\n let hasErrored = false as boolean;\n\n // This map will only include fields that have errors in the current validation cycle\n const currentValidationErrorMap: any = {};\n\n const rawError = parseIssues(error);\n const { formError, fieldErrors } = normalizeError<TFormData>(rawError);\n\n const errorMapKey = getErrorMapKey(cause);\n\n for (const field of Object.keys(formApi.state.fieldMeta) as DeepKeys<TFormData>[]) {\n if (formApi.baseStore.state.fieldMetaBase[field] === undefined) {\n continue;\n }\n\n const fieldMeta = formApi.getFieldMeta(field);\n if (!fieldMeta) continue;\n\n const { errorMap: currentErrorMap, errorSourceMap: currentErrorMapSource } = fieldMeta;\n\n const newFormValidatorError = fieldErrors?.[field];\n\n const { newErrorValue, newSource } = determineFormLevelErrorSourceAndValue({\n newFormValidatorError,\n isPreviousErrorFromFormValidator: currentErrorMapSource?.[errorMapKey] === 'form',\n previousErrorValue: currentErrorMap?.[errorMapKey],\n });\n\n if (newSource === 'form') {\n currentValidationErrorMap[field] = {\n ...currentValidationErrorMap[field],\n [errorMapKey]: newFormValidatorError,\n };\n }\n\n if (currentErrorMap?.[errorMapKey] !== newErrorValue) {\n formApi.setFieldMeta(field, prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [errorMapKey]: newErrorValue,\n },\n errorSourceMap: {\n ...prev.errorSourceMap,\n [errorMapKey]: newSource,\n },\n }));\n }\n }\n\n if (formApi.state.errorMap?.[errorMapKey] !== formError) {\n formApi.baseStore.setState(prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [errorMapKey]: formError,\n },\n }));\n }\n\n if (formError || fieldErrors) {\n hasErrored = true;\n }\n\n /**\n * when we have an error for onSubmit in the state, we want\n * to clear the error as soon as the user enters a valid value in the field\n */\n const submitErrKey = getErrorMapKey('submit');\n if (formApi.state.errorMap?.[submitErrKey] && cause !== 'submit' && !hasErrored) {\n formApi.baseStore.setState(prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [submitErrKey]: undefined,\n },\n }));\n }\n\n /**\n * when we have an error for onServer in the state, we want\n * to clear the error as soon as the user enters a valid value in the field\n */\n const serverErrKey = getErrorMapKey('server');\n if (formApi.state.errorMap?.[serverErrKey] && cause !== 'server' && !hasErrored) {\n formApi.baseStore.setState(prev => ({\n ...prev,\n errorMap: {\n ...prev.errorMap,\n [serverErrKey]: undefined,\n },\n }));\n }\n }\n}\n\nfunction parseIssues(error: Error) {\n const issues: $ZodIssue[] =\n typeof error.message === 'string' ? JSON.parse(error.message) : error.message;\n const fields = {};\n for (const issue of issues) {\n const key = issue.path.join('.');\n fields[key] = issue;\n }\n return { fields };\n}\n\nfunction normalizeError<TFormData>(rawError?: FormValidationError<unknown>): {\n formError: ValidationError;\n fieldErrors?: Partial<Record<DeepKeys<TFormData>, ValidationError>>;\n} {\n if (rawError) {\n if (isGlobalFormValidationError(rawError)) {\n const formError = normalizeError(rawError.form).formError;\n const fieldErrors = rawError.fields;\n return { formError, fieldErrors } as never;\n }\n\n return { formError: rawError };\n }\n\n return { formError: undefined };\n}\n\nfunction getErrorMapKey(cause: ValidationCause) {\n switch (cause) {\n case 'submit':\n return 'onSubmit';\n case 'blur':\n return 'onBlur';\n case 'mount':\n return 'onMount';\n case 'server':\n return 'onServer';\n case 'dynamic':\n return 'onDynamic';\n case 'change':\n default:\n return 'onChange';\n }\n}\n","import { isNil } from '@cabloy/utils';\nimport { useField } from '@tanstack/vue-form';\nimport { useSelector } from '@tanstack/vue-store';\nimport { markRaw } from 'vue';\nimport z from 'zod';\nimport { BeanControllerBase, deepEqual, IComponentOptions, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport { BeanBehaviorsHolder, IBehaviorItem } from 'zova-module-a-behavior';\n\nimport type { ControllerForm } from '../form/controller.jsx';\n\nimport { TypeFormField } from '../../types/form.js';\nimport {\n constFieldProps,\n IFormFieldComponentOptions,\n IFormFieldOptions,\n IFormFieldRenderContext,\n IFormFieldRenderContextProps,\n IFormFieldRenderContextPropsBucket,\n} from '../../types/formField.js';\n\nexport interface ControllerFormFieldProps<\n TParentData extends {} = {},\n> extends IFormFieldComponentOptions<TParentData> {}\n\n@Controller()\nexport class ControllerFormField<TParentData extends {} = {}> extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false };\n\n private _formField: TypeFormField;\n public propsBucket: IFormFieldRenderContextPropsBucket<TParentData>;\n\n @Use({ injectionScope: 'host' })\n $$form: ControllerForm<TParentData>;\n\n @Use()\n $$beanBehaviorsHolder: BeanBehaviorsHolder;\n\n protected async __init__() {\n if (!this.$$form) {\n throw new Error(`FormField component should be used in Form component: ${this.name}`);\n }\n // provide\n this.bean._setBean('$$formField', this);\n // field\n this._formField = this._createField();\n // propsBucket\n this.propsBucket = this.$computed(() => {\n return this._getPropsBucket();\n });\n // defaultValue\n // this._handleDefaultValue();\n // watch\n this.$watch(\n () => this.property,\n (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n // defaultValue\n // this._handleDefaultValue();\n const options = this._getFormFieldOptions();\n this._formField.api.update(options as any);\n this.form.resetField(this.name);\n this.$props.onFieldStateReady?.(this);\n },\n );\n // behaviors\n await this.$$beanBehaviorsHolder.initialize({\n behaviorTag: undefined as any,\n behaviors: () => {\n return this._getFieldBehaviors();\n },\n });\n // onEffect\n if (process.env.CLIENT && this.$props.onEffect) {\n this.$watch(\n () => this.$$form.getFieldValue(this.name),\n (newValue, oldValue) => {\n if (newValue === oldValue) return;\n this.$props.onEffect?.(newValue);\n },\n );\n }\n this.$props.onFieldStateReady?.(this);\n }\n\n public get form() {\n return this.$$form.form;\n }\n\n public get field(): TypeFormField {\n return this._formField;\n }\n\n public get name() {\n return this.$props.name!;\n }\n\n public get property() {\n return this.$$form.getFieldProperty(this.name);\n }\n\n public get fieldZodSchema() {\n return this.$$form.getFieldZodSchema(this.name);\n }\n\n public get formMeta() {\n return this.$$form.formMeta;\n }\n\n public get formProvider() {\n return this.$$form.formProvider;\n }\n\n public setValue(value: any, disableNotifyChanged?: boolean) {\n if (disableNotifyChanged === undefined) {\n disableNotifyChanged = this.propsBucket.disableNotifyChanged;\n }\n return this.$$form.setFieldValue(this.name, value, disableNotifyChanged);\n }\n\n public handleBlur() {\n this.field.api.handleBlur();\n }\n\n public getRenderContext(): IFormFieldRenderContext<TParentData> {\n const name = this.name;\n // propsBucket\n const propsBucket = this.propsBucket;\n // props\n const props: IFormFieldRenderContextProps = { key: name, name };\n // class\n props.class = propsBucket.class;\n // readonly\n props.readonly = propsBucket.readonly;\n // celScope\n const celScope = this.$$form.getFieldScope(this.name, {});\n const jsxRenderContext = this.$$form.getFieldJsxRenderContext(this, celScope);\n return { propsBucket, props, celScope, jsxRenderContext };\n }\n\n private _createField() {\n const options = this._getFormFieldOptions();\n const field = markRaw(useField(options as any)) as any;\n const fieldState = useSelector(field.api.store, state => state) as any;\n return { api: field.api, state: fieldState };\n }\n\n private _getPropsBucket() {\n const property = this.property;\n const name = this.name;\n // options\n const propsTop = this._getFieldComponentPropsTop();\n // layout options\n const layoutOptions = Object.assign(\n {\n bordered: this.scope.config.formFieldLayout.bordered,\n label: property?.title ?? name,\n },\n this.$$form.$props.formFieldLayout,\n this.$props?.layout,\n propsTop?.layout,\n );\n // preset options\n const presetOptions = Object.assign({}, this.$props?.options, propsTop?.options);\n // propsBucket\n const propsBucket = Object.assign(\n {\n render: 'Input',\n },\n this.$props as IFormFieldOptions<TParentData>,\n propsTop,\n {\n layout: layoutOptions,\n options: presetOptions,\n },\n );\n // class/style: layout\n if (propsBucket.layout.class || propsBucket.layout.style) {\n propsBucket.layout.class = this.$cssMerge(\n propsBucket.layout.class,\n this.$style(propsBucket.layout.style),\n );\n delete propsBucket.layout.style;\n }\n // class/style: need not check typeof propsBucket.render === 'string' because maybe return false\n const classTemp = propsBucket.options?.class ?? propsBucket.class;\n const styleTemp = propsBucket.options?.style ?? propsBucket.style;\n if (classTemp || styleTemp) {\n propsBucket.class = this.$cssMerge(classTemp, this.$style(styleTemp));\n if (propsBucket.options?.class) delete propsBucket.options.class;\n if (propsBucket.options?.style) delete propsBucket.options.style;\n delete propsBucket.style;\n }\n // readonly\n const readonlyTemp = propsBucket.options?.readonly ?? propsBucket.readonly;\n if (!isNil(readonlyTemp)) {\n propsBucket.readonly = readonlyTemp;\n if (propsBucket.options?.readonly) delete propsBucket.options.readonly;\n } else if (this.formMeta?.formMode === 'view') {\n propsBucket.readonly = true;\n }\n // render\n // propsBucket.renderFlattern = this.$$form.getRenderFlattern(propsBucket.render);\n propsBucket.renderProvider = this.$$form.getRenderProvider(propsBucket.render);\n return propsBucket;\n }\n\n private _getFieldComponentPropsTop() {\n if (this.$props[constFieldProps] === true) return;\n const celScope = this.$$form.getFieldScope(this.name);\n const jsxRenderContext = this.$$form.getFieldJsxRenderContext(this, celScope);\n return this.$$form.getFieldComponentPropsTop(this.name, celScope, jsxRenderContext);\n }\n\n private _getFieldBehaviors() {\n const behaviors: IBehaviorItem = {};\n // custom\n if (this.$props.behaviors) {\n Object.assign(behaviors, this.$props.behaviors);\n }\n // formField\n this._prepareBehaviorFormField(behaviors);\n // formFieldLayout\n this._prepareBehaviorFormFieldLayout(behaviors);\n return behaviors;\n }\n\n private _prepareBehaviorFormField(behaviors: IBehaviorItem) {\n const behaviorFormField = this.formProvider.behaviors?.FormField;\n if (!behaviorFormField) return;\n behaviors[behaviorFormField] = {} as never;\n }\n\n private _prepareBehaviorFormFieldLayout(behaviors: IBehaviorItem) {\n const behaviorFormFieldLayout = this.formProvider.behaviors?.FormFieldLayout;\n if (!behaviorFormFieldLayout) return;\n behaviors[behaviorFormFieldLayout] = {} as never;\n }\n\n // private _handleDefaultValue() {\n // const defaultValue = this.$props.defaultValue ?? this.property?.default;\n // if (isNil(defaultValue)) return;\n // const value = this.$$form.getFieldValue(this.name);\n // if (isNil(value)) {\n // this.$$form.setFieldValue(this.name, defaultValue, true);\n // }\n // }\n\n private _getFormFieldOptions() {\n // defaultValue\n const value = this.$$form.getFieldValue(this.name);\n const defaultValue = isNil(value)\n ? (this.$props.sys?.defaultValue ?? this.property?.default)\n : undefined;\n // validators\n const validators = this._getFormFieldOptionsValidators();\n return Object.assign(\n {\n defaultValue,\n },\n this.$props.sys,\n {\n name: this.name,\n form: this.$$form.form,\n validators,\n },\n );\n }\n\n private _getFormFieldOptionsValidators() {\n const zodSchemaField = this.fieldZodSchema;\n const validators = this.$props.validators;\n const validateOnDynamicDefault =\n validators?.onDynamic === undefined &&\n validators?.onBlur === undefined &&\n validators?.onChange === undefined;\n const validateOnDynamic = validators?.onDynamic ?? validateOnDynamicDefault;\n const validateOnBlur = validators?.onBlur;\n const validateOnChange = validators?.onChange;\n return Object.assign(\n {},\n {\n onDynamic: _normalizeValidateSchema(validateOnDynamic, zodSchemaField),\n onBlur: _normalizeValidateSchema(validateOnBlur, zodSchemaField),\n onChange: _normalizeValidateSchema(validateOnChange, zodSchemaField),\n },\n this.$props.sys?.validators,\n );\n }\n}\n\nfunction _normalizeValidateSchema(\n validateSchema?: boolean | z.ZodType,\n zodSchemaField?: z.ZodType,\n) {\n if (!validateSchema) return undefined;\n if (validateSchema === true) return zodSchemaField;\n return validateSchema;\n}\n","import type { IComponentOptions } from 'zova';\n\nimport { VNode } from 'vue';\nimport { BeanControllerBase, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport { ControllerForm } from '../form/controller.jsx';\n\nexport interface ControllerFormFieldBlankProps<TParentData extends {} = {}, TSubmitMeta = never> {\n slotDefault?: (form: ControllerForm<TParentData, TSubmitMeta>) => VNode | undefined;\n}\n\n@Controller()\nexport class ControllerFormFieldBlank<TParentData extends {} = {}> extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };\n\n @Use({ injectionScope: 'host' })\n $$form: ControllerForm<TParentData>;\n\n protected async __init__() {}\n\n protected render() {\n if (this.$slotDefault) {\n return this.$slotDefault(this.$$form);\n }\n }\n}\n","import { BeanControllerBase, IComponentOptions, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\nimport { ISchemaRenderComponentPresetRecord } from 'zova-module-a-openapi';\n\nimport type { ControllerForm } from '../form/controller.jsx';\n\nimport { IFormFieldPresetOptions } from '../../types/formField.js';\n\nexport interface ControllerFormFieldPresetProps<\n PresetName extends keyof ISchemaRenderComponentPresetRecord = never,\n> extends IFormFieldPresetOptions<PresetName> {}\n\n@Controller()\nexport class ControllerFormFieldPreset extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };\n\n @Use({ injectionScope: 'host' })\n $$form: ControllerForm;\n\n protected async __init__() {}\n\n protected render() {\n const name = this.$props.name;\n if (!name) throw new Error('should specify field name');\n return this.$$form.renderField(name, this.$props as any);\n }\n}\n","import { h, VNode } from 'vue';\nimport { BeanRenderBase } from 'zova';\nimport { Render } from 'zova-module-a-bean';\n\n@Render()\nexport class RenderForm extends BeanRenderBase {\n private _renderSchema() {\n if (!this.properties) return;\n const children: VNode[] = [];\n for (const property of this.properties) {\n const child = this._renderFieldByKey(property.key!);\n if (child) {\n if (Array.isArray(child)) {\n children.push(...child);\n } else {\n children.push(child);\n }\n }\n }\n return children;\n }\n\n private _renderChildren() {\n const children: (VNode | undefined)[] = [];\n children.push(this.$props.slotHeader?.(this));\n const bodyInner = this._renderBodyInner();\n if (this.$props.slotBody) {\n children.push(this.$props.slotBody(bodyInner, this));\n } else {\n children.push(bodyInner);\n }\n children.push(this.$props.slotFooter?.(this));\n return children;\n }\n\n private _renderFromBlocks() {\n const blocks = this.$props.blocks;\n if (!blocks || blocks.length === 0) {\n return this._renderSchema();\n }\n const celScope = this.getFormScope();\n const jsxRenderContext = this.getFormJsxRenderContext(celScope);\n const domBlocks: VNode[] = [];\n blocks.forEach((block, index) => {\n const options = Object.assign({ key: index }, block.options);\n const domBlock = this.zovaJsx.render(block.render!, options, celScope, jsxRenderContext);\n if (!domBlock) return;\n if (Array.isArray(domBlock)) {\n domBlocks.push(...domBlock);\n } else {\n domBlocks.push(domBlock);\n }\n });\n return domBlocks;\n }\n\n private _renderBodyInner() {\n const FormTag = this.$props.formTag;\n return this.$slotDefault ? (\n this.$slotDefault(this)\n ) : (\n <>\n {this.$props.blocks ? this._renderFromBlocks() : this._renderSchema()}\n {FormTag === 'form' && <button type=\"submit\" style={{ display: 'none' }}></button>}\n </>\n );\n }\n\n private _renderProps() {\n const FormTag = this.$props.formTag;\n const props: any = {};\n if (FormTag === 'form') {\n props.onSubmit = (e: SubmitEvent) => {\n if (this.$props.onFormSubmit) {\n this.$props.onFormSubmit(e, this);\n } else {\n e.preventDefault();\n e.stopPropagation();\n this.submit();\n }\n };\n }\n return props;\n }\n\n public render() {\n const FormTag = this.$props.formTag;\n const props = this._renderProps();\n const children = this._renderChildren();\n if (this.$props.slotWrapper) {\n return h(FormTag, props, this.$props.slotWrapper(children, this));\n }\n return h(FormTag, props, children);\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerForm } from '../../component/form/controller.jsx';\nimport { RenderForm } from '../../component/form/render.jsx';\nexport const ZForm = defineComponent(_props => {\n useController(ControllerForm, RenderForm, undefined);\n return () => {};\n}, prepareComponentOptions());","import { BeanRenderBase, SymbolController } from 'zova';\nimport { Render } from 'zova-module-a-bean';\n\nimport { IFormFieldRenderContext } from '../../types/formField.js';\n\n@Render()\nexport class RenderFormField<TParentData extends {} = {}> extends BeanRenderBase {\n public render() {\n const renderContext = this.getRenderContext();\n return this.$$beanBehaviorsHolder.render(\n (renderContext: IFormFieldRenderContext<TParentData>) => {\n return this._renderSlotDefault(renderContext);\n },\n renderContext,\n );\n }\n\n private _renderSlotDefault(renderContext: IFormFieldRenderContext<TParentData>) {\n if (this.$slotDefault) {\n return this.$slotDefault!(renderContext, this[SymbolController]);\n }\n return this.$$form.zovaJsx.render(\n renderContext.propsBucket.render,\n renderContext.props,\n renderContext.celScope,\n renderContext.jsxRenderContext,\n );\n }\n}\n","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerFormField } from '../../component/formField/controller.jsx';\nimport { RenderFormField } from '../../component/formField/render.jsx';\nexport const ZFormField = defineComponent(_props => {\n useController(ControllerFormField, RenderFormField, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerFormField.$componentOptions));","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerFormFieldBlank } from '../../component/formFieldBlank/controller.jsx';\nexport const ZFormFieldBlank = defineComponent(_props => {\n useController(ControllerFormFieldBlank, undefined, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerFormFieldBlank.$componentOptions));","import { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\nimport { ControllerFormFieldPreset } from '../../component/formFieldPreset/controller.jsx';\nexport const ZFormFieldPreset = defineComponent(_props => {\n useController(ControllerFormFieldPreset, undefined, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerFormFieldPreset.$componentOptions));","export const config = _sys => {\n return {\n formFieldLayout: {\n bordered: true\n }\n };\n};","var _dec, _dec2, _class;\nimport { \"BeanInfo\" as __z_BeanInfo } from \"zova\";\n// eslint-disable\n/** controller: begin */\nexport * from '../component/form/controller.jsx';\nexport * from '../component/formField/controller.jsx';\nexport * from '../component/formFieldBlank/controller.jsx';\nexport * from '../component/formFieldPreset/controller.jsx';\nimport 'zova';\n/** controller: end */\n/** controller: begin */\nimport { ControllerForm } from '../component/form/controller.jsx';\nimport { ControllerFormField } from '../component/formField/controller.jsx';\nimport { ControllerFormFieldBlank } from '../component/formFieldBlank/controller.jsx';\nimport { ControllerFormFieldPreset } from '../component/formFieldPreset/controller.jsx';\nimport 'zova';\n/** controller: end */\n\n/** components: begin */\nexport * from './component/form.js';\nimport { ZForm } from './component/form.js';\nexport * from './component/formField.js';\nimport { ZFormField } from './component/formField.js';\nexport * from './component/formFieldBlank.js';\nimport { ZFormFieldBlank } from './component/formFieldBlank.js';\nexport * from './component/formFieldPreset.js';\nimport { ZFormFieldPreset } from './component/formFieldPreset.js';\nexport const components = {\n 'form': ZForm,\n 'formField': ZFormField,\n 'formFieldBlank': ZFormFieldBlank,\n 'formFieldPreset': ZFormFieldPreset\n};\nimport 'zova';\n/** components: end */\n/** render: begin */\nexport * from '../component/form/render.jsx';\nexport * from '../component/formField/render.jsx';\nimport 'zova';\n/** render: end */\n/** render: begin */\nimport { RenderForm } from '../component/form/render.jsx';\nimport { RenderFormField } from '../component/formField/render.jsx';\nimport 'zova';\n/** render: end */\n/** config: begin */\nexport * from '../config/config.js';\n/** config: end */\n/** scope: begin */\nimport { BeanScopeBase } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\nexport let ScopeModuleAForm = (_dec = Scope(), _dec2 = __z_BeanInfo({\n module: \"a-form\"\n}), _dec(_class = _dec2(_class = class ScopeModuleAForm extends BeanScopeBase {}) || _class) || _class);\nimport 'zova';\n\n/** scope: end */","import { useForm } from '@tanstack/vue-form';\nimport { markRaw } from 'vue';\nimport { BeanControllerPageBase } from 'zova';\nexport class BeanControllerPageFormBase extends BeanControllerPageBase {\n constructor(...args) {\n super(...args);\n this.form = void 0;\n this.formState = void 0;\n }\n async submit(_submitMeta) {\n throw new Error('should implement submit');\n }\n reset(_values, _opts) {\n throw new Error('should implement reset');\n }\n $useForm(opts) {\n return this.ctx.util.instanceScope(() => {\n return markRaw(useForm(opts));\n });\n }\n}","export function formMetaFromFormScene(formScene) {\n if (formScene === 'view') return {\n formScene,\n formMode: 'view',\n editMode: undefined\n };\n if (formScene === 'create') return {\n formScene,\n formMode: 'edit',\n editMode: 'create'\n };\n if (formScene === 'edit') return {\n formScene,\n formMode: 'edit',\n editMode: 'update'\n };\n throw new Error('invalid parameters');\n}\nexport function formSceneFromFormMeta(formMeta) {\n if (formMeta.formMode === 'view') return 'view';\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'create') return 'create';\n if (formMeta.formMode === 'edit' && formMeta.editMode === 'update') return 'edit';\n if (formMeta.formMode === 'edit' && formMeta.editMode === undefined) return 'edit';\n return undefined;\n}","export function resolveFormLayout(layout, properties) {\n const visibleProperties = properties?.filter(item => item.rest?.visible !== false) ?? [];\n const propertyNames = new Set(visibleProperties.map(item => item.key).filter(Boolean));\n const propertyAliases = new Map();\n for (const property of visibleProperties) {\n if (!property.key) continue;\n const schemaKeys = [property.schemaKey, ...(property.schemaKeys ?? [])];\n for (const schemaKey of schemaKeys) {\n if (!schemaKey || schemaKey === property.key) continue;\n const aliases = propertyAliases.get(schemaKey) ?? new Set();\n aliases.add(property.key);\n propertyAliases.set(schemaKey, aliases);\n }\n }\n const fieldNames = new Set();\n const nodeIds = new Set();\n const diagnostics = [];\n const fieldTabPaths = {};\n const children = layout.children.map((node, index) => resolveNode(node, [index], [], propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return {\n children,\n fieldTabPaths,\n diagnostics\n };\n}\nfunction resolveNode(node, indexPath, tabPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths) {\n if (node.type === 'field') {\n return resolveField(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths);\n }\n if (node.type === 'block') {\n return node;\n }\n if (node.type === 'tabs') {\n return resolveTabs(node, indexPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths);\n }\n const id = resolveId(node, indexPath);\n if (!registerId(id, nodeIds, diagnostics)) return;\n if (node.type === 'section') {\n const children = node.children.map(item => resolveLeaf(item, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n }\n const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n}\nfunction resolveLeaf(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths) {\n if (node.type === 'block') return node;\n return resolveField(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths);\n}\nfunction resolveTabs(node, indexPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths) {\n const id = resolveId(node, indexPath);\n if (!registerId(id, nodeIds, diagnostics)) return;\n const children = node.children.map((tab, index) => resolveTab(tab, [...indexPath, index], id, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n}\nfunction resolveTab(node, indexPath, tabsId, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths) {\n const id = resolveId(node, indexPath);\n if (!registerId(id, nodeIds, diagnostics)) return;\n const tabPath = [{\n tabsId,\n tabId: id\n }];\n const children = node.children.map((item, index) => resolveNode(item, [...indexPath, index], tabPath, propertyNames, propertyAliases, fieldNames, nodeIds, diagnostics, fieldTabPaths)).filter(Boolean);\n return children.length ? {\n ...node,\n id,\n children\n } : undefined;\n}\nfunction resolveField(node, tabPath, propertyNames, propertyAliases, fieldNames, diagnostics, fieldTabPaths) {\n const name = resolveFieldName(node.name, propertyNames, propertyAliases);\n if (!name) {\n diagnostics.push({\n type: 'unknownField',\n value: node.name\n });\n return;\n }\n if (fieldNames.has(name)) {\n diagnostics.push({\n type: 'duplicateField',\n value: node.name\n });\n return;\n }\n fieldNames.add(name);\n fieldTabPaths[name] = tabPath;\n return name === node.name ? node : {\n ...node,\n name\n };\n}\nfunction resolveFieldName(name, propertyNames, propertyAliases) {\n if (propertyNames.has(name)) return name;\n const aliases = propertyAliases.get(name);\n if (aliases?.size === 1) return aliases.values().next().value;\n const fieldSourcePrefix = `${name}.`;\n const fieldSources = [...propertyNames].filter(item => item.startsWith(fieldSourcePrefix));\n return fieldSources.length === 1 ? fieldSources[0] : undefined;\n}\nfunction resolveId(node, indexPath) {\n return node.id || `${node.type}-${indexPath.join('-')}`;\n}\nfunction registerId(id, ids, diagnostics) {\n if (!ids.has(id)) {\n ids.add(id);\n return true;\n }\n diagnostics.push({\n type: 'duplicateId',\n value: id\n });\n return false;\n}"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"formLayout.d.ts","sourceRoot":"","sources":["../../src/lib/formLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAMX,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAEV,mBAAmB,EAQpB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,2BAA2B,EAAE,GAAG,SAAS,GACpD,mBAAmB,CAgCrB"}
1
+ {"version":3,"file":"formLayout.d.ts","sourceRoot":"","sources":["../../src/lib/formLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAMX,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAEV,mBAAmB,EAQpB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,2BAA2B,EAAE,GAAG,SAAS,GACpD,mBAAmB,CAoCrB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-a-form",
3
- "version": "5.1.49",
4
- "gitHead": "38f54836d110b431a472cda3d137b259182580a8",
3
+ "version": "5.1.51",
4
+ "gitHead": "2658f35c02c5b1732087f980ee564c159d0ebd25",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Zova Module"
@@ -24,12 +24,21 @@ export function resolveFormLayout(
24
24
  layout: IFormLayout,
25
25
  properties: ISchemaObjectExtensionField[] | undefined,
26
26
  ): IResolvedFormLayout {
27
+ const visibleProperties = properties?.filter(item => item.rest?.visible !== false) ?? [];
27
28
  const propertyNames = new Set(
28
- properties
29
- ?.filter(item => item.rest?.visible !== false)
30
- .map(item => item.key)
31
- .filter(Boolean) as string[],
29
+ visibleProperties.map(item => item.key).filter(Boolean) as string[],
32
30
  );
31
+ const propertyAliases = new Map<string, Set<string>>();
32
+ for (const property of visibleProperties) {
33
+ if (!property.key) continue;
34
+ const schemaKeys = [property.schemaKey, ...(property.schemaKeys ?? [])];
35
+ for (const schemaKey of schemaKeys) {
36
+ if (!schemaKey || schemaKey === property.key) continue;
37
+ const aliases = propertyAliases.get(schemaKey) ?? new Set<string>();
38
+ aliases.add(property.key);
39
+ propertyAliases.set(schemaKey, aliases);
40
+ }
41
+ }
33
42
  const fieldNames = new Set<string>();
34
43
  const nodeIds = new Set<string>();
35
44
  const diagnostics: IFormLayoutDiagnostic[] = [];
@@ -41,6 +50,7 @@ export function resolveFormLayout(
41
50
  [index],
42
51
  [],
43
52
  propertyNames,
53
+ propertyAliases,
44
54
  fieldNames,
45
55
  nodeIds,
46
56
  diagnostics,
@@ -48,12 +58,6 @@ export function resolveFormLayout(
48
58
  ),
49
59
  )
50
60
  .filter(Boolean) as IResolvedFormLayoutNode[];
51
- for (const property of properties ?? []) {
52
- const name = property.key;
53
- if (!name || !propertyNames.has(name) || fieldNames.has(name)) continue;
54
- fieldNames.add(name);
55
- children.push({ type: 'field', name });
56
- }
57
61
  return { children, fieldTabPaths, diagnostics };
58
62
  }
59
63
 
@@ -62,13 +66,22 @@ function resolveNode(
62
66
  indexPath: number[],
63
67
  tabPath: IResolvedFormLayout['fieldTabPaths'][string],
64
68
  propertyNames: Set<string>,
69
+ propertyAliases: Map<string, Set<string>>,
65
70
  fieldNames: Set<string>,
66
71
  nodeIds: Set<string>,
67
72
  diagnostics: IFormLayoutDiagnostic[],
68
73
  fieldTabPaths: IResolvedFormLayout['fieldTabPaths'],
69
74
  ): IResolvedFormLayoutNode | undefined {
70
75
  if (node.type === 'field') {
71
- return resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths);
76
+ return resolveField(
77
+ node,
78
+ tabPath,
79
+ propertyNames,
80
+ propertyAliases,
81
+ fieldNames,
82
+ diagnostics,
83
+ fieldTabPaths,
84
+ );
72
85
  }
73
86
  if (node.type === 'block') {
74
87
  return node;
@@ -78,6 +91,7 @@ function resolveNode(
78
91
  node,
79
92
  indexPath,
80
93
  propertyNames,
94
+ propertyAliases,
81
95
  fieldNames,
82
96
  nodeIds,
83
97
  diagnostics,
@@ -89,7 +103,15 @@ function resolveNode(
89
103
  if (node.type === 'section') {
90
104
  const children = node.children
91
105
  .map(item =>
92
- resolveLeaf(item, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths),
106
+ resolveLeaf(
107
+ item,
108
+ tabPath,
109
+ propertyNames,
110
+ propertyAliases,
111
+ fieldNames,
112
+ diagnostics,
113
+ fieldTabPaths,
114
+ ),
93
115
  )
94
116
  .filter(Boolean) as IResolvedFormLayoutLeaf[];
95
117
  return children.length ? { ...node, id, children } : undefined;
@@ -101,6 +123,7 @@ function resolveNode(
101
123
  [...indexPath, index],
102
124
  tabPath,
103
125
  propertyNames,
126
+ propertyAliases,
104
127
  fieldNames,
105
128
  nodeIds,
106
129
  diagnostics,
@@ -117,18 +140,28 @@ function resolveLeaf(
117
140
  node: IFormLayoutLeaf,
118
141
  tabPath: IResolvedFormLayout['fieldTabPaths'][string],
119
142
  propertyNames: Set<string>,
143
+ propertyAliases: Map<string, Set<string>>,
120
144
  fieldNames: Set<string>,
121
145
  diagnostics: IFormLayoutDiagnostic[],
122
146
  fieldTabPaths: IResolvedFormLayout['fieldTabPaths'],
123
147
  ): IResolvedFormLayoutLeaf | undefined {
124
148
  if (node.type === 'block') return node;
125
- return resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths);
149
+ return resolveField(
150
+ node,
151
+ tabPath,
152
+ propertyNames,
153
+ propertyAliases,
154
+ fieldNames,
155
+ diagnostics,
156
+ fieldTabPaths,
157
+ );
126
158
  }
127
159
 
128
160
  function resolveTabs(
129
161
  node: IFormLayoutTabs,
130
162
  indexPath: number[],
131
163
  propertyNames: Set<string>,
164
+ propertyAliases: Map<string, Set<string>>,
132
165
  fieldNames: Set<string>,
133
166
  nodeIds: Set<string>,
134
167
  diagnostics: IFormLayoutDiagnostic[],
@@ -143,6 +176,7 @@ function resolveTabs(
143
176
  [...indexPath, index],
144
177
  id,
145
178
  propertyNames,
179
+ propertyAliases,
146
180
  fieldNames,
147
181
  nodeIds,
148
182
  diagnostics,
@@ -158,6 +192,7 @@ function resolveTab(
158
192
  indexPath: number[],
159
193
  tabsId: string,
160
194
  propertyNames: Set<string>,
195
+ propertyAliases: Map<string, Set<string>>,
161
196
  fieldNames: Set<string>,
162
197
  nodeIds: Set<string>,
163
198
  diagnostics: IFormLayoutDiagnostic[],
@@ -173,6 +208,7 @@ function resolveTab(
173
208
  [...indexPath, index],
174
209
  tabPath,
175
210
  propertyNames,
211
+ propertyAliases,
176
212
  fieldNames,
177
213
  nodeIds,
178
214
  diagnostics,
@@ -189,11 +225,12 @@ function resolveField(
189
225
  node: IFormLayoutField,
190
226
  tabPath: IResolvedFormLayout['fieldTabPaths'][string],
191
227
  propertyNames: Set<string>,
228
+ propertyAliases: Map<string, Set<string>>,
192
229
  fieldNames: Set<string>,
193
230
  diagnostics: IFormLayoutDiagnostic[],
194
231
  fieldTabPaths: IResolvedFormLayout['fieldTabPaths'],
195
232
  ): IResolvedFormLayoutField | undefined {
196
- const name = resolveFieldName(node.name, propertyNames);
233
+ const name = resolveFieldName(node.name, propertyNames, propertyAliases);
197
234
  if (!name) {
198
235
  diagnostics.push({ type: 'unknownField', value: node.name });
199
236
  return;
@@ -207,8 +244,14 @@ function resolveField(
207
244
  return name === node.name ? node : { ...node, name };
208
245
  }
209
246
 
210
- function resolveFieldName(name: string, propertyNames: Set<string>) {
247
+ function resolveFieldName(
248
+ name: string,
249
+ propertyNames: Set<string>,
250
+ propertyAliases: Map<string, Set<string>>,
251
+ ) {
211
252
  if (propertyNames.has(name)) return name;
253
+ const aliases = propertyAliases.get(name);
254
+ if (aliases?.size === 1) return aliases.values().next().value;
212
255
  const fieldSourcePrefix = `${name}.`;
213
256
  const fieldSources = [...propertyNames].filter(item => item.startsWith(fieldSourcePrefix));
214
257
  return fieldSources.length === 1 ? fieldSources[0] : undefined;