@silver-formily/element-plus 4.0.1 → 4.0.3

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.
Files changed (39) hide show
  1. package/esm/__builtins__/shared/utils.mjs +4 -1
  2. package/esm/__builtins__/shared/utils.mjs.map +1 -1
  3. package/esm/checkbox/index.d.ts +90 -90
  4. package/esm/color-picker/index.d.ts +14 -14
  5. package/esm/color-picker-panel/index.d.ts +12 -12
  6. package/esm/form-dialog/dialog-content.mjs +10 -12
  7. package/esm/form-dialog/dialog-content.mjs.map +1 -1
  8. package/esm/form-dialog/index.mjs +22 -26
  9. package/esm/form-dialog/index.mjs.map +1 -1
  10. package/esm/form-dialog/types.d.ts +0 -1
  11. package/esm/form-drawer/drawer-content.mjs +10 -12
  12. package/esm/form-drawer/drawer-content.mjs.map +1 -1
  13. package/esm/form-drawer/index.mjs +22 -26
  14. package/esm/form-drawer/index.mjs.map +1 -1
  15. package/esm/form-drawer/types.d.ts +0 -1
  16. package/esm/form-grid/form-grid-column.mjs +6 -4
  17. package/esm/form-grid/form-grid-column.mjs.map +1 -1
  18. package/esm/form-layout/form-layout.vue.d.ts +1 -1
  19. package/esm/input-number/index.d.ts +24 -24
  20. package/esm/preview-text/select.mjs +8 -3
  21. package/esm/preview-text/select.mjs.map +1 -1
  22. package/esm/query-form/query-form-light.mjs +13 -6
  23. package/esm/query-form/query-form-light.mjs.map +1 -1
  24. package/esm/query-form/query-form.mjs +13 -6
  25. package/esm/query-form/query-form.mjs.map +1 -1
  26. package/esm/query-form/types.d.ts +8 -1
  27. package/esm/radio/index.d.ts +45 -45
  28. package/esm/radio/radio-group.mjs +4 -2
  29. package/esm/radio/radio-group.mjs.map +1 -1
  30. package/esm/select/index.d.ts +7 -7
  31. package/esm/select-table/index.d.ts +1 -1
  32. package/esm/select-table/select-table.mjs +63 -29
  33. package/esm/select-table/select-table.mjs.map +1 -1
  34. package/esm/select-table/types.d.ts +1 -1
  35. package/esm/time-select/index.d.ts +16 -16
  36. package/esm/transfer/index.d.ts +12 -12
  37. package/package.json +4 -4
  38. package/esm/shared/url-change-listener.mjs +0 -50
  39. package/esm/shared/url-change-listener.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["DialogContent"],"sources":["../../src/form-dialog/index.ts"],"sourcesContent":["import type { Form, IFormProps } from '@formily/core'\r\nimport type { IMiddleware } from '@formily/shared'\r\nimport type { App, Component } from 'vue'\r\nimport type { FormDialogSlotContent, IFormDialog, IFormDialogProps } from './types'\r\nimport { createForm } from '@formily/core'\r\nimport { toJS } from '@formily/reactive'\r\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\r\nimport { observer } from '@silver-formily/reactive-vue'\nimport { camelCase } from 'lodash-es'\nimport { createApp, h, ref } from 'vue'\nimport { getTransitionDuration, isVueOptions, loading } from '../__builtins__'\nimport { onUrlChange } from '../shared/url-change-listener'\nimport DialogContent from './dialog-content.vue'\n\r\nexport function FormDialog<\n T extends object = any,\n const DynamicMiddlewareNames extends readonly string[] = [],\n>(\n title: IFormDialogProps | string,\n content?: Component | FormDialogSlotContent<T, DynamicMiddlewareNames[number]>,\n dynamicMiddlewareNames?: DynamicMiddlewareNames,\n): IFormDialog<T, DynamicMiddlewareNames[number]> {\n const env: {\r\n root?: HTMLElement\r\n form?: Form<T>\r\n promise?: Promise<any>\r\n instance?: any\n app?: App<Element>\n stopUrlChangeListener?: () => void\n settled?: boolean\n openMiddlewares: IMiddleware<IFormProps<T>>[]\n confirmMiddlewares: IMiddleware<Form<T>>[]\r\n cancelMiddlewares: IMiddleware<Form<T>>[]\r\n [key: `${string}Middlewares`]: IMiddleware<Form<T>>[] | IMiddleware<IFormProps<T>>[] | undefined\r\n } = {\r\n root: document.createElement('div'),\r\n form: null,\r\n promise: null,\r\n app: null,\n instance: null,\n stopUrlChangeListener: undefined,\n settled: false,\n openMiddlewares: [],\n confirmMiddlewares: [],\r\n cancelMiddlewares: [],\r\n }\r\n\r\n if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n /* istanbul ignore if -- @preserve */\r\n if (!isStr(middlewareName))\r\n return\r\n const _middlewareName = camelCase(middlewareName)\r\n /* istanbul ignore if -- @preserve */\r\n if (['open', 'cancel', 'confirm'].includes(_middlewareName)) {\r\n throw new Error(`for${pascalCase(_middlewareName)} is presved`)\r\n }\r\n (env[`${_middlewareName}Middlewares`] = [])\r\n }\r\n }\r\n\r\n document.body.append(env.root)\r\n\r\n const rawProps = (isStr(title) ? { title } : title) as IFormDialogProps\n const props = {\n ...rawProps,\n closeOnUrlChange: rawProps.closeOnUrlChange ?? true,\n } as IFormDialogProps\n\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\n const _content = isVueOptions(content)\n ? { default: () => h(content) }\n : isFn(content)\n ? { default: content }\n : content\n if (!env.instance) {\r\n const ComponentConstructor = observer({\r\n setup(_, { expose }) {\r\n const visible = ref(false)\r\n expose({\r\n visible,\r\n })\r\n return () => h(DialogContent, {\r\n dialogProps: props,\r\n form: env.form,\r\n resolve,\r\n reject,\r\n visible: visible.value,\r\n }, _content)\r\n },\r\n })\r\n env.app = createApp(ComponentConstructor)\r\n env.instance = env.app.mount(env.root)\r\n }\r\n env.instance.visible = visible\r\n }\r\n\r\n function disposeDialog() {\n env.stopUrlChangeListener?.()\n env.stopUrlChangeListener = undefined\n const animationDuration = getTransitionDuration()\n setTimeout(() => {\n env.app?.unmount?.()\n env.app = null\r\n env.instance = null\r\n env.root?.remove()\r\n env.root = undefined\n }, animationDuration)\n }\n\n async function rejectDialog(reject?: () => any) {\n if (env.settled)\n return\n\n env.settled = true\n env.stopUrlChangeListener?.()\n env.stopUrlChangeListener = undefined\n await loading(props.loadingText, () =>\n applyMiddleware(env.form, env.cancelMiddlewares))\n render(false)\n disposeDialog()\n reject?.()\n }\n\r\n const formDialog = {\r\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\r\n isFn(middleware) && env.openMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n forCancel: (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\r\n return formDialog\r\n },\r\n open: (payload: IFormProps<T>) => {\n /* istanbul ignore if -- @preserve */\n if (env.promise)\n return env.promise\n\n env.settled = false\n env.promise = new Promise((res, rej) => {\n loading(props.loadingText, () => applyMiddleware(payload, env.openMiddlewares))\n .then((resPayload) => {\n env.form = env.form || createForm(resPayload as IFormProps<T>)\n render(true, (type: string) => {\n env.form.submit(async () => {\n if (env.settled)\n return\n\n env.settled = true\n env.stopUrlChangeListener?.()\n env.stopUrlChangeListener = undefined\n await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares))\n res(toJS(env.form.values))\n formDialog.close()\n disposeDialog()\n }).catch(() => undefined)\n }, () => rejectDialog(() => rej(new Error('cancel'))))\n if (props.closeOnUrlChange) {\n env.stopUrlChangeListener = onUrlChange(() => {\n void rejectDialog(() => rej(new Error('cancel')))\n })\n }\n })\n .catch(/* istanbul ignore next -- @preserve */ error => rej(error))\n })\n return env.promise\n },\r\n close: () => {\r\n /* istanbul ignore if -- @preserve */\r\n if (!env.root)\r\n return\r\n render(false)\r\n },\r\n }\r\n if (isArr(dynamicMiddlewareNames)) {\r\n for (const middlewareName of dynamicMiddlewareNames) {\r\n const _middlewareName = camelCase(middlewareName)\r\n formDialog[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\r\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\r\n return formDialog\r\n }\r\n }\r\n }\r\n\r\n return formDialog as IFormDialog<T, DynamicMiddlewareNames[number]>\n}\n\r\nexport default FormDialog\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["DialogContent"],"sources":["../../src/form-dialog/index.ts"],"sourcesContent":["import type { Form, IFormProps } from '@formily/core'\nimport type { IMiddleware } from '@formily/shared'\nimport type { App, Component } from 'vue'\nimport type { FormDialogSlotContent, IFormDialog, IFormDialogProps } from './types'\nimport { createForm } from '@formily/core'\nimport { toJS } from '@formily/reactive'\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\nimport { observer } from '@silver-formily/reactive-vue'\nimport { camelCase } from 'lodash-es'\nimport { createApp, h, ref } from 'vue'\nimport { getTransitionDuration, isVueOptions, loading } from '../__builtins__'\nimport DialogContent from './dialog-content.vue'\n\nexport function FormDialog<\n T extends object = any,\n const DynamicMiddlewareNames extends readonly string[] = [],\n>(\n title: IFormDialogProps | string,\n content?: Component | FormDialogSlotContent<T, DynamicMiddlewareNames[number]>,\n dynamicMiddlewareNames?: DynamicMiddlewareNames,\n): IFormDialog<T, DynamicMiddlewareNames[number]> {\n const env: {\n root?: HTMLElement\n form?: Form<T>\n promise?: Promise<any>\n instance?: any\n app?: App<Element>\n settled?: boolean\n openMiddlewares: IMiddleware<IFormProps<T>>[]\n confirmMiddlewares: IMiddleware<Form<T>>[]\n cancelMiddlewares: IMiddleware<Form<T>>[]\n [key: `${string}Middlewares`]: IMiddleware<Form<T>>[] | IMiddleware<IFormProps<T>>[] | undefined\n } = {\n root: document.createElement('div'),\n form: null,\n promise: null,\n app: null,\n instance: null,\n settled: false,\n openMiddlewares: [],\n confirmMiddlewares: [],\n cancelMiddlewares: [],\n }\n\n if (isArr(dynamicMiddlewareNames)) {\n for (const middlewareName of dynamicMiddlewareNames) {\n /* istanbul ignore if -- @preserve */\n if (!isStr(middlewareName))\n return\n const _middlewareName = camelCase(middlewareName)\n /* istanbul ignore if -- @preserve */\n if (['open', 'cancel', 'confirm'].includes(_middlewareName)) {\n throw new Error(`for${pascalCase(_middlewareName)} is presved`)\n }\n (env[`${_middlewareName}Middlewares`] = [])\n }\n }\n\n document.body.append(env.root)\n\n const props = (isStr(title) ? { title } : title) as IFormDialogProps\n\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\n const _content = isVueOptions(content)\n ? { default: () => h(content) }\n : isFn(content)\n ? { default: content }\n : content\n if (!env.instance) {\n const ComponentConstructor = observer({\n setup(_, { expose }) {\n const visible = ref(false)\n expose({\n visible,\n })\n return () => h(DialogContent, {\n dialogProps: props,\n form: env.form,\n resolve,\n reject,\n visible: visible.value,\n }, _content)\n },\n })\n env.app = createApp(ComponentConstructor)\n env.instance = env.app.mount(env.root)\n }\n env.instance.visible = visible\n }\n\n function disposeDialog() {\n const animationDuration = getTransitionDuration()\n setTimeout(() => {\n env.app?.unmount?.()\n env.app = null\n env.instance = null\n env.root?.remove()\n env.root = undefined\n }, animationDuration)\n }\n\n async function rejectDialog(reject?: () => any) {\n if (env.settled)\n return\n\n env.settled = true\n\n try {\n await loading(props.loadingText, () =>\n applyMiddleware(env.form, env.cancelMiddlewares))\n render(false)\n disposeDialog()\n reject?.()\n }\n catch {\n env.settled = false\n }\n }\n\n async function submitDialog(type: string | undefined, resolve: (payload: any) => void, close: () => void) {\n if (env.settled)\n return\n\n env.settled = true\n\n try {\n await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares))\n resolve(toJS(env.form.values))\n close()\n disposeDialog()\n }\n catch {\n env.settled = false\n }\n }\n\n const formDialog = {\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\n isFn(middleware) && env.openMiddlewares.push(middleware)\n return formDialog\n },\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\n return formDialog\n },\n forCancel: (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\n return formDialog\n },\n open: (payload: IFormProps<T>) => {\n /* istanbul ignore if -- @preserve */\n if (env.promise)\n return env.promise\n\n env.settled = false\n env.promise = new Promise((res, rej) => {\n loading(props.loadingText, () => applyMiddleware(payload, env.openMiddlewares))\n .then((resPayload) => {\n env.form = env.form || createForm(resPayload as IFormProps<T>)\n render(true, (type: string) => {\n env.form.submit(async () => {\n await submitDialog(type, res, formDialog.close)\n }).catch(() => undefined)\n }, () => rejectDialog(() => rej(new Error('cancel'))))\n })\n .catch(/* istanbul ignore next -- @preserve */ error => rej(error))\n })\n return env.promise\n },\n close: () => {\n /* istanbul ignore if -- @preserve */\n if (!env.root)\n return\n render(false)\n },\n }\n if (isArr(dynamicMiddlewareNames)) {\n for (const middlewareName of dynamicMiddlewareNames) {\n const _middlewareName = camelCase(middlewareName)\n formDialog[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\n return formDialog\n }\n }\n }\n\n return formDialog as IFormDialog<T, DynamicMiddlewareNames[number]>\n}\n\nexport default FormDialog\n"],"mappings":"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"}
