UNPKG

vue-admin-core

Version:
187 lines (182 loc) 5.22 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var vue$1 = require('@formily/vue'); require('../useRequest/index.js'); require('../../formily/index.js'); var core = require('@formily/core'); var lodashEs = require('lodash-es'); var useRequest = require('../useRequest/src/useRequest.js'); var index = require('../../formily/search-form/src/index.js'); var effects = require('../../formily/__builtins__/shared/effects.js'); var index$1 = require('../../formily/submit/src/index.js'); var index$2 = require('../../formily/reset/src/index.js'); const useSearchForm = (request, options, formProps, SchemaField) => { const app = vue.getCurrentInstance(); const form = vue$1.useForm(); if (!form.value) { form.value = vue$1.createForm(formProps); } const SelfSchemaField = (app == null ? void 0 : app.appContext.components.SchemaField) || SchemaField; if (!SelfSchemaField) { throw new Error(`SchemaField \u627E\u4E0D\u5230\uFF0C\u5728\u5168\u5C40\u8BBE\u7F6Eapp.use(setupFormily)\u6216\u8005\u4F20\u5165SchemaField`); } const _uid = "searchForm"; const result = useRequest.default(request, options); const SearchForm = vue.defineComponent({ name: "UseSearchForm", inheritAttrs: false, props: { ...index.searchFormProps, schema: { type: Object, required: true }, components: { type: Object }, scope: { type: Object }, name: { type: [String, Number] }, definitions: { type: Object }, onSearch: { type: Function }, onReset: { type: Function }, addonAfter: { type: Object }, addonBefore: { type: Object }, searchButtonText: { type: String, default: "\u67E5\u8BE2" }, searchButtonProps: { type: Object }, resetButtonText: { type: String, default: "\u91CD\u7F6E" }, resetButtonProps: { type: Object } }, setup(props, { slots, expose }) { const { schema, components, scope, name, ...reset } = props; const resetLoading = vue.ref(false); const _form = vue$1.useForm(); if (_form.value) form.value = _form.value; const handleReset = async () => { var _a; resetLoading.value = true; if (lodashEs.isFunction(props.onReset)) { const res2 = await ((_a = props.onReset) == null ? void 0 : _a.call(props)); if (res2) { await result.runAsync(res2); } } else { await result.runAsync(res); } resetLoading.value = false; }; const handleSearch = async (params) => { var _a; if (lodashEs.isFunction(props.onSearch)) { const res2 = await ((_a = props.onSearch) == null ? void 0 : _a.call(props, params)); if (res2) { await result.runAsync(res2); } } else { await result.runAsync(params); } }; form.value.addEffects("search_form_enter", () => { effects.inputEnterEffect("*", () => { form.value.query(_uid).take((field) => { if (core.isObjectField(field)) { field.submit(handleSearch); } }); }); }); expose({ search: handleSearch, reset: handleReset }); vue.watch(() => options == null ? void 0 : options.defaultParams, (value) => { result.runAsync({ ...form.value.values[_uid], ...value == null ? void 0 : value[0] }); }, { deep: true }); const actions = () => vue.createVNode(vue$1.FragmentComponent, null, { default: () => [vue.createVNode(index$1.Submit, vue.mergeProps(props.searchButtonProps, { "onSubmit": handleSearch }), { default: () => [props.searchButtonText] }), vue.createVNode(index$2.Reset, vue.mergeProps({ "resetValidateSuccess": handleReset }, props.resetButtonProps, { "loading": resetLoading.value }), { default: () => [props.resetButtonText] })] }); const _schema = { type: "object", definitions: props.definitions, properties: { [_uid]: { type: "object", "x-component": "SearchForm", "x-component-props": reset, "x-content": { actions: slots.actions ? slots.actions : actions }, properties: schema } } }; return () => vue.createVNode(vue$1.FormProvider, { "form": form.value }, { default: () => [vue.createVNode(SelfSchemaField, { "schema": _schema, "components": components, "scope": scope, "name": name }, null)] }); } }); return { form, SearchForm, request: result }; }; exports.default = useSearchForm; exports.useSearchForm = useSearchForm; //# sourceMappingURL=useSearchForm.js.map