{"version":3,"file":"useSearchForm.mjs","sources":["../../../../../package/hooks/formily/useSearchForm.tsx"],"sourcesContent":["import {\n  DefineComponent,\n  FormProvider,\n  FragmentComponent,\n  ISchema,\n  ISchemaFieldProps,\n  SchemaKey,\n  VueComponent,\n  createForm,\n  useForm\n} from \"@formily/vue\";\nimport {\n  Component,\n  ExtractPropTypes,\n  PropType,\n  VNode,\n  defineComponent,\n  getCurrentInstance,\n  ref,\n  watch\n} from \"vue\";\nimport useRequest from \"../useRequest\";\nimport { Options, Service } from \"../useRequest/src/types\";\nimport { Submit, Reset, searchFormProps, inputEnterEffect } from \"@vue-admin-core/formily\";\nimport { isObjectField, type IFormProps } from \"@formily/core\";\nimport { isFunction } from \"lodash-es\";\n\nexport type SearchFormSchema = ISchema[\"properties\"];\nexport const useSearchForm = <TData, TParams extends any[]>(\n  request: Service<TData, TParams>,\n  options?: Options<TData, TParams>,\n  formProps?: IFormProps<object>,\n  // definitions?: Record<string, ISchema>,\n  SchemaField?: DefineComponent<ISchemaFieldProps>\n) => {\n  const app = getCurrentInstance();\n\n  const form = useForm();\n\n  if (!form.value) {\n    form.value = createForm(formProps);\n  }\n\n  const SelfSchemaField = (app?.appContext.components.SchemaField ||\n    SchemaField) as DefineComponent<ISchemaFieldProps>;\n\n  if (!SelfSchemaField) {\n    throw new Error(`SchemaField 找不到，在全局设置app.use(setupFormily)或者传入SchemaField`);\n  }\n\n  const _uid = \"searchForm\"; //uid();\n  const result = useRequest<TData, TParams>(request, options);\n  const SearchForm = defineComponent({\n    name: \"UseSearchForm\",\n    inheritAttrs: false,\n    props: {\n      ...searchFormProps,\n      schema: {\n        type: Object as PropType<ISchema[\"properties\"]>,\n        required: true\n      },\n      components: {\n        type: Object as PropType<Record<string, VueComponent>>\n      },\n      scope: {\n        type: Object\n      },\n      name: {\n        type: [String, Number] as PropType<SchemaKey>\n      },\n      definitions: {\n        type: Object as PropType<Record<string, ISchema>>\n      },\n      onSearch: {\n        type: Function as PropType<(...params: TParams) => Promise<TParams[] | null>>\n      },\n      onReset: {\n        type: Function as PropType<() => Promise<TParams[] | null>>\n      },\n      addonAfter: {\n        type: Object as PropType<null | Component | VNode | (() => VNode)>\n      },\n      addonBefore: {\n        type: Object as PropType<null | Component | VNode | (() => VNode)>\n      },\n      searchButtonText: {\n        type: String,\n        default: \"查询\"\n      },\n      searchButtonProps: {\n        type: Object as PropType<ExtractPropTypes<typeof Submit.props>>\n      },\n      resetButtonText: {\n        type: String,\n        default: \"重置\"\n      },\n      resetButtonProps: {\n        type: Object as PropType<ExtractPropTypes<typeof Reset.props>>\n      }\n    },\n    setup(props, { slots, expose }) {\n      const { schema, components, scope, name, ...reset } = props;\n      const resetLoading = ref(false);\n      const _form = useForm();\n      if (_form.value) form.value = _form.value;\n      const handleReset = async () => {\n        resetLoading.value = true;\n        if (isFunction(props.onReset)) {\n          const res = await props.onReset?.();\n          if (res) {\n            // @ts-ignore\n            await result.runAsync(res);\n          }\n        } else {\n          // @ts-ignore\n          await result.runAsync(res);\n        }\n        resetLoading.value = false;\n      };\n\n      const handleSearch = async (params: TParams) => {\n        if (isFunction(props.onSearch)) {\n          // @ts-ignore\n          const res = await props.onSearch?.(params);\n          if (res) {\n            // @ts-ignore\n            await result.runAsync(res);\n          }\n        } else {\n          // @ts-ignore\n          await result.runAsync(params);\n        }\n      };\n\n      form.value.addEffects(\"search_form_enter\", () => {\n        inputEnterEffect(\"*\", () => {\n          form.value.query(_uid).take((field) => {\n            if (isObjectField(field)) {\n              field.submit(handleSearch);\n            }\n          });\n        });\n      });\n\n      expose({\n        search: handleSearch,\n        reset: handleReset\n      });\n\n      watch(\n        () => options?.defaultParams,\n        (value) => {\n          // @ts-ignore\n          result.runAsync({\n            ...form.value.values[_uid],\n            ...value?.[0]\n          });\n        },\n        { deep: true }\n      );\n\n      const actions = () => (\n        <FragmentComponent>\n          <Submit {...props.searchButtonProps} onSubmit={handleSearch}>\n            {props.searchButtonText}\n          </Submit>\n          <Reset\n            resetValidateSuccess={handleReset}\n            {...props.resetButtonProps}\n            loading={resetLoading.value}\n          >\n            {props.resetButtonText}\n          </Reset>\n        </FragmentComponent>\n      );\n\n      const _schema = {\n        type: \"object\",\n        definitions: props.definitions,\n        properties: {\n          [_uid]: {\n            type: \"object\",\n            \"x-component\": \"SearchForm\",\n            \"x-component-props\": reset,\n            \"x-content\": {\n              actions: slots.actions ? slots.actions : actions\n            },\n            properties: schema\n          }\n        }\n      };\n      return () => (\n        <FormProvider form={form.value}>\n          <SelfSchemaField\n            schema={_schema}\n            components={components}\n            scope={scope}\n            name={name}\n          ></SelfSchemaField>\n        </FormProvider>\n      );\n    }\n  });\n\n  return { form, SearchForm, request: result };\n};\n\nexport default useSearchForm;\n"],"names":["useSearchForm","request","options","formProps","SchemaField","app","getCurrentInstance","form","useForm","value","createForm","SelfSchemaField","appContext","components","Error","_uid","result","useRequest","SearchForm","defineComponent","name","inheritAttrs","props","searchFormProps","schema","type","Object","required","scope","String","Number","definitions","onSearch","Function","onReset","addonAfter","addonBefore","searchButtonText","default","searchButtonProps","resetButtonText","resetButtonProps","setup","slots","expose","reset","resetLoading","ref","_form","handleReset","isFunction","res","runAsync","handleSearch","params","addEffects","inputEnterEffect","query","take","field","isObjectField","submit","search","watch","defaultParams","values","deep","actions","_createVNode","FragmentComponent","Submit","_mergeProps","Reset","_schema","properties","FormProvider"],"mappings":"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"}