@@ -11,7 +11,6 @@ type IFormDialogProps = Partial<DialogProps> & {
11
11
  okButtonProps?: ButtonProps;
12
12
  loadingText?: string;
13
13
  enterSubmit?: boolean;
14
- closeOnUrlChange?: boolean;
15
14
  };
16
15
  interface FormDialogResolve {
17
16
  (type?: string): void;
@@ -4,7 +4,7 @@ import { stylePrefix } from "../__builtins__/configs/index.mjs";
4
4
  import { useEnterSubmit } from "../__builtins__/shared/use-enter-submit.mjs";
5
5
  import { resolveDrawerElement } from "../shared/overlay-elements.mjs";
6
6
  import { ElButton, ElConfigProvider, ElDrawer } from "element-plus";
7
- import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeProps, normalizeClass, normalizeProps, openBlock, ref, renderSlot, toDisplayString, unref, useSlots, withCtx } from "vue";
7
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, mergeProps, normalizeClass, normalizeProps, openBlock, ref, renderSlot, toDisplayString, unref, useSlots, withCtx } from "vue";
8
8
  import { FormProvider } from "@silver-formily/vue";
9
9
  import { isFn } from "@formily/shared";
10
10
  import { omit } from "lodash-es";
@@ -68,7 +68,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
68
68
  if (unref(isFn)(props.drawerProps.beforeClose)) props.drawerProps.beforeClose(done);
69
69
  else done();
70
70
  }
71
- }), createSlots({
71
+ }), {
72
+ header: withCtx(() => [slots.header ? renderSlot(_ctx.$slots, "header", {
73
+ key: 0,
74
+ resolve: __props.resolve,
75
+ reject: __props.reject,
76
+ form: __props.form
77
+ }) : createCommentVNode("v-if", true)]),
72
78
  default: withCtx(() => [createVNode(unref(FormProvider), { form: __props.form }, {
73
79
  default: withCtx(() => [createVNode(unref(ElConfigProvider), normalizeProps(guardReactiveProps(unref(elConfig))), {
74
80
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
@@ -95,16 +101,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
95
101
  default: withCtx(() => [createTextVNode(toDisplayString(unref(_drawerProps).okText || "确定"), 1)]),
96
102
  _: 1
97
103
  }, 16, ["loading"])], 64))], 2)]),
