zova-module-a-form 5.1.47 → 5.1.49

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.
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/component/formField/controller.tsx"],"names":[],"mappings":"AAIA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAa,iBAAiB,EAAO,MAAM,MAAM,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAiB,MAAM,wBAAwB,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAEL,0BAA0B,EAE1B,uBAAuB,EAEvB,kCAAkC,EACnC,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,wBAAwB,CACvC,WAAW,SAAS,EAAE,GAAG,EAAE,CAC3B,SAAQ,0BAA0B,CAAC,WAAW,CAAC;CAAG;AAEpD,qBACa,mBAAmB,CAAC,WAAW,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,kBAAkB;IACtF,MAAM,CAAC,aAAa,KAAM;IAC1B,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAA2B;IAEtE,OAAO,CAAC,UAAU,CAAgB;IAC3B,WAAW,EAAE,kCAAkC,CAAC,WAAW,CAAC,CAAC;IAGpE,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAGpC,qBAAqB,EAAE,mBAAmB,CAAC;cAE3B,QAAQ;IA6CxB,IAAW,IAAI,8DAEd;IAED,IAAW,KAAK,IAAI,aAAa,CAEhC;IAED,IAAW,IAAI,uDAEd;IAED,IAAW,QAAQ,4EAElB;IAED,IAAW,cAAc,wFAExB;IAED,IAAW,QAAQ,0DAElB;IAED,IAAW,YAAY,kDAEtB;IAEM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC,EAAE,OAAO;IAOnD,UAAU;IAIV,gBAAgB,IAAI,uBAAuB,CAAC,WAAW,CAAC;IAgB/D,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IA4DvB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,+BAA+B;IAevC,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,8BAA8B;CAoBvC"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/component/formField/controller.tsx"],"names":[],"mappings":"AAIA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAa,iBAAiB,EAAO,MAAM,MAAM,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAiB,MAAM,wBAAwB,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAEL,0BAA0B,EAE1B,uBAAuB,EAEvB,kCAAkC,EACnC,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,wBAAwB,CACvC,WAAW,SAAS,EAAE,GAAG,EAAE,CAC3B,SAAQ,0BAA0B,CAAC,WAAW,CAAC;CAAG;AAEpD,qBACa,mBAAmB,CAAC,WAAW,SAAS,EAAE,GAAG,EAAE,CAAE,SAAQ,kBAAkB;IACtF,MAAM,CAAC,aAAa,KAAM;IAC1B,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAA2B;IAEtE,OAAO,CAAC,UAAU,CAAgB;IAC3B,WAAW,EAAE,kCAAkC,CAAC,WAAW,CAAC,CAAC;IAGpE,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAGpC,qBAAqB,EAAE,mBAAmB,CAAC;cAE3B,QAAQ;IA+CxB,IAAW,IAAI,8DAEd;IAED,IAAW,KAAK,IAAI,aAAa,CAEhC;IAED,IAAW,IAAI,uDAEd;IAED,IAAW,QAAQ,4EAElB;IAED,IAAW,cAAc,wFAExB;IAED,IAAW,QAAQ,0DAElB;IAED,IAAW,YAAY,kDAEtB;IAEM,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,oBAAoB,CAAC,EAAE,OAAO;IAOnD,UAAU;IAIV,gBAAgB,IAAI,uBAAuB,CAAC,WAAW,CAAC;IAgB/D,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IA4DvB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,+BAA+B;IAevC,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,8BAA8B;CAoBvC"}
package/dist/index.js CHANGED
@@ -411,6 +411,7 @@ var ControllerFormField = (_dec$5 = Controller(), _dec2$5 = BeanInfo({ module: "
411
411
  const options = this._getFormFieldOptions();
412
412
  this._formField.api.update(options);
413
413
  this.form.resetField(this.name);
414
+ this.$props.onFieldStateReady?.(this);
414
415
  });
415
416
  await this.$$beanBehaviorsHolder.initialize({
416
417
  behaviorTag: void 0,
@@ -422,6 +423,7 @@ var ControllerFormField = (_dec$5 = Controller(), _dec2$5 = BeanInfo({ module: "
422
423
  if (newValue === oldValue) return;
423
424
  this.$props.onEffect?.(newValue);
424
425
  });
426
+ this.$props.onFieldStateReady?.(this);
425
427
  }
426
428
  get form() {
427
429
  return this.$$form.form;
@@ -889,23 +891,33 @@ function resolveTab(node, indexPath, tabsId, propertyNames, fieldNames, nodeIds,
889
891
  } : void 0;
890
892
  }
891
893
  function resolveField(node, tabPath, propertyNames, fieldNames, diagnostics, fieldTabPaths) {
892
- if (!propertyNames.has(node.name)) {
894
+ const name = resolveFieldName(node.name, propertyNames);
895
+ if (!name) {
893
896
  diagnostics.push({
894
897
  type: "unknownField",
895
898
  value: node.name
896
899
  });
897
900
  return;
898
901
  }
899
- if (fieldNames.has(node.name)) {
902
+ if (fieldNames.has(name)) {
900
903
  diagnostics.push({
901
904
  type: "duplicateField",
902
905
  value: node.name
903
906
  });
904
907
  return;
905
908
  }
906
- fieldNames.add(node.name);
907
- fieldTabPaths[node.name] = tabPath;
908
- return node;
909
+ fieldNames.add(name);
910
+ fieldTabPaths[name] = tabPath;
911
+ return name === node.name ? node : {
912
+ ...node,
913
+ name
914
+ };
915
+ }
916
+ function resolveFieldName(name, propertyNames) {
917
+ if (propertyNames.has(name)) return name;
918
+ const fieldSourcePrefix = `${name}.`;
919
+ const fieldSources = [...propertyNames].filter((item) => item.startsWith(fieldSourcePrefix));
920
+ return fieldSources.length === 1 ? fieldSources[0] : void 0;
909
921
  }
910
922
  function resolveId(node, indexPath) {
911
923
  return node.id || `${node.type}-${indexPath.join("-")}`;
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","$$beanBehaviorsHolder","initialize","behaviorTag","undefined","behaviors","_getFieldBehaviors","process","env","CLIENT","$props","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 },\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 }\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 if (!propertyNames.has(node.name)) {\n diagnostics.push({\n type: 'unknownField',\n value: node.name\n });\n return;\n }\n if (fieldNames.has(node.name)) {\n diagnostics.push({\n type: 'duplicateField',\n value: node.name\n });\n return;\n }\n fieldNames.add(node.name);\n fieldTabPaths[node.name] = tabPath;\n return node;\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 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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"}
@@ -10,7 +10,7 @@ import type { ControllerFormField } from '../component/formField/controller.jsx'
10
10
  import type { IFormScope, TypeBehaviorFormFieldOptions } from './form.js';
11
11
  export type HTMLInputElementType = 'text' | 'password' | 'number' | 'file' | 'hidden' | 'tel' | 'email';
12
12
  export declare const constFieldProps = "$$FieldProps";
13
- export interface IFormFieldScope<TParentData = {}> {
13
+ export interface IFormFieldScope<TParentData extends {} = {}> {
14
14
  name: string;
15
15
  value: any;
16
16
  property?: SchemaObject;
@@ -27,7 +27,7 @@ export interface IFormFieldValidatorsOptionsBase {
27
27
  onChange?: boolean | z.ZodType;
28
28
  onBlur?: boolean | z.ZodType;
29
29
  }
30
- export interface IFormFieldOptionsBase<TParentData = {}, TName extends DeepKeys<TParentData> = DeepKeys<TParentData>> {
30
+ export interface IFormFieldOptionsBase<TParentData extends {} = {}, TName extends DeepKeys<TParentData> = DeepKeys<TParentData>> {
31
31
  name?: TName;
32
32
  render?: TypeRenderComponentPreset;
33
33
  class?: any;
@@ -37,16 +37,17 @@ export interface IFormFieldOptionsBase<TParentData = {}, TName extends DeepKeys<
37
37
  required?: boolean;
38
38
  disableNotifyChanged?: boolean;
39
39
  onEffect?: TypeFormFieldOnEffect;
40
+ onFieldStateReady?: (formField: ControllerFormField<TParentData>) => void;
40
41
  validators?: IFormFieldValidatorsOptionsBase;
41
42
  }
42
43
  export interface IFormFieldPresetOptions<PresetName extends keyof ISchemaRenderComponentPresetRecord = never> extends IFormFieldComponentOptions {
43
44
  render?: PresetName;
44
45
  options?: ISchemaRenderComponentPresetRecord[PresetName];
45
46
  }
46
- export interface IFormFieldComponentOptions<TParentData = {}> extends IFormFieldOptions<TParentData> {
47
+ export interface IFormFieldComponentOptions<TParentData extends {} = {}> extends IFormFieldOptions<TParentData> {
47
48
  options?: any;
48
49
  }
49
- export interface IFormFieldOptions<TParentData = {}> extends IFormFieldSysOptionsBase<TParentData>, IFormFieldOptionsBase<TParentData>, IFormFieldLayoutOptionsBase {
50
+ export interface IFormFieldOptions<TParentData extends {} = {}> extends IFormFieldSysOptionsBase<TParentData>, IFormFieldOptionsBase<TParentData>, IFormFieldLayoutOptionsBase {
50
51
  behaviors?: IBehaviorItem;
51
52
  slotDefault?: (props: IFormFieldRenderContext<TParentData>, formField: ControllerFormField) => VNode;
52
53
  }
@@ -56,13 +57,13 @@ export interface IFormFieldRenderContextProps {
56
57
  class?: any;
57
58
  readonly?: boolean;
58
59
  }
59
- export interface IFormFieldRenderContextPropsBucket<TParentData = {}> extends Omit<IFormFieldOptions<TParentData>, 'render'> {
60
+ export interface IFormFieldRenderContextPropsBucket<TParentData extends {} = {}> extends Omit<IFormFieldOptions<TParentData>, 'render'> {
60
61
  options?: any;
61
62
  render: TypeFormFieldRenderComponent;
62
63
  renderProvider?: TypeFormFieldRenderComponentProvider;
63
64
  needHandleBorder?: boolean;
64
65
  }
65
- export interface IFormFieldRenderContext<TParentData = {}> {
66
+ export interface IFormFieldRenderContext<TParentData extends {} = {}> {
66
67
  propsBucket: IFormFieldRenderContextPropsBucket<TParentData>;
67
68
  props: IFormFieldRenderContextProps;
68
69
  celScope: IFormFieldScope<TParentData>;
@@ -1 +1 @@
1
- {"version":3,"file":"formField.d.ts","sourceRoot":"","sources":["../../src/types/formField.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formField.d.ts","sourceRoot":"","sources":["../../src/types/formField.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zova-module-a-form",
3
- "version": "5.1.47",
4
- "gitHead": "eb85d771ef75776a439e56df3af8be6a3a36c1c2",
3
+ "version": "5.1.49",
4
+ "gitHead": "38f54836d110b431a472cda3d137b259182580a8",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Zova Module"
@@ -61,6 +61,7 @@ export class ControllerFormField<TParentData extends {} = {}> extends BeanContro
61
61
  const options = this._getFormFieldOptions();
62
62
  this._formField.api.update(options as any);
63
63
  this.form.resetField(this.name);
64
+ this.$props.onFieldStateReady?.(this);
64
65
  },
65
66
  );
66
67
  // behaviors
@@ -80,6 +81,7 @@ export class ControllerFormField<TParentData extends {} = {}> extends BeanContro
80
81
  },
81
82
  );
82
83
  }
84
+ this.$props.onFieldStateReady?.(this);
83
85
  }
84
86
 
85
87
  public get form() {
@@ -193,17 +193,25 @@ function resolveField(
193
193
  diagnostics: IFormLayoutDiagnostic[],
194
194
  fieldTabPaths: IResolvedFormLayout['fieldTabPaths'],
195
195
  ): IResolvedFormLayoutField | undefined {
196
- if (!propertyNames.has(node.name)) {
196
+ const name = resolveFieldName(node.name, propertyNames);
197
+ if (!name) {
197
198
  diagnostics.push({ type: 'unknownField', value: node.name });
198
199
  return;
199
200
  }
200
- if (fieldNames.has(node.name)) {
201
+ if (fieldNames.has(name)) {
201
202
  diagnostics.push({ type: 'duplicateField', value: node.name });
202
203
  return;
203
204
  }
204
- fieldNames.add(node.name);
205
- fieldTabPaths[node.name] = tabPath;
206
- return node;
205
+ fieldNames.add(name);
206
+ fieldTabPaths[name] = tabPath;
207
+ return name === node.name ? node : { ...node, name };
208
+ }
209
+
210
+ function resolveFieldName(name: string, propertyNames: Set<string>) {
211
+ if (propertyNames.has(name)) return name;
212
+ const fieldSourcePrefix = `${name}.`;
213
+ const fieldSources = [...propertyNames].filter(item => item.startsWith(fieldSourcePrefix));
214
+ return fieldSources.length === 1 ? fieldSources[0] : undefined;
207
215
  }
208
216
 
209
217
  function resolveId(node: { type: string; id?: string }, indexPath: number[]) {
@@ -29,7 +29,7 @@ export type HTMLInputElementType =
29
29
  | 'email';
30
30
  export const constFieldProps = '$$FieldProps';
31
31
 
32
- export interface IFormFieldScope<TParentData = {}> {
32
+ export interface IFormFieldScope<TParentData extends {} = {}> {
33
33
  name: string;
34
34
  value: any;
35
35
  property?: SchemaObject;
@@ -51,7 +51,7 @@ export interface IFormFieldValidatorsOptionsBase {
51
51
  }
52
52
 
53
53
  export interface IFormFieldOptionsBase<
54
- TParentData = {},
54
+ TParentData extends {} = {},
55
55
  TName extends DeepKeys<TParentData> = DeepKeys<TParentData>,
56
56
  > {
57
57
  name?: TName;
@@ -63,6 +63,7 @@ export interface IFormFieldOptionsBase<
63
63
  required?: boolean;
64
64
  disableNotifyChanged?: boolean;
65
65
  onEffect?: TypeFormFieldOnEffect;
66
+ onFieldStateReady?: (formField: ControllerFormField<TParentData>) => void;
66
67
  validators?: IFormFieldValidatorsOptionsBase;
67
68
  // onChange?: (e: Event) => void; // allow set to null, but not provide null type
68
69
  // onInput?: (e: Event) => void; // allow set to null, but not provide null type
@@ -77,12 +78,12 @@ export interface IFormFieldPresetOptions<
77
78
  }
78
79
 
79
80
  export interface IFormFieldComponentOptions<
80
- TParentData = {},
81
+ TParentData extends {} = {},
81
82
  > extends IFormFieldOptions<TParentData> {
82
83
  options?: any;
83
84
  }
84
85
 
85
- export interface IFormFieldOptions<TParentData = {}>
86
+ export interface IFormFieldOptions<TParentData extends {} = {}>
86
87
  extends
87
88
  IFormFieldSysOptionsBase<TParentData>,
88
89
  IFormFieldOptionsBase<TParentData>,
@@ -113,7 +114,7 @@ export interface IFormFieldRenderContextProps {
113
114
  // onBlur?: (e: Event) => void;
114
115
  // }
115
116
 
116
- export interface IFormFieldRenderContextPropsBucket<TParentData = {}> extends Omit<
117
+ export interface IFormFieldRenderContextPropsBucket<TParentData extends {} = {}> extends Omit<
117
118
  IFormFieldOptions<TParentData>,
118
119
  'render'
119
120
  > {
@@ -123,7 +124,7 @@ export interface IFormFieldRenderContextPropsBucket<TParentData = {}> extends Om
123
124
  needHandleBorder?: boolean;
124
125
  }
125
126
 
126
- export interface IFormFieldRenderContext<TParentData = {}> {
127
+ export interface IFormFieldRenderContext<TParentData extends {} = {}> {
127
128
  propsBucket: IFormFieldRenderContextPropsBucket<TParentData>;
128
129
  props: IFormFieldRenderContextProps;
129
130
  celScope: IFormFieldScope<TParentData>;