@silver-formily/element-plus 4.0.3 → 5.0.0
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/loading.mjs.map +1 -1
- package/esm/__builtins__/shared/transform-component.mjs +1 -1
- package/esm/__builtins__/shared/transform-component.mjs.map +1 -1
- package/esm/__builtins__/shared/utils.mjs +7 -5
- package/esm/__builtins__/shared/utils.mjs.map +1 -1
- package/esm/array-base/array-base-inner.mjs.map +1 -1
- package/esm/array-base/array-base-move-down.mjs +1 -1
- package/esm/array-base/array-base-move-down.mjs.map +1 -1
- package/esm/array-base/array-base-move-up.mjs +1 -1
- package/esm/array-base/array-base-move-up.mjs.map +1 -1
- package/esm/array-base/array-base-remove.mjs +1 -1
- package/esm/array-base/array-base-remove.mjs.map +1 -1
- package/esm/array-base/types.d.ts +2 -2
- package/esm/array-base/utils.d.ts +1 -1
- package/esm/array-base/utils.mjs +1 -1
- package/esm/array-base/utils.mjs.map +1 -1
- package/esm/array-cards/array-cards.mjs +1 -1
- package/esm/array-cards/array-cards.mjs.map +1 -1
- package/esm/array-collapse/array-collapse-item.mjs +1 -1
- package/esm/array-collapse/array-collapse-item.mjs.map +1 -1
- package/esm/array-collapse/array-collapse.mjs +3 -4
- package/esm/array-collapse/array-collapse.mjs.map +1 -1
- package/esm/array-items/array-items.mjs +3 -8
- package/esm/array-items/array-items.mjs.map +1 -1
- package/esm/array-list-tabs/array-list-tabs.mjs +57 -51
- package/esm/array-list-tabs/array-list-tabs.mjs.map +1 -1
- package/esm/array-list-tabs/utils.mjs.map +1 -1
- package/esm/array-table/array-table.mjs +4 -18
- package/esm/array-table/array-table.mjs.map +1 -1
- package/esm/array-table/utils.mjs.map +1 -1
- package/esm/array-tabs/array-tabs.mjs +1 -1
- package/esm/array-tabs/array-tabs.mjs.map +1 -1
- package/esm/autocomplete/autocomplete.mjs.map +1 -1
- package/esm/autocomplete/index.d.ts +3 -4
- package/esm/checkbox/checkbox-group.mjs +1 -1
- package/esm/checkbox/checkbox-group.mjs.map +1 -1
- package/esm/checkbox/index.d.ts +117 -117
- package/esm/color-picker/index.d.ts +28 -28
- package/esm/color-picker-panel/index.d.ts +18 -18
- package/esm/date-picker-panel/index.d.ts +1 -1
- package/esm/editable/editable-popover.mjs +1 -1
- package/esm/editable/editable-popover.mjs.map +1 -1
- package/esm/editable/editable.mjs +1 -1
- package/esm/editable/editable.mjs.map +1 -1
- package/esm/form/form.mjs.map +1 -1
- package/esm/form/form.vue.d.ts +1 -1
- package/esm/form-collapse/form-collapse.mjs +1 -1
- package/esm/form-collapse/form-collapse.mjs.map +1 -1
- package/esm/form-collapse/index.d.ts +3 -3
- package/esm/form-collapse/utils.d.ts +2 -2
- package/esm/form-collapse/utils.mjs +2 -2
- package/esm/form-collapse/utils.mjs.map +1 -1
- package/esm/form-dialog/dialog-content.mjs +1 -1
- package/esm/form-dialog/dialog-content.mjs.map +1 -1
- package/esm/form-dialog/index.mjs +3 -3
- package/esm/form-dialog/index.mjs.map +1 -1
- package/esm/form-dialog/types.d.ts +2 -2
- package/esm/form-drawer/drawer-content.mjs +1 -1
- package/esm/form-drawer/drawer-content.mjs.map +1 -1
- package/esm/form-drawer/index.mjs +3 -3
- package/esm/form-drawer/index.mjs.map +1 -1
- package/esm/form-drawer/types.d.ts +2 -2
- package/esm/form-item/form-item.mjs +1 -1
- package/esm/form-item/form-item.mjs.map +1 -1
- package/esm/form-item/index.mjs +1 -1
- package/esm/form-item/index.mjs.map +1 -1
- package/esm/form-item/utils.mjs +1 -1
- package/esm/form-item/utils.mjs.map +1 -1
- package/esm/form-layout/form-layout.mjs +1 -1
- package/esm/form-layout/form-layout.mjs.map +1 -1
- package/esm/form-layout/form-layout.vue.d.ts +1 -1
- package/esm/form-layout/utils.mjs +1 -1
- package/esm/form-layout/utils.mjs.map +1 -1
- package/esm/form-step/form-step.mjs +1 -1
- package/esm/form-step/form-step.mjs.map +1 -1
- package/esm/form-step/types.d.ts +1 -1
- package/esm/form-step/utils.d.ts +1 -1
- package/esm/form-step/utils.mjs +1 -1
- package/esm/form-step/utils.mjs.map +1 -1
- package/esm/form-tab/hooks.mjs.map +1 -1
- package/esm/form-tab/utils.mjs +1 -1
- package/esm/form-tab/utils.mjs.map +1 -1
- package/esm/input-number/index.d.ts +39 -39
- package/esm/input-tag/index.d.ts +1 -2
- package/esm/input-tag/input-tag.mjs.map +1 -1
- package/esm/mention/index.d.ts +3 -4
- package/esm/mention/mention.mjs.map +1 -1
- package/esm/pagination/components/pager2.mjs.map +1 -1
- package/esm/pagination/components/sizes2.mjs +1 -1
- package/esm/pagination/components/sizes2.mjs.map +1 -1
- package/esm/picker-select/picker-select.mjs +1 -1
- package/esm/picker-select/picker-select.mjs.map +1 -1
- package/esm/picker-select/types.d.ts +1 -1
- package/esm/preview-text/cascader.mjs.map +1 -1
- package/esm/preview-text/color-picker.mjs +1 -1
- package/esm/preview-text/color-picker.mjs.map +1 -1
- package/esm/preview-text/input.mjs +1 -1
- package/esm/preview-text/input.mjs.map +1 -1
- package/esm/preview-text/rate.mjs +1 -1
- package/esm/preview-text/rate.mjs.map +1 -1
- package/esm/preview-text/select.mjs +1 -1
- package/esm/preview-text/select.mjs.map +1 -1
- package/esm/preview-text/time-picker.mjs +1 -1
- package/esm/preview-text/time-picker.mjs.map +1 -1
- package/esm/preview-text/tree.mjs.map +1 -1
- package/esm/query-form/hooks.mjs +1 -1
- package/esm/query-form/hooks.mjs.map +1 -1
- package/esm/query-form/index.d.ts +5 -5
- package/esm/query-form/query-form-light.mjs +1 -1
- package/esm/query-form/query-form-light.mjs.map +1 -1
- package/esm/query-form/query-form.mjs +1 -1
- package/esm/query-form/query-form.mjs.map +1 -1
- package/esm/query-form/types.d.ts +2 -2
- package/esm/query-form-item/index.d.ts +4 -4
- package/esm/query-form-item/query-form-item.mjs +2 -2
- package/esm/query-form-item/query-form-item.mjs.map +1 -1
- package/esm/query-form-item/types.d.ts +2 -2
- package/esm/radio/index.d.ts +72 -72
- package/esm/radio/radio-group.mjs +1 -1
- package/esm/radio/radio-group.mjs.map +1 -1
- package/esm/rate/index.d.ts +10 -10
- package/esm/select/index.d.ts +14 -14
- package/esm/select-table/index.d.ts +3 -3
- package/esm/select-table/select-table.mjs +1 -1
- package/esm/select-table/select-table.mjs.map +1 -1
- package/esm/select-table/types.d.ts +1 -1
- package/esm/submit/submit.mjs.map +1 -1
- package/esm/switch/index.d.ts +27 -27
- package/esm/time-select/index.d.ts +20 -20
- package/esm/transfer/index.d.ts +12 -12
- package/esm/tree/tree.mjs +1 -1
- package/esm/tree/tree.mjs.map +1 -1
- package/esm/tree-select/tree-select.mjs.map +1 -1
- package/esm/upload/upload.mjs +1 -1
- package/esm/upload/upload.mjs.map +1 -1
- package/package.json +18 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editable-popover.mjs","names":["$attrs"],"sources":["../../src/editable/editable-popover.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Field } from '@formily/core'\nimport type { IFormItemProps } from '../form-item/types'\nimport { Edit } from '@element-plus/icons-vue'\nimport {
|
|
1
|
+
{"version":3,"file":"editable-popover.mjs","names":["$attrs"],"sources":["../../src/editable/editable-popover.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Field } from '@silver-formily/core'\nimport type { IFormItemProps } from '../form-item/types'\nimport { Edit } from '@element-plus/icons-vue'\nimport { reactionWatch } from '@silver-formily/reactive-vue'\nimport { isValid } from '@silver-formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport { ElPopover, ElText, ClickOutside as vClickOutside } from 'element-plus'\nimport { ref } from 'vue'\nimport { stylePrefix } from '../__builtins__/configs'\nimport { FormBaseItem } from '../form-item'\n\ndefineOptions({\n name: 'FEditablePopover',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<IFormItemProps>(), {\n feedbackLayout: 'popover',\n size: 'default',\n})\n\nconst fieldRef = useField<Field>()\nconst prefixCls = `${stylePrefix}-editable`\nconst contentRef = ref<HTMLElement>()\nconst visible = ref(false)\n\nif (isValid(fieldRef.value.data)) {\n /* istanbul ignore else -- @preserve */\n if (!isValid(fieldRef.value.data.readPretty)) {\n fieldRef.value.data.readPretty = true\n }\n}\nelse {\n fieldRef.value.data = {}\n fieldRef.value.data.readPretty = true\n}\n\nfunction onClickOutside(e) {\n const popoverDOM = contentRef.value.parentElement\n /* istanbul ignore else -- @preserve */\n if (!popoverDOM.contains(e.target)) {\n visible.value = false\n }\n}\nfunction onClick() {\n visible.value = true\n}\n\nreactionWatch(\n () => fieldRef.value.form.queryFeedbacks({\n type: 'error',\n address: `${fieldRef.value.address.entire}.*`,\n }),\n (errorList) => {\n if (errorList.length > 0) {\n visible.value = true\n }\n },\n)\n</script>\n\n<template>\n <div :class=\"prefixCls\">\n <ElPopover\n v-bind=\"$attrs\"\n :visible=\"visible\"\n :title=\"$attrs.title || fieldRef.title\" trigger=\"click\" width=\"auto\"\n >\n <template #default>\n <div ref=\"contentRef\" :class=\"`${prefixCls}-popover-wrapper`\">\n <slot />\n </div>\n </template>\n <template #reference>\n <FormBaseItem v-click-outside=\"onClickOutside\" v-bind=\"props\" :class=\"`${prefixCls}-trigger`\">\n <div :class=\"`${prefixCls}-content`\" @click=\"onClick\">\n <ElText>\n {{ fieldRef.title }}\n </ElText>\n <Edit :class=\"`${prefixCls}-edit-btn`\" />\n </div>\n </FormBaseItem>\n </template>\n </ElPopover>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBA,MAAM,QAAQ;EAKd,MAAM,WAAW,UAAgB;EACjC,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,aAAa,KAAiB;EACpC,MAAM,UAAU,IAAI,MAAK;AAEzB,MAAI,QAAQ,SAAS,MAAM,KAAK;;OAE1B,CAAC,QAAQ,SAAS,MAAM,KAAK,WAAW,CAC1C,UAAS,MAAM,KAAK,aAAa;SAGhC;AACH,YAAS,MAAM,OAAO,EAAC;AACvB,YAAS,MAAM,KAAK,aAAa;;EAGnC,SAAS,eAAe,GAAG;;AAGzB,OAAI,CAFe,WAAW,MAAM,cAEpB,SAAS,EAAE,OAAO,CAChC,SAAQ,QAAQ;;EAGpB,SAAS,UAAU;AACjB,WAAQ,QAAQ;;AAGlB,sBACQ,SAAS,MAAM,KAAK,eAAe;GACvC,MAAM;GACN,SAAS,GAAG,SAAS,MAAM,QAAQ,OAAO;GAC3C,CAAC,GACD,cAAc;AACb,OAAI,UAAU,SAAS,EACrB,SAAQ,QAAQ;IAGtB;;uBAIE,mBAsBM,OAAA,EAtBA,OAAK,eAAE,UAAS,EAAA,EAAA,CACpB,YAoBY,MAAA,UAAA,EApBZ,WACUA,KAmBE,QAnBI;IACb,SAAS,QAAA;IACT,OAAOA,KAAAA,OAAO,SAAS,MAAA,SAAQ,CAAC;IAAO,SAAQ;IAAQ,OAAM;;IAEnD,SAAO,cAGV,CAFN,mBAEM,OAAA;cAFG;KAAJ,KAAI;KAAc,OAAK,eAAA,GAAK,UAAS,kBAAA;QACxC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IAGD,WAAS,cAQH,CAAA,gBAAA,WAAA,EAPf,YAOe,MAAA,YAAA,EAPf,WAAuD,OAAK,EAAG,OAAK,GAAK,UAAS,WAAA,CAAA,EAAA;4BAM1E,CALN,mBAKM,OAAA;MALA,OAAK,eAAA,GAAK,UAAS,UAAA;MAAoB;SAC3C,YAES,MAAA,OAAA,EAAA,MAAA;6BADa,CAAA,gBAAA,gBAAjB,MAAA,SAAQ,CAAC,MAAK,EAAA,EAAA,CAAA,CAAA;;SAEnB,YAAyC,MAAA,KAAA,EAAA,EAAlC,OAAK,eAAA,GAAK,UAAS,WAAA,EAAA,EAAA,MAAA,GAAA,CAAA,QAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;+CALC,eAAc,CAAA,CAAA,CAAA,CAAA"}
|
|
@@ -3,7 +3,7 @@ import _sfc_main$1 from "../form-item/form-item.mjs";
|
|
|
3
3
|
import { ClickOutside } from "element-plus";
|
|
4
4
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, openBlock, ref, renderSlot, unref, withCtx, withDirectives } from "vue";
|
|
5
5
|
import { useField } from "@silver-formily/vue";
|
|
6
|
-
import { isPlainObj, isValid } from "@formily/shared";
|
|
6
|
+
import { isPlainObj, isValid } from "@silver-formily/shared";
|
|
7
7
|
import { omit } from "lodash-es";
|
|
8
8
|
import { Close, Edit } from "@element-plus/icons-vue";
|
|
9
9
|
//#region src/editable/editable.vue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editable.mjs","names":[],"sources":["../../src/editable/editable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Field } from '@formily/core'\nimport type { IFormItemProps } from '../form-item/types'\nimport { Close, Edit } from '@element-plus/icons-vue'\nimport { isPlainObj, isValid } from '@formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport { ClickOutside as vClickOutside } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, nextTick, ref } from 'vue'\nimport { stylePrefix } from '../__builtins__/configs'\nimport { FormBaseItem } from '../form-item'\n\ndefineOptions({\n name: 'FEditable',\n})\n\nconst props = withDefaults(defineProps<IFormItemProps & { editProps?: IFormItemProps }>(), {\n feedbackLayout: 'popover',\n size: 'default',\n})\n\nconst fieldRef = useField<Field>()\nconst innerRef = ref<HTMLElement>(null)\nconst prefixCls = `${stylePrefix}-editable`\nconst formItemRef = ref<InstanceType<typeof FormBaseItem>>(null)\n\nconst commonProps = computed(() => omit(props, 'editProps'))\nconst editProps = computed(() => {\n if (isPlainObj(props.editProps)) {\n return { ...omit(props, 'editProps'), ...props.editProps }\n }\n return omit(props, 'editProps')\n})\n\nfunction handleEnsureReadPretty() {\n if (!isValid(fieldRef.value.data)) {\n fieldRef.value.data = {}\n }\n}\n\nhandleEnsureReadPretty()\nfieldRef.value.data.readPretty = true\n\nasync function onClick() {\n if (fieldRef.value.disabled)\n return\n handleEnsureReadPretty()\n fieldRef.value.data.readPretty = false\n await nextTick()\n formItemRef.value.feedbackTooltipRef.updatePopper()\n innerRef.value?.querySelector('input')?.focus()\n}\n\nfunction onClickOutside() {\n if (fieldRef.value.data?.readPretty === true)\n return\n handleEnsureReadPretty()\n // 使用下拉菜单等触发的事件完成应有的操作\n setTimeout(async () => {\n fieldRef.value.data.readPretty = true\n await nextTick()\n formItemRef.value?.feedbackTooltipRef.updatePopper()\n }, 0)\n}\n</script>\n\n<template>\n <div ref=\"innerRef\" :class=\"[prefixCls, fieldRef.disabled && 'is-disabled']\">\n <div v-click-outside=\"onClickOutside\" :class=\"`${prefixCls}-content`\">\n <FormBaseItem ref=\"formItemRef\" v-bind=\"fieldRef.data?.readPretty === false ? editProps : commonProps\" @click=\"onClick\">\n <div>\n <slot />\n </div>\n </FormBaseItem>\n <template v-if=\"!fieldRef.disabled\">\n <template v-if=\"fieldRef.data?.readPretty === true\">\n <FormBaseItem :size=\"props.size\" :feedback-layout=\"props.feedbackLayout\">\n <Edit :class=\"`${prefixCls}-edit-btn`\" @click=\"onClick\" />\n </FormBaseItem>\n </template>\n <template v-else>\n <FormBaseItem :size=\"props.size\" :feedback-layout=\"props.feedbackLayout\">\n <Close :class=\"`${prefixCls}-close-btn`\" @click=\"onClickOutside\" />\n </FormBaseItem>\n </template>\n </template>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAKd,MAAM,WAAW,UAAgB;EACjC,MAAM,WAAW,IAAiB,KAAI;EACtC,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,cAAc,IAAuC,KAAI;EAE/D,MAAM,cAAc,eAAe,KAAK,OAAO,YAAY,CAAA;EAC3D,MAAM,YAAY,eAAe;AAC/B,OAAI,WAAW,MAAM,UAAU,CAC7B,QAAO;IAAE,GAAG,KAAK,OAAO,YAAY;IAAE,GAAG,MAAM;IAAU;AAE3D,UAAO,KAAK,OAAO,YAAW;IAC/B;EAED,SAAS,yBAAyB;AAChC,OAAI,CAAC,QAAQ,SAAS,MAAM,KAAK,CAC/B,UAAS,MAAM,OAAO,EAAC;;AAI3B,0BAAuB;AACvB,WAAS,MAAM,KAAK,aAAa;EAEjC,eAAe,UAAU;AACvB,OAAI,SAAS,MAAM,SACjB;AACF,2BAAuB;AACvB,YAAS,MAAM,KAAK,aAAa;AACjC,SAAM,UAAS;AACf,eAAY,MAAM,mBAAmB,cAAa;AAClD,YAAS,OAAO,cAAc,QAAQ,EAAE,OAAM;;EAGhD,SAAS,iBAAiB;AACxB,OAAI,SAAS,MAAM,MAAM,eAAe,KACtC;AACF,2BAAuB;AAEvB,cAAW,YAAY;AACrB,aAAS,MAAM,KAAK,aAAa;AACjC,UAAM,UAAS;AACf,gBAAY,OAAO,mBAAmB,cAAa;MAClD,EAAC;;;uBAKJ,mBAoBM,OAAA;aApBG;IAAJ,KAAI;IAAY,OAAK,eAAA,CAAG,WAAW,MAAA,SAAQ,CAAC,YAAQ,cAAA,CAAA;oCACvD,mBAkBM,OAAA,EAlBiC,OAAK,eAAA,GAAK,UAAS,UAAA,EAAA,EAAA,CACxD,YAIe,MAAA,YAAA,EAJf,WAIe;aAJG;IAAJ,KAAI;MAAsB,MAAA,SAAQ,CAAC,MAAM,eAAU,QAAa,UAAA,QAAY,YAAA,OAAW,EAAU,SAAO,CAAA,EAAA;2BAG9G,CAFN,mBAEM,OAAA,MAAA,CADJ,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA,CAAA,CAAA;;YAGK,MAAA,SAAQ,CAAC,YAAA,WAAA,EAA1B,mBAWW,UAAA,EAAA,KAAA,GAAA,EAAA,CAVO,MAAA,SAAQ,CAAC,MAAM,eAAU,QAAA,WAAA,EACvC,YAEe,MAAA,YAAA,EAAA;;IAFA,MAAM,MAAM;IAAO,mBAAiB,MAAM;;2BACG,CAA1D,YAA0D,MAAA,KAAA,EAAA;KAAnD,OAAK,eAAA,GAAK,UAAS,WAAA;KAAqB;;;uDAIjD,YAEe,MAAA,YAAA,EAAA;;IAFA,MAAM,MAAM;IAAO,mBAAiB,MAAM;;2BACY,CAAnE,YAAmE,MAAA,MAAA,EAAA;KAA3D,OAAK,eAAA,GAAK,UAAS,YAAA;KAAe,SAAO;;;+GAdnC,eAAc,CAAA,CAAA,CAAA,EAAA,EAAA"}
|
|
1
|
+
{"version":3,"file":"editable.mjs","names":[],"sources":["../../src/editable/editable.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Field } from '@silver-formily/core'\nimport type { IFormItemProps } from '../form-item/types'\nimport { Close, Edit } from '@element-plus/icons-vue'\nimport { isPlainObj, isValid } from '@silver-formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport { ClickOutside as vClickOutside } from 'element-plus'\nimport { omit } from 'lodash-es'\nimport { computed, nextTick, ref } from 'vue'\nimport { stylePrefix } from '../__builtins__/configs'\nimport { FormBaseItem } from '../form-item'\n\ndefineOptions({\n name: 'FEditable',\n})\n\nconst props = withDefaults(defineProps<IFormItemProps & { editProps?: IFormItemProps }>(), {\n feedbackLayout: 'popover',\n size: 'default',\n})\n\nconst fieldRef = useField<Field>()\nconst innerRef = ref<HTMLElement>(null)\nconst prefixCls = `${stylePrefix}-editable`\nconst formItemRef = ref<InstanceType<typeof FormBaseItem>>(null)\n\nconst commonProps = computed(() => omit(props, 'editProps'))\nconst editProps = computed(() => {\n if (isPlainObj(props.editProps)) {\n return { ...omit(props, 'editProps'), ...props.editProps }\n }\n return omit(props, 'editProps')\n})\n\nfunction handleEnsureReadPretty() {\n if (!isValid(fieldRef.value.data)) {\n fieldRef.value.data = {}\n }\n}\n\nhandleEnsureReadPretty()\nfieldRef.value.data.readPretty = true\n\nasync function onClick() {\n if (fieldRef.value.disabled)\n return\n handleEnsureReadPretty()\n fieldRef.value.data.readPretty = false\n await nextTick()\n formItemRef.value.feedbackTooltipRef.updatePopper()\n innerRef.value?.querySelector('input')?.focus()\n}\n\nfunction onClickOutside() {\n if (fieldRef.value.data?.readPretty === true)\n return\n handleEnsureReadPretty()\n // 使用下拉菜单等触发的事件完成应有的操作\n setTimeout(async () => {\n fieldRef.value.data.readPretty = true\n await nextTick()\n formItemRef.value?.feedbackTooltipRef.updatePopper()\n }, 0)\n}\n</script>\n\n<template>\n <div ref=\"innerRef\" :class=\"[prefixCls, fieldRef.disabled && 'is-disabled']\">\n <div v-click-outside=\"onClickOutside\" :class=\"`${prefixCls}-content`\">\n <FormBaseItem ref=\"formItemRef\" v-bind=\"fieldRef.data?.readPretty === false ? editProps : commonProps\" @click=\"onClick\">\n <div>\n <slot />\n </div>\n </FormBaseItem>\n <template v-if=\"!fieldRef.disabled\">\n <template v-if=\"fieldRef.data?.readPretty === true\">\n <FormBaseItem :size=\"props.size\" :feedback-layout=\"props.feedbackLayout\">\n <Edit :class=\"`${prefixCls}-edit-btn`\" @click=\"onClick\" />\n </FormBaseItem>\n </template>\n <template v-else>\n <FormBaseItem :size=\"props.size\" :feedback-layout=\"props.feedbackLayout\">\n <Close :class=\"`${prefixCls}-close-btn`\" @click=\"onClickOutside\" />\n </FormBaseItem>\n </template>\n </template>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAKd,MAAM,WAAW,UAAgB;EACjC,MAAM,WAAW,IAAiB,KAAI;EACtC,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,cAAc,IAAuC,KAAI;EAE/D,MAAM,cAAc,eAAe,KAAK,OAAO,YAAY,CAAA;EAC3D,MAAM,YAAY,eAAe;AAC/B,OAAI,WAAW,MAAM,UAAU,CAC7B,QAAO;IAAE,GAAG,KAAK,OAAO,YAAY;IAAE,GAAG,MAAM;IAAU;AAE3D,UAAO,KAAK,OAAO,YAAW;IAC/B;EAED,SAAS,yBAAyB;AAChC,OAAI,CAAC,QAAQ,SAAS,MAAM,KAAK,CAC/B,UAAS,MAAM,OAAO,EAAC;;AAI3B,0BAAuB;AACvB,WAAS,MAAM,KAAK,aAAa;EAEjC,eAAe,UAAU;AACvB,OAAI,SAAS,MAAM,SACjB;AACF,2BAAuB;AACvB,YAAS,MAAM,KAAK,aAAa;AACjC,SAAM,UAAS;AACf,eAAY,MAAM,mBAAmB,cAAa;AAClD,YAAS,OAAO,cAAc,QAAQ,EAAE,OAAM;;EAGhD,SAAS,iBAAiB;AACxB,OAAI,SAAS,MAAM,MAAM,eAAe,KACtC;AACF,2BAAuB;AAEvB,cAAW,YAAY;AACrB,aAAS,MAAM,KAAK,aAAa;AACjC,UAAM,UAAS;AACf,gBAAY,OAAO,mBAAmB,cAAa;MAClD,EAAC;;;uBAKJ,mBAoBM,OAAA;aApBG;IAAJ,KAAI;IAAY,OAAK,eAAA,CAAG,WAAW,MAAA,SAAQ,CAAC,YAAQ,cAAA,CAAA;oCACvD,mBAkBM,OAAA,EAlBiC,OAAK,eAAA,GAAK,UAAS,UAAA,EAAA,EAAA,CACxD,YAIe,MAAA,YAAA,EAJf,WAIe;aAJG;IAAJ,KAAI;MAAsB,MAAA,SAAQ,CAAC,MAAM,eAAU,QAAa,UAAA,QAAY,YAAA,OAAW,EAAU,SAAO,CAAA,EAAA;2BAG9G,CAFN,mBAEM,OAAA,MAAA,CADJ,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA,CAAA,CAAA;;YAGK,MAAA,SAAQ,CAAC,YAAA,WAAA,EAA1B,mBAWW,UAAA,EAAA,KAAA,GAAA,EAAA,CAVO,MAAA,SAAQ,CAAC,MAAM,eAAU,QAAA,WAAA,EACvC,YAEe,MAAA,YAAA,EAAA;;IAFA,MAAM,MAAM;IAAO,mBAAiB,MAAM;;2BACG,CAA1D,YAA0D,MAAA,KAAA,EAAA;KAAnD,OAAK,eAAA,GAAK,UAAS,WAAA;KAAqB;;;uDAIjD,YAEe,MAAA,YAAA,EAAA;;IAFA,MAAM,MAAM;IAAO,mBAAiB,MAAM;;2BACY,CAAnE,YAAmE,MAAA,MAAA,EAAA;KAA3D,OAAK,eAAA,GAAK,UAAS,YAAA;KAAe,SAAO;;;+GAdnC,eAAc,CAAA,CAAA,CAAA,EAAA,EAAA"}
|
package/esm/form/form.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.mjs","names":["$attrs"],"sources":["../../src/form/form.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Form as FormType, IFormFeedback } from '@formily/core'\nimport type { PropType } from 'vue'\nimport { FormProvider, useForm } from '@silver-formily/vue'\nimport { FormLayout } from '../form-layout'\nimport { PreviewText } from '../preview-text'\n\ndefineOptions({\n name: 'FForm',\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n form: {\n type: Object as PropType<FormType>,\n },\n previewTextPlaceholder: {\n type: String,\n },\n onAutoSubmit: {\n type: Function as PropType<(values: FormType['values']) => Promise<any>>,\n },\n onAutoSubmitFailed: {\n type: Function as PropType<(error: IFormFeedback[]) => void>,\n },\n})\n\nconst top = useForm()\n\nfunction handleSubmit(e: Event, form: FormType) {\n form\n .submit(values => props.onAutoSubmit?.(values))\n .catch(error => props.onAutoSubmitFailed?.(error))\n}\n</script>\n\n<template>\n <FormProvider v-if=\"props.form\" :form=\"props.form\">\n <PreviewText :placeholder=\"props.previewTextPlaceholder\">\n <FormLayout v-bind=\"$attrs\" @submit=\"(e) => handleSubmit(e, form)\">\n <slot />\n </FormLayout>\n </PreviewText>\n </FormProvider>\n <template v-else-if=\"top\">\n <PreviewText :placeholder=\"props.previewTextPlaceholder\">\n <FormLayout\n v-bind=\"$attrs\"\n @submit.prevent.stop=\"(e) => handleSubmit(e, top)\"\n >\n <slot />\n </FormLayout>\n </PreviewText>\n </template>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EAed,MAAM,MAAM,SAAQ;EAEpB,SAAS,aAAa,GAAU,MAAgB;AAC9C,QACG,QAAO,WAAU,MAAM,eAAe,OAAO,CAAA,CAC7C,OAAM,UAAS,MAAM,qBAAqB,MAAM,CAAA;;;UAK/B,MAAM,QAAA,WAAA,EAA1B,YAMe,MAAA,aAAA,EAAA;;IANkB,MAAM,MAAM;;2BAK7B,CAJd,YAIc,MAAA,YAAA,EAAA,EAJA,aAAa,MAAM,wBAAA,EAAA;4BAGlB,CAFb,YAEa,MAAA,YAAA,EAFb,WAAoBA,KAEP,QAFa,EAAG,UAAM,OAAA,OAAA,OAAA,MAAG,MAAM,aAAa,GAAG,QAAA,KAAI,GAAA,CAAA,EAAA;6BACtD,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;sBAIO,MAAA,IAAG,IAAA,WAAA,EACtB,YAOc,MAAA,YAAA,EAAA;;IAPA,aAAa,MAAM;;2BAMlB,CALb,YAKa,MAAA,YAAA,EALb,WACUA,KAIG,QAJG,EACb,UAAM,OAAA,OAAA,OAAA,KAAA,eAAgB,MAAM,aAAa,GAAG,MAAA,IAAG,CAAA,EAAA,CAAA,WAAA,OAAA,CAAA,GAAA,CAAA,EAAA;4BAExC,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"form.mjs","names":["$attrs"],"sources":["../../src/form/form.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Form as FormType, IFormFeedback } from '@silver-formily/core'\nimport type { PropType } from 'vue'\nimport { FormProvider, useForm } from '@silver-formily/vue'\nimport { FormLayout } from '../form-layout'\nimport { PreviewText } from '../preview-text'\n\ndefineOptions({\n name: 'FForm',\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n form: {\n type: Object as PropType<FormType>,\n },\n previewTextPlaceholder: {\n type: String,\n },\n onAutoSubmit: {\n type: Function as PropType<(values: FormType['values']) => Promise<any>>,\n },\n onAutoSubmitFailed: {\n type: Function as PropType<(error: IFormFeedback[]) => void>,\n },\n})\n\nconst top = useForm()\n\nfunction handleSubmit(e: Event, form: FormType) {\n form\n .submit(values => props.onAutoSubmit?.(values))\n .catch(error => props.onAutoSubmitFailed?.(error))\n}\n</script>\n\n<template>\n <FormProvider v-if=\"props.form\" :form=\"props.form\">\n <PreviewText :placeholder=\"props.previewTextPlaceholder\">\n <FormLayout v-bind=\"$attrs\" @submit=\"(e) => handleSubmit(e, form)\">\n <slot />\n </FormLayout>\n </PreviewText>\n </FormProvider>\n <template v-else-if=\"top\">\n <PreviewText :placeholder=\"props.previewTextPlaceholder\">\n <FormLayout\n v-bind=\"$attrs\"\n @submit.prevent.stop=\"(e) => handleSubmit(e, top)\"\n >\n <slot />\n </FormLayout>\n </PreviewText>\n </template>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EAed,MAAM,MAAM,SAAQ;EAEpB,SAAS,aAAa,GAAU,MAAgB;AAC9C,QACG,QAAO,WAAU,MAAM,eAAe,OAAO,CAAA,CAC7C,OAAM,UAAS,MAAM,qBAAqB,MAAM,CAAA;;;UAK/B,MAAM,QAAA,WAAA,EAA1B,YAMe,MAAA,aAAA,EAAA;;IANkB,MAAM,MAAM;;2BAK7B,CAJd,YAIc,MAAA,YAAA,EAAA,EAJA,aAAa,MAAM,wBAAA,EAAA;4BAGlB,CAFb,YAEa,MAAA,YAAA,EAFb,WAAoBA,KAEP,QAFa,EAAG,UAAM,OAAA,OAAA,OAAA,MAAG,MAAM,aAAa,GAAG,QAAA,KAAI,GAAA,CAAA,EAAA;6BACtD,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;;;sBAIO,MAAA,IAAG,IAAA,WAAA,EACtB,YAOc,MAAA,YAAA,EAAA;;IAPA,aAAa,MAAM;;2BAMlB,CALb,YAKa,MAAA,YAAA,EALb,WACUA,KAIG,QAJG,EACb,UAAM,OAAA,OAAA,OAAA,KAAA,eAAgB,MAAM,aAAa,GAAG,MAAA,IAAG,CAAA,EAAA,CAAA,WAAA,OAAA,CAAA,GAAA,CAAA,EAAA;4BAExC,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
|
package/esm/form/form.vue.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { ElBadge, ElCollapse, ElCollapseItem } from "element-plus";
|
|
|
5
5
|
import { formilyComputed } from "@silver-formily/reactive-vue";
|
|
6
6
|
import { Fragment, computed, createBlock, createElementBlock, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderList, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
|
|
7
7
|
import { RecursionField, useField, useFieldSchema } from "@silver-formily/vue";
|
|
8
|
-
import { isFn } from "@formily/shared";
|
|
8
|
+
import { isFn } from "@silver-formily/shared";
|
|
9
9
|
//#region src/form-collapse/form-collapse.vue
|
|
10
10
|
const _hoisted_1 = { key: 1 };
|
|
11
11
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-collapse.mjs","names":[],"sources":["../../src/form-collapse/form-collapse.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType } from 'vue'\nimport type { IFormCollapse } from './utils'\nimport {
|
|
1
|
+
{"version":3,"file":"form-collapse.mjs","names":[],"sources":["../../src/form-collapse/form-collapse.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { PropType } from 'vue'\nimport type { IFormCollapse } from './utils'\nimport { formilyComputed } from '@silver-formily/reactive-vue'\nimport { isFn } from '@silver-formily/shared'\nimport { RecursionField, useField, useFieldSchema } from '@silver-formily/vue'\nimport { ElBadge, ElCollapse, ElCollapseItem } from 'element-plus'\nimport { computed } from 'vue'\nimport { stylePrefix, useCleanAttrs } from '../__builtins__'\nimport { createFormCollapse, usePanels } from './utils'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = defineProps({\n formCollapse: { type: Object as PropType<IFormCollapse> },\n activeKey: {\n type: [String, Number],\n },\n})\nconst prefixCls = `${stylePrefix}-form-collapse`\nconst { props: collapseAttrs } = useCleanAttrs(['modelValue', 'onUpdate:modelValue'])\n\nconst field = useField()\nconst schema = useFieldSchema()\nconst panels = formilyComputed(() => usePanels(field.value, schema.value))\nconst formCollapseRef = computed(\n () => props.formCollapse ?? createFormCollapse(),\n)\n\nfunction takeActiveKeys(panelList) {\n if (props.activeKey)\n return props.activeKey\n if (formCollapseRef.value?.activeKeys)\n return formCollapseRef.value?.activeKeys\n return panelList.map(item => item.name)\n}\n\nconst panelErrorCounts = formilyComputed(() => {\n return panels.value.map((item) => {\n const panelErrors = field.value.form.queryFeedbacks({\n type: 'error',\n address: `${field.value.address.concat(item.name)}.*`,\n })\n return panelErrors.length\n })\n})\n</script>\n\n<template>\n <ElCollapse\n :class=\"prefixCls\"\n :model-value=\"takeActiveKeys(panels)\"\n v-bind=\"collapseAttrs\"\n @change=\"(key) => {\n formCollapseRef.setActiveKeys(key)\n }\"\n >\n <template v-for=\"({ props: itemProps, schema: itemSchema, name }, index) of panels\" :key=\"name\">\n <ElCollapseItem v-bind=\"itemProps\" :name=\"name\">\n <template #default>\n <RecursionField :schema=\"itemSchema\" :name=\"name\" />\n </template>\n <template #title>\n <ElBadge\n v-if=\"panelErrorCounts[index] !== 0\"\n :class=\"`${prefixCls}-errors-badge`\"\n :value=\"panelErrorCounts[index]\"\n >\n <component\n :is=\"() => isFn(itemSchema['x-content']?.title)\n ? itemSchema['x-content']?.title(panelErrorCounts[index])\n : itemSchema['x-content']?.title\"\n v-if=\"itemSchema['x-content']?.title\"\n />\n <span v-else>{{ itemSchema['x-component-props']?.title }}</span>\n </ElBadge>\n <template v-else>\n <component\n :is=\"() => isFn(itemSchema['x-content']?.title)\n ? itemSchema['x-content']?.title(panelErrorCounts[index])\n : itemSchema['x-content']?.title\"\n v-if=\"itemSchema['x-content']?.title\"\n />\n <template v-else>\n {{ itemSchema['x-component-props']?.title }}\n </template>\n </template>\n </template>\n </ElCollapseItem>\n </template>\n </ElCollapse>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EAMd,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,EAAE,OAAO,kBAAkB,cAAc,CAAC,cAAc,sBAAsB,CAAA;EAEpF,MAAM,QAAQ,UAAS;EACvB,MAAM,SAAS,gBAAe;EAC9B,MAAM,SAAS,sBAAsB,UAAU,MAAM,OAAO,OAAO,MAAM,CAAA;EACzE,MAAM,kBAAkB,eAChB,MAAM,gBAAgB,oBAAoB,CAClD;EAEA,SAAS,eAAe,WAAW;AACjC,OAAI,MAAM,UACR,QAAO,MAAM;AACf,OAAI,gBAAgB,OAAO,WACzB,QAAO,gBAAgB,OAAO;AAChC,UAAO,UAAU,KAAI,SAAQ,KAAK,KAAI;;EAGxC,MAAM,mBAAmB,sBAAsB;AAC7C,UAAO,OAAO,MAAM,KAAK,SAAS;AAKhC,WAJoB,MAAM,MAAM,KAAK,eAAe;KAClD,MAAM;KACN,SAAS,GAAG,MAAM,MAAM,QAAQ,OAAO,KAAK,KAAK,CAAC;KACnD,CAAA,CACkB;KACpB;IACF;;uBAIC,YAyCa,MAAA,WAAA,EAzCb,WAyCa;IAxCV,OAAO;IACP,eAAa,eAAe,MAAA,OAAM,CAAA;MAC3B,MAAA,cAAa,EAAA,EACpB,UAAM,OAAA,OAAA,OAAA,MAAG,QAAG;AAAa,oBAAA,MAAgB,cAAc,IAAG;;2BAIwB,EAAA,UAAA,KAAA,EAAnF,mBAgCW,UAAA,MAAA,WAhCiE,MAAA,OAAM,GAAA,EAAA,OAAvD,WAAS,QAAU,YAAY,QAAQ,UAAK;yBACrE,YA8BiB,MAAA,eAAA,EA9BjB,WA8BiB;WA/BuE;;QAChE,WAAS,EAAS,MAAI,CAAA,EAAA;MACjC,SAAO,cACoC,CAApD,YAAoD,MAAA,eAAA,EAAA;OAAnC,QAAQ;OAAmB;;MAEnC,OAAK,cAaJ,CAXF,MAAA,iBAAgB,CAAC,WAAK,KAAA,WAAA,EAD9B,YAYU,MAAA,QAAA,EAAA;;OAVP,OAAK,eAAA,GAAK,UAAS,eAAA;OACnB,OAAO,MAAA,iBAAgB,CAAC;;8BAOvB,CADM,WAAU,cAAe,SAAA,WAAA,EAJjC,YAKE,8BAJW,MAAA,KAAI,CAAC,WAAU,cAAe,MAAK,GAAoB,WAAU,cAAe,MAAM,MAAA,iBAAgB,CAAC,OAAK,GAAqB,WAAU,cAAe,MAAK,EAAA,EAAA,KAAA,GAAA,CAAA,KAAA,WAAA,EAK5K,mBAAgE,QAAA,YAAA,gBAAhD,WAAU,sBAAuB,MAAK,EAAA,EAAA,EAAA,CAAA;;oDAExD,mBAUW,UAAA,EAAA,KAAA,GAAA,EAAA,CALD,WAAU,cAAe,SAAA,WAAA,EAJjC,YAKE,8BAJW,MAAA,KAAI,CAAC,WAAU,cAAe,MAAK,GAAoB,WAAU,cAAe,MAAM,MAAA,iBAAgB,CAAC,OAAK,GAAqB,WAAU,cAAe,MAAK,EAAA,EAAA,KAAA,GAAA,CAAA,KAAA,WAAA,EAK5K,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,WAAU,sBAAuB,MAAK,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,GAAA,EAAA,CAAA"}
|
|
@@ -11,7 +11,7 @@ declare const composeFormCollapse: {
|
|
|
11
11
|
type: _$vue.PropType<IFormCollapse>;
|
|
12
12
|
};
|
|
13
13
|
activeKey: {
|
|
14
|
-
type: (
|
|
14
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
15
15
|
};
|
|
16
16
|
}>> & Readonly<{}>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, _$vue.PublicProps, {}, true, {}, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, {}, any, _$vue.ComponentProvideOptions, {
|
|
17
17
|
P: {};
|
|
@@ -25,7 +25,7 @@ declare const composeFormCollapse: {
|
|
|
25
25
|
type: _$vue.PropType<IFormCollapse>;
|
|
26
26
|
};
|
|
27
27
|
activeKey: {
|
|
28
|
-
type: (
|
|
28
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
29
29
|
};
|
|
30
30
|
}>> & Readonly<{}>, {}, {}, {}, {}, {}>;
|
|
31
31
|
__isFragment?: never;
|
|
@@ -36,7 +36,7 @@ declare const composeFormCollapse: {
|
|
|
36
36
|
type: _$vue.PropType<IFormCollapse>;
|
|
37
37
|
};
|
|
38
38
|
activeKey: {
|
|
39
|
-
type: (
|
|
39
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
40
40
|
};
|
|
41
41
|
}>> & Readonly<{}>, {}, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, {}, {}, string, {}, _$vue.GlobalComponents, _$vue.GlobalDirectives, string, _$vue.ComponentProvideOptions> & _$vue.VNodeProps & _$vue.AllowedComponentProps & _$vue.ComponentCustomProps & {
|
|
42
42
|
Item: _$vue.DefineComponent<{}, () => _$vue.VNode<_$vue.RendererNode, _$vue.RendererElement, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GeneralField } from "@formily/core";
|
|
2
|
-
import { Schema, SchemaKey } from "@formily/json-schema";
|
|
1
|
+
import { GeneralField } from "@silver-formily/core";
|
|
2
|
+
import { Schema, SchemaKey } from "@silver-formily/json-schema";
|
|
3
3
|
|
|
4
4
|
//#region src/form-collapse/utils.d.ts
|
|
5
5
|
type ActiveKeys = string | number | Array<string | number>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { toArr } from "@formily/shared";
|
|
2
|
-
import { model } from "@formily/reactive";
|
|
1
|
+
import { toArr } from "@silver-formily/shared";
|
|
2
|
+
import { model } from "@silver-formily/reactive";
|
|
3
3
|
//#region src/form-collapse/utils.ts
|
|
4
4
|
function usePanels(collapseField, schema) {
|
|
5
5
|
return schema.mapProperties((schema, name) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/form-collapse/utils.ts"],"sourcesContent":["import type { GeneralField } from '@formily/core'\nimport type { Schema, SchemaKey } from '@formily/json-schema'\nimport { model } from '@formily/reactive'\nimport { toArr } from '@formily/shared'\n\ntype ActiveKeys = string | number | Array<string | number>\n\ntype ActiveKey = string | number\n\ntype Panels = { name: SchemaKey, props: any, schema: Schema }[]\n\nexport interface IFormCollapse {\n activeKeys: ActiveKeys\n hasActiveKey: (key: ActiveKey) => boolean\n setActiveKeys: (key: ActiveKeys) => void\n addActiveKey: (key: ActiveKey) => void\n removeActiveKey: (key: ActiveKey) => void\n toggleActiveKey: (key: ActiveKey) => void\n}\n\nexport interface IFormCollapseProps {\n formCollapse?: IFormCollapse\n activeKey?: ActiveKey\n}\n\nexport function usePanels(collapseField: GeneralField, schema: Schema) {\n const schemaList = schema.mapProperties((schema, name) => ({\n name,\n props: {\n ...schema?.['x-component-props'],\n key: schema?.['x-component-props']?.key || name,\n },\n schema,\n }))\n\n const panels: Panels = schemaList.filter((item) => {\n const field = collapseField.query(collapseField.address.concat(item.name)).take()\n const isHidden = field?.display === 'none' || field?.display === 'hidden'\n if (isHidden)\n return false\n return item?.schema?.['x-component']?.includes('FormCollapse.Item') ?? false\n })\n\n return panels\n}\n\nexport function createFormCollapse(defaultActiveKeys?: ActiveKeys) {\n const formCollapse = model({\n activeKeys: defaultActiveKeys,\n setActiveKeys(keys: ActiveKeys) {\n /* istanbul ignore if -- @preserve */\n if (keys === formCollapse.activeKeys)\n return\n formCollapse.activeKeys = keys\n },\n hasActiveKey(key: ActiveKey) {\n if (Array.isArray(formCollapse.activeKeys)) {\n if (formCollapse.activeKeys.includes(key)) {\n return true\n }\n }\n else if (formCollapse.activeKeys === key) {\n return true\n }\n return false\n },\n addActiveKey(key: ActiveKey) {\n /* istanbul ignore if -- @preserve */\n if (formCollapse.hasActiveKey(key))\n return\n formCollapse.activeKeys = toArr(formCollapse.activeKeys).concat(key)\n },\n removeActiveKey(key: ActiveKey) {\n formCollapse.activeKeys = Array.isArray(formCollapse.activeKeys)\n ? formCollapse.activeKeys.filter(\n item => item !== key,\n )\n : ''\n },\n toggleActiveKey(key: ActiveKey) {\n if (formCollapse.hasActiveKey(key)) {\n formCollapse.removeActiveKey(key)\n }\n else {\n formCollapse.addActiveKey(key)\n }\n },\n })\n return formCollapse\n}\n"],"mappings":";;;AAyBA,SAAgB,UAAU,eAA6B,QAAgB;AAkBrE,QAjBmB,OAAO,eAAe,QAAQ,UAAU;EACzD;EACA,OAAO;GACL,GAAG,SAAS;GACZ,KAAK,SAAS,sBAAsB,OAAO;GAC5C;EACD;EACD,EAAE,CAE+B,QAAQ,SAAS;EACjD,MAAM,QAAQ,cAAc,MAAM,cAAc,QAAQ,OAAO,KAAK,KAAK,CAAC,CAAC,MAAM;AAEjF,MADiB,OAAO,YAAY,UAAU,OAAO,YAAY,SAE/D,QAAO;AACT,SAAO,MAAM,SAAS,gBAAgB,SAAS,oBAAoB,IAAI;GACvE;;AAKJ,SAAgB,mBAAmB,mBAAgC;CACjE,MAAM,eAAe,MAAM;EACzB,YAAY;EACZ,cAAc,MAAkB;;AAE9B,OAAI,SAAS,aAAa,WACxB;AACF,gBAAa,aAAa;;EAE5B,aAAa,KAAgB;AAC3B,OAAI,MAAM,QAAQ,aAAa,WAAW;QACpC,aAAa,WAAW,SAAS,IAAI,CACvC,QAAO;cAGF,aAAa,eAAe,IACnC,QAAO;AAET,UAAO;;EAET,aAAa,KAAgB;;AAE3B,OAAI,aAAa,aAAa,IAAI,CAChC;AACF,gBAAa,aAAa,MAAM,aAAa,WAAW,CAAC,OAAO,IAAI;;EAEtE,gBAAgB,KAAgB;AAC9B,gBAAa,aAAa,MAAM,QAAQ,aAAa,WAAW,GAC5D,aAAa,WAAW,QACtB,SAAQ,SAAS,IAClB,GACD;;EAEN,gBAAgB,KAAgB;AAC9B,OAAI,aAAa,aAAa,IAAI,CAChC,cAAa,gBAAgB,IAAI;OAGjC,cAAa,aAAa,IAAI;;EAGnC,CAAC;AACF,QAAO"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/form-collapse/utils.ts"],"sourcesContent":["import type { GeneralField } from '@silver-formily/core'\nimport type { Schema, SchemaKey } from '@silver-formily/json-schema'\nimport { model } from '@silver-formily/reactive'\nimport { toArr } from '@silver-formily/shared'\n\ntype ActiveKeys = string | number | Array<string | number>\n\ntype ActiveKey = string | number\n\ntype Panels = { name: SchemaKey, props: any, schema: Schema }[]\n\nexport interface IFormCollapse {\n activeKeys: ActiveKeys\n hasActiveKey: (key: ActiveKey) => boolean\n setActiveKeys: (key: ActiveKeys) => void\n addActiveKey: (key: ActiveKey) => void\n removeActiveKey: (key: ActiveKey) => void\n toggleActiveKey: (key: ActiveKey) => void\n}\n\nexport interface IFormCollapseProps {\n formCollapse?: IFormCollapse\n activeKey?: ActiveKey\n}\n\nexport function usePanels(collapseField: GeneralField, schema: Schema) {\n const schemaList = schema.mapProperties((schema, name) => ({\n name,\n props: {\n ...schema?.['x-component-props'],\n key: schema?.['x-component-props']?.key || name,\n },\n schema,\n }))\n\n const panels: Panels = schemaList.filter((item) => {\n const field = collapseField.query(collapseField.address.concat(item.name)).take()\n const isHidden = field?.display === 'none' || field?.display === 'hidden'\n if (isHidden)\n return false\n return item?.schema?.['x-component']?.includes('FormCollapse.Item') ?? false\n })\n\n return panels\n}\n\nexport function createFormCollapse(defaultActiveKeys?: ActiveKeys) {\n const formCollapse = model({\n activeKeys: defaultActiveKeys,\n setActiveKeys(keys: ActiveKeys) {\n /* istanbul ignore if -- @preserve */\n if (keys === formCollapse.activeKeys)\n return\n formCollapse.activeKeys = keys\n },\n hasActiveKey(key: ActiveKey) {\n if (Array.isArray(formCollapse.activeKeys)) {\n if (formCollapse.activeKeys.includes(key)) {\n return true\n }\n }\n else if (formCollapse.activeKeys === key) {\n return true\n }\n return false\n },\n addActiveKey(key: ActiveKey) {\n /* istanbul ignore if -- @preserve */\n if (formCollapse.hasActiveKey(key))\n return\n formCollapse.activeKeys = toArr(formCollapse.activeKeys).concat(key)\n },\n removeActiveKey(key: ActiveKey) {\n formCollapse.activeKeys = Array.isArray(formCollapse.activeKeys)\n ? formCollapse.activeKeys.filter(\n item => item !== key,\n )\n : ''\n },\n toggleActiveKey(key: ActiveKey) {\n if (formCollapse.hasActiveKey(key)) {\n formCollapse.removeActiveKey(key)\n }\n else {\n formCollapse.addActiveKey(key)\n }\n },\n })\n return formCollapse\n}\n"],"mappings":";;;AAyBA,SAAgB,UAAU,eAA6B,QAAgB;AAkBrE,QAjBmB,OAAO,eAAe,QAAQ,UAAU;EACzD;EACA,OAAO;GACL,GAAG,SAAS;GACZ,KAAK,SAAS,sBAAsB,OAAO;GAC5C;EACD;EACD,EAAE,CAE+B,QAAQ,SAAS;EACjD,MAAM,QAAQ,cAAc,MAAM,cAAc,QAAQ,OAAO,KAAK,KAAK,CAAC,CAAC,MAAM;AAEjF,MADiB,OAAO,YAAY,UAAU,OAAO,YAAY,SAE/D,QAAO;AACT,SAAO,MAAM,SAAS,gBAAgB,SAAS,oBAAoB,IAAI;GACvE;;AAKJ,SAAgB,mBAAmB,mBAAgC;CACjE,MAAM,eAAe,MAAM;EACzB,YAAY;EACZ,cAAc,MAAkB;;AAE9B,OAAI,SAAS,aAAa,WACxB;AACF,gBAAa,aAAa;;EAE5B,aAAa,KAAgB;AAC3B,OAAI,MAAM,QAAQ,aAAa,WAAW;QACpC,aAAa,WAAW,SAAS,IAAI,CACvC,QAAO;cAGF,aAAa,eAAe,IACnC,QAAO;AAET,UAAO;;EAET,aAAa,KAAgB;;AAE3B,OAAI,aAAa,aAAa,IAAI,CAChC;AACF,gBAAa,aAAa,MAAM,aAAa,WAAW,CAAC,OAAO,IAAI;;EAEtE,gBAAgB,KAAgB;AAC9B,gBAAa,aAAa,MAAM,QAAQ,aAAa,WAAW,GAC5D,aAAa,WAAW,QACtB,SAAQ,SAAS,IAClB,GACD;;EAEN,gBAAgB,KAAgB;AAC9B,OAAI,aAAa,aAAa,IAAI,CAChC,cAAa,gBAAgB,IAAI;OAGjC,cAAa,aAAa,IAAI;;EAGnC,CAAC;AACF,QAAO"}
|
|
@@ -6,7 +6,7 @@ import { resolveDialogElement } from "../shared/overlay-elements.mjs";
|
|
|
6
6
|
import { ElButton, ElConfigProvider, ElDialog } from "element-plus";
|
|
7
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
|
-
import { isFn } from "@formily/shared";
|
|
9
|
+
import { isFn } from "@silver-formily/shared";
|
|
10
10
|
import { omit } from "lodash-es";
|
|
11
11
|
//#region src/form-dialog/dialog-content.vue
|
|
12
12
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-content.mjs","names":[],"sources":["../../src/form-dialog/dialog-content.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@formily/core'\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { FormDialogSlots, IFormDialogProps } from './types'\nimport { isFn } from '@formily/shared'\nimport { FormProvider } from '@silver-formily/vue'\nimport { ElButton, ElConfigProvider, ElDialog } 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 { resolveDialogElement } from '../shared/overlay-elements'\n\ndefineOptions({\n name: 'FormDialogContent',\n})\nconst props = defineProps({\n dialogProps: {\n type: Object as PropType<IFormDialogProps>,\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})\n\nconst slots = defineSlots<FormDialogSlots>()\nconst prefixCls = `${stylePrefix}-form-dialog`\nconst elConfig = loadElConfigProvider()\nconst _dialogProps = omit(props.dialogProps, [\n 'modelValue',\n 'onUpdate:modelValue',\n 'beforeClose',\n 'enterSubmit',\n])\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\nconst dialogRef = ref<ComponentPublicInstance | null>(null)\nconst enableEnterSubmit = computed(() => props.dialogProps.enterSubmit !== false)\n\nuseEnterSubmit({\n visible: computed(() => props.visible),\n resolve: () => props.resolve(),\n submitting: internalSubmitting,\n getContainer: () => resolveDialogElement(dialogRef.value),\n enabled: enableEnterSubmit,\n})\n</script>\n\n<template>\n <ElDialog\n ref=\"dialogRef\"\n :class=\"prefixCls\"\n :z-index=\"elConfig.zIndex\"\n v-bind=\"_dialogProps\"\n :model-value=\"visible\"\n :before-close=\"(done) => {\n reject()\n if (isFn(props.dialogProps.beforeClose)) {\n props.dialogProps.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=\"props.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=\"_dialogProps.cancelButtonProps\"\n @click=\"props.reject()\"\n >\n {{ _dialogProps.cancelText || '取消' }}\n </ElButton>\n <ElButton\n type=\"primary\"\n v-bind=\"_dialogProps.okButtonProps\"\n :loading=\"internalSubmitting\"\n @click=\"props.resolve()\"\n >\n {{ _dialogProps.okText || '确定' }}\n </ElButton>\n </template>\n </div>\n </template>\n </ElDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAuBd,MAAM,QAAQ,UAAA;EACd,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,WAAW,sBAAqB;EACtC,MAAM,eAAe,KAAK,MAAM,aAAa;GAC3C;GACA;GACA;GACA;GACD,CAAA;EACD,MAAM,EAAE,uBAAuB,qBAAqB,MAAM,KAAI;EAC9D,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,MAAM,MAAA,EAAA;4BAGN,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,MAAM,QAAM,GAAA,CAAA,EAAA;4BAEiB,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,MAAM,SAAO;;4BAEY,CAAA,gBAAA,gBAA9B,MAAA,aAAY,CAAC,UAAM,KAAA,EAAA,EAAA,CAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"dialog-content.mjs","names":[],"sources":["../../src/form-dialog/dialog-content.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@silver-formily/core'\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { FormDialogSlots, IFormDialogProps } from './types'\nimport { isFn } from '@silver-formily/shared'\nimport { FormProvider } from '@silver-formily/vue'\nimport { ElButton, ElConfigProvider, ElDialog } 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 { resolveDialogElement } from '../shared/overlay-elements'\n\ndefineOptions({\n name: 'FormDialogContent',\n})\nconst props = defineProps({\n dialogProps: {\n type: Object as PropType<IFormDialogProps>,\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})\n\nconst slots = defineSlots<FormDialogSlots>()\nconst prefixCls = `${stylePrefix}-form-dialog`\nconst elConfig = loadElConfigProvider()\nconst _dialogProps = omit(props.dialogProps, [\n 'modelValue',\n 'onUpdate:modelValue',\n 'beforeClose',\n 'enterSubmit',\n])\nconst { internalSubmitting } = useDebonceSubmitting(props.form)\nconst dialogRef = ref<ComponentPublicInstance | null>(null)\nconst enableEnterSubmit = computed(() => props.dialogProps.enterSubmit !== false)\n\nuseEnterSubmit({\n visible: computed(() => props.visible),\n resolve: () => props.resolve(),\n submitting: internalSubmitting,\n getContainer: () => resolveDialogElement(dialogRef.value),\n enabled: enableEnterSubmit,\n})\n</script>\n\n<template>\n <ElDialog\n ref=\"dialogRef\"\n :class=\"prefixCls\"\n :z-index=\"elConfig.zIndex\"\n v-bind=\"_dialogProps\"\n :model-value=\"visible\"\n :before-close=\"(done) => {\n reject()\n if (isFn(props.dialogProps.beforeClose)) {\n props.dialogProps.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=\"props.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=\"_dialogProps.cancelButtonProps\"\n @click=\"props.reject()\"\n >\n {{ _dialogProps.cancelText || '取消' }}\n </ElButton>\n <ElButton\n type=\"primary\"\n v-bind=\"_dialogProps.okButtonProps\"\n :loading=\"internalSubmitting\"\n @click=\"props.resolve()\"\n >\n {{ _dialogProps.okText || '确定' }}\n </ElButton>\n </template>\n </div>\n </template>\n </ElDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAuBd,MAAM,QAAQ,UAAA;EACd,MAAM,YAAY,GAAG,YAAY;EACjC,MAAM,WAAW,sBAAqB;EACtC,MAAM,eAAe,KAAK,MAAM,aAAa;GAC3C;GACA;GACA;GACA;GACD,CAAA;EACD,MAAM,EAAE,uBAAuB,qBAAqB,MAAM,KAAI;EAC9D,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,MAAM,MAAA,EAAA;4BAGN,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,MAAM,QAAM,GAAA,CAAA,EAAA;4BAEiB,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,MAAM,SAAO;;4BAEY,CAAA,gBAAA,gBAA9B,MAAA,aAAY,CAAC,UAAM,KAAA,EAAA,EAAA,CAAA,CAAA"}
|
|
@@ -3,10 +3,10 @@ import { isVueOptions } from "../__builtins__/shared/utils.mjs";
|
|
|
3
3
|
import _sfc_main from "./dialog-content.mjs";
|
|
4
4
|
import { observer } from "@silver-formily/reactive-vue";
|
|
5
5
|
import { createApp, h, ref } from "vue";
|
|
6
|
-
import { createForm } from "@formily/core";
|
|
7
|
-
import { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from "@formily/shared";
|
|
6
|
+
import { createForm } from "@silver-formily/core";
|
|
7
|
+
import { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from "@silver-formily/shared";
|
|
8
8
|
import { camelCase } from "lodash-es";
|
|
9
|
-
import { toJS } from "@formily/reactive";
|
|
9
|
+
import { toJS } from "@silver-formily/reactive";
|
|
10
10
|
//#region src/form-dialog/index.ts
|
|
11
11
|
function FormDialog(title, content, dynamicMiddlewareNames) {
|
|
12
12
|
const env = {
|
|
@@ -1 +1 @@
|
|
|
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 '@
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["DialogContent"],"sources":["../../src/form-dialog/index.ts"],"sourcesContent":["import type { Form, IFormProps } from '@silver-formily/core'\nimport type { IMiddleware } from '@silver-formily/shared'\nimport type { App, Component } from 'vue'\nimport type { FormDialogSlotContent, IFormDialog, IFormDialogProps } from './types'\nimport { createForm } from '@silver-formily/core'\nimport { toJS } from '@silver-formily/reactive'\nimport { observer } from '@silver-formily/reactive-vue'\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@silver-formily/shared'\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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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ButtonProps, DialogProps } from "element-plus";
|
|
2
2
|
import { SlotsType, VNode } from "vue";
|
|
3
|
-
import { Form, IFormProps } from "@formily/core";
|
|
4
|
-
import { IMiddleware } from "@formily/shared";
|
|
3
|
+
import { Form, IFormProps } from "@silver-formily/core";
|
|
4
|
+
import { IMiddleware } from "@silver-formily/shared";
|
|
5
5
|
|
|
6
6
|
//#region src/form-dialog/types.d.ts
|
|
7
7
|
type IFormDialogProps = Partial<DialogProps> & {
|
|
@@ -6,7 +6,7 @@ import { resolveDrawerElement } from "../shared/overlay-elements.mjs";
|
|
|
6
6
|
import { ElButton, ElConfigProvider, ElDrawer } from "element-plus";
|
|
7
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
|
-
import { isFn } from "@formily/shared";
|
|
9
|
+
import { isFn } from "@silver-formily/shared";
|
|
10
10
|
import { omit } from "lodash-es";
|
|
11
11
|
//#region src/form-drawer/drawer-content.vue
|
|
12
12
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -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 #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
|
+
{"version":3,"file":"drawer-content.mjs","names":[],"sources":["../../src/form-drawer/drawer-content.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Form } from '@silver-formily/core'\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { FormDrawerSlots, IFormDrawerProps } from './types'\nimport { isFn } from '@silver-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"}
|
|
@@ -3,10 +3,10 @@ import { isVueOptions } from "../__builtins__/shared/utils.mjs";
|
|
|
3
3
|
import _sfc_main from "./drawer-content.mjs";
|
|
4
4
|
import { observer } from "@silver-formily/reactive-vue";
|
|
5
5
|
import { createApp, h, ref } from "vue";
|
|
6
|
-
import { createForm } from "@formily/core";
|
|
7
|
-
import { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from "@formily/shared";
|
|
6
|
+
import { createForm } from "@silver-formily/core";
|
|
7
|
+
import { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from "@silver-formily/shared";
|
|
8
8
|
import { camelCase } from "lodash-es";
|
|
9
|
-
import { toJS } from "@formily/reactive";
|
|
9
|
+
import { toJS } from "@silver-formily/reactive";
|
|
10
10
|
//#region src/form-drawer/index.ts
|
|
11
11
|
function FormDrawer(title, content, dynamicMiddlewareNames) {
|
|
12
12
|
const env = {
|
|
@@ -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 '@
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["DrawerContent"],"sources":["../../src/form-drawer/index.ts"],"sourcesContent":["import type { Form, IFormProps } from '@silver-formily/core'\nimport type { IMiddleware } from '@silver-formily/shared'\nimport type { App, Component } from 'vue'\nimport type { FormDrawerSlotContent, IFormDrawer, IFormDrawerProps } from './types'\nimport { createForm } from '@silver-formily/core'\nimport { toJS } from '@silver-formily/reactive'\nimport { observer } from '@silver-formily/reactive-vue'\nimport { applyMiddleware, isArr, isFn, isStr, isValid, pascalCase } from '@silver-formily/shared'\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,7 +1,7 @@
|
|
|
1
1
|
import { ButtonProps, DrawerProps } from "element-plus";
|
|
2
2
|
import { SlotsType, VNode } from "vue";
|
|
3
|
-
import { Form, IFormProps } from "@formily/core";
|
|
4
|
-
import { IMiddleware } from "@formily/shared";
|
|
3
|
+
import { Form, IFormProps } from "@silver-formily/core";
|
|
4
|
+
import { IMiddleware } from "@silver-formily/shared";
|
|
5
5
|
|
|
6
6
|
//#region src/form-drawer/types.d.ts
|
|
7
7
|
type IFormDrawerProps = Partial<DrawerProps> & {
|
|
@@ -4,7 +4,7 @@ import { ElIcon, ElTooltip, formItemContextKey, useFormSize, useId, useNamespace
|
|
|
4
4
|
import { useResizeObserver } from "@vueuse/core";
|
|
5
5
|
import { Fragment, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isVNode, normalizeClass, normalizeStyle, openBlock, provide, reactive, ref, renderSlot, resolveDynamicComponent, toDisplayString, unref, useSlots, watch, withCtx } from "vue";
|
|
6
6
|
import { useField } from "@silver-formily/vue";
|
|
7
|
-
import { isArr, isValid } from "@formily/shared";
|
|
7
|
+
import { isArr, isValid } from "@silver-formily/shared";
|
|
8
8
|
import { pick } from "lodash-es";
|
|
9
9
|
import { CircleCheck, CircleClose, InfoFilled, Warning } from "@element-plus/icons-vue";
|
|
10
10
|
import { addUnit } from "element-plus/es/utils/index";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-item.mjs","names":[],"sources":["../../src/form-item/form-item.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Field } from '@formily/core'\nimport type {\n FormItemContext,\n FormItemValidateState,\n FormValidationResult,\n TooltipInstance,\n} from 'element-plus'\nimport type { CSSProperties } from 'vue'\nimport type { ICalculatedFormLayoutProps } from '../form-layout/types'\nimport type { IFormItemProps } from './types'\nimport { CircleCheck, CircleClose, InfoFilled, Warning } from '@element-plus/icons-vue'\nimport { isArr, isValid } from '@formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { ElIcon, ElTooltip, formItemContextKey, useFormSize, useId, useNamespace } from 'element-plus'\nimport { addUnit } from 'element-plus/es/utils/index'\nimport { pick } from 'lodash-es'\nimport { computed, isVNode, provide, reactive, ref, useSlots, watch } from 'vue'\nimport { stylePrefix } from '../__builtins__'\nimport { FORM_LAYOUT_PROPS_KEYS, formLayoutShallowContext, useFormLayout } from '../form-layout/utils'\n\ndefineOptions({\n name: 'FFormItem',\n})\nconst props = withDefaults(defineProps<IFormItemProps>(), {\n asterisk: undefined,\n colon: undefined,\n labelWrap: undefined,\n fullness: undefined,\n})\nconst slots = useSlots()\nconst ns = useNamespace('form-item')\nconst prefixCls = `${stylePrefix}-form-item`\nconst rootFormItemClass = computed(() => props.internalFormItemClass || ns.b())\nconst formItemConfig = computed<Partial<ICalculatedFormLayoutProps>>(() =>\n Object.fromEntries(\n Object.entries(pick(props, FORM_LAYOUT_PROPS_KEYS))\n .filter(([_, value]) => isValid(value)),\n ),\n)\nconst formlayoutConfig = useFormLayout()\nconst formlayout = computed(() => Object.assign({\n colon: true,\n feedbackLayout: 'loose',\n fullness: false,\n labelWrap: false,\n}, formlayoutConfig.value, formItemConfig.value))\nconst field = useField<Field>()\n\nconst inheritedSize = useFormSize(undefined, { formItem: false })\nconst formItemSize = computed(() => {\n if (isValid(formlayout.value.size)) {\n return formlayout.value.size\n }\n return inheritedSize.value\n})\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst formItemRef = ref<HTMLDivElement>()\nconst labelRef = ref<HTMLElement>()\nconst feedbackTooltipRef = ref<TooltipInstance>()\ndefineExpose({\n feedbackTooltipRef,\n})\n\nconst labelPosition = computed(\n () => {\n if (formlayout.value.layout === 'vertical' || (isArr(formlayout.value.layout) && formlayout.value.layout.includes('vertical' as any))) {\n return 'top'\n }\n return formlayout.value.labelAlign ?? 'right'\n },\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top') {\n return {}\n }\n\n const labelWidth = addUnit(formlayout.value.labelWidth || '')\n if (labelWidth)\n return { width: labelWidth }\n return {}\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n const contentWidth = addUnit(formlayout.value?.wrapperWidth || '')\n if (contentWidth)\n return { width: contentWidth, flex: 'unset' }\n return {}\n})\n\nconst contentWrapperStyle = computed<CSSProperties>(() => {\n return {\n justifyContent: formlayout.value?.wrapperAlign === 'right' && 'flex-end',\n }\n})\n\nconst isRequired = computed(() =>\n props.asterisk && field.value?.pattern !== 'readPretty',\n)\n\nconst formItemClasses = computed(() => [\n rootFormItemClass.value,\n ns.m(formItemSize.value || 'default'),\n ns.is(props.feedbackStatus),\n ns.is('validating', validateState.value === 'validating'),\n ns.is('success', validateState.value === 'success'),\n ns.is('required', isRequired.value || props.asterisk),\n ns.is('no-asterisk', formlayout.value?.hideRequiredAsterisk),\n ns.is(formlayout.value.feedbackLayout),\n formlayout.value?.requireAsteriskPosition === 'right'\n ? 'asterisk-right'\n : 'asterisk-left',\n {\n [ns.m('feedback')]: formlayout.value?.statusIcon,\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n },\n])\n\nconst validateClasses = computed(() => [\n `${prefixCls}-feedback`,\n ns.is(props.feedbackStatus),\n ns.is('loose', formlayout.value.feedbackLayout === 'loose'),\n])\n\nconst hasLabel = computed<boolean>(() => {\n return (props.label !== '' && isValid(props.label)) || isValid(slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n return (\n props.for || (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n )\n})\n\nconst isGroup = computed<boolean>(() => {\n return !labelFor.value && hasLabel.value\n})\n\nasync function validate(): FormValidationResult {\n return true\n}\n/* istanbul ignore next -- @preserve */\nconst clearValidate: FormItemContext['clearValidate'] = () => {}\n/* istanbul ignore next -- @preserve */\nconst resetField: FormItemContext['resetField'] = async () => {}\n/* istanbul ignore next -- @preserve */\nconst setInitialValue: FormItemContext['setInitialValue'] = () => {}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n /* istanbul ignore else -- @preserve */\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id)\n }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n inputIds.value = inputIds.value.filter(listId => listId !== id)\n}\n\nconst isEllipsisActive = ref(false)\nuseResizeObserver(labelRef, () => {\n isEllipsisActive.value = labelRef.value?.scrollWidth > labelRef.value?.clientWidth\n})\nconst isEllipsis = computed(() => {\n return isEllipsisActive.value && !formlayout.value.labelWrap\n})\n\n// HACK computed无法监听到props.feedbackStatus的变化\nconst _validateState = ref<FormItemValidateState>('')\nconst context: FormItemContext = reactive({\n $el: formItemRef,\n labelWidth: formlayout.value?.labelWidth,\n size: formItemSize,\n validateState: _validateState.value,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate,\n labelPosition,\n inlineMessage: true,\n showMessage: true,\n fieldValue: field.value?.value,\n validateMessage: '',\n propString: '',\n setInitialValue,\n})\nwatch(() => props.feedbackStatus, (val) => {\n if (val === 'pending') {\n context.validateState = 'validating'\n return\n }\n if (val === 'warning') {\n context.validateState = ''\n return\n }\n context.validateState = val\n}, {\n immediate: true,\n})\n\nprovide(formLayoutShallowContext, ref({\n ...(isValid(formlayout.value.size) && { size: formlayout.value.size }),\n ...(isValid(formlayout.value.colon) && { colon: formlayout.value.colon }),\n}))\nprovide(formItemContextKey, context)\n</script>\n\n<template>\n <div\n ref=\"formItemRef\" :class=\"[prefixCls, formlayout.labelWrap && 'is-warp', ...formItemClasses]\"\n :role=\"isGroup ? 'group' : undefined\" :aria-labelledby=\"isGroup ? labelId : undefined\"\n >\n <component\n :is=\"labelFor ? 'label' : 'div'\" v-if=\"hasLabel\" :id=\"labelId\" :for=\"labelFor\"\n :class=\"[ns.e('label'), isValid(formlayout.labelCol) && `${prefixCls}-col-${formlayout.labelCol}`]\"\n :style=\"labelStyle\"\n >\n <!-- label -->\n <template v-if=\"isVNode(props.label)\">\n <component :is=\"props.label\" />\n </template>\n <div v-else :class=\"`${prefixCls}-label__wrapper`\">\n <ElTooltip :disabled=\"!isEllipsis && formlayout.tooltipLayout !== 'text'\">\n <span\n :class=\"{\n [`${prefixCls}-label-content`]: true,\n ['is-tooltip']: isEllipsis || (props.tooltip && formlayout.tooltipLayout === 'text'),\n }\"\n >\n <span ref=\"labelRef\">{{ props.label }}</span>\n </span>\n <template #content>\n <template v-if=\"isVNode(props.tooltip)\">\n <component :is=\"props.tooltip\" />\n </template>\n <div v-else :style=\"`width: ${labelRef?.clientWidth ?? 0}px;`\">\n <template v-if=\"isEllipsis\">\n {{ props.label }}\n </template>\n <template v-if=\"formlayout.tooltipLayout === 'text'\">\n {{ props.tooltip }}\n </template>\n </div>\n </template>\n </ElTooltip>\n <ElTooltip v-if=\"props.tooltip && !isVNode(props.tooltip) && formlayout.tooltipLayout !== 'text'\" :content=\"props.tooltip\">\n <ElIcon :class=\"`${prefixCls}-label-tooltip`\">\n <InfoFilled />\n </ElIcon>\n </ElTooltip>\n <span v-if=\"formlayout.colon\" :class=\"`${prefixCls}-colon`\">:</span>\n </div>\n </component>\n <!-- content -->\n <div\n :class=\"[\n `${prefixCls}-content__wrapper`,\n isValid(formlayout.wrapperCol) && `${prefixCls}-col-${formlayout.wrapperCol}`,\n ]\"\n :style=\"contentWrapperStyle\"\n >\n <template v-if=\"isValid(props.addonBefore)\">\n <template v-if=\"isVNode(props.addonBefore)\">\n <component :is=\"props.addonBefore\" />\n </template>\n <div v-else :class=\"`${prefixCls}-addon-before`\">\n {{ props.addonBefore }}\n </div>\n </template>\n <div\n :class=\"[\n ns.e('content'),\n formlayout.fullness && 'is-fullness',\n ns.is('addon-after', !!props.addonAfter),\n ]\" :style=\"contentStyle\"\n >\n <ElTooltip\n v-if=\"formlayout.feedbackLayout === 'popover'\"\n ref=\"feedbackTooltipRef\"\n :visible=\"!!props.feedbackText\"\n effect=\"light\"\n :offset=\"6\"\n >\n <template #default>\n <slot />\n </template>\n <template #content>\n <div :class=\"[...validateClasses, ns.is('tooltip')]\">\n <ElIcon>\n <CircleClose v-if=\"props.feedbackStatus === 'error'\" />\n <CircleCheck v-if=\"props.feedbackStatus === 'success'\" />\n <Warning v-if=\"props.feedbackStatus === 'warning'\" />\n </ElIcon>\n {{ props.feedbackText }}\n </div>\n </template>\n </ElTooltip>\n <slot v-else />\n <TransitionGroup :name=\"`${ns.namespace.value}-zoom-in-top`\">\n <div v-if=\"props.feedbackText && formlayout.feedbackLayout !== 'popover'\" :class=\"validateClasses\">\n {{ props.feedbackText }}\n </div>\n <template v-if=\"isValid(props.extra)\">\n <template v-if=\"isVNode(props.extra)\">\n <component :is=\"props.extra\" />\n </template>\n <div v-else :class=\"`${prefixCls}-extra`\">\n {{ props.extra }}\n </div>\n </template>\n </TransitionGroup>\n </div>\n <template v-if=\"isValid(props.addonAfter)\">\n <template v-if=\"isVNode(props.addonAfter)\">\n <component :is=\"props.addonAfter\" />\n </template>\n <div v-else :class=\"`${prefixCls}-addon-after`\">\n {{ props.addonAfter }}\n </div>\n </template>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-item.mjs","names":[],"sources":["../../src/form-item/form-item.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { Field } from '@silver-formily/core'\nimport type {\n FormItemContext,\n FormItemValidateState,\n FormValidationResult,\n TooltipInstance,\n} from 'element-plus'\nimport type { CSSProperties } from 'vue'\nimport type { ICalculatedFormLayoutProps } from '../form-layout/types'\nimport type { IFormItemProps } from './types'\nimport { CircleCheck, CircleClose, InfoFilled, Warning } from '@element-plus/icons-vue'\nimport { isArr, isValid } from '@silver-formily/shared'\nimport { useField } from '@silver-formily/vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport { ElIcon, ElTooltip, formItemContextKey, useFormSize, useId, useNamespace } from 'element-plus'\nimport { addUnit } from 'element-plus/es/utils/index'\nimport { pick } from 'lodash-es'\nimport { computed, isVNode, provide, reactive, ref, useSlots, watch } from 'vue'\nimport { stylePrefix } from '../__builtins__'\nimport { FORM_LAYOUT_PROPS_KEYS, formLayoutShallowContext, useFormLayout } from '../form-layout/utils'\n\ndefineOptions({\n name: 'FFormItem',\n})\nconst props = withDefaults(defineProps<IFormItemProps>(), {\n asterisk: undefined,\n colon: undefined,\n labelWrap: undefined,\n fullness: undefined,\n})\nconst slots = useSlots()\nconst ns = useNamespace('form-item')\nconst prefixCls = `${stylePrefix}-form-item`\nconst rootFormItemClass = computed(() => props.internalFormItemClass || ns.b())\nconst formItemConfig = computed<Partial<ICalculatedFormLayoutProps>>(() =>\n Object.fromEntries(\n Object.entries(pick(props, FORM_LAYOUT_PROPS_KEYS))\n .filter(([_, value]) => isValid(value)),\n ),\n)\nconst formlayoutConfig = useFormLayout()\nconst formlayout = computed(() => Object.assign({\n colon: true,\n feedbackLayout: 'loose',\n fullness: false,\n labelWrap: false,\n}, formlayoutConfig.value, formItemConfig.value))\nconst field = useField<Field>()\n\nconst inheritedSize = useFormSize(undefined, { formItem: false })\nconst formItemSize = computed(() => {\n if (isValid(formlayout.value.size)) {\n return formlayout.value.size\n }\n return inheritedSize.value\n})\n\nconst labelId = useId().value\nconst inputIds = ref<string[]>([])\n\nconst validateState = ref<FormItemValidateState>('')\nconst formItemRef = ref<HTMLDivElement>()\nconst labelRef = ref<HTMLElement>()\nconst feedbackTooltipRef = ref<TooltipInstance>()\ndefineExpose({\n feedbackTooltipRef,\n})\n\nconst labelPosition = computed(\n () => {\n if (formlayout.value.layout === 'vertical' || (isArr(formlayout.value.layout) && formlayout.value.layout.includes('vertical' as any))) {\n return 'top'\n }\n return formlayout.value.labelAlign ?? 'right'\n },\n)\n\nconst labelStyle = computed<CSSProperties>(() => {\n if (labelPosition.value === 'top') {\n return {}\n }\n\n const labelWidth = addUnit(formlayout.value.labelWidth || '')\n if (labelWidth)\n return { width: labelWidth }\n return {}\n})\n\nconst contentStyle = computed<CSSProperties>(() => {\n const contentWidth = addUnit(formlayout.value?.wrapperWidth || '')\n if (contentWidth)\n return { width: contentWidth, flex: 'unset' }\n return {}\n})\n\nconst contentWrapperStyle = computed<CSSProperties>(() => {\n return {\n justifyContent: formlayout.value?.wrapperAlign === 'right' && 'flex-end',\n }\n})\n\nconst isRequired = computed(() =>\n props.asterisk && field.value?.pattern !== 'readPretty',\n)\n\nconst formItemClasses = computed(() => [\n rootFormItemClass.value,\n ns.m(formItemSize.value || 'default'),\n ns.is(props.feedbackStatus),\n ns.is('validating', validateState.value === 'validating'),\n ns.is('success', validateState.value === 'success'),\n ns.is('required', isRequired.value || props.asterisk),\n ns.is('no-asterisk', formlayout.value?.hideRequiredAsterisk),\n ns.is(formlayout.value.feedbackLayout),\n formlayout.value?.requireAsteriskPosition === 'right'\n ? 'asterisk-right'\n : 'asterisk-left',\n {\n [ns.m('feedback')]: formlayout.value?.statusIcon,\n [ns.m(`label-${labelPosition.value}`)]: labelPosition.value,\n },\n])\n\nconst validateClasses = computed(() => [\n `${prefixCls}-feedback`,\n ns.is(props.feedbackStatus),\n ns.is('loose', formlayout.value.feedbackLayout === 'loose'),\n])\n\nconst hasLabel = computed<boolean>(() => {\n return (props.label !== '' && isValid(props.label)) || isValid(slots.label)\n})\n\nconst labelFor = computed<string | undefined>(() => {\n return (\n props.for || (inputIds.value.length === 1 ? inputIds.value[0] : undefined)\n )\n})\n\nconst isGroup = computed<boolean>(() => {\n return !labelFor.value && hasLabel.value\n})\n\nasync function validate(): FormValidationResult {\n return true\n}\n/* istanbul ignore next -- @preserve */\nconst clearValidate: FormItemContext['clearValidate'] = () => {}\n/* istanbul ignore next -- @preserve */\nconst resetField: FormItemContext['resetField'] = async () => {}\n/* istanbul ignore next -- @preserve */\nconst setInitialValue: FormItemContext['setInitialValue'] = () => {}\n\nconst addInputId: FormItemContext['addInputId'] = (id: string) => {\n /* istanbul ignore else -- @preserve */\n if (!inputIds.value.includes(id)) {\n inputIds.value.push(id)\n }\n}\n\nconst removeInputId: FormItemContext['removeInputId'] = (id: string) => {\n inputIds.value = inputIds.value.filter(listId => listId !== id)\n}\n\nconst isEllipsisActive = ref(false)\nuseResizeObserver(labelRef, () => {\n isEllipsisActive.value = labelRef.value?.scrollWidth > labelRef.value?.clientWidth\n})\nconst isEllipsis = computed(() => {\n return isEllipsisActive.value && !formlayout.value.labelWrap\n})\n\n// HACK computed无法监听到props.feedbackStatus的变化\nconst _validateState = ref<FormItemValidateState>('')\nconst context: FormItemContext = reactive({\n $el: formItemRef,\n labelWidth: formlayout.value?.labelWidth,\n size: formItemSize,\n validateState: _validateState.value,\n labelId,\n inputIds,\n isGroup,\n hasLabel,\n addInputId,\n removeInputId,\n resetField,\n clearValidate,\n validate,\n labelPosition,\n inlineMessage: true,\n showMessage: true,\n fieldValue: field.value?.value,\n validateMessage: '',\n propString: '',\n setInitialValue,\n})\nwatch(() => props.feedbackStatus, (val) => {\n if (val === 'pending') {\n context.validateState = 'validating'\n return\n }\n if (val === 'warning') {\n context.validateState = ''\n return\n }\n context.validateState = val\n}, {\n immediate: true,\n})\n\nprovide(formLayoutShallowContext, ref({\n ...(isValid(formlayout.value.size) && { size: formlayout.value.size }),\n ...(isValid(formlayout.value.colon) && { colon: formlayout.value.colon }),\n}))\nprovide(formItemContextKey, context)\n</script>\n\n<template>\n <div\n ref=\"formItemRef\" :class=\"[prefixCls, formlayout.labelWrap && 'is-warp', ...formItemClasses]\"\n :role=\"isGroup ? 'group' : undefined\" :aria-labelledby=\"isGroup ? labelId : undefined\"\n >\n <component\n :is=\"labelFor ? 'label' : 'div'\" v-if=\"hasLabel\" :id=\"labelId\" :for=\"labelFor\"\n :class=\"[ns.e('label'), isValid(formlayout.labelCol) && `${prefixCls}-col-${formlayout.labelCol}`]\"\n :style=\"labelStyle\"\n >\n <!-- label -->\n <template v-if=\"isVNode(props.label)\">\n <component :is=\"props.label\" />\n </template>\n <div v-else :class=\"`${prefixCls}-label__wrapper`\">\n <ElTooltip :disabled=\"!isEllipsis && formlayout.tooltipLayout !== 'text'\">\n <span\n :class=\"{\n [`${prefixCls}-label-content`]: true,\n ['is-tooltip']: isEllipsis || (props.tooltip && formlayout.tooltipLayout === 'text'),\n }\"\n >\n <span ref=\"labelRef\">{{ props.label }}</span>\n </span>\n <template #content>\n <template v-if=\"isVNode(props.tooltip)\">\n <component :is=\"props.tooltip\" />\n </template>\n <div v-else :style=\"`width: ${labelRef?.clientWidth ?? 0}px;`\">\n <template v-if=\"isEllipsis\">\n {{ props.label }}\n </template>\n <template v-if=\"formlayout.tooltipLayout === 'text'\">\n {{ props.tooltip }}\n </template>\n </div>\n </template>\n </ElTooltip>\n <ElTooltip v-if=\"props.tooltip && !isVNode(props.tooltip) && formlayout.tooltipLayout !== 'text'\" :content=\"props.tooltip\">\n <ElIcon :class=\"`${prefixCls}-label-tooltip`\">\n <InfoFilled />\n </ElIcon>\n </ElTooltip>\n <span v-if=\"formlayout.colon\" :class=\"`${prefixCls}-colon`\">:</span>\n </div>\n </component>\n <!-- content -->\n <div\n :class=\"[\n `${prefixCls}-content__wrapper`,\n isValid(formlayout.wrapperCol) && `${prefixCls}-col-${formlayout.wrapperCol}`,\n ]\"\n :style=\"contentWrapperStyle\"\n >\n <template v-if=\"isValid(props.addonBefore)\">\n <template v-if=\"isVNode(props.addonBefore)\">\n <component :is=\"props.addonBefore\" />\n </template>\n <div v-else :class=\"`${prefixCls}-addon-before`\">\n {{ props.addonBefore }}\n </div>\n </template>\n <div\n :class=\"[\n ns.e('content'),\n formlayout.fullness && 'is-fullness',\n ns.is('addon-after', !!props.addonAfter),\n ]\" :style=\"contentStyle\"\n >\n <ElTooltip\n v-if=\"formlayout.feedbackLayout === 'popover'\"\n ref=\"feedbackTooltipRef\"\n :visible=\"!!props.feedbackText\"\n effect=\"light\"\n :offset=\"6\"\n >\n <template #default>\n <slot />\n </template>\n <template #content>\n <div :class=\"[...validateClasses, ns.is('tooltip')]\">\n <ElIcon>\n <CircleClose v-if=\"props.feedbackStatus === 'error'\" />\n <CircleCheck v-if=\"props.feedbackStatus === 'success'\" />\n <Warning v-if=\"props.feedbackStatus === 'warning'\" />\n </ElIcon>\n {{ props.feedbackText }}\n </div>\n </template>\n </ElTooltip>\n <slot v-else />\n <TransitionGroup :name=\"`${ns.namespace.value}-zoom-in-top`\">\n <div v-if=\"props.feedbackText && formlayout.feedbackLayout !== 'popover'\" :class=\"validateClasses\">\n {{ props.feedbackText }}\n </div>\n <template v-if=\"isValid(props.extra)\">\n <template v-if=\"isVNode(props.extra)\">\n <component :is=\"props.extra\" />\n </template>\n <div v-else :class=\"`${prefixCls}-extra`\">\n {{ props.extra }}\n </div>\n </template>\n </TransitionGroup>\n </div>\n <template v-if=\"isValid(props.addonAfter)\">\n <template v-if=\"isVNode(props.addonAfter)\">\n <component :is=\"props.addonAfter\" />\n </template>\n <div v-else :class=\"`${prefixCls}-addon-after`\">\n {{ props.addonAfter }}\n </div>\n </template>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
package/esm/form-item/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { composeExport } from "../__builtins__/shared/utils.mjs";
|
|
|
2
2
|
import _sfc_main from "./form-item.mjs";
|
|
3
3
|
import { determineFeedbackStatus, getFeedbackMessage } from "./utils.mjs";
|
|
4
4
|
import "./style.css";
|
|
5
|
-
import { isVoidField } from "@formily/core";
|
|
5
|
+
import { isVoidField } from "@silver-formily/core";
|
|
6
6
|
import { connect, mapProps } from "@silver-formily/vue";
|
|
7
7
|
//#region src/form-item/index.ts
|
|
8
8
|
function fieldFeedbackMapper(props, field) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["FormBaseItem"],"sources":["../../src/form-item/index.ts"],"sourcesContent":["import { isVoidField } from '@formily/core'\nimport { connect, mapProps } from '@silver-formily/vue'\nimport { composeExport } from '../__builtins__'\nimport FormBaseItem from './form-item.vue'\nimport { determineFeedbackStatus, getFeedbackMessage } from './utils'\nimport './style.scss'\n\nexport function fieldFeedbackMapper(props, field) {\n if (isVoidField(field) || !field) {\n return props\n }\n\n const feedbackText = getFeedbackMessage(field)\n const feedbackStatus = determineFeedbackStatus(field)\n const asterisk = 'asterisk' in props\n ? props.asterisk\n : field.required && field.pattern !== 'readPretty'\n\n return {\n ...props,\n feedbackText,\n feedbackStatus,\n asterisk,\n }\n}\n\nconst Item = connect<typeof FormBaseItem>(\n FormBaseItem,\n mapProps(\n {\n validateStatus: true,\n title: 'label',\n required: true,\n description: 'extra',\n },\n fieldFeedbackMapper,\n ),\n)\n\nexport const FormItem = composeExport(Item, {\n BaseItem: FormBaseItem,\n})\n\nexport default FormItem\n\nexport { default as FormBaseItem } from './form-item.vue'\nexport type { IFormItemProps } from './types'\n"],"mappings":";;;;;;;AAOA,SAAgB,oBAAoB,OAAO,OAAO;AAChD,KAAI,YAAY,MAAM,IAAI,CAAC,MACzB,QAAO;CAGT,MAAM,eAAe,mBAAmB,MAAM;CAC9C,MAAM,iBAAiB,wBAAwB,MAAM;CACrD,MAAM,WAAW,cAAc,QAC3B,MAAM,WACN,MAAM,YAAY,MAAM,YAAY;AAExC,QAAO;EACL,GAAG;EACH;EACA;EACA;EACD;;AAgBH,MAAa,WAAW,cAbX,QACXA,WACA,SACE;CACE,gBAAgB;CAChB,OAAO;CACP,UAAU;CACV,aAAa;CACd,EACD,oBACD,CACF,EAE2C,EAC1C,UAAUA,WACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["FormBaseItem"],"sources":["../../src/form-item/index.ts"],"sourcesContent":["import { isVoidField } from '@silver-formily/core'\nimport { connect, mapProps } from '@silver-formily/vue'\nimport { composeExport } from '../__builtins__'\nimport FormBaseItem from './form-item.vue'\nimport { determineFeedbackStatus, getFeedbackMessage } from './utils'\nimport './style.scss'\n\nexport function fieldFeedbackMapper(props, field) {\n if (isVoidField(field) || !field) {\n return props\n }\n\n const feedbackText = getFeedbackMessage(field)\n const feedbackStatus = determineFeedbackStatus(field)\n const asterisk = 'asterisk' in props\n ? props.asterisk\n : field.required && field.pattern !== 'readPretty'\n\n return {\n ...props,\n feedbackText,\n feedbackStatus,\n asterisk,\n }\n}\n\nconst Item = connect<typeof FormBaseItem>(\n FormBaseItem,\n mapProps(\n {\n validateStatus: true,\n title: 'label',\n required: true,\n description: 'extra',\n },\n fieldFeedbackMapper,\n ),\n)\n\nexport const FormItem = composeExport(Item, {\n BaseItem: FormBaseItem,\n})\n\nexport default FormItem\n\nexport { default as FormBaseItem } from './form-item.vue'\nexport type { IFormItemProps } from './types'\n"],"mappings":";;;;;;;AAOA,SAAgB,oBAAoB,OAAO,OAAO;AAChD,KAAI,YAAY,MAAM,IAAI,CAAC,MACzB,QAAO;CAGT,MAAM,eAAe,mBAAmB,MAAM;CAC9C,MAAM,iBAAiB,wBAAwB,MAAM;CACrD,MAAM,WAAW,cAAc,QAC3B,MAAM,WACN,MAAM,YAAY,MAAM,YAAY;AAExC,QAAO;EACL,GAAG;EACH;EACA;EACA;EACD;;AAgBH,MAAa,WAAW,cAbX,QACXA,WACA,SACE;CACE,gBAAgB;CAChB,OAAO;CACP,UAAU;CACV,aAAa;CACd,EACD,oBACD,CACF,EAE2C,EAC1C,UAAUA,WACX,CAAC"}
|
package/esm/form-item/utils.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/form-item/utils.ts"],"sourcesContent":["import type { Field } from '@formily/core'\nimport { isArr } from '@formily/shared'\n\nexport function getFeedbackMessage(field: Field) {\n const messages = {\n errors: field.selfErrors.join(', '),\n warnings: field.selfWarnings.join(', '),\n successes: field.selfSuccesses.join(', '),\n }\n\n return messages.errors || messages.warnings || messages.successes\n}\n\nexport function determineFeedbackStatus(field: Field) {\n return isArr(field.decorator)\n ? (field.decorator[1]?.feedbackStatus ?? field.validateStatus)\n : field.validateStatus\n}\n"],"mappings":";;AAGA,SAAgB,mBAAmB,OAAc;CAC/C,MAAM,WAAW;EACf,QAAQ,MAAM,WAAW,KAAK,KAAK;EACnC,UAAU,MAAM,aAAa,KAAK,KAAK;EACvC,WAAW,MAAM,cAAc,KAAK,KAAK;EAC1C;AAED,QAAO,SAAS,UAAU,SAAS,YAAY,SAAS;;AAG1D,SAAgB,wBAAwB,OAAc;AACpD,QAAO,MAAM,MAAM,UAAU,GACxB,MAAM,UAAU,IAAI,kBAAkB,MAAM,iBAC7C,MAAM"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/form-item/utils.ts"],"sourcesContent":["import type { Field } from '@silver-formily/core'\nimport { isArr } from '@silver-formily/shared'\n\nexport function getFeedbackMessage(field: Field) {\n const messages = {\n errors: field.selfErrors.join(', '),\n warnings: field.selfWarnings.join(', '),\n successes: field.selfSuccesses.join(', '),\n }\n\n return messages.errors || messages.warnings || messages.successes\n}\n\nexport function determineFeedbackStatus(field: Field) {\n return isArr(field.decorator)\n ? (field.decorator[1]?.feedbackStatus ?? field.validateStatus)\n : field.validateStatus\n}\n"],"mappings":";;AAGA,SAAgB,mBAAmB,OAAc;CAC/C,MAAM,WAAW;EACf,QAAQ,MAAM,WAAW,KAAK,KAAK;EACnC,UAAU,MAAM,aAAa,KAAK,KAAK;EACvC,WAAW,MAAM,cAAc,KAAK,KAAK;EAC1C;AAED,QAAO,SAAS,UAAU,SAAS,YAAY,SAAS;;AAG1D,SAAgB,wBAAwB,OAAc;AACpD,QAAO,MAAM,MAAM,UAAU,GACxB,MAAM,UAAU,IAAI,kBAAkB,MAAM,iBAC7C,MAAM"}
|
|
@@ -4,7 +4,7 @@ import { filterValidFormLayoutProps, formLayoutDeepContext, formLayoutIdContext,
|
|
|
4
4
|
import { formContextKey, useId } from "element-plus";
|
|
5
5
|
import { useThrottleFn } from "@vueuse/core";
|
|
6
6
|
import { computed, createBlock, defineComponent, mergeProps, openBlock, provide, reactive, ref, renderSlot, resolveDynamicComponent, toRef, unref, watch, withCtx, withModifiers } from "vue";
|
|
7
|
-
import { isEmpty, isValid } from "@formily/shared";
|
|
7
|
+
import { isEmpty, isValid } from "@silver-formily/shared";
|
|
8
8
|
//#region src/form-layout/form-layout.vue
|
|
9
9
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
10
10
|
name: "FFormLayout",
|