98
- _: 2
99
- }, [slots.header ? {
100
- name: "header",
101
- fn: withCtx(() => [renderSlot(_ctx.$slots, "header", {
102
- resolve: __props.resolve,
103
- reject: __props.reject,
104
- form: __props.form
105
- })]),
106
- key: "0"
107
- } : void 0]), 1040, [
104
+ _: 3
105
+ }, 16, [
108
106
  "z-index",
109
107
  "model-value",
110
108
  "before-close"
@@ -1 +1 @@
1
- {"version":3,"file":"drawer-content.mjs","names":[],"sources":["../../src/form-drawer/drawer-content.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@formily/core'\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { FormDrawerSlots, IFormDrawerProps } from './types'\nimport { isFn } from '@formily/shared'\nimport { FormProvider } from '@silver-formily/vue'\nimport { ElButton, ElConfigProvider, ElDrawer } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, ref } from 'vue'\nimport { loadElConfigProvider, stylePrefix, useDebonceSubmitting } from '../__builtins__'\nimport { useEnterSubmit } from '../__builtins__/shared/use-enter-submit'\nimport { resolveDrawerElement } from '../shared/overlay-elements'\n\ndefineOptions({\n name: 'FormDrawerContent',\n})\n\nconst props = defineProps({\n drawerProps: {\n type: Object as PropType<IFormDrawerProps>,\n required: true,\n },\n visible: {\n type: Boolean,\n required: true,\n },\n form: {\n type: Object as PropType<Form>,\n required: true,\n },\n resolve: {\n type: Function as PropType<(type?: string) => void>,\n required: true,\n },\n reject: {\n type: Function as PropType<() => void>,\n required: true,\n },\n})\nconst slots = defineSlots<FormDrawerSlots>()\nconst prefixCls = `${stylePrefix}-form-drawer`\nconst elConfig = loadElConfigProvider()\n\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\nconst _drawerProps = omit(props.drawerProps, ['modelValue', 'onUpdate:modelValue', 'beforeClose', 'enterSubmit'])\nconst drawerRef = ref<ComponentPublicInstance | null>(null)\nconst enableEnterSubmit = computed(() => props.drawerProps.enterSubmit !== false)\n\nuseEnterSubmit({\n visible: computed(() => props.visible),\n resolve: () => props.resolve(),\n submitting: internalSubmitting,\n getContainer: () => resolveDrawerElement(drawerRef.value),\n enabled: enableEnterSubmit,\n})\n</script>\n\n<template>\n <ElDrawer\n ref=\"drawerRef\"\n :class=\"prefixCls\"\n :z-index=\"elConfig.zIndex\"\n v-bind=\"_drawerProps\"\n :model-value=\"visible\"\n :before-close=\"(done) => {\n reject()\n if (isFn(props.drawerProps.beforeClose)) {\n props.drawerProps.beforeClose(done)\n }\n else {\n done()\n }\n }\"\n >\n <template v-if=\"slots.header\" #header>\n <slot name=\"header\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </template>\n\n <template #default>\n <FormProvider :form=\"form\">\n <ElConfigProvider v-bind=\"elConfig\">\n <slot :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </ElConfigProvider>\n </FormProvider>\n </template>\n\n <template #footer>\n <div :class=\"`${prefixCls}-footer`\">\n <template v-if=\"slots.footer\">\n <slot name=\"footer\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </template>\n <template v-else>\n <ElButton\n v-bind=\"_drawerProps.cancelButtonProps\"\n @click=\"reject()\"\n >\n {{ _drawerProps.cancelText || '取消' }}\n </ElButton>\n <ElButton\n type=\"primary\"\n v-bind=\"_drawerProps.okButtonProps\"\n :loading=\"internalSubmitting\"\n @click=\"resolve()\"\n >\n {{ _drawerProps.okText || '确定' }}\n </ElButton>\n </template>\n </div>\n </template>\n </ElDrawer>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,QAAQ;EAsBd,MAAM,QAAQ,UAAA;EACd,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,WAAW,sBAAqB;EAEtC,MAAM,EAAE,uBAAuB,qBAAqB,MAAM,KAAI;EAC9D,MAAM,eAAe,KAAK,MAAM,aAAa;GAAC;GAAc;GAAuB;GAAe;GAAc,CAAA;EAChH,MAAM,YAAY,IAAoC,KAAI;EAC1D,MAAM,oBAAoB,eAAe,MAAM,YAAY,gBAAgB,MAAK;AAEhF,iBAAe;GACb,SAAS,eAAe,MAAM,QAAQ;GACtC,eAAe,MAAM,SAAS;GAC9B,YAAY;GACZ,oBAAoB,qBAAqB,UAAU,MAAM;GACzD,SAAS;GACV,CAAA;;uBAIC,YAmDW,MAAA,SAAA,EAnDX,WAmDW;aAlDL;IAAJ,KAAI;IACH,OAAO;IACP,WAAS,MAAA,SAAQ,CAAC;MACX,MAAA,aAAY,EAAA;IACnB,eAAa,QAAA;IACb,iBAAe,SAAI;AAAa,aAAA,QAAM;SAAa,MAAA,KAAI,CAAC,MAAM,YAAY,YAAW,CAAa,OAAM,YAAY,YAAY,KAAI;SAA+B,OAAI;;;IAc7J,SAAO,cAKD,CAJf,YAIe,MAAA,aAAA,EAAA,EAJA,MAAM,QAAA,MAAI,EAAA;4BAGJ,CAFnB,YAEmB,MAAA,iBAAA,EAAA,eAAA,mBAFO,MAAA,SAAQ,CAAA,CAAA,EAAA;6BACyB,CAAzD,WAAyD,KAAA,QAAA,WAAA;OAAlD,SAAS,QAAA;OAAU,QAAQ,QAAA;OAAS,MAAM,QAAA;;;;;;IAK5C,QAAM,cAqBT,CApBN,mBAoBM,OAAA,EApBA,OAAK,eAAA,GAAK,UAAS,SAAA,EAAA,EAAA,CACP,MAAM,SACpB,WAAuE,KAAA,QAAA,UAAA;;KAAlD,SAAS,QAAA;KAAU,QAAQ,QAAA;KAAS,MAAM,QAAA;uBAEjE,mBAeW,UAAA,EAAA,KAAA,GAAA,EAAA,CAdT,YAKW,MAAA,SAAA,EALX,WACU,MAIC,aAJW,CAAC,mBAAiB,EACrC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,QAAM,GAAA,CAAA,EAAA;4BAEuB,CAAA,gBAAA,gBAAlC,MAAA,aAAY,CAAC,cAAU,KAAA,EAAA,EAAA,CAAA,CAAA;;YAE5B,YAOW,MAAA,SAAA,EAPX,WAOW,EANT,MAAK,WAAS,EACN,MAAA,aAAY,CAAC,eAAa;KACjC,SAAS,MAAA,mBAAkB;KAC3B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,SAAO;;4BAEkB,CAAA,gBAAA,gBAA9B,MAAA,aAAY,CAAC,UAAM,KAAA,EAAA,EAAA,CAAA,CAAA;;;;OA9Bd,MAAM,SAAA;UAAS;sBAC0C,CAAvE,WAAuE,KAAA,QAAA,UAAA;KAAlD,SAAS,QAAA;KAAU,QAAQ,QAAA;KAAS,MAAM,QAAA"}
1
+ {"version":3,"file":"drawer-content.mjs","names":[],"sources":["../../src/form-drawer/drawer-content.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@formily/core'\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { FormDrawerSlots, IFormDrawerProps } from './types'\nimport { isFn } from '@formily/shared'\nimport { FormProvider } from '@silver-formily/vue'\nimport { ElButton, ElConfigProvider, ElDrawer } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, ref } from 'vue'\nimport { loadElConfigProvider, stylePrefix, useDebonceSubmitting } from '../__builtins__'\nimport { useEnterSubmit } from '../__builtins__/shared/use-enter-submit'\nimport { resolveDrawerElement } from '../shared/overlay-elements'\n\ndefineOptions({\n name: 'FormDrawerContent',\n})\n\nconst props = defineProps({\n drawerProps: {\n type: Object as PropType<IFormDrawerProps>,\n required: true,\n },\n visible: {\n type: Boolean,\n required: true,\n },\n form: {\n type: Object as PropType<Form>,\n required: true,\n },\n resolve: {\n type: Function as PropType<(type?: string) => void>,\n required: true,\n },\n reject: {\n type: Function as PropType<() => void>,\n required: true,\n },\n})\nconst slots = defineSlots<FormDrawerSlots>()\nconst prefixCls = `${stylePrefix}-form-drawer`\nconst elConfig = loadElConfigProvider()\n\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\nconst _drawerProps = omit(props.drawerProps, ['modelValue', 'onUpdate:modelValue', 'beforeClose', 'enterSubmit'])\nconst drawerRef = ref<ComponentPublicInstance | null>(null)\nconst enableEnterSubmit = computed(() => props.drawerProps.enterSubmit !== false)\n\nuseEnterSubmit({\n visible: computed(() => props.visible),\n resolve: () => props.resolve(),\n submitting: internalSubmitting,\n getContainer: () => resolveDrawerElement(drawerRef.value),\n enabled: enableEnterSubmit,\n})\n</script>\n\n<template>\n <ElDrawer\n ref=\"drawerRef\"\n :class=\"prefixCls\"\n :z-index=\"elConfig.zIndex\"\n v-bind=\"_drawerProps\"\n :model-value=\"visible\"\n :before-close=\"(done) => {\n reject()\n if (isFn(props.drawerProps.beforeClose)) {\n props.drawerProps.beforeClose(done)\n }\n else {\n done()\n }\n }\"\n >\n <template #header>\n <slot v-if=\"slots.header\" name=\"header\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </template>\n\n <template #default>\n <FormProvider :form=\"form\">\n <ElConfigProvider v-bind=\"elConfig\">\n <slot :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </ElConfigProvider>\n </FormProvider>\n </template>\n\n <template #footer>\n <div :class=\"`${prefixCls}-footer`\">\n <template v-if=\"slots.footer\">\n <slot name=\"footer\" :resolve=\"resolve\" :reject=\"reject\" :form=\"form\" />\n </template>\n <template v-else>\n <ElButton\n v-bind=\"_drawerProps.cancelButtonProps\"\n @click=\"reject()\"\n >\n {{ _drawerProps.cancelText || '取消' }}\n </ElButton>\n <ElButton\n type=\"primary\"\n v-bind=\"_drawerProps.okButtonProps\"\n :loading=\"internalSubmitting\"\n @click=\"resolve()\"\n >\n {{ _drawerProps.okText || '确定' }}\n </ElButton>\n </template>\n </div>\n </template>\n </ElDrawer>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,QAAQ;EAsBd,MAAM,QAAQ,UAAA;EACd,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,WAAW,sBAAqB;EAEtC,MAAM,EAAE,uBAAuB,qBAAqB,MAAM,KAAI;EAC9D,MAAM,eAAe,KAAK,MAAM,aAAa;GAAC;GAAc;GAAuB;GAAe;GAAc,CAAA;EAChH,MAAM,YAAY,IAAoC,KAAI;EAC1D,MAAM,oBAAoB,eAAe,MAAM,YAAY,gBAAgB,MAAK;AAEhF,iBAAe;GACb,SAAS,eAAe,MAAM,QAAQ;GACtC,eAAe,MAAM,SAAS;GAC9B,YAAY;GACZ,oBAAoB,qBAAqB,UAAU,MAAM;GACzD,SAAS;GACV,CAAA;;uBAIC,YAmDW,MAAA,SAAA,EAnDX,WAmDW;aAlDL;IAAJ,KAAI;IACH,OAAO;IACP,WAAS,MAAA,SAAQ,CAAC;MACX,MAAA,aAAY,EAAA;IACnB,eAAa,QAAA;IACb,iBAAe,SAAI;AAAa,aAAA,QAAM;SAAa,MAAA,KAAI,CAAC,MAAM,YAAY,YAAW,CAAa,OAAM,YAAY,YAAY,KAAI;SAA+B,OAAI;;;IAU7J,QAAM,cAC4E,CAA/E,MAAM,SAAlB,WAA2F,KAAA,QAAA,UAAA;;KAAlD,SAAS,QAAA;KAAU,QAAQ,QAAA;KAAS,MAAM,QAAA;;IAG1E,SAAO,cAKD,CAJf,YAIe,MAAA,aAAA,EAAA,EAJA,MAAM,QAAA,MAAI,EAAA;4BAGJ,CAFnB,YAEmB,MAAA,iBAAA,EAAA,eAAA,mBAFO,MAAA,SAAQ,CAAA,CAAA,EAAA;6BACyB,CAAzD,WAAyD,KAAA,QAAA,WAAA;OAAlD,SAAS,QAAA;OAAU,QAAQ,QAAA;OAAS,MAAM,QAAA;;;;;;IAK5C,QAAM,cAqBT,CApBN,mBAoBM,OAAA,EApBA,OAAK,eAAA,GAAK,UAAS,SAAA,EAAA,EAAA,CACP,MAAM,SACpB,WAAuE,KAAA,QAAA,UAAA;;KAAlD,SAAS,QAAA;KAAU,QAAQ,QAAA;KAAS,MAAM,QAAA;uBAEjE,mBAeW,UAAA,EAAA,KAAA,GAAA,EAAA,CAdT,YAKW,MAAA,SAAA,EALX,WACU,MAIC,aAJW,CAAC,mBAAiB,EACrC,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,QAAM,GAAA,CAAA,EAAA;4BAEuB,CAAA,gBAAA,gBAAlC,MAAA,aAAY,CAAC,cAAU,KAAA,EAAA,EAAA,CAAA,CAAA;;YAE5B,YAOW,MAAA,SAAA,EAPX,WAOW,EANT,MAAK,WAAS,EACN,MAAA,aAAY,CAAC,eAAa;KACjC,SAAS,MAAA,mBAAkB;KAC3B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,SAAO;;4BAEkB,CAAA,gBAAA,gBAA9B,MAAA,aAAY,CAAC,UAAM,KAAA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,6 +1,5 @@
1
1
  import { getTransitionDuration, loading } from "../__builtins__/shared/loading.mjs";
2
2
  import { isVueOptions } from "../__builtins__/shared/utils.mjs";
3
- import { onUrlChange } from "../shared/url-change-listener.mjs";
4
3
  import _sfc_main from "./drawer-content.mjs";
5
4
  import { observer } from "@silver-formily/reactive-vue";
6
5
  import { createApp, h, ref } from "vue";
@@ -16,7 +15,6 @@ function FormDrawer(title, content, dynamicMiddlewareNames) {
16
15
  promise: null,
17
16
  app: null,
18
17
  instance: null,
19
- stopUrlChangeListener: void 0,
20
18
  settled: false,
21
19
  openMiddlewares: [],
22
20
  confirmMiddlewares: [],
@@ -35,11 +33,7 @@ function FormDrawer(title, content, dynamicMiddlewareNames) {
35
33
  env[`${_middlewareName}Middlewares`] = [];
36
34
  }
37
35
  document.body.append(env.root);
38
- const rawProps = isStr(title) ? { title } : title;
39
- const props = {
40
- ...rawProps,
41
- closeOnUrlChange: rawProps.closeOnUrlChange ?? true
42
- };
36
+ const props = isStr(title) ? { title } : title;
43
37
  function render(visible, resolve, reject) {
44
38
  const _content = isVueOptions(content) ? { default: () => h(content) } : isFn(content) ? { default: content } : content;
45
39
  if (!env.instance) {
@@ -59,8 +53,6 @@ function FormDrawer(title, content, dynamicMiddlewareNames) {
59
53
  env.instance.visible = visible;
60
54
  }
61
55
  function disposeDrawer() {
62
- env.stopUrlChangeListener?.();
63
- env.stopUrlChangeListener = void 0;
64
56
  const animationDuration = getTransitionDuration();
65
57
  setTimeout(() => {
66
58
  env.app?.unmount?.();
@@ -73,12 +65,26 @@ function FormDrawer(title, content, dynamicMiddlewareNames) {
73
65
  async function rejectDrawer(reject) {
74
66
  if (env.settled) return;
75
67
  env.settled = true;
76
- env.stopUrlChangeListener?.();
77
- env.stopUrlChangeListener = void 0;
78
- await loading(props.loadingText, () => applyMiddleware(env.form, env.cancelMiddlewares));
79
- render(false);
80
- disposeDrawer();
81
- reject?.();
68
+ try {
69
+ await loading(props.loadingText, () => applyMiddleware(env.form, env.cancelMiddlewares));
70
+ render(false);
71
+ disposeDrawer();
72
+ reject?.();
73
+ } catch {
74
+ env.settled = false;
75
+ }
76
+ }
77
+ async function submitDrawer(type, resolve, close) {
78
+ if (env.settled) return;
79
+ env.settled = true;
80
+ try {
81
+ await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares));
82
+ resolve(toJS(env.form.values));
83
+ close();
84
+ disposeDrawer();
85
+ } catch {
86
+ env.settled = false;
87
+ }
82
88
  }
83
89
  const formDrawer = {
84
90
  forOpen: (middleware) => {
@@ -102,19 +108,9 @@ function FormDrawer(title, content, dynamicMiddlewareNames) {
102
108
  env.form = env.form || createForm(resPayload);
103
109
  render(true, (type) => {
104
110
  env.form.submit(async () => {
105
- if (env.settled) return;
106
- env.settled = true;
107
- env.stopUrlChangeListener?.();
108
- env.stopUrlChangeListener = void 0;
109
- await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares));
110
- res(toJS(env.form.values));
111
- formDrawer.close();
112
- disposeDrawer();
111
+ await submitDrawer(type, res, formDrawer.close);
113
112
  }).catch(() => void 0);
114
113
  }, () => rejectDrawer(() => rej(/* @__PURE__ */ new Error("cancel"))));
115
- if (props.closeOnUrlChange) env.stopUrlChangeListener = onUrlChange(() => {
116
- rejectDrawer(() => rej(/* @__PURE__ */ new Error("cancel")));
117
- });
118
114
  }).catch(
119
115
  /* istanbul ignore next -- @preserve */
120
116
  (error) => rej(error)
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["DrawerContent"],"sources":["../../src/form-drawer/index.ts"],"sourcesContent":["import type { Form, IFormProps } from '@formily/core'\nimport type { IMiddleware } from '@formily/shared'\nimport type { App, Component } from 'vue'\nimport type { FormDrawerSlotContent, IFormDrawer, IFormDrawerProps } from './types'\nimport { createForm } from '@formily/core'\nimport { toJS } from '@formily/reactive'\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\nimport { observer } from '@silver-formily/reactive-vue'\nimport { camelCase } from 'lodash-es'\nimport { createApp, h, ref } from 'vue'\nimport { getTransitionDuration, isVueOptions, loading } from '../__builtins__'\nimport { onUrlChange } from '../shared/url-change-listener'\nimport DrawerContent from './drawer-content.vue'\n\nexport function FormDrawer<\n T extends object = any,\n const DynamicMiddlewareNames extends readonly string[] = [],\n>(\n title: IFormDrawerProps | string,\n content?: Component | FormDrawerSlotContent<T, DynamicMiddlewareNames[number]>,\n dynamicMiddlewareNames?: DynamicMiddlewareNames,\n): IFormDrawer<T, DynamicMiddlewareNames[number]> {\n const env: {\n root?: HTMLElement\n form?: Form<T>\n promise?: Promise<any>\n instance?: any\n app?: App<Element>\n stopUrlChangeListener?: () => void\n settled?: boolean\n openMiddlewares: IMiddleware<IFormProps<T>>[]\n confirmMiddlewares: IMiddleware<Form<T>>[]\n cancelMiddlewares: IMiddleware<Form<T>>[]\n [key: `${string}Middlewares`]: IMiddleware<Form<T>>[] | IMiddleware<IFormProps<T>>[] | undefined\n } = {\n root: document.createElement('div'),\n form: null,\n promise: null,\n app: null,\n instance: null,\n stopUrlChangeListener: undefined,\n settled: false,\n openMiddlewares: [],\n confirmMiddlewares: [],\n cancelMiddlewares: [],\n }\n\n if (isArr(dynamicMiddlewareNames)) {\n for (const middlewareName of dynamicMiddlewareNames) {\n /* istanbul ignore if -- @preserve */\n if (!isStr(middlewareName))\n return\n const _middlewareName = camelCase(middlewareName)\n /* istanbul ignore if -- @preserve */\n if (['open', 'cancel', 'confirm'].includes(_middlewareName)) {\n throw new Error(`for${pascalCase(_middlewareName)} is presved`)\n }\n (env[`${_middlewareName}Middlewares`] = [])\n }\n }\n\n document.body.append(env.root)\n\n const rawProps = (isStr(title) ? { title } : title) as IFormDrawerProps\n const props = {\n ...rawProps,\n closeOnUrlChange: rawProps.closeOnUrlChange ?? true,\n } as IFormDrawerProps\n\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\n const _content = isVueOptions(content)\n ? { default: () => h(content) }\n : isFn(content)\n ? { default: content }\n : content\n if (!env.instance) {\n const ComponentConstructor = observer({\n setup(_, { expose }) {\n const visible = ref(false)\n expose({\n visible,\n })\n return () => h(DrawerContent, {\n drawerProps: props,\n form: env.form,\n resolve,\n reject,\n visible: visible.value,\n }, _content)\n },\n })\n env.app = createApp(ComponentConstructor)\n env.instance = env.app.mount(env.root)\n }\n env.instance.visible = visible\n }\n\n function disposeDrawer() {\n env.stopUrlChangeListener?.()\n env.stopUrlChangeListener = undefined\n const animationDuration = getTransitionDuration()\n setTimeout(() => {\n env.app?.unmount?.()\n env.app = null\n env.instance = null\n env.root?.remove()\n env.root = undefined\n }, animationDuration)\n }\n\n async function rejectDrawer(reject?: () => any) {\n if (env.settled)\n return\n\n env.settled = true\n env.stopUrlChangeListener?.()\n env.stopUrlChangeListener = undefined\n await loading(props.loadingText, () =>\n applyMiddleware(env.form, env.cancelMiddlewares))\n render(false)\n disposeDrawer()\n reject?.()\n }\n\n const formDrawer = {\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\n isFn(middleware) && env.openMiddlewares.push(middleware)\n return formDrawer\n },\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\n return formDrawer\n },\n forCancel: (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\n return formDrawer\n },\n open: (payload: IFormProps<T>) => {\n /* istanbul ignore if -- @preserve */\n if (env.promise)\n return env.promise\n\n env.settled = false\n env.promise = new Promise((res, rej) => {\n loading(props.loadingText, () => applyMiddleware(payload, env.openMiddlewares))\n .then((resPayload) => {\n env.form = env.form || createForm(resPayload as IFormProps<T>)\n render(true, (type: string) => {\n env.form.submit(async () => {\n if (env.settled)\n return\n\n env.settled = true\n env.stopUrlChangeListener?.()\n env.stopUrlChangeListener = undefined\n await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares))\n res(toJS(env.form.values))\n formDrawer.close()\n disposeDrawer()\n }).catch(() => undefined)\n }, () => rejectDrawer(() => rej(new Error('cancel'))))\n if (props.closeOnUrlChange) {\n env.stopUrlChangeListener = onUrlChange(() => {\n void rejectDrawer(() => rej(new Error('cancel')))\n })\n }\n })\n .catch(/* istanbul ignore next -- @preserve */ error => rej(error))\n })\n return env.promise\n },\n close: () => {\n /* istanbul ignore if -- @preserve */\n if (!env.root)\n return\n render(false)\n },\n }\n\n if (isArr(dynamicMiddlewareNames)) {\n for (const middlewareName of dynamicMiddlewareNames) {\n const _middlewareName = camelCase(middlewareName)\n formDrawer[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\n return formDrawer\n }\n }\n }\n\n return formDrawer as IFormDrawer<T, DynamicMiddlewareNames[number]>\n}\n\nexport default FormDrawer\n"],"mappings":";;;;;;;;;;;AAcA,SAAgB,WAId,OACA,SACA,wBACgD;CAChD,MAAM,MAYF;EACF,MAAM,SAAS,cAAc,MAAM;EACnC,MAAM;EACN,SAAS;EACT,KAAK;EACL,UAAU;EACV,uBAAuB,KAAA;EACvB,SAAS;EACT,iBAAiB,EAAE;EACnB,oBAAoB,EAAE;EACtB,mBAAmB,EAAE;EACtB;AAED,KAAI,MAAM,uBAAuB,CAC/B,MAAK,MAAM,kBAAkB,wBAAwB;;AAEnD,MAAI,CAAC,MAAM,eAAe,CACxB;EACF,MAAM,kBAAkB,UAAU,eAAe;;AAEjD,MAAI;GAAC;GAAQ;GAAU;GAAU,CAAC,SAAS,gBAAgB,CACzD,OAAM,IAAI,MAAM,MAAM,WAAW,gBAAgB,CAAC,aAAa;AAEhE,MAAI,GAAG,gBAAgB,gBAAgB,EAAE;;AAI9C,UAAS,KAAK,OAAO,IAAI,KAAK;CAE9B,MAAM,WAAY,MAAM,MAAM,GAAG,EAAE,OAAO,GAAG;CAC7C,MAAM,QAAQ;EACZ,GAAG;EACH,kBAAkB,SAAS,oBAAoB;EAChD;CAED,SAAS,OAAO,SAAkB,SAAkC,QAAoB;EACtF,MAAM,WAAW,aAAa,QAAQ,GAClC,EAAE,eAAe,EAAE,QAAQ,EAAE,GAC7B,KAAK,QAAQ,GACX,EAAE,SAAS,SAAS,GACpB;AACN,MAAI,CAAC,IAAI,UAAU;AAgBjB,OAAI,MAAM,UAfmB,SAAS,EACpC,MAAM,GAAG,EAAE,UAAU;IACnB,MAAM,UAAU,IAAI,MAAM;AAC1B,WAAO,EACL,SACD,CAAC;AACF,iBAAa,EAAEA,WAAe;KAC5B,aAAa;KACb,MAAM,IAAI;KACV;KACA;KACA,SAAS,QAAQ;KAClB,EAAE,SAAS;MAEf,CAAC,CACuC;AACzC,OAAI,WAAW,IAAI,IAAI,MAAM,IAAI,KAAK;;AAExC,MAAI,SAAS,UAAU;;CAGzB,SAAS,gBAAgB;AACvB,MAAI,yBAAyB;AAC7B,MAAI,wBAAwB,KAAA;EAC5B,MAAM,oBAAoB,uBAAuB;AACjD,mBAAiB;AACf,OAAI,KAAK,WAAW;AACpB,OAAI,MAAM;AACV,OAAI,WAAW;AACf,OAAI,MAAM,QAAQ;AAClB,OAAI,OAAO,KAAA;KACV,kBAAkB;;CAGvB,eAAe,aAAa,QAAoB;AAC9C,MAAI,IAAI,QACN;AAEF,MAAI,UAAU;AACd,MAAI,yBAAyB;AAC7B,MAAI,wBAAwB,KAAA;AAC5B,QAAM,QAAQ,MAAM,mBAClB,gBAAgB,IAAI,MAAM,IAAI,kBAAkB,CAAC;AACnD,SAAO,MAAM;AACb,iBAAe;AACf,YAAU;;CAGZ,MAAM,aAAa;EACjB,UAAU,eAA2C;AACnD,QAAK,WAAW,IAAI,IAAI,gBAAgB,KAAK,WAAW;AACxD,UAAO;;EAET,aAAa,eAAqC;AAChD,QAAK,WAAW,IAAI,IAAI,mBAAmB,KAAK,WAAW;AAC3D,UAAO;;EAET,YAAY,eAAqC;AAC/C,QAAK,WAAW,IAAI,IAAI,kBAAkB,KAAK,WAAW;AAC1D,UAAO;;EAET,OAAO,YAA2B;;AAEhC,OAAI,IAAI,QACN,QAAO,IAAI;AAEb,OAAI,UAAU;AACd,OAAI,UAAU,IAAI,SAAS,KAAK,QAAQ;AACtC,YAAQ,MAAM,mBAAmB,gBAAgB,SAAS,IAAI,gBAAgB,CAAC,CAC5E,MAAM,eAAe;AACpB,SAAI,OAAO,IAAI,QAAQ,WAAW,WAA4B;AAC9D,YAAO,OAAO,SAAiB;AAC7B,UAAI,KAAK,OAAO,YAAY;AAC1B,WAAI,IAAI,QACN;AAEF,WAAI,UAAU;AACd,WAAI,yBAAyB;AAC7B,WAAI,wBAAwB,KAAA;AAC5B,cAAO,QAAQ,KAAK,GAAG,gBAAgB,IAAI,MAAM,IAAI,GAAG,KAAK,cAAc,GAAG,gBAAgB,IAAI,MAAM,IAAI,mBAAmB;AAC/H,WAAI,KAAK,IAAI,KAAK,OAAO,CAAC;AAC1B,kBAAW,OAAO;AAClB,sBAAe;QACf,CAAC,YAAY,KAAA,EAAU;cAClB,mBAAmB,oBAAI,IAAI,MAAM,SAAS,CAAC,CAAC,CAAC;AACtD,SAAI,MAAM,iBACR,KAAI,wBAAwB,kBAAkB;AACvC,yBAAmB,oBAAI,IAAI,MAAM,SAAS,CAAC,CAAC;OACjD;MAEJ,CACD;;MAA8C,UAAS,IAAI,MAAM;KAAC;KACrE;AACF,UAAO,IAAI;;EAEb,aAAa;;AAEX,OAAI,CAAC,IAAI,KACP;AACF,UAAO,MAAM;;EAEhB;AAED,KAAI,MAAM,uBAAuB,CAC/B,MAAK,MAAM,kBAAkB,wBAAwB;EACnD,MAAM,kBAAkB,UAAU,eAAe;AACjD,aAAW,MAAM,WAAW,gBAAgB,OAAO,eAAqC;AACtF,QAAK,WAAW,IAAI,IAAI,GAAG,gBAAgB,cAAc,KAAK,WAAW;AACzE,UAAO;;;AAKb,QAAO"}
1
+ {"version":3,"file":"index.mjs","names":["DrawerContent"],"sources":["../../src/form-drawer/index.ts"],"sourcesContent":["import type { Form, IFormProps } from '@formily/core'\nimport type { IMiddleware } from '@formily/shared'\nimport type { App, Component } from 'vue'\nimport type { FormDrawerSlotContent, IFormDrawer, IFormDrawerProps } from './types'\nimport { createForm } from '@formily/core'\nimport { toJS } from '@formily/reactive'\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@formily/shared'\nimport { observer } from '@silver-formily/reactive-vue'\nimport { camelCase } from 'lodash-es'\nimport { createApp, h, ref } from 'vue'\nimport { getTransitionDuration, isVueOptions, loading } from '../__builtins__'\nimport DrawerContent from './drawer-content.vue'\n\nexport function FormDrawer<\n T extends object = any,\n const DynamicMiddlewareNames extends readonly string[] = [],\n>(\n title: IFormDrawerProps | string,\n content?: Component | FormDrawerSlotContent<T, DynamicMiddlewareNames[number]>,\n dynamicMiddlewareNames?: DynamicMiddlewareNames,\n): IFormDrawer<T, DynamicMiddlewareNames[number]> {\n const env: {\n root?: HTMLElement\n form?: Form<T>\n promise?: Promise<any>\n instance?: any\n app?: App<Element>\n settled?: boolean\n openMiddlewares: IMiddleware<IFormProps<T>>[]\n confirmMiddlewares: IMiddleware<Form<T>>[]\n cancelMiddlewares: IMiddleware<Form<T>>[]\n [key: `${string}Middlewares`]: IMiddleware<Form<T>>[] | IMiddleware<IFormProps<T>>[] | undefined\n } = {\n root: document.createElement('div'),\n form: null,\n promise: null,\n app: null,\n instance: null,\n settled: false,\n openMiddlewares: [],\n confirmMiddlewares: [],\n cancelMiddlewares: [],\n }\n\n if (isArr(dynamicMiddlewareNames)) {\n for (const middlewareName of dynamicMiddlewareNames) {\n /* istanbul ignore if -- @preserve */\n if (!isStr(middlewareName))\n return\n const _middlewareName = camelCase(middlewareName)\n /* istanbul ignore if -- @preserve */\n if (['open', 'cancel', 'confirm'].includes(_middlewareName)) {\n throw new Error(`for${pascalCase(_middlewareName)} is presved`)\n }\n (env[`${_middlewareName}Middlewares`] = [])\n }\n }\n\n document.body.append(env.root)\n\n const props = (isStr(title) ? { title } : title) as IFormDrawerProps\n\n function render(visible: boolean, resolve?: (type?: string) => any, reject?: () => any) {\n const _content = isVueOptions(content)\n ? { default: () => h(content) }\n : isFn(content)\n ? { default: content }\n : content\n if (!env.instance) {\n const ComponentConstructor = observer({\n setup(_, { expose }) {\n const visible = ref(false)\n expose({\n visible,\n })\n return () => h(DrawerContent, {\n drawerProps: props,\n form: env.form,\n resolve,\n reject,\n visible: visible.value,\n }, _content)\n },\n })\n env.app = createApp(ComponentConstructor)\n env.instance = env.app.mount(env.root)\n }\n env.instance.visible = visible\n }\n\n function disposeDrawer() {\n const animationDuration = getTransitionDuration()\n setTimeout(() => {\n env.app?.unmount?.()\n env.app = null\n env.instance = null\n env.root?.remove()\n env.root = undefined\n }, animationDuration)\n }\n\n async function rejectDrawer(reject?: () => any) {\n if (env.settled)\n return\n\n env.settled = true\n\n try {\n await loading(props.loadingText, () =>\n applyMiddleware(env.form, env.cancelMiddlewares))\n render(false)\n disposeDrawer()\n reject?.()\n }\n catch {\n env.settled = false\n }\n }\n\n async function submitDrawer(type: string | undefined, resolve: (payload: any) => void, close: () => void) {\n if (env.settled)\n return\n\n env.settled = true\n\n try {\n await (isValid(type) ? applyMiddleware(env.form, env[`${type}Middlewares`]) : applyMiddleware(env.form, env.confirmMiddlewares))\n resolve(toJS(env.form.values))\n close()\n disposeDrawer()\n }\n catch {\n env.settled = false\n }\n }\n\n const formDrawer = {\n forOpen: (middleware: IMiddleware<IFormProps<T>>) => {\n isFn(middleware) && env.openMiddlewares.push(middleware)\n return formDrawer\n },\n forConfirm: (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env.confirmMiddlewares.push(middleware)\n return formDrawer\n },\n forCancel: (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env.cancelMiddlewares.push(middleware)\n return formDrawer\n },\n open: (payload: IFormProps<T>) => {\n /* istanbul ignore if -- @preserve */\n if (env.promise)\n return env.promise\n\n env.settled = false\n env.promise = new Promise((res, rej) => {\n loading(props.loadingText, () => applyMiddleware(payload, env.openMiddlewares))\n .then((resPayload) => {\n env.form = env.form || createForm(resPayload as IFormProps<T>)\n render(true, (type: string) => {\n env.form.submit(async () => {\n await submitDrawer(type, res, formDrawer.close)\n }).catch(() => undefined)\n }, () => rejectDrawer(() => rej(new Error('cancel'))))\n })\n .catch(/* istanbul ignore next -- @preserve */ error => rej(error))\n })\n return env.promise\n },\n close: () => {\n /* istanbul ignore if -- @preserve */\n if (!env.root)\n return\n render(false)\n },\n }\n\n if (isArr(dynamicMiddlewareNames)) {\n for (const middlewareName of dynamicMiddlewareNames) {\n const _middlewareName = camelCase(middlewareName)\n formDrawer[`for${pascalCase(_middlewareName)}`] = (middleware: IMiddleware<Form<T>>) => {\n isFn(middleware) && env[`${_middlewareName}Middlewares`].push(middleware)\n return formDrawer\n }\n }\n }\n\n return formDrawer as IFormDrawer<T, DynamicMiddlewareNames[number]>\n}\n\nexport default FormDrawer\n"],"mappings":"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"}
@@ -11,7 +11,6 @@ type IFormDrawerProps = Partial<DrawerProps> & {
11
11
  okButtonProps?: ButtonProps;
12
12
  loadingText?: string;
13
13
  enterSubmit?: boolean;
14
- closeOnUrlChange?: boolean;
15
14
  };
16
15
  interface FormDrawerResolve {
17
16
  (type?: string): void;
@@ -1,8 +1,9 @@
1
- import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeStyle, openBlock, renderSlot } from "vue";
1
+ import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, renderSlot, unref, useAttrs } from "vue";
2
2
  //#region src/form-grid/form-grid-column.vue
3
3
  const _hoisted_1 = ["data-grid-span"];
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
5
5
  name: "FFormGridColumn",
6
+ inheritAttrs: false,
6
7
  __name: "form-grid-column",
7
8
  props: { gridSpan: {
8
9
  type: Number,
@@ -10,15 +11,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
10
11
  } },
11
12
  setup(__props) {
12
13
  const props = __props;
14
+ const attrs = useAttrs();
13
15
  const gridColumnStyle = computed(() => {
14
16
  if (props.gridSpan === -1) return {};
15
17
  return { gridColumn: `span ${props.gridSpan} / auto` };
16
18
  });
17
19
  return (_ctx, _cache) => {
18
- return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" @silver-formily/grid 会优先使用这个值,如果没有会自动生成 "), createElementVNode("div", {
20
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" @silver-formily/grid 会优先使用这个值,如果没有会自动生成 "), createElementVNode("div", mergeProps(unref(attrs), {
19
21
  "data-grid-span": props.gridSpan,
20
- style: normalizeStyle(gridColumnStyle.value)
21
- }, [renderSlot(_ctx.$slots, "default")], 12, _hoisted_1)], 2112);
22
+ style: gridColumnStyle.value
23
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1)], 2112);
22
24
  };
23
25
  }
24
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"form-grid-column.mjs","names":[],"sources":["../../src/form-grid/form-grid-column.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue'\n\ndefineOptions({\n name: 'FFormGridColumn',\n})\n\nconst props = defineProps({\n gridSpan: {\n type: Number,\n default: 1,\n },\n})\n\nconst gridColumnStyle = computed(() => {\n if (props.gridSpan === -1) {\n // gridSpan=-1 means \"fill remaining columns in current row\".\n // Leave gridColumn unset so @silver-formily/grid can manage it dynamically.\n return {}\n }\n return {\n gridColumn: `span ${props.gridSpan} / auto`,\n }\n})\n</script>\n\n<template>\n <!-- @silver-formily/grid 会优先使用这个值,如果没有会自动生成 -->\n <div :data-grid-span=\"props.gridSpan\" :style=\"gridColumnStyle\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;EAOA,MAAM,QAAQ;EAOd,MAAM,kBAAkB,eAAe;AACrC,OAAI,MAAM,aAAa,GAGrB,QAAO,EAAC;AAEV,UAAO,EACL,YAAY,QAAQ,MAAM,SAAS,UACrC;IACD;;2DAIC,mBAAA,4CAAgD,EAChD,mBAEM,OAAA;IAFA,kBAAgB,MAAM;IAAW,OAAK,eAAE,gBAAA,MAAe;OAC3D,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA,CAAA,EAAA,KAAA"}
1
+ {"version":3,"file":"form-grid-column.mjs","names":[],"sources":["../../src/form-grid/form-grid-column.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, useAttrs } from 'vue'\n\ndefineOptions({\n name: 'FFormGridColumn',\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n gridSpan: {\n type: Number,\n default: 1,\n },\n})\n\nconst attrs = useAttrs()\n\nconst gridColumnStyle = computed(() => {\n if (props.gridSpan === -1) {\n // gridSpan=-1 means \"fill remaining columns in current row\".\n // Leave gridColumn unset so @silver-formily/grid can manage it dynamically.\n return {}\n }\n return {\n gridColumn: `span ${props.gridSpan} / auto`,\n }\n})\n</script>\n\n<template>\n <!-- @silver-formily/grid 会优先使用这个值,如果没有会自动生成 -->\n <div v-bind=\"attrs\" :data-grid-span=\"props.gridSpan\" :style=\"gridColumnStyle\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;EAQA,MAAM,QAAQ;EAOd,MAAM,QAAQ,UAAS;EAEvB,MAAM,kBAAkB,eAAe;AACrC,OAAI,MAAM,aAAa,GAGrB,QAAO,EAAC;AAEV,UAAO,EACL,YAAY,QAAQ,MAAM,SAAS,UACrC;IACD;;2DAIC,mBAAA,4CAAgD,EAChD,mBAEM,OAFN,WAAa,MAEP,MAFY,EAAA;IAAG,kBAAgB,MAAM;IAAW,OAAO,gBAAA;QAC3D,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA,CAAA,EAAA,KAAA"}
@@ -7,8 +7,8 @@ type __VLS_Slots = {} & {
7
7
  default?: (props: typeof __VLS_11) => any;
8
8
  };
9
9
  declare const __VLS_base: _$vue.DefineComponent<IFormLayoutProps, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<IFormLayoutProps> & Readonly<{}>, {
10
- size: "small" | "default" | "large";
11
10
  layout: "vertical" | "horizontal" | "inline" | ("vertical" | "horizontal" | "inline")[];
11
+ size: "small" | "default" | "large";
12
12
  tag: string;
13
13
  colon: boolean;
14
14
  labelWrap: boolean;
@@ -19,10 +19,6 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
19
19
  size: {
20
20
  type: _$vue.PropType<"" | "default" | "small" | "large">;
21
21
  };
22
- readonly: {
23
- type: _$vue.PropType<boolean>;
24
- default: boolean;
25
- };
26
22
  placeholder: {
27
23
  type: _$vue.PropType<string>;
28
24
  };
@@ -34,6 +30,10 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
34
30
  type: _$vue.PropType<number | "min" | "max">;
35
31
  default: null;
36
32
  };
33
+ readonly: {
34
+ type: _$vue.PropType<boolean>;
35
+ default: boolean;
36
+ };
37
37
  ariaLabel: {
38
38
  type: _$vue.PropType<string>;
39
39
  };
@@ -41,6 +41,10 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
41
41
  type: _$vue.PropType<string>;
42
42
  default: undefined;
43
43
  };
44
+ inputmode: {
45
+ type: _$vue.PropType<"search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal">;
46
+ default: undefined;
47
+ };
44
48
  min: {
45
49
  type: _$vue.PropType<number>;
46
50
  default: number;
@@ -49,10 +53,6 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
49
53
  type: _$vue.PropType<number>;
50
54
  default: number;
51
55
  };
52
- inputmode: {
53
- type: _$vue.PropType<"search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal">;
54
- default: undefined;
55
- };
56
56
  align: {
57
57
  type: _$vue.PropType<"right" | "left" | "center">;
58
58
  default: string;
@@ -129,10 +129,6 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
129
129
  size: {
130
130
  type: _$vue.PropType<"" | "default" | "small" | "large">;
131
131
  };
132
- readonly: {
133
- type: _$vue.PropType<boolean>;
134
- default: boolean;
135
- };
136
132
  placeholder: {
137
133
  type: _$vue.PropType<string>;
138
134
  };
@@ -144,6 +140,10 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
144
140
  type: _$vue.PropType<number | "min" | "max">;
145
141
  default: null;
146
142
  };
143
+ readonly: {
144
+ type: _$vue.PropType<boolean>;
145
+ default: boolean;
146
+ };
147
147
  ariaLabel: {
148
148
  type: _$vue.PropType<string>;
149
149
  };
@@ -151,6 +151,10 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
151
151
  type: _$vue.PropType<string>;
152
152
  default: undefined;
153
153
  };
154
+ inputmode: {
155
+ type: _$vue.PropType<"search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal">;
156
+ default: undefined;
157
+ };
154
158
  min: {
155
159
  type: _$vue.PropType<number>;
156
160
  default: number;
@@ -159,10 +163,6 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
159
163
  type: _$vue.PropType<number>;
160
164
  default: number;
161
165
  };
162
- inputmode: {
163
- type: _$vue.PropType<"search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal">;
164
- default: undefined;
165
- };
166
166
  align: {
167
167
  type: _$vue.PropType<"right" | "left" | "center">;
168
168
  default: string;
@@ -230,10 +230,6 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
230
230
  size: {
231
231
  type: _$vue.PropType<"" | "default" | "small" | "large">;
232
232
  };
233
- readonly: {
234
- type: _$vue.PropType<boolean>;
235
- default: boolean;
236
- };
237
233
  placeholder: {
238
234
  type: _$vue.PropType<string>;
239
235
  };
@@ -245,6 +241,10 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
245
241
  type: _$vue.PropType<number | "min" | "max">;
246
242
  default: null;
247
243
  };
244
+ readonly: {
245
+ type: _$vue.PropType<boolean>;
246
+ default: boolean;
247
+ };
248
248
  ariaLabel: {
249
249
  type: _$vue.PropType<string>;
250
250
  };
@@ -252,6 +252,10 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
252
252
  type: _$vue.PropType<string>;
253
253
  default: undefined;
254
254
  };
255
+ inputmode: {
256
+ type: _$vue.PropType<"search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal">;
257
+ default: undefined;
258
+ };
255
259
  min: {
256
260
  type: _$vue.PropType<number>;
257
261
  default: number;
@@ -260,10 +264,6 @@ declare const InputNumber: _$element_plus_es_utils_index_mjs0.SFCWithInstall<{
260
264
  type: _$vue.PropType<number>;
261
265
  default: number;
262
266
  };
263
- inputmode: {
264
- type: _$vue.PropType<"search" | "text" | "email" | "tel" | "url" | "none" | "numeric" | "decimal">;
265
- default: undefined;
266
- };
267
267
  align: {
268
268
  type: _$vue.PropType<"right" | "left" | "center">;
269
269
  default: string;
@@ -2,12 +2,14 @@ import { useCleanAttrs } from "../__builtins__/shared/utils.mjs";
2
2
  import { stylePrefix } from "../__builtins__/configs/index.mjs";
3
3
  import { usePreviewConfig } from "./utils.mjs";
4
4
  import { ElSpace, ElTag, ElText } from "element-plus";
5
+ import { formilyComputed } from "@silver-formily/reactive-vue";
5
6
  import { Fragment, createBlock, createElementBlock, createTextVNode, defineComponent, mergeProps, normalizeClass, normalizeProps, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
6
7
  import { useField } from "@silver-formily/vue";
7
8
  import { isValid } from "@formily/shared";
8
9
  //#region src/preview-text/select.vue
9
10
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
11
  name: "FPreviewTextSelect",
12
+ inheritAttrs: false,
11
13
  __name: "select",
12
14
  props: { modelValue: {} },
13
15
  setup(__props) {
@@ -15,19 +17,22 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
15
17
  const prefixCls = `${stylePrefix}-preview-text`;
16
18
  const fieldRef = useField();
17
19
  const { props: attrs } = useCleanAttrs();
18
- const dataSource = fieldRef.value.dataSource ?? [];
19
20
  const { spaceProps, textProps, tagProps, placeholder } = usePreviewConfig();
21
+ const dataSource = formilyComputed(() => fieldRef.value?.dataSource ?? []);
22
+ function getOptionLabel(value) {
23
+ return dataSource.value.find((i) => i.value === value)?.label ?? value;
24
+ }
20
25
  return (_ctx, _cache) => {
21
26
  return openBlock(), createElementBlock("div", { class: normalizeClass(prefixCls) }, [!unref(isValid)(props.modelValue) ? (openBlock(), createBlock(unref(ElText), normalizeProps(mergeProps({ key: 0 }, unref(textProps))), {
22
27
  default: withCtx(() => [createTextVNode(toDisplayString(unref(placeholder)), 1)]),
23
28
  _: 1
24
29
  }, 16)) : !unref(attrs).multiple ? (openBlock(), createBlock(unref(ElText), normalizeProps(mergeProps({ key: 1 }, unref(textProps))), {
25
- default: withCtx(() => [createTextVNode(toDisplayString(unref(dataSource).find((i) => i.value === props.modelValue)?.label ?? props.modelValue), 1)]),
30
+ default: withCtx(() => [createTextVNode(toDisplayString(getOptionLabel(props.modelValue)), 1)]),
26
31
  _: 1
27
32
  }, 16)) : (openBlock(), createBlock(unref(ElSpace), normalizeProps(mergeProps({ key: 2 }, unref(spaceProps))), {
28
33
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(props.modelValue, (item, key) => {
29
34
  return openBlock(), createBlock(unref(ElTag), mergeProps({ key }, { ref_for: true }, unref(tagProps)), {
30
- default: withCtx(() => [createTextVNode(toDisplayString(unref(dataSource).find((i) => i.value === item)?.label ?? item), 1)]),
35
+ default: withCtx(() => [createTextVNode(toDisplayString(getOptionLabel(item)), 1)]),
31
36
  _: 2
32
37
  }, 1040);
33
38
  }), 128))]),
@@ -1 +1 @@
1
- {"version":3,"file":"select.mjs","names":[],"sources":["../../src/preview-text/select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Field } from '@formily/core'\nimport { isValid } from '@formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport { ElSpace, ElTag, ElText } from 'element-plus'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { usePreviewConfig } from './utils'\n\ndefineOptions({\n name: 'FPreviewTextSelect',\n})\n\nconst props = defineProps<{\n modelValue?: any\n}>()\n\nconst prefixCls = `${stylePrefix}-preview-text`\n\nconst fieldRef = useField<Field>()\nconst { props: attrs } = useCleanAttrs()\nconst dataSource = fieldRef.value.dataSource ?? []\nconst { spaceProps, textProps, tagProps, placeholder } = usePreviewConfig()\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <template v-if=\"!isValid(props.modelValue)\">\n <ElText v-bind=\"textProps\">\n {{ placeholder }}\n </ElText>\n </template>\n <template v-else-if=\"!attrs.multiple\">\n <ElText v-bind=\"textProps\">\n {{ dataSource.find(i => i.value === props.modelValue)?.label ?? props.modelValue }}\n </ElText>\n </template>\n <ElSpace v-else v-bind=\"spaceProps\">\n <ElTag v-for=\"(item, key) of props.modelValue\" :key=\"key\" v-bind=\"tagProps\">\n {{ dataSource.find(i => i.value === item)?.label ?? item }}\n </ElTag>\n </ElSpace>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;EAYA,MAAM,QAAQ;EAId,MAAM,YAAY,GAAG,YAAY;EAEjC,MAAM,WAAW,UAAgB;EACjC,MAAM,EAAE,OAAO,UAAU,eAAc;EACvC,MAAM,aAAa,SAAS,MAAM,cAAc,EAAC;EACjD,MAAM,EAAE,YAAY,WAAW,UAAU,gBAAgB,kBAAiB;;uBAIxE,mBAgBM,OAAA,EAhBA,OAAK,eAAE,UAAS,EAAA,EAAA,CAAA,CACH,MAAA,QAAO,CAAC,MAAM,WAAU,IAAA,WAAA,EACvC,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAFO,MAAA,UAAS,CAAA,CAAA,EAAA;2BACN,CAAA,gBAAA,gBAAd,MAAA,YAAW,CAAA,EAAA,EAAA,CAAA,CAAA;;cAGI,MAAA,MAAK,CAAC,YAAA,WAAA,EAC1B,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAFO,MAAA,UAAS,CAAA,CAAA,EAAA;2BAC4D,CAAA,gBAAA,gBAAhF,MAAA,WAAU,CAAC,MAAK,MAAK,EAAE,UAAU,MAAM,WAAU,EAAG,SAAS,MAAM,WAAU,EAAA,EAAA,CAAA,CAAA;;2BAGpF,YAIU,MAAA,QAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAJc,MAAA,WAAU,CAAA,CAAA,EAAA;2BACc,EAAA,UAAA,KAAA,EAA9C,mBAEQ,UAAA,MAAA,WAFqB,MAAM,aAApB,MAAM,QAAG;yBAAxB,YAEQ,MAAA,MAAA,EAFR,WAEQ,EAF6C,KAAG,EAAA,EAAA,SAAA,MAAA,EAAU,MAAA,SAAQ,CAAA,EAAA;6BACb,CAAA,gBAAA,gBAAxD,MAAA,WAAU,CAAC,MAAK,MAAK,EAAE,UAAU,KAAI,EAAG,SAAS,KAAI,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"select.mjs","names":[],"sources":["../../src/preview-text/select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Field } from '@formily/core'\nimport { isValid } from '@formily/shared'\nimport { formilyComputed } from '@silver-formily/reactive-vue'\nimport { useField } from '@silver-formily/vue'\nimport { ElSpace, ElTag, ElText } from 'element-plus'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { usePreviewConfig } from './utils'\n\ndefineOptions({\n name: 'FPreviewTextSelect',\n inheritAttrs: false,\n})\n\nconst props = defineProps<{\n modelValue?: any\n}>()\n\nconst prefixCls = `${stylePrefix}-preview-text`\n\nconst fieldRef = useField<Field>()\nconst { props: attrs } = useCleanAttrs()\nconst { spaceProps, textProps, tagProps, placeholder } = usePreviewConfig()\nconst dataSource = formilyComputed(() => fieldRef.value?.dataSource ?? [])\n\nfunction getOptionLabel(value: any) {\n return dataSource.value.find(i => i.value === value)?.label ?? value\n}\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <template v-if=\"!isValid(props.modelValue)\">\n <ElText v-bind=\"textProps\">\n {{ placeholder }}\n </ElText>\n </template>\n <template v-else-if=\"!attrs.multiple\">\n <ElText v-bind=\"textProps\">\n {{ getOptionLabel(props.modelValue) }}\n </ElText>\n </template>\n <ElSpace v-else v-bind=\"spaceProps\">\n <ElTag v-for=\"(item, key) of props.modelValue\" :key=\"key\" v-bind=\"tagProps\">\n {{ getOptionLabel(item) }}\n </ElTag>\n </ElSpace>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAcA,MAAM,QAAQ;EAId,MAAM,YAAY,GAAG,YAAY;EAEjC,MAAM,WAAW,UAAgB;EACjC,MAAM,EAAE,OAAO,UAAU,eAAc;EACvC,MAAM,EAAE,YAAY,WAAW,UAAU,gBAAgB,kBAAiB;EAC1E,MAAM,aAAa,sBAAsB,SAAS,OAAO,cAAc,EAAE,CAAA;EAEzE,SAAS,eAAe,OAAY;AAClC,UAAO,WAAW,MAAM,MAAK,MAAK,EAAE,UAAU,MAAM,EAAE,SAAS;;;uBAK/D,mBAgBM,OAAA,EAhBA,OAAK,eAAE,UAAS,EAAA,EAAA,CAAA,CACH,MAAA,QAAO,CAAC,MAAM,WAAU,IAAA,WAAA,EACvC,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAFO,MAAA,UAAS,CAAA,CAAA,EAAA;2BACN,CAAA,gBAAA,gBAAd,MAAA,YAAW,CAAA,EAAA,EAAA,CAAA,CAAA;;cAGI,MAAA,MAAK,CAAC,YAAA,WAAA,EAC1B,YAES,MAAA,OAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAFO,MAAA,UAAS,CAAA,CAAA,EAAA;2BACe,CAAA,gBAAA,gBAAnC,eAAe,MAAM,WAAU,CAAA,EAAA,EAAA,CAAA,CAAA;;2BAGtC,YAIU,MAAA,QAAA,EAAA,eAAA,WAAA,EAAA,KAAA,GAAA,EAJc,MAAA,WAAU,CAAA,CAAA,EAAA;2BACc,EAAA,UAAA,KAAA,EAA9C,mBAEQ,UAAA,MAAA,WAFqB,MAAM,aAApB,MAAM,QAAG;yBAAxB,YAEQ,MAAA,MAAA,EAFR,WAEQ,EAF6C,KAAG,EAAA,EAAA,SAAA,MAAA,EAAU,MAAA,SAAQ,CAAA,EAAA;6BAC9C,CAAA,gBAAA,gBAAvB,eAAe,KAAI,CAAA,EAAA,EAAA,CAAA,CAAA"}
@@ -13,11 +13,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
13
13
  inheritAttrs: false,
14
14
  __name: "query-form-light",
15
15
  props: {
16
+ form: {},
16
17
  schema: {},
17
18
  schemaField: {},
18
19
  components: { default: () => ({}) },
19
20
  scope: {},
20
- throttleWait: { default: 300 }
21
+ throttleWait: { default: 300 },
22
+ onAutoSubmit: {},
23
+ onAutoSubmitFailed: {}
21
24
  },
22
25
  emits: ["autoSubmit", "autoSubmitFailed"],
23
26
  setup(__props, { emit: __emit }) {
@@ -29,22 +32,26 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
29
32
  const fieldSchemaRef = useFieldSchema();
30
33
  const prefixCls = `${stylePrefix}-query-form-light`;
31
34
  const { externalForm, activeForm } = useQueryFormForm({
32
- formProps,
35
+ formProps: computed(() => ({ form: props.form })),
33
36
  fallbackForm: formRef
34
37
  });
35
38
  const resolvedSchema = computed(() => props.schema ?? fieldSchemaRef.value);
36
39
  const innerFormProps = computed(() => ({
37
40
  fullness: false,
38
41
  ...formProps.value,
39
- form: externalForm.value
42
+ form: externalForm.value,
43
+ onAutoSubmit: props.onAutoSubmit,
44
+ onAutoSubmitFailed: props.onAutoSubmitFailed
40
45
  }));
41
46
  function submitByChange() {
42
- activeForm.value.submit((values) => {
47
+ const form = activeForm.value;
48
+ if (!form) return;
49
+ form.submit((values) => {
43
50
  emit("autoSubmit", values);
44
- return formProps.value.onAutoSubmit?.(values);
51
+ return props.onAutoSubmit?.(values);
45
52
  }).catch((error) => {
46
53
  emit("autoSubmitFailed", error);
47
- formProps.value.onAutoSubmitFailed?.(error);
54
+ props.onAutoSubmitFailed?.(error);
48
55
  });
49
56
  }
50
57
  const triggerSubmit = throttle(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"query-form-light.mjs","names":[],"sources":["../../src/query-form/query-form-light.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@formily/core'\nimport type { IQueryFormLightProps } from './types'\nimport { toJS } from '@formily/reactive'\nimport { reactionWatch } from '@silver-formily/reactive-vue'\nimport { useFieldSchema, useForm } from '@silver-formily/vue'\nimport { throttle } from 'lodash-es'\nimport { computed, onUnmounted, useSlots } from 'vue'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { Form as FForm } from '../form'\nimport { useQueryFormForm, useQueryFormSchemaField } from './hooks'\n\ndefineOptions({\n name: 'FQueryFormLight',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IQueryFormLightProps>(), {\n components: () => ({}),\n throttleWait: 300,\n})\nconst emit = defineEmits<{\n (e: 'autoSubmit', values: Form['values']): void\n (e: 'autoSubmitFailed', error: any): void\n}>()\n\nconst { props: formProps } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\nconst slots = useSlots()\nconst formRef = useForm()\nconst fieldSchemaRef = useFieldSchema()\nconst prefixCls = `${stylePrefix}-query-form-light`\n\nconst { externalForm, activeForm } = useQueryFormForm({\n formProps,\n fallbackForm: formRef,\n})\nconst resolvedSchema = computed(() => props.schema ?? fieldSchemaRef.value)\n\nconst innerFormProps = computed(() => ({\n fullness: false,\n ...formProps.value,\n form: externalForm.value,\n}))\n\nfunction submitByChange() {\n const form = activeForm.value\n form\n .submit((values) => {\n emit('autoSubmit', values)\n return formProps.value.onAutoSubmit?.(values)\n })\n .catch((error) => {\n emit('autoSubmitFailed', error)\n formProps.value.onAutoSubmitFailed?.(error)\n })\n}\n\nconst triggerSubmit = throttle(() => {\n submitByChange()\n}, props.throttleWait, {\n leading: false,\n trailing: true,\n})\n\nreactionWatch(() => {\n const form = activeForm.value\n if (!form)\n return\n return toJS(form.values)\n}, () => {\n triggerSubmit()\n})\n\nonUnmounted(() => {\n triggerSubmit.cancel()\n})\n\nconst { hasDefaultSlot, schemaField } = useQueryFormSchemaField({\n slots,\n schema: resolvedSchema,\n schemaField: computed(() => props.schemaField),\n components: computed(() => props.components),\n})\n</script>\n\n<template>\n <FForm v-bind=\"innerFormProps\" :class=\"prefixCls\">\n <div :class=\"`${prefixCls}__content`\">\n <slot v-if=\"hasDefaultSlot\" />\n <component\n :is=\"schemaField\"\n v-else-if=\"schemaField\"\n :schema=\"resolvedSchema\"\n />\n </div>\n </FForm>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,QAAQ;EAId,MAAM,OAAO;EAKb,MAAM,EAAE,OAAO,cAAc,cAAc,CAAC,cAAc,sBAAsB,CAAA;EAChF,MAAM,QAAQ,UAAS;EACvB,MAAM,UAAU,SAAQ;EACxB,MAAM,iBAAiB,gBAAe;EACtC,MAAM,YAAY,GAAG,YAAY;EAEjC,MAAM,EAAE,cAAc,eAAe,iBAAiB;GACpD;GACA,cAAc;GACf,CAAA;EACD,MAAM,iBAAiB,eAAe,MAAM,UAAU,eAAe,MAAK;EAE1E,MAAM,iBAAiB,gBAAgB;GACrC,UAAU;GACV,GAAG,UAAU;GACb,MAAM,aAAa;GACpB,EAAC;EAEF,SAAS,iBAAiB;AACX,cAAW,MAErB,QAAQ,WAAW;AAClB,SAAK,cAAc,OAAM;AACzB,WAAO,UAAU,MAAM,eAAe,OAAM;KAC7C,CACA,OAAO,UAAU;AAChB,SAAK,oBAAoB,MAAK;AAC9B,cAAU,MAAM,qBAAqB,MAAK;KAC3C;;EAGL,MAAM,gBAAgB,eAAe;AACnC,mBAAe;KACd,MAAM,cAAc;GACrB,SAAS;GACT,UAAU;GACX,CAAA;AAED,sBAAoB;GAClB,MAAM,OAAO,WAAW;AACxB,OAAI,CAAC,KACH;AACF,UAAO,KAAK,KAAK,OAAM;WAChB;AACP,kBAAc;IACf;AAED,oBAAkB;AAChB,iBAAc,QAAO;IACtB;EAED,MAAM,EAAE,gBAAgB,gBAAgB,wBAAwB;GAC9D;GACA,QAAQ;GACR,aAAa,eAAe,MAAM,YAAY;GAC9C,YAAY,eAAe,MAAM,WAAW;GAC7C,CAAA;;uBAIC,YASQ,MAAA,YAAA,EATR,WAAe,eASP,OATqB,EAAG,OAAO,WAAS,CAAA,EAAA;2BAQxC,CAPN,mBAOM,OAAA,EAPA,OAAK,eAAA,GAAK,UAAS,WAAA,EAAA,EAAA,CACX,MAAA,eAAc,GAA1B,WAA8B,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,GAGjB,MAAA,YAAW,IAAA,WAAA,EAFxB,YAIE,wBAHK,MAAA,YAAW,CAAA,EAAA;;KAEf,QAAQ,eAAA"}
1
+ {"version":3,"file":"query-form-light.mjs","names":[],"sources":["../../src/query-form/query-form-light.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@formily/core'\nimport type { IQueryFormLightProps } from './types'\nimport { toJS } from '@formily/reactive'\nimport { reactionWatch } from '@silver-formily/reactive-vue'\nimport { useFieldSchema, useForm } from '@silver-formily/vue'\nimport { throttle } from 'lodash-es'\nimport { computed, onUnmounted, useSlots } from 'vue'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { Form as FForm } from '../form'\nimport { useQueryFormForm, useQueryFormSchemaField } from './hooks'\n\ndefineOptions({\n name: 'FQueryFormLight',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IQueryFormLightProps>(), {\n components: () => ({}),\n throttleWait: 300,\n})\nconst emit = defineEmits<{\n (e: 'autoSubmit', values: Form['values']): void\n (e: 'autoSubmitFailed', error: any): void\n}>()\n\nconst { props: formProps } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\nconst slots = useSlots()\nconst formRef = useForm()\nconst fieldSchemaRef = useFieldSchema()\nconst prefixCls = `${stylePrefix}-query-form-light`\n\nconst { externalForm, activeForm } = useQueryFormForm({\n formProps: computed(() => ({ form: props.form })),\n fallbackForm: formRef,\n})\nconst resolvedSchema = computed(() => props.schema ?? fieldSchemaRef.value)\n\nconst innerFormProps = computed(() => ({\n fullness: false,\n ...formProps.value,\n form: externalForm.value,\n onAutoSubmit: props.onAutoSubmit,\n onAutoSubmitFailed: props.onAutoSubmitFailed,\n}))\n\nfunction submitByChange() {\n const form = activeForm.value\n if (!form)\n return\n form\n .submit((values) => {\n emit('autoSubmit', values)\n return props.onAutoSubmit?.(values)\n })\n .catch((error) => {\n emit('autoSubmitFailed', error)\n props.onAutoSubmitFailed?.(error)\n })\n}\n\nconst triggerSubmit = throttle(() => {\n submitByChange()\n}, props.throttleWait, {\n leading: false,\n trailing: true,\n})\n\nreactionWatch(() => {\n const form = activeForm.value\n if (!form)\n return\n return toJS(form.values)\n}, () => {\n triggerSubmit()\n})\n\nonUnmounted(() => {\n triggerSubmit.cancel()\n})\n\nconst { hasDefaultSlot, schemaField } = useQueryFormSchemaField({\n slots,\n schema: resolvedSchema,\n schemaField: computed(() => props.schemaField),\n components: computed(() => props.components),\n})\n</script>\n\n<template>\n <FForm v-bind=\"innerFormProps\" :class=\"prefixCls\">\n <div :class=\"`${prefixCls}__content`\">\n <slot v-if=\"hasDefaultSlot\" />\n <component\n :is=\"schemaField\"\n v-else-if=\"schemaField\"\n :schema=\"resolvedSchema\"\n />\n </div>\n </FForm>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,QAAQ;EAId,MAAM,OAAO;EAKb,MAAM,EAAE,OAAO,cAAc,cAAc,CAAC,cAAc,sBAAsB,CAAA;EAChF,MAAM,QAAQ,UAAS;EACvB,MAAM,UAAU,SAAQ;EACxB,MAAM,iBAAiB,gBAAe;EACtC,MAAM,YAAY,GAAG,YAAY;EAEjC,MAAM,EAAE,cAAc,eAAe,iBAAiB;GACpD,WAAW,gBAAgB,EAAE,MAAM,MAAM,MAAM,EAAE;GACjD,cAAc;GACf,CAAA;EACD,MAAM,iBAAiB,eAAe,MAAM,UAAU,eAAe,MAAK;EAE1E,MAAM,iBAAiB,gBAAgB;GACrC,UAAU;GACV,GAAG,UAAU;GACb,MAAM,aAAa;GACnB,cAAc,MAAM;GACpB,oBAAoB,MAAM;GAC3B,EAAC;EAEF,SAAS,iBAAiB;GACxB,MAAM,OAAO,WAAW;AACxB,OAAI,CAAC,KACH;AACF,QACG,QAAQ,WAAW;AAClB,SAAK,cAAc,OAAM;AACzB,WAAO,MAAM,eAAe,OAAM;KACnC,CACA,OAAO,UAAU;AAChB,SAAK,oBAAoB,MAAK;AAC9B,UAAM,qBAAqB,MAAK;KACjC;;EAGL,MAAM,gBAAgB,eAAe;AACnC,mBAAe;KACd,MAAM,cAAc;GACrB,SAAS;GACT,UAAU;GACX,CAAA;AAED,sBAAoB;GAClB,MAAM,OAAO,WAAW;AACxB,OAAI,CAAC,KACH;AACF,UAAO,KAAK,KAAK,OAAM;WAChB;AACP,kBAAc;IACf;AAED,oBAAkB;AAChB,iBAAc,QAAO;IACtB;EAED,MAAM,EAAE,gBAAgB,gBAAgB,wBAAwB;GAC9D;GACA,QAAQ;GACR,aAAa,eAAe,MAAM,YAAY;GAC9C,YAAY,eAAe,MAAM,WAAW;GAC7C,CAAA;;uBAIC,YASQ,MAAA,YAAA,EATR,WAAe,eASP,OATqB,EAAG,OAAO,WAAS,CAAA,EAAA;2BAQxC,CAPN,mBAOM,OAAA,EAPA,OAAK,eAAA,GAAK,UAAS,WAAA,EAAA,EAAA,CACX,MAAA,eAAc,GAA1B,WAA8B,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,GAGjB,MAAA,YAAW,IAAA,WAAA,EAFxB,YAIE,wBAHK,MAAA,YAAW,CAAA,EAAA;;KAEf,QAAQ,eAAA"}