@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.
- package/esm/__builtins__/shared/utils.mjs +4 -1
- package/esm/__builtins__/shared/utils.mjs.map +1 -1
- package/esm/checkbox/index.d.ts +90 -90
- package/esm/color-picker/index.d.ts +14 -14
- package/esm/color-picker-panel/index.d.ts +12 -12
- package/esm/form-dialog/dialog-content.mjs +10 -12
- package/esm/form-dialog/dialog-content.mjs.map +1 -1
- package/esm/form-dialog/index.mjs +22 -26
- package/esm/form-dialog/index.mjs.map +1 -1
- package/esm/form-dialog/types.d.ts +0 -1
- package/esm/form-drawer/drawer-content.mjs +10 -12
- package/esm/form-drawer/drawer-content.mjs.map +1 -1
- package/esm/form-drawer/index.mjs +22 -26
- package/esm/form-drawer/index.mjs.map +1 -1
- package/esm/form-drawer/types.d.ts +0 -1
- package/esm/form-grid/form-grid-column.mjs +6 -4
- package/esm/form-grid/form-grid-column.mjs.map +1 -1
- package/esm/form-layout/form-layout.vue.d.ts +1 -1
- package/esm/input-number/index.d.ts +24 -24
- package/esm/preview-text/select.mjs +8 -3
- package/esm/preview-text/select.mjs.map +1 -1
- package/esm/query-form/query-form-light.mjs +13 -6
- package/esm/query-form/query-form-light.mjs.map +1 -1
- package/esm/query-form/query-form.mjs +13 -6
- package/esm/query-form/query-form.mjs.map +1 -1
- package/esm/query-form/types.d.ts +8 -1
- package/esm/radio/index.d.ts +45 -45
- package/esm/radio/radio-group.mjs +4 -2
- package/esm/radio/radio-group.mjs.map +1 -1
- package/esm/select/index.d.ts +7 -7
- package/esm/select-table/index.d.ts +1 -1
- package/esm/select-table/select-table.mjs +63 -29
- package/esm/select-table/select-table.mjs.map +1 -1
- package/esm/select-table/types.d.ts +1 -1
- package/esm/time-select/index.d.ts +16 -16
- package/esm/transfer/index.d.ts +12 -12
- package/package.json +4 -4
- package/esm/shared/url-change-listener.mjs +0 -50
- 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'\
|
|
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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"}
|
|
@@ -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,
|
|
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
|
-
}),
|
|
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
|
-
_:
|
|
99
|
-
}, [
|
|
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\"
|
|
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
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
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
|
|
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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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent,
|
|
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:
|
|
21
|
-
}, [renderSlot(_ctx.$slots, "default")],
|
|
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":"
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
47
|
+
const form = activeForm.value;
|
|
48
|
+
if (!form) return;
|
|
49
|
+
form.submit((values) => {
|
|
43
50
|
emit("autoSubmit", values);
|
|
44
|
-
return
|
|
51
|
+
return props.onAutoSubmit?.(values);
|
|
45
52
|
}).catch((error) => {
|
|
46
53
|
emit("autoSubmitFailed", error);
|
|
47
|
-
|
|
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
|
|
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"}
|