el-plus 0.0.51 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +107 -54
  4. package/dist/index.full.min.js +1 -1
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +1 -1
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +107 -55
  9. package/es/components/attachment/src/attachment.d.ts +4 -3
  10. package/es/components/attachment/src/attachment.mjs +1 -2
  11. package/es/components/attachment/src/attachment.mjs.map +1 -1
  12. package/es/components/attachment/src/attachment.vue2.mjs +2 -2
  13. package/es/components/attachment/src/attachment.vue2.mjs.map +1 -1
  14. package/es/components/attachment/src/use-attachment.mjs +2 -0
  15. package/es/components/attachment/src/use-attachment.mjs.map +1 -1
  16. package/es/components/header/index.d.ts +90 -0
  17. package/es/components/header/src/header.d.ts +9 -0
  18. package/es/components/header/src/header.mjs +10 -0
  19. package/es/components/header/src/header.mjs.map +1 -1
  20. package/es/components/header/src/header.vue.d.ts +38 -0
  21. package/es/components/header/src/header.vue2.mjs +4 -3
  22. package/es/components/header/src/header.vue2.mjs.map +1 -1
  23. package/es/hooks/dialog/use-confirm-dialog.d.ts +12 -0
  24. package/es/hooks/dialog/use-confirm-dialog.mjs +47 -0
  25. package/es/hooks/dialog/use-confirm-dialog.mjs.map +1 -0
  26. package/es/hooks/dialog/use-dialog.d.ts +2 -0
  27. package/es/hooks/dialog/use-dialog.mjs +28 -32
  28. package/es/hooks/dialog/use-dialog.mjs.map +1 -1
  29. package/es/hooks/dialog/use-form-dialog.d.ts +1 -0
  30. package/es/hooks/dialog/use-form-dialog.mjs +4 -3
  31. package/es/hooks/dialog/use-form-dialog.mjs.map +1 -1
  32. package/es/hooks/index.d.ts +1 -0
  33. package/es/hooks/index.mjs +1 -0
  34. package/es/hooks/index.mjs.map +1 -1
  35. package/es/index.mjs +1 -0
  36. package/es/index.mjs.map +1 -1
  37. package/es/package.json.mjs +1 -1
  38. package/lib/components/attachment/src/attachment.d.ts +4 -3
  39. package/lib/components/attachment/src/attachment.js +1 -2
  40. package/lib/components/attachment/src/attachment.js.map +1 -1
  41. package/lib/components/attachment/src/attachment.vue2.js +2 -2
  42. package/lib/components/attachment/src/attachment.vue2.js.map +1 -1
  43. package/lib/components/attachment/src/use-attachment.js +2 -0
  44. package/lib/components/attachment/src/use-attachment.js.map +1 -1
  45. package/lib/components/header/index.d.ts +90 -0
  46. package/lib/components/header/src/header.d.ts +9 -0
  47. package/lib/components/header/src/header.js +10 -0
  48. package/lib/components/header/src/header.js.map +1 -1
  49. package/lib/components/header/src/header.vue.d.ts +38 -0
  50. package/lib/components/header/src/header.vue2.js +3 -2
  51. package/lib/components/header/src/header.vue2.js.map +1 -1
  52. package/lib/hooks/dialog/use-confirm-dialog.d.ts +12 -0
  53. package/lib/hooks/dialog/use-confirm-dialog.js +49 -0
  54. package/lib/hooks/dialog/use-confirm-dialog.js.map +1 -0
  55. package/lib/hooks/dialog/use-dialog.d.ts +2 -0
  56. package/lib/hooks/dialog/use-dialog.js +27 -31
  57. package/lib/hooks/dialog/use-dialog.js.map +1 -1
  58. package/lib/hooks/dialog/use-form-dialog.d.ts +1 -0
  59. package/lib/hooks/dialog/use-form-dialog.js +4 -3
  60. package/lib/hooks/dialog/use-form-dialog.js.map +1 -1
  61. package/lib/hooks/index.d.ts +1 -0
  62. package/lib/hooks/index.js +2 -0
  63. package/lib/hooks/index.js.map +1 -1
  64. package/lib/index.js +2 -0
  65. package/lib/index.js.map +1 -1
  66. package/lib/package.json.js +1 -1
  67. package/package.json +1 -1
  68. package/theme-chalk/dialog.css +1 -1
  69. package/theme-chalk/index.css +1 -1
  70. package/theme-chalk/src/dialog.scss +7 -0
@@ -1 +1 @@
1
- {"version":3,"file":"header.mjs","sources":["../../../../../../packages/components/header/src/header.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\nimport { buttonsProps } from '@el-plus/components/buttons'\nimport type { PageMode } from '@el-plus/hooks/use-navigation'\nexport type defaultButtonsProps =\n | 'modify'\n | 'save'\n | 'cancel'\n | 'refresh'\n | 'auditLog'\n\nexport const headerProps = {\n // 页面模式\n mode: {\n type: String as PropType<PageMode>,\n },\n allowBack: {\n type: Boolean,\n default: true,\n },\n buttons: {\n ...buttonsProps.list,\n },\n name: String, // 权限前缀\n // 要展示的默认按钮\n defaultButtons: {\n type: Array as PropType<defaultButtonsProps[]>,\n default: () => [],\n },\n // 工作流id\n workflowId: String,\n // 是否显示附件按钮\n isShowAttachmentButton: {\n type: Boolean,\n default: false,\n },\n} as const\nexport type HeaderProps = ExtractPropTypes<typeof headerProps>\n\nexport const headerEmits = {}\nexport type HeaderEmits = typeof headerEmits\n"],"names":[],"mappings":";;AAUO,MAAM,WAAA,GAAc;AAAA;AAAA,EAEzB,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAG,YAAA,CAAa;AAAA,GAClB;AAAA,EACA,IAAA,EAAM,MAAA;AAAA;AAAA;AAAA,EAEN,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA,EAEA,UAAA,EAAY,MAAA;AAAA;AAAA,EAEZ,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;AAGO,MAAM,cAAc;;;;"}
1
+ {"version":3,"file":"header.mjs","sources":["../../../../../../packages/components/header/src/header.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\nimport { buttonsProps } from '@el-plus/components/buttons'\nimport type { AttachmentProps } from '@el-plus/components/attachment'\nimport type { PageMode } from '@el-plus/hooks/use-navigation'\nexport type defaultButtonsProps =\n | 'modify'\n | 'save'\n | 'cancel'\n | 'refresh'\n | 'auditLog'\n\nexport const headerProps = {\n // 页面模式\n mode: {\n type: String as PropType<PageMode>,\n },\n allowBack: {\n type: Boolean,\n default: true,\n },\n buttons: {\n ...buttonsProps.list,\n },\n name: String, // 权限前缀\n // 要展示的默认按钮\n defaultButtons: {\n type: Array as PropType<defaultButtonsProps[]>,\n default: () => [],\n },\n // 工作流id\n workflowId: String,\n // 是否显示附件按钮\n isShowAttachmentButton: {\n type: Boolean,\n default: false,\n },\n // 附件列表\n fileList: {\n type: Array as PropType<Record<string, any>[]>,\n default: () => [],\n },\n attachmentProps: {\n type: Object as PropType<AttachmentProps>,\n default: () => {},\n },\n} as const\nexport type HeaderProps = ExtractPropTypes<typeof headerProps>\n\nexport const headerEmits = {}\nexport type HeaderEmits = typeof headerEmits\n"],"names":[],"mappings":";;AAWO,MAAM,WAAA,GAAc;AAAA;AAAA,EAEzB,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,GAAG,YAAA,CAAa;AAAA,GAClB;AAAA,EACA,IAAA,EAAM,MAAA;AAAA;AAAA;AAAA,EAEN,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA;AAAA,EAEA,UAAA,EAAY,MAAA;AAAA;AAAA,EAEZ,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,KAAA;AAAA,IACN,OAAA,EAAS,MAAM;AAAC,GAClB;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,MAAA;AAAA,IACN,SAAS,MAAM;AAAA,IAAC;AAAA;AAEpB;AAGO,MAAM,cAAc;;;;"}
@@ -20,6 +20,14 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
20
20
  readonly type: BooleanConstructor;
21
21
  readonly default: false;
22
22
  };
23
+ readonly fileList: {
24
+ readonly type: import("vue").PropType<Record<string, any>[]>;
25
+ readonly default: () => never[];
26
+ };
27
+ readonly attachmentProps: {
28
+ readonly type: import("vue").PropType<import("el-plus/es/components/attachment").AttachmentProps>;
29
+ readonly default: () => void;
30
+ };
23
31
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
24
32
  readonly mode: {
25
33
  readonly type: import("vue").PropType<import("el-plus/es/hooks").PageMode>;
@@ -42,6 +50,14 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
42
50
  readonly type: BooleanConstructor;
43
51
  readonly default: false;
44
52
  };
53
+ readonly fileList: {
54
+ readonly type: import("vue").PropType<Record<string, any>[]>;
55
+ readonly default: () => never[];
56
+ };
57
+ readonly attachmentProps: {
58
+ readonly type: import("vue").PropType<import("el-plus/es/components/attachment").AttachmentProps>;
59
+ readonly default: () => void;
60
+ };
45
61
  }>> & Readonly<{}>, {
46
62
  readonly buttons: Partial<Omit<import("element-plus").ButtonProps, "disabled"> & {
47
63
  name: string;
@@ -59,6 +75,28 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
59
75
  readonly allowBack: boolean;
60
76
  readonly defaultButtons: import("./header").defaultButtonsProps[];
61
77
  readonly isShowAttachmentButton: boolean;
78
+ readonly fileList: Record<string, any>[];
79
+ readonly attachmentProps: {
80
+ readonly mode?: import("el-plus/es/hooks").PageMode | undefined;
81
+ readonly formatColumns?: Partial<import("element-plus").TableColumnCtx & {
82
+ [key: string]: any;
83
+ required: boolean | (() => boolean);
84
+ cellRequired: (scope: import("el-plus/es").TableScope) => boolean;
85
+ headerRender: import("element-plus").TableColumnCtx["renderHeader"];
86
+ disabled: boolean | ((scope: import("el-plus/es").TableScope) => boolean);
87
+ type: string;
88
+ props: Record<string, any>;
89
+ filter: boolean;
90
+ editable: boolean | ((formData: Record<string, any>) => void);
91
+ } & {} & {
92
+ show?: (boolean | ((T: unknown) => boolean)) | undefined;
93
+ hide?: (boolean | ((T: unknown) => boolean)) | undefined;
94
+ }>[] | undefined;
95
+ readonly openType?: "dialog" | "normal" | undefined;
96
+ readonly isType?: boolean | undefined;
97
+ readonly isNote?: boolean | undefined;
98
+ readonly isShowOpenDialogButton?: boolean | undefined;
99
+ };
62
100
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
63
101
  declare const _default: typeof __VLS_export;
64
102
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineComponent, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, createBlock, createCommentVNode, createVNode, withCtx } from 'vue';
1
+ import { defineComponent, createElementBlock, openBlock, normalizeStyle, normalizeClass, unref, createBlock, createCommentVNode, createVNode, withCtx, mergeProps } from 'vue';
2
2
  import { createNameSpace } from '../../../utils/bem.mjs';
3
3
  import { headerEmits, headerProps } from './header.mjs';
4
4
  import { prepareStyles, prepareClassNames } from '../../../utils/props.mjs';
@@ -35,10 +35,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
35
35
  _: 1
36
36
  }, 8, ["onBack"])) : createCommentVNode("", true),
37
37
  createVNode(unref(EpButtons), { list: unref(buttons) }, null, 8, ["list"]),
38
- props.isShowAttachmentButton ? (openBlock(), createBlock(unref(EpAttachment), {
38
+ props.isShowAttachmentButton ? (openBlock(), createBlock(unref(EpAttachment), mergeProps({
39
39
  key: 1,
40
+ "model-value": props.fileList,
40
41
  "is-show-open-dialog-button": ""
41
- })) : createCommentVNode("", true)
42
+ }, props.attachmentProps), null, 16, ["model-value"])) : createCommentVNode("", true)
42
43
  ], 6);
43
44
  };
44
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"header.vue2.mjs","sources":["../../../../../../packages/components/header/src/header.vue"],"sourcesContent":["<template>\n <div\n :class=\"[bem.b(), prepareClassNames()]\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-page-header v-if=\"isShowBack\" @back=\"goBack\">\n <template #content> </template>\n </el-page-header>\n <EpButtons :list=\"buttons\" />\n <EpAttachment\n v-if=\"props.isShowAttachmentButton\"\n is-show-open-dialog-button\n />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { headerProps, headerEmits } from './header'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { useHeader, useButtons } from './use-header'\nimport { ElPageHeader } from 'element-plus'\nimport EpButtons from '@el-plus/components/buttons'\nimport EpAttachment from '@el-plus/components/attachment'\ndefineOptions({\n name: 'EpHeader',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('header')\nconst props = defineProps(headerProps)\nconst emit = defineEmits(headerEmits)\nconst { isShowBack, goBack } = useHeader(props, emit)\nconst { buttons } = useButtons(props, emit)\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_createBlock","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,IAAA,MAAM,GAAA,GAAM,gBAAgB,QAAQ,CAAA;AACpC,IAAA,MAAM,KAAA,GAAQ,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,MAAA,EAAO,GAAI,SAAA,CAAU,KAAW,CAAA;AACpD,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,UAAA,CAAW,KAAW,CAAA;;0BAhCxCA,kBAAA,CAcM,KAAA,EAAA;AAAA,QAbH,KAAA,EAAKC,cAAA,CAAA,CAAGC,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,IAAKA,KAAA,CAAA,iBAAA,CAAA,EAAiB,CAAA,CAAA;AAAA,QAClC,OAAKC,cAAA,CAAA;AAAA,aAAaD,KAAA,CAAA,aAAA,CAAA;AAAa;;QAIVA,KAAA,CAAA,UAAA,CAAA,iBAAtBE,WAAA,CAEiBF,KAAA,CAAA,YAAA,CAAA,EAAA;AAAA;UAFkB,MAAA,EAAMA,MAAA,MAAA;AAAA;UAC5B,OAAA,UAAX,MAA+B,EAAA,CAAA;AAAA;;QAEjCG,WAAA,CAA6BH,KAAA,CAAA,SAAA,CAAA,EAAA,EAAjB,IAAA,EAAMA,KAAA,CAAA,OAAA,CAAA,EAAO,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA,QAEjB,MAAM,sBAAA,iBADdE,WAAA,CAGEF,KAAA,CAAA,YAAA,CAAA,EAAA;AAAA;UADA,4BAAA,EAAA;AAAA;;;;;;;;"}
1
+ {"version":3,"file":"header.vue2.mjs","sources":["../../../../../../packages/components/header/src/header.vue"],"sourcesContent":["<template>\n <div\n :class=\"[bem.b(), prepareClassNames()]\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-page-header v-if=\"isShowBack\" @back=\"goBack\">\n <template #content> </template>\n </el-page-header>\n <EpButtons :list=\"buttons\" />\n <EpAttachment\n v-if=\"props.isShowAttachmentButton\"\n :model-value=\"props.fileList\"\n is-show-open-dialog-button\n v-bind=\"props.attachmentProps\"\n />\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { headerProps, headerEmits } from './header'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { useHeader, useButtons } from './use-header'\nimport { ElPageHeader } from 'element-plus'\nimport EpButtons from '@el-plus/components/buttons'\nimport EpAttachment from '@el-plus/components/attachment'\ndefineOptions({\n name: 'EpHeader',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('header')\nconst props = defineProps(headerProps)\nconst emit = defineEmits(headerEmits)\nconst { isShowBack, goBack } = useHeader(props, emit)\nconst { buttons } = useButtons(props, emit)\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_createBlock","_createVNode","_openBlock","_mergeProps"],"mappings":";;;;;;;;;;;;;;;;;;AA+BA,IAAA,MAAM,GAAA,GAAM,gBAAgB,QAAQ,CAAA;AACpC,IAAA,MAAM,KAAA,GAAQ,OAAA;AAEd,IAAA,MAAM,EAAE,UAAA,EAAY,MAAA,EAAO,GAAI,SAAA,CAAU,KAAW,CAAA;AACpD,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,UAAA,CAAW,KAAW,CAAA;;0BAlCxCA,kBAAA,CAgBM,KAAA,EAAA;AAAA,QAfH,KAAA,EAAKC,cAAA,CAAA,CAAGC,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,IAAKA,KAAA,CAAA,iBAAA,CAAA,EAAiB,CAAA,CAAA;AAAA,QAClC,OAAKC,cAAA,CAAA;AAAA,aAAaD,KAAA,CAAA,aAAA,CAAA;AAAa;;QAIVA,KAAA,CAAA,UAAA,CAAA,iBAAtBE,WAAA,CAEiBF,KAAA,CAAA,YAAA,CAAA,EAAA;AAAA;UAFkB,MAAA,EAAMA,MAAA,MAAA;AAAA;UAC5B,OAAA,UAAX,MAA+B,EAAA,CAAA;AAAA;;QAEjCG,WAAA,CAA6BH,KAAA,CAAA,SAAA,CAAA,EAAA,EAAjB,IAAA,EAAMA,KAAA,CAAA,OAAA,CAAA,EAAO,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA,QAEjB,KAAA,CAAM,0BADdI,SAAA,EAAA,EAAAF,YAKEF,KAAA,gBALFK,UAAA,CAKE;AAAA;UAHC,eAAa,KAAA,CAAM,QAAA;AAAA,UACpB,4BAAA,EAAA;AAAA,SACQ,EAAA,KAAA,CAAM,eAAe,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;;;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import type { DialogOptions } from './use-dialog';
2
+ import type { FormItemProps } from 'el-plus/es/components/form';
3
+ import type { InputProps } from 'element-plus';
4
+ type Options = Partial<{
5
+ title?: string;
6
+ width?: string;
7
+ dialogProps?: DialogOptions;
8
+ } & TextareaProps & TextareaFormItemProps>;
9
+ type TextareaProps = Pick<InputProps, 'rows' | 'maxlength' | 'minlength' | 'showWordLimit' | 'placeholder'>;
10
+ type TextareaFormItemProps = Pick<FormItemProps, 'rules' | 'required'>;
11
+ export declare const useConfirmDialog: (options?: Options) => import("el-plus/es").TemplatePromise<any, []>;
12
+ export {};
@@ -0,0 +1,47 @@
1
+ import { useFormDialog } from './use-form-dialog.mjs';
2
+ import { createNameSpace } from '../../utils/bem.mjs';
3
+
4
+ const bem = createNameSpace("confirm-dialog");
5
+ const useConfirmDialog = (options = {}) => {
6
+ const {
7
+ dialogProps = {},
8
+ width = "50%",
9
+ title,
10
+ /** TextareaProps */
11
+ rows = 5,
12
+ maxlength = 500,
13
+ minlength,
14
+ showWordLimit = true,
15
+ /** TextareaFormItemProps */
16
+ rules,
17
+ required = true,
18
+ placeholder
19
+ } = options;
20
+ const formItemList = [{
21
+ rules,
22
+ prop: "value",
23
+ label: " ",
24
+ required,
25
+ props: {
26
+ placeholder,
27
+ type: "textarea",
28
+ rows,
29
+ maxlength,
30
+ minlength,
31
+ showWordLimit
32
+ }
33
+ }];
34
+ return useFormDialog({
35
+ title,
36
+ width,
37
+ formItemList,
38
+ dialogProps: {
39
+ ...dialogProps,
40
+ class: bem.b(),
41
+ destroyOnClose: true
42
+ }
43
+ });
44
+ };
45
+
46
+ export { useConfirmDialog };
47
+ //# sourceMappingURL=use-confirm-dialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-confirm-dialog.mjs","sources":["../../../../../packages/hooks/dialog/use-confirm-dialog.tsx"],"sourcesContent":["import { useFormDialog } from './use-form-dialog'\nimport type { DialogOptions } from './use-dialog'\nimport type { FormItemProps } from '@el-plus/components/form'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport type { InputProps } from 'element-plus'\nconst bem = createNameSpace('confirm-dialog')\ntype Options = Partial<\n {\n title?: string\n width?: string\n dialogProps?: DialogOptions\n } & TextareaProps &\n TextareaFormItemProps\n>\ntype TextareaProps = Pick<\n InputProps,\n 'rows' | 'maxlength' | 'minlength' | 'showWordLimit' | 'placeholder'\n>\ntype TextareaFormItemProps = Pick<FormItemProps, 'rules' | 'required'>\nexport const useConfirmDialog = (options: Options = {}) => {\n const {\n dialogProps = {},\n width = '50%',\n title,\n /** TextareaProps */\n rows = 5,\n maxlength = 500,\n minlength,\n showWordLimit = true,\n /** TextareaFormItemProps */\n rules,\n required = true,\n placeholder,\n } = options\n const formItemList: FormItemProps[] = [\n {\n rules,\n prop: 'value',\n label: ' ',\n required,\n props: {\n placeholder,\n type: 'textarea',\n rows,\n maxlength,\n minlength,\n showWordLimit,\n },\n },\n ]\n return useFormDialog({\n title,\n width,\n formItemList,\n dialogProps: {\n ...dialogProps,\n class: bem.b(),\n destroyOnClose: true,\n },\n })\n}\n"],"names":["bem","createNameSpace","useConfirmDialog","options","dialogProps","width","title","rows","maxlength","minlength","showWordLimit","rules","required","placeholder","formItemList","prop","label","props","type","useFormDialog","class","b","destroyOnClose"],"mappings":";;;AAKA,MAAMA,GAAAA,GAAMC,gBAAgB,gBAAgB,CAAA;AAcrC,MAAMC,gBAAAA,GAAmBA,CAACC,OAAAA,GAAmB,EAAC,KAAM;AACzD,EAAA,MAAM;AAAA,IACJC,cAAc,EAAC;AAAA,IACfC,KAAAA,GAAQ,KAAA;AAAA,IACRC,KAAAA;AAAAA;AAAAA,IAEAC,IAAAA,GAAO,CAAA;AAAA,IACPC,SAAAA,GAAY,GAAA;AAAA,IACZC,SAAAA;AAAAA,IACAC,aAAAA,GAAgB,IAAA;AAAA;AAAA,IAEhBC,KAAAA;AAAAA,IACAC,QAAAA,GAAW,IAAA;AAAA,IACXC;AAAAA,GACF,GAAIV,OAAAA;AACJ,EAAA,MAAMW,eAAgC,CACpC;AAAA,IACEH,KAAAA;AAAAA,IACAI,IAAAA,EAAM,OAAA;AAAA,IACNC,KAAAA,EAAO,GAAA;AAAA,IACPJ,QAAAA;AAAAA,IACAK,KAAAA,EAAO;AAAA,MACLJ,WAAAA;AAAAA,MACAK,IAAAA,EAAM,UAAA;AAAA,MACNX,IAAAA;AAAAA,MACAC,SAAAA;AAAAA,MACAC,SAAAA;AAAAA,MACAC;AAAAA;AACF,GACD,CAAA;AAEH,EAAA,OAAOS,aAAAA,CAAc;AAAA,IACnBb,KAAAA;AAAAA,IACAD,KAAAA;AAAAA,IACAS,YAAAA;AAAAA,IACAV,WAAAA,EAAa;AAAA,MACX,GAAGA,WAAAA;AAAAA,MACHgB,KAAAA,EAAOpB,IAAIqB,CAAAA,EAAE;AAAA,MACbC,cAAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACH;;;;"}
@@ -7,7 +7,9 @@ export type DialogOptions = Partial<DialogProps & {
7
7
  scopedSlots: Record<string, (props: any) => VNode>;
8
8
  class: string;
9
9
  onCancel: (reject: any) => void;
10
+ cancelText?: string;
10
11
  onConfirm: (resolve: any) => void;
12
+ confirmText?: string;
11
13
  showFooter: boolean;
12
14
  }>;
13
15
  export type ExpandDialogOptions = {
@@ -1,13 +1,10 @@
1
- import { getCurrentInstance, inject, h, nextTick, render, createVNode, mergeProps, isVNode } from 'vue';
1
+ import { getCurrentInstance, inject, h, nextTick, render, createVNode, mergeProps } from 'vue';
2
2
  import { useTemplatePromise } from '../use-template-promise.mjs';
3
3
  import { configProviderContextKey, ElConfigProvider, ElDialog, ElButton } from 'element-plus';
4
4
  import { createNameSpace } from '../../utils/bem.mjs';
5
5
  import { prepareProps } from '../../utils/props.mjs';
6
6
  import { useLocale } from '../use-locale.mjs';
7
7
 
8
- function _isSlot(s) {
9
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
10
- }
11
8
  const bem = createNameSpace("dialog");
12
9
  const useDialog = (options = {}) => {
13
10
  const {
@@ -19,7 +16,9 @@ const useDialog = (options = {}) => {
19
16
  render: render$1,
20
17
  destroyOnClose,
21
18
  onConfirm,
19
+ confirmText,
22
20
  onCancel,
21
+ cancelText,
23
22
  showFooter = true,
24
23
  ...dialogProps
25
24
  } = options;
@@ -39,35 +38,32 @@ const useDialog = (options = {}) => {
39
38
  };
40
39
  const slots = {};
41
40
  if (showFooter) {
42
- slots.footer = () => {
43
- let _slot, _slot2;
44
- return createVNode("div", {
45
- "class": bem.e("footer")
46
- }, [scopedSlots.footerPrepend?.(promiseOptions), createVNode(ElButton, {
47
- "size": "default",
48
- "onClick": () => {
49
- if (onCancel) {
50
- onCancel(reject);
51
- } else {
52
- reject("cancel");
53
- }
41
+ slots.footer = () => createVNode("div", {
42
+ "class": bem.e("footer")
43
+ }, [scopedSlots.footerPrepend?.(promiseOptions), createVNode(ElButton, {
44
+ "size": "default",
45
+ "onClick": () => {
46
+ if (onCancel) {
47
+ onCancel(reject);
48
+ } else {
49
+ reject("cancel");
54
50
  }
55
- }, _isSlot(_slot = t("ep.dialog.cancel")) ? _slot : {
56
- default: () => [_slot]
57
- }), scopedSlots.footerInner?.(promiseOptions), createVNode(ElButton, {
58
- "type": "primary",
59
- "onClick": async () => {
60
- if (onConfirm) {
61
- onConfirm(resolve);
62
- } else {
63
- resolve("confirm");
64
- }
65
- },
66
- "loading": isResolving
67
- }, _isSlot(_slot2 = t("ep.dialog.confirm")) ? _slot2 : {
68
- default: () => [_slot2]
69
- }), scopedSlots.footerAppend?.(promiseOptions)]);
70
- };
51
+ }
52
+ }, {
53
+ default: () => [cancelText || t("ep.dialog.cancel")]
54
+ }), scopedSlots.footerInner?.(promiseOptions), createVNode(ElButton, {
55
+ "type": "primary",
56
+ "onClick": async () => {
57
+ if (onConfirm) {
58
+ onConfirm(resolve);
59
+ } else {
60
+ resolve("confirm");
61
+ }
62
+ },
63
+ "loading": isResolving
64
+ }, {
65
+ default: () => [confirmText || t("ep.dialog.confirm")]
66
+ }), scopedSlots.footerAppend?.(promiseOptions)]);
71
67
  }
72
68
  return createVNode(ElDialog, mergeProps({
73
69
  "class": bem.b(),
@@ -1 +1 @@
1
- {"version":3,"file":"use-dialog.mjs","sources":["../../../../../packages/hooks/dialog/use-dialog.tsx"],"sourcesContent":["import { useTemplatePromise } from '../use-template-promise'\nimport { h, getCurrentInstance, render as vRender, inject, nextTick } from 'vue'\nimport type { ComponentInternalInstance } from 'vue'\nimport {\n ElDialog,\n ElButton,\n configProviderContextKey,\n ElConfigProvider,\n} from 'element-plus'\nimport type { VNode } from 'vue'\nimport type { DialogProps } from 'element-plus'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareProps } from '@el-plus/utils/props'\nimport { useLocale } from '../use-locale'\n\nexport type DialogOptions = Partial<\n DialogProps & {\n instance: ComponentInternalInstance | null\n render: (props) => VNode\n scopedSlots: Record<string, (props) => VNode>\n class: string\n onCancel: (reject) => void\n onConfirm: (resolve) => void\n showFooter: boolean\n }\n>\nexport type ExpandDialogOptions = {\n title?: string\n dialogProps?: DialogOptions\n}\nconst bem = createNameSpace('dialog')\n\nexport const useDialog = (options: DialogOptions = {}) => {\n const { t } = useLocale()\n const {\n scopedSlots = {},\n instance,\n render,\n destroyOnClose,\n onConfirm,\n onCancel,\n showFooter = true,\n ...dialogProps\n } = options\n\n const Dialog = useTemplatePromise<any>({\n destroy: destroyOnClose,\n render: (promiseOptions, ctx) => {\n // 插槽参数增加promiseOptions\n for (const key in scopedSlots) {\n scopedSlots[key] = scopedSlots[key].bind(null, promiseOptions)\n }\n const { resolve, reject, isResolving } = promiseOptions\n const renderFunc = () => {\n return render\n ? render(promiseOptions)\n : ctx.slots.default?.(promiseOptions)\n }\n const slots: DialogOptions['scopedSlots'] = {}\n if (showFooter) {\n slots.footer = () => (\n <div class={bem.e('footer')}>\n {scopedSlots.footerPrepend?.(promiseOptions)}\n <ElButton\n size=\"default\"\n onClick={() => {\n if (onCancel) {\n onCancel(reject)\n } else {\n reject('cancel')\n }\n }}\n >\n {t('ep.dialog.cancel')}\n </ElButton>\n {scopedSlots.footerInner?.(promiseOptions)}\n <ElButton\n type=\"primary\"\n onClick={async () => {\n if (onConfirm) {\n onConfirm(resolve)\n } else {\n resolve('confirm')\n }\n }}\n loading={isResolving}\n >\n {t('ep.dialog.confirm')}\n </ElButton>\n {scopedSlots.footerAppend?.(promiseOptions)}\n </div>\n )\n }\n return (\n <ElDialog\n class={bem.b()}\n modelValue={true}\n {...{\n closeOnClickModal: false,\n closeOnPressEscape: false,\n title: t('ep.dialog.title'),\n center: false,\n // 'append-to-body': true,\n beforeClose: () => {\n reject('cancel')\n },\n ...prepareProps(dialogProps, ['modelValue']),\n }}\n v-slots={{\n ...slots,\n ...scopedSlots,\n }}\n >\n {renderFunc()}\n </ElDialog>\n )\n },\n })\n if (render) {\n // const app = createApp(component)\n // Object.assign(app._context, parentInstance.appContext)\n // app.mount(container)\n const container = document.createElement('div')\n // container.setAttribute('id', 'ep-dialog-container')\n const newInstance = instance || getCurrentInstance()\n const config = inject(configProviderContextKey) as any\n // const parentConfig =\n // newInstance?.provides[configProviderContextKey] ||\n // newInstance?.appContext?.provides[configProviderContextKey]\n // const vnode = h(Dialog)\n const vnode = h(\n ElConfigProvider,\n { locale: config?.locale },\n { default: () => h(Dialog) },\n )\n if (newInstance && newInstance.appContext) {\n // 强制继承父应用的全局组件、指令和插件\n vnode.appContext = newInstance.appContext\n }\n nextTick(() => {\n vRender(vnode, container)\n document.body.appendChild(container)\n })\n }\n\n return Dialog\n}\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","bem","createNameSpace","useDialog","options","t","useLocale","scopedSlots","instance","render","destroyOnClose","onConfirm","onCancel","showFooter","dialogProps","Dialog","useTemplatePromise","destroy","promiseOptions","ctx","key","bind","resolve","reject","isResolving","renderFunc","slots","default","footer","_slot","_slot2","_createVNode","e","footerPrepend","ElButton","onClick","footerInner","footerAppend","ElDialog","_mergeProps","b","closeOnClickModal","closeOnPressEscape","title","center","beforeClose","prepareProps","container","document","createElement","newInstance","getCurrentInstance","config","inject","configProviderContextKey","vnode","h","ElConfigProvider","locale","appContext","nextTick","vRender","body","appendChild"],"mappings":"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"}
1
+ {"version":3,"file":"use-dialog.mjs","sources":["../../../../../packages/hooks/dialog/use-dialog.tsx"],"sourcesContent":["import { useTemplatePromise } from '../use-template-promise'\nimport { h, getCurrentInstance, render as vRender, inject, nextTick } from 'vue'\nimport type { ComponentInternalInstance } from 'vue'\nimport {\n ElDialog,\n ElButton,\n configProviderContextKey,\n ElConfigProvider,\n} from 'element-plus'\nimport type { VNode } from 'vue'\nimport type { DialogProps } from 'element-plus'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareProps } from '@el-plus/utils/props'\nimport { useLocale } from '../use-locale'\n\nexport type DialogOptions = Partial<\n DialogProps & {\n instance: ComponentInternalInstance | null\n render: (props) => VNode\n scopedSlots: Record<string, (props) => VNode>\n class: string\n onCancel: (reject) => void\n cancelText?: string\n onConfirm: (resolve) => void\n confirmText?: string\n showFooter: boolean\n }\n>\nexport type ExpandDialogOptions = {\n title?: string\n dialogProps?: DialogOptions\n}\nconst bem = createNameSpace('dialog')\n\nexport const useDialog = (options: DialogOptions = {}) => {\n const { t } = useLocale()\n const {\n scopedSlots = {},\n instance,\n render,\n destroyOnClose,\n onConfirm,\n confirmText,\n onCancel,\n cancelText,\n showFooter = true,\n ...dialogProps\n } = options\n\n const Dialog = useTemplatePromise<any>({\n destroy: destroyOnClose,\n render: (promiseOptions, ctx) => {\n // 插槽参数增加promiseOptions\n for (const key in scopedSlots) {\n scopedSlots[key] = scopedSlots[key].bind(null, promiseOptions)\n }\n const { resolve, reject, isResolving } = promiseOptions\n const renderFunc = () => {\n return render\n ? render(promiseOptions)\n : ctx.slots.default?.(promiseOptions)\n }\n const slots: DialogOptions['scopedSlots'] = {}\n if (showFooter) {\n slots.footer = () => (\n <div class={bem.e('footer')}>\n {scopedSlots.footerPrepend?.(promiseOptions)}\n <ElButton\n size=\"default\"\n onClick={() => {\n if (onCancel) {\n onCancel(reject)\n } else {\n reject('cancel')\n }\n }}\n >\n {cancelText || t('ep.dialog.cancel')}\n </ElButton>\n {scopedSlots.footerInner?.(promiseOptions)}\n <ElButton\n type=\"primary\"\n onClick={async () => {\n if (onConfirm) {\n onConfirm(resolve)\n } else {\n resolve('confirm')\n }\n }}\n loading={isResolving}\n >\n {confirmText || t('ep.dialog.confirm')}\n </ElButton>\n {scopedSlots.footerAppend?.(promiseOptions)}\n </div>\n )\n }\n return (\n <ElDialog\n class={bem.b()}\n modelValue={true}\n {...{\n closeOnClickModal: false,\n closeOnPressEscape: false,\n title: t('ep.dialog.title'),\n center: false,\n // 'append-to-body': true,\n beforeClose: () => {\n reject('cancel')\n },\n ...prepareProps(dialogProps, ['modelValue']),\n }}\n v-slots={{\n ...slots,\n ...scopedSlots,\n }}\n >\n {renderFunc()}\n </ElDialog>\n )\n },\n })\n if (render) {\n // const app = createApp(component)\n // Object.assign(app._context, parentInstance.appContext)\n // app.mount(container)\n const container = document.createElement('div')\n // container.setAttribute('id', 'ep-dialog-container')\n const newInstance = instance || getCurrentInstance()\n const config = inject(configProviderContextKey) as any\n // const parentConfig =\n // newInstance?.provides[configProviderContextKey] ||\n // newInstance?.appContext?.provides[configProviderContextKey]\n // const vnode = h(Dialog)\n const vnode = h(\n ElConfigProvider,\n { locale: config?.locale },\n { default: () => h(Dialog) },\n )\n if (newInstance && newInstance.appContext) {\n // 强制继承父应用的全局组件、指令和插件\n vnode.appContext = newInstance.appContext\n }\n nextTick(() => {\n vRender(vnode, container)\n document.body.appendChild(container)\n })\n }\n\n return Dialog\n}\n"],"names":["bem","createNameSpace","useDialog","options","t","useLocale","scopedSlots","instance","render","destroyOnClose","onConfirm","confirmText","onCancel","cancelText","showFooter","dialogProps","Dialog","useTemplatePromise","destroy","promiseOptions","ctx","key","bind","resolve","reject","isResolving","renderFunc","slots","default","footer","_createVNode","e","footerPrepend","ElButton","onClick","footerInner","footerAppend","ElDialog","_mergeProps","b","closeOnClickModal","closeOnPressEscape","title","center","beforeClose","prepareProps","container","document","createElement","newInstance","getCurrentInstance","config","inject","configProviderContextKey","vnode","h","ElConfigProvider","locale","appContext","nextTick","vRender","body","appendChild"],"mappings":";;;;;;;AAgCA,MAAMA,GAAAA,GAAMC,gBAAgB,QAAQ,CAAA;AAE7B,MAAMC,SAAAA,GAAYA,CAACC,OAAAA,GAAyB,EAAC,KAAM;AACxD,EAAA,MAAM;AAAA,IAAEC;AAAAA,MAAMC,SAAAA,EAAU;AACxB,EAAA,MAAM;AAAA,IACJC,cAAc,EAAC;AAAA,IACfC,QAAAA;AAAAA,YACAC,QAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAC,SAAAA;AAAAA,IACAC,WAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAC,UAAAA;AAAAA,IACAC,UAAAA,GAAa,IAAA;AAAA,IACb,GAAGC;AAAAA,GACL,GAAIZ,OAAAA;AAEJ,EAAA,MAAMa,SAASC,kBAAAA,CAAwB;AAAA,IACrCC,OAAAA,EAAST,cAAAA;AAAAA,IACTD,MAAAA,EAAQA,CAACW,cAAAA,EAAgBC,GAAAA,KAAQ;AAE/B,MAAA,KAAA,MAAWC,OAAOf,WAAAA,EAAa;AAC7BA,QAAAA,WAAAA,CAAYe,GAAG,CAAA,GAAIf,WAAAA,CAAYe,GAAG,CAAA,CAAEC,IAAAA,CAAK,MAAMH,cAAc,CAAA;AAAA,MAC/D;AACA,MAAA,MAAM;AAAA,QAAEI,OAAAA;AAAAA,QAASC,MAAAA;AAAAA,QAAQC;AAAAA,OAAY,GAAIN,cAAAA;AACzC,MAAA,MAAMO,aAAaA,MAAM;AACvB,QAAA,OAAOlB,WACHA,QAAAA,CAAOW,cAAc,IACrBC,GAAAA,CAAIO,KAAAA,CAAMC,UAAUT,cAAc,CAAA;AAAA,MACxC,CAAA;AACA,MAAA,MAAMQ,QAAsC,EAAC;AAC7C,MAAA,IAAIb,UAAAA,EAAY;AACda,QAAAA,KAAAA,CAAME,MAAAA,GAAS,MAAAC,WAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EACD9B,GAAAA,CAAI+B,CAAAA,CAAE,QAAQ;AAAA,WAAC,CACxBzB,WAAAA,CAAY0B,gBAAgBb,cAAc,CAAA,EAACW,YAAAG,QAAAA,EAAA;AAAA,UAAA,MAAA,EAAA,SAAA;AAAA,UAAA,WAGjCC,MAAM;AACb,YAAA,IAAItB,QAAAA,EAAU;AACZA,cAAAA,QAAAA,CAASY,MAAM,CAAA;AAAA,YACjB,CAAA,MAAO;AACLA,cAAAA,MAAAA,CAAO,QAAQ,CAAA;AAAA,YACjB;AAAA,UACF;AAAA,SAAC,EAAA;AAAA,UAAAI,SAAAA,MAAA,CAEAf,UAAAA,IAAcT,CAAAA,CAAE,kBAAkB,CAAC;AAAA,SAAA,CAAA,EAErCE,WAAAA,CAAY6B,cAAchB,cAAc,CAAA,EAACW,YAAAG,QAAAA,EAAA;AAAA,UAAA,MAAA,EAAA,SAAA;AAAA,UAAA,WAG/B,YAAY;AACnB,YAAA,IAAIvB,SAAAA,EAAW;AACbA,cAAAA,SAAAA,CAAUa,OAAO,CAAA;AAAA,YACnB,CAAA,MAAO;AACLA,cAAAA,OAAAA,CAAQ,SAAS,CAAA;AAAA,YACnB;AAAA,UACF,CAAA;AAAA,UAAC,SAAA,EACQE;AAAAA,SAAW,EAAA;AAAA,UAAAG,SAAAA,MAAA,CAEnBjB,WAAAA,IAAeP,CAAAA,CAAE,mBAAmB,CAAC;AAAA,SAAA,CAAA,EAEvCE,WAAAA,CAAY8B,YAAAA,GAAejB,cAAc,CAAC,CAAA,CAAA;AAAA,MAGjD;AACA,MAAA,OAAAW,WAAAA,CAAAO,UAAAC,UAAAA,CAAA;AAAA,QAAA,OAAA,EAEWtC,IAAIuC,CAAAA,EAAE;AAAA,QAAC,YAAA,EACF;AAAA,OAAI,EAAA;AAAA,QAEdC,iBAAAA,EAAmB,KAAA;AAAA,QACnBC,kBAAAA,EAAoB,KAAA;AAAA,QACpBC,KAAAA,EAAOtC,EAAE,iBAAiB,CAAA;AAAA,QAC1BuC,MAAAA,EAAQ,KAAA;AAAA;AAAA,QAERC,aAAaA,MAAM;AACjBpB,UAAAA,MAAAA,CAAO,QAAQ,CAAA;AAAA,QACjB,CAAA;AAAA,QACA,GAAGqB,YAAAA,CAAa9B,WAAAA,EAAa,CAAC,YAAY,CAAC;AAAA,OAAC,CAAA,EAAA;AAAA,QAAAa,OAAAA,EAAAA,MAAA,CAO7CF,UAAAA,EAAY,CAAA;AAAA,QAJX,GAAGC,KAAAA;AAAAA,QACH,GAAGrB;AAAAA,OAAW,CAAA;AAAA,IAMtB;AAAA,GACD,CAAA;AACD,EAAA,IAAIE,QAAAA,EAAQ;AAIV,IAAA,MAAMsC,SAAAA,GAAYC,QAAAA,CAASC,aAAAA,CAAc,KAAK,CAAA;AAE9C,IAAA,MAAMC,WAAAA,GAAc1C,YAAY2C,kBAAAA,EAAmB;AACnD,IAAA,MAAMC,MAAAA,GAASC,OAAOC,wBAAwB,CAAA;AAK9C,IAAA,MAAMC,KAAAA,GAAQC,EACZC,gBAAAA,EACA;AAAA,MAAEC,QAAQN,MAAAA,EAAQM;AAAAA,KAAO,EACzB;AAAA,MAAE7B,OAAAA,EAASA,MAAM2B,CAAAA,CAAEvC,MAAM;AAAA,KAC3B,CAAA;AACA,IAAA,IAAIiC,WAAAA,IAAeA,YAAYS,UAAAA,EAAY;AAEzCJ,MAAAA,KAAAA,CAAMI,aAAaT,WAAAA,CAAYS,UAAAA;AAAAA,IACjC;AACAC,IAAAA,QAAAA,CAAS,MAAM;AACbC,MAAAA,MAAAA,CAAQN,OAAOR,SAAS,CAAA;AACxBC,MAAAA,QAAAA,CAASc,IAAAA,CAAKC,YAAYhB,SAAS,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,OAAO9B,MAAAA;AACT;;;;"}
@@ -2,6 +2,7 @@ import type { DialogOptions } from './use-dialog';
2
2
  import type { FormProps } from 'el-plus/es/components/form';
3
3
  type Options = {
4
4
  title?: string;
5
+ width?: string;
5
6
  dialogProps?: DialogOptions;
6
7
  formData?: FormProps['model'];
7
8
  } & FormProps;
@@ -8,6 +8,7 @@ const useFormDialog = (options = {}) => {
8
8
  const {
9
9
  dialogProps,
10
10
  title,
11
+ width = "80%",
11
12
  ...formProps
12
13
  } = options;
13
14
  const formRef = ref();
@@ -21,9 +22,9 @@ const useFormDialog = (options = {}) => {
21
22
  };
22
23
  return useDialog({
23
24
  class: bem.b(),
24
- width: "80%",
25
+ width,
25
26
  title,
26
- render: (props) => {
27
+ render: () => {
27
28
  return createVNode(EpForm, mergeProps({
28
29
  "ref": formRef,
29
30
  "modelValue": formData,
@@ -36,7 +37,7 @@ const useFormDialog = (options = {}) => {
36
37
  },
37
38
  onConfirm: async (resolve) => {
38
39
  await formRef.value.validate();
39
- resolve(JSON.parse(JSON.stringify(formData)));
40
+ resolve(isUseComFormData ? JSON.parse(JSON.stringify(formData)) : formData);
40
41
  resetForm();
41
42
  },
42
43
  onCancel: async (resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-form-dialog.mjs","sources":["../../../../../packages/hooks/dialog/use-form-dialog.tsx"],"sourcesContent":["import type { DialogOptions } from './use-dialog'\nimport type { FormProps } from '@el-plus/components/form'\nimport EpForm from '@el-plus/components/form'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { useDialog } from './use-dialog'\nimport { reactive, ref, toRaw } from 'vue'\nconst bem = createNameSpace('form-dialog')\n\ntype Options = {\n title?: string\n dialogProps?: DialogOptions\n formData?: FormProps['model']\n} & FormProps\nexport const useFormDialog = (options: Options = {}) => {\n const { dialogProps, title, ...formProps } = options\n const formRef = ref()\n const isUseComFormData = !formProps.formData\n let formData = isUseComFormData ? reactive({}) : formProps.formData // eslint-disable-line\n const isDestroy = dialogProps?.destroyOnClose\n const resetForm = async () => {\n if (isDestroy) {\n await formRef.value?.resetFields()\n }\n }\n return useDialog({\n class: bem.b(),\n width: '80%',\n title,\n render: (props) => {\n return (\n <EpForm\n ref={formRef}\n v-model={formData}\n {...{\n col: 1,\n 'label-width': 'auto',\n ...formProps,\n }}\n />\n )\n },\n onConfirm: async (resolve) => {\n await formRef.value.validate()\n resolve(JSON.parse(JSON.stringify(formData)))\n resetForm()\n },\n onCancel: async (resolve) => {\n await resetForm()\n resolve('cancel')\n },\n ...dialogProps,\n })\n}\n"],"names":["bem","createNameSpace","useFormDialog","options","dialogProps","title","formProps","formRef","ref","isUseComFormData","formData","reactive","isDestroy","destroyOnClose","resetForm","value","resetFields","useDialog","class","b","width","render","props","_createVNode","EpForm","_mergeProps","$event","col","onConfirm","resolve","validate","JSON","parse","stringify","onCancel"],"mappings":";;;;;AAMA,MAAMA,GAAAA,GAAMC,gBAAgB,aAAa,CAAA;AAOlC,MAAMC,aAAAA,GAAgBA,CAACC,OAAAA,GAAmB,EAAC,KAAM;AACtD,EAAA,MAAM;AAAA,IAAEC,WAAAA;AAAAA,IAAaC,KAAAA;AAAAA,IAAO,GAAGC;AAAAA,GAAU,GAAIH,OAAAA;AAC7C,EAAA,MAAMI,UAAUC,GAAAA,EAAI;AACpB,EAAA,MAAMC,gBAAAA,GAAmB,CAACH,SAAAA,CAAUI,QAAAA;AACpC,EAAA,IAAIA,WAAWD,gBAAAA,GAAmBE,QAAAA,CAAS,EAAE,IAAIL,SAAAA,CAAUI,QAAAA;AAC3D,EAAA,MAAME,YAAYR,WAAAA,EAAaS,cAAAA;AAC/B,EAAA,MAAMC,YAAY,YAAY;AAC5B,IAAA,IAAIF,SAAAA,EAAW;AACb,MAAA,MAAML,OAAAA,CAAQQ,OAAOC,WAAAA,EAAY;AAAA,IACnC;AAAA,EACF,CAAA;AACA,EAAA,OAAOC,SAAAA,CAAU;AAAA,IACfC,KAAAA,EAAOlB,IAAImB,CAAAA,EAAE;AAAA,IACbC,KAAAA,EAAO,KAAA;AAAA,IACPf,KAAAA;AAAAA,IACAgB,QAASC,CAAAA,KAAAA,KAAU;AACjB,MAAA,OAAAC,WAAAA,CAAAC,QAAAC,UAAAA,CAAA;AAAA,QAAA,KAAA,EAESlB,OAAAA;AAAAA,QAAO,YAAA,EACHG,QAAAA;AAAAA,QAAQ,qBAAA,EAAAgB,YAARhB,QAAAA,GAAQgB;AAAAA,OAAA,EAAA;AAAA,QAEfC,GAAAA,EAAK,CAAA;AAAA,QACL,aAAA,EAAe,MAAA;AAAA,QACf,GAAGrB;AAAAA,OAAS,GAAA,IAAA,CAAA;AAAA,IAIpB,CAAA;AAAA,IACAsB,SAAAA,EAAW,OAAOC,OAAAA,KAAY;AAC5B,MAAA,MAAMtB,OAAAA,CAAQQ,MAAMe,QAAAA,EAAS;AAC7BD,MAAAA,OAAAA,CAAQE,KAAKC,KAAAA,CAAMD,IAAAA,CAAKE,SAAAA,CAAUvB,QAAQ,CAAC,CAAC,CAAA;AAC5CI,MAAAA,SAAAA,EAAU;AAAA,IACZ,CAAA;AAAA,IACAoB,QAAAA,EAAU,OAAOL,OAAAA,KAAY;AAC3B,MAAA,MAAMf,SAAAA,EAAU;AAChBe,MAAAA,OAAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,GAAGzB;AAAAA,GACJ,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"use-form-dialog.mjs","sources":["../../../../../packages/hooks/dialog/use-form-dialog.tsx"],"sourcesContent":["import type { DialogOptions } from './use-dialog'\nimport type { FormProps } from '@el-plus/components/form'\nimport EpForm from '@el-plus/components/form'\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { useDialog } from './use-dialog'\nimport { reactive, ref, toRaw } from 'vue'\nconst bem = createNameSpace('form-dialog')\n\ntype Options = {\n title?: string\n width?: string\n dialogProps?: DialogOptions\n formData?: FormProps['model']\n} & FormProps\nexport const useFormDialog = (options: Options = {}) => {\n const { dialogProps, title, width = '80%', ...formProps } = options\n const formRef = ref()\n const isUseComFormData = !formProps.formData\n let formData = isUseComFormData ? reactive({}) : formProps.formData // eslint-disable-line\n const isDestroy = dialogProps?.destroyOnClose\n const resetForm = async () => {\n if (isDestroy) {\n await formRef.value?.resetFields()\n }\n }\n return useDialog({\n class: bem.b(),\n width,\n title,\n render: () => {\n return (\n <EpForm\n ref={formRef}\n v-model={formData}\n {...{\n col: 1,\n 'label-width': 'auto',\n ...formProps,\n }}\n />\n )\n },\n onConfirm: async (resolve) => {\n await formRef.value.validate()\n resolve(\n isUseComFormData ? JSON.parse(JSON.stringify(formData)) : formData,\n )\n resetForm()\n },\n onCancel: async (resolve) => {\n await resetForm()\n resolve('cancel')\n },\n ...dialogProps,\n })\n}\n"],"names":["bem","createNameSpace","useFormDialog","options","dialogProps","title","width","formProps","formRef","ref","isUseComFormData","formData","reactive","isDestroy","destroyOnClose","resetForm","value","resetFields","useDialog","class","b","render","_createVNode","EpForm","_mergeProps","$event","col","onConfirm","resolve","validate","JSON","parse","stringify","onCancel"],"mappings":";;;;;AAMA,MAAMA,GAAAA,GAAMC,gBAAgB,aAAa,CAAA;AAQlC,MAAMC,aAAAA,GAAgBA,CAACC,OAAAA,GAAmB,EAAC,KAAM;AACtD,EAAA,MAAM;AAAA,IAAEC,WAAAA;AAAAA,IAAaC,KAAAA;AAAAA,IAAOC,KAAAA,GAAQ,KAAA;AAAA,IAAO,GAAGC;AAAAA,GAAU,GAAIJ,OAAAA;AAC5D,EAAA,MAAMK,UAAUC,GAAAA,EAAI;AACpB,EAAA,MAAMC,gBAAAA,GAAmB,CAACH,SAAAA,CAAUI,QAAAA;AACpC,EAAA,IAAIA,WAAWD,gBAAAA,GAAmBE,QAAAA,CAAS,EAAE,IAAIL,SAAAA,CAAUI,QAAAA;AAC3D,EAAA,MAAME,YAAYT,WAAAA,EAAaU,cAAAA;AAC/B,EAAA,MAAMC,YAAY,YAAY;AAC5B,IAAA,IAAIF,SAAAA,EAAW;AACb,MAAA,MAAML,OAAAA,CAAQQ,OAAOC,WAAAA,EAAY;AAAA,IACnC;AAAA,EACF,CAAA;AACA,EAAA,OAAOC,SAAAA,CAAU;AAAA,IACfC,KAAAA,EAAOnB,IAAIoB,CAAAA,EAAE;AAAA,IACbd,KAAAA;AAAAA,IACAD,KAAAA;AAAAA,IACAgB,QAAQA,MAAM;AACZ,MAAA,OAAAC,WAAAA,CAAAC,QAAAC,UAAAA,CAAA;AAAA,QAAA,KAAA,EAEShB,OAAAA;AAAAA,QAAO,YAAA,EACHG,QAAAA;AAAAA,QAAQ,qBAAA,EAAAc,YAARd,QAAAA,GAAQc;AAAAA,OAAA,EAAA;AAAA,QAEfC,GAAAA,EAAK,CAAA;AAAA,QACL,aAAA,EAAe,MAAA;AAAA,QACf,GAAGnB;AAAAA,OAAS,GAAA,IAAA,CAAA;AAAA,IAIpB,CAAA;AAAA,IACAoB,SAAAA,EAAW,OAAOC,OAAAA,KAAY;AAC5B,MAAA,MAAMpB,OAAAA,CAAQQ,MAAMa,QAAAA,EAAS;AAC7BD,MAAAA,OAAAA,CACElB,gBAAAA,GAAmBoB,KAAKC,KAAAA,CAAMD,IAAAA,CAAKE,UAAUrB,QAAQ,CAAC,IAAIA,QAC5D,CAAA;AACAI,MAAAA,SAAAA,EAAU;AAAA,IACZ,CAAA;AAAA,IACAkB,QAAAA,EAAU,OAAOL,OAAAA,KAAY;AAC3B,MAAA,MAAMb,SAAAA,EAAU;AAChBa,MAAAA,OAAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,GAAGxB;AAAAA,GACJ,CAAA;AACH;;;;"}
@@ -5,3 +5,4 @@ export * from './dialog/use-choose-dialog';
5
5
  export * from './dialog/use-form-dialog';
6
6
  export * from './use-locale';
7
7
  export * from './use-navigation';
8
+ export * from './dialog/use-confirm-dialog';
@@ -5,4 +5,5 @@ export { useChooseDialog } from './dialog/use-choose-dialog.mjs';
5
5
  export { useFormDialog } from './dialog/use-form-dialog.mjs';
6
6
  export { useLocale } from './use-locale.mjs';
7
7
  export { useNavigation } from './use-navigation.mjs';
8
+ export { useConfirmDialog } from './dialog/use-confirm-dialog.mjs';
8
9
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
package/es/index.mjs CHANGED
@@ -38,6 +38,7 @@ export { useChooseDialog } from './hooks/dialog/use-choose-dialog.mjs';
38
38
  export { useFormDialog } from './hooks/dialog/use-form-dialog.mjs';
39
39
  export { useLocale } from './hooks/use-locale.mjs';
40
40
  export { useNavigation } from './hooks/use-navigation.mjs';
41
+ export { useConfirmDialog } from './hooks/dialog/use-confirm-dialog.mjs';
41
42
 
42
43
  const INSTALLED_KEY = /* @__PURE__ */ Symbol("INSTALLED_KEY");
43
44
  const install = (app, options) => {
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../packages/el-plus/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue'\nimport components from './components'\nimport { version } from './package.json'\nimport * as plugins from './plugins'\n// import type { RouteRecordRaw } from 'vue-router'\n\nconst INSTALLED_KEY = Symbol('INSTALLED_KEY')\nconst provideGlobalConfig = (config, app) => {}\nexport type EpOptions = {\n // routes?: RouteRecordRaw\n}\nexport const install = (app: App, options?: EpOptions) => {\n if (app[INSTALLED_KEY]) return // 防止多次use导致重复安装注册,控制台警告\n app[INSTALLED_KEY] = true\n components.forEach((c) => app.use(c))\n Object.values(plugins).forEach((p) => app.use(p))\n if (options) {\n provideGlobalConfig(options, app)\n }\n}\n\nconst plugin: Plugin & { version: string } = {\n install,\n version,\n}\nexport default plugin\nexport * from '@el-plus/components/index'\nexport * from '@el-plus/hooks'\nexport * from '@el-plus/directives'\n"],"names":["plugins"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,aAAA,0BAAuB,eAAe,CAAA;AAKrC,MAAM,OAAA,GAAU,CAAC,GAAA,EAAU,OAAA,KAAwB;AACxD,EAAA,IAAI,GAAA,CAAI,aAAa,CAAA,EAAG;AACxB,EAAA,GAAA,CAAI,aAAa,CAAA,GAAI,IAAA;AACrB,EAAA,UAAA,CAAW,QAAQ,CAAC,CAAA,KAAM,GAAA,CAAI,GAAA,CAAI,CAAC,CAAC,CAAA;AACpC,EAAA,MAAA,CAAO,MAAA,CAAOA,KAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM,GAAA,CAAI,GAAA,CAAI,CAAC,CAAC,CAAA;AAIlD;AAEA,MAAM,MAAA,GAAuC;AAAA,EAC3C,OAAA;AAAA,EACA;AACF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../packages/el-plus/index.ts"],"sourcesContent":["import type { App, Plugin } from 'vue'\nimport components from './components'\nimport { version } from './package.json'\nimport * as plugins from './plugins'\n// import type { RouteRecordRaw } from 'vue-router'\n\nconst INSTALLED_KEY = Symbol('INSTALLED_KEY')\nconst provideGlobalConfig = (config, app) => {}\nexport type EpOptions = {\n // routes?: RouteRecordRaw\n}\nexport const install = (app: App, options?: EpOptions) => {\n if (app[INSTALLED_KEY]) return // 防止多次use导致重复安装注册,控制台警告\n app[INSTALLED_KEY] = true\n components.forEach((c) => app.use(c))\n Object.values(plugins).forEach((p) => app.use(p))\n if (options) {\n provideGlobalConfig(options, app)\n }\n}\n\nconst plugin: Plugin & { version: string } = {\n install,\n version,\n}\nexport default plugin\nexport * from '@el-plus/components/index'\nexport * from '@el-plus/hooks'\nexport * from '@el-plus/directives'\n"],"names":["plugins"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,aAAA,0BAAuB,eAAe,CAAA;AAKrC,MAAM,OAAA,GAAU,CAAC,GAAA,EAAU,OAAA,KAAwB;AACxD,EAAA,IAAI,GAAA,CAAI,aAAa,CAAA,EAAG;AACxB,EAAA,GAAA,CAAI,aAAa,CAAA,GAAI,IAAA;AACrB,EAAA,UAAA,CAAW,QAAQ,CAAC,CAAA,KAAM,GAAA,CAAI,GAAA,CAAI,CAAC,CAAC,CAAA;AACpC,EAAA,MAAA,CAAO,MAAA,CAAOA,KAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM,GAAA,CAAI,GAAA,CAAI,CAAC,CAAC,CAAA;AAIlD;AAEA,MAAM,MAAA,GAAuC;AAAA,EAC3C,OAAA;AAAA,EACA;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- var version = "0.0.51";
1
+ var version = "0.0.53";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.mjs.map
@@ -1,11 +1,12 @@
1
- import type { ExtractPropTypes, PropType } from 'vue';
1
+ import type { ExtractPublicPropTypes, PropType } from 'vue';
2
+ import type { PageMode } from 'el-plus/es/hooks/use-navigation';
2
3
  export declare const attachmentProps: {
3
4
  readonly formatColumns: {
4
5
  readonly type: PropType<import("el-plus/es/components/table").TableColumn[]>;
5
6
  readonly default: () => never[];
6
7
  };
7
8
  readonly mode: {
8
- readonly type: PropType<import("el-plus/es/hooks").PageMode>;
9
+ readonly type: PropType<PageMode>;
9
10
  };
10
11
  readonly openType: {
11
12
  readonly type: PropType<"dialog" | "normal">;
@@ -24,4 +25,4 @@ export declare const attachmentProps: {
24
25
  readonly default: false;
25
26
  };
26
27
  };
27
- export type AttachmentProps = ExtractPropTypes<typeof attachmentProps>;
28
+ export type AttachmentProps = ExtractPublicPropTypes<typeof attachmentProps>;
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var header = require('../../header/src/header.js');
4
3
  var table = require('../../table/src/table.js');
5
4
 
6
5
  const attachmentProps = {
@@ -10,7 +9,7 @@ const attachmentProps = {
10
9
  },
11
10
  // 页面模式
12
11
  mode: {
13
- ...header.headerProps.mode
12
+ type: String
14
13
  },
15
14
  // 展示模式
16
15
  openType: {
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.js","sources":["../../../../../../packages/components/attachment/src/attachment.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType } from 'vue'\nimport { tableProps } from '@el-plus/components/table'\nimport { headerProps } from '@el-plus/components/header'\nexport const attachmentProps = {\n // 格式化列\n formatColumns: {\n ...tableProps.formatColumns,\n },\n // 页面模式\n mode: {\n ...headerProps.mode,\n },\n // 展示模式\n openType: {\n type: String as PropType<'dialog' | 'normal'>,\n default: 'dialog',\n },\n // 是否需要类型\n isType: {\n type: Boolean,\n default: true,\n },\n // 是否需要备注\n isNote: {\n type: Boolean,\n default: false,\n },\n // 是否需要打开弹窗按钮\n isShowOpenDialogButton: {\n type: Boolean,\n default: false,\n },\n} as const\nexport type AttachmentProps = ExtractPropTypes<typeof attachmentProps>\n"],"names":["tableProps","headerProps"],"mappings":";;;;;AAGO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,aAAA,EAAe;AAAA,IACb,GAAGA,gBAAA,CAAW;AAAA,GAChB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,GAAGC,kBAAA,CAAY;AAAA,GACjB;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;;;;"}
1
+ {"version":3,"file":"attachment.js","sources":["../../../../../../packages/components/attachment/src/attachment.ts"],"sourcesContent":["import type { ExtractPublicPropTypes, PropType } from 'vue'\nimport { tableProps } from '@el-plus/components/table'\nimport type { PageMode } from '@el-plus/hooks/use-navigation'\n\nexport const attachmentProps = {\n // 格式化列\n formatColumns: {\n ...tableProps.formatColumns,\n },\n // 页面模式\n mode: {\n type: String as PropType<PageMode>,\n },\n // 展示模式\n openType: {\n type: String as PropType<'dialog' | 'normal'>,\n default: 'dialog',\n },\n // 是否需要类型\n isType: {\n type: Boolean,\n default: true,\n },\n // 是否需要备注\n isNote: {\n type: Boolean,\n default: false,\n },\n // 是否需要打开弹窗按钮\n isShowOpenDialogButton: {\n type: Boolean,\n default: false,\n },\n} as const\nexport type AttachmentProps = ExtractPublicPropTypes<typeof attachmentProps>\n"],"names":["tableProps"],"mappings":";;;;AAIO,MAAM,eAAA,GAAkB;AAAA;AAAA,EAE7B,aAAA,EAAe;AAAA,IACb,GAAGA,gBAAA,CAAW;AAAA,GAChB;AAAA;AAAA,EAEA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM;AAAA,GACR;AAAA;AAAA,EAEA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA;AAAA,EAEA,sBAAA,EAAwB;AAAA,IACtB,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb;;;;"}
@@ -60,7 +60,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
60
60
  return (_ctx, _cache) => {
61
61
  const _component_EpButtons = vue.resolveComponent("EpButtons");
62
62
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
63
- _ctx.isShowOpenDialogButton ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElButton), {
63
+ props$1.isShowOpenDialogButton ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlus.ElButton), {
64
64
  key: 0,
65
65
  type: "primary",
66
66
  plain: "",
@@ -76,7 +76,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
76
76
  vue.createVNode(vue.unref(AttachmentDialog), null, {
77
77
  default: vue.withCtx(() => [
78
78
  vue.createElementVNode("div", { style: { "margin-bottom": "10px", "text-align": "right" } }, [
79
- _ctx.openType === "dialog" ? (vue.openBlock(), vue.createBlock(_component_EpButtons, {
79
+ props$1.openType === "dialog" ? (vue.openBlock(), vue.createBlock(_component_EpButtons, {
80
80
  key: 0,
81
81
  type: "primary",
82
82
  list: [
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.vue2.js","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <ElButton\n v-if=\"isShowOpenDialogButton\"\n type=\"primary\"\n plain\n size=\"small\"\n :class=\"bem.e('handler')\"\n @click=\"open\"\n >\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\n </ElButton>\n <AttachmentDialog>\n <div style=\"margin-bottom: 10px; text-align: right\">\n <EpButtons\n v-if=\"openType === 'dialog'\"\n type=\"primary\"\n :list=\"[\n {\n name: t('ep.attachment.addAttachment'),\n type: 'primary',\n onClick: addAttachment,\n },\n ]\"\n />\n </div>\n\n <EpTable\n ref=\"tableRef\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </EpTable>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { ElButton } from 'element-plus'\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst { columns, addAttachment, isNormalOpen, onConfirm, onCancel } =\n useAttachment(props, {\n data: modelValue,\n })\nconst AttachmentDialog = useDialog({\n width: 850,\n center: true,\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\n modal: !isNormalOpen,\n showClose: !isNormalOpen,\n showFooter: !isNormalOpen,\n transition: isNormalOpen ? '' : 'dialog-fade',\n modalClass: bem.em(\n 'dialog',\n props.openType === 'normal' ? props.openType : '',\n ),\n onConfirm: async (resolve) => {\n onConfirm(resolve)\n },\n onCancel: (resolve) => {\n onCancel(resolve)\n },\n})\nconst open = AttachmentDialog.open\nif (isNormalOpen) {\n open()\n}\ndefineExpose({\n open,\n})\n</script>\n"],"names":["useLocale","bem","createNameSpace","props","_useModel","useAttachment","useDialog","isShowOpenDialogButton","_createBlock","_unref","ElButton","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","openType","_mergeProps","prepareClassNames","prepareStyles"],"mappings":"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"}
1
+ {"version":3,"file":"attachment.vue2.js","sources":["../../../../../../packages/components/attachment/src/attachment.vue"],"sourcesContent":["<template>\n <ElButton\n v-if=\"props.isShowOpenDialogButton\"\n type=\"primary\"\n plain\n size=\"small\"\n :class=\"bem.e('handler')\"\n @click=\"open\"\n >\n {{ t('ep.attachment.manageAttachment') }}({{ modelValue?.length || 0 }})\n </ElButton>\n <AttachmentDialog>\n <div style=\"margin-bottom: 10px; text-align: right\">\n <EpButtons\n v-if=\"props.openType === 'dialog'\"\n type=\"primary\"\n :list=\"[\n {\n name: t('ep.attachment.addAttachment'),\n type: 'primary',\n onClick: addAttachment,\n },\n ]\"\n />\n </div>\n\n <EpTable\n ref=\"tableRef\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n :style=\"{\n ...prepareStyles(),\n }\"\n :columns=\"columns\"\n :data=\"modelValue\"\n v-bind=\"props\"\n >\n </EpTable>\n </AttachmentDialog>\n</template>\n<script setup lang=\"ts\">\nimport { createNameSpace } from '@el-plus/utils/bem'\nimport { prepareClassNames, prepareStyles } from '@el-plus/utils/props'\nimport { attachmentProps } from './attachment'\nimport EpTable from '@el-plus/components/table'\nimport { useAttachment } from './use-attachment'\nimport type { TableProps } from '@el-plus/components/table'\nimport { useDialog } from '@el-plus/hooks/dialog/use-dialog'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { ElButton } from 'element-plus'\nconst { t } = useLocale()\ndefineOptions({\n name: 'EpAttachment',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('attachment')\nconst props = defineProps(attachmentProps)\nconst modelValue = defineModel<TableProps['data']>()\nconst { columns, addAttachment, isNormalOpen, onConfirm, onCancel } =\n useAttachment(props, {\n data: modelValue,\n })\nconst AttachmentDialog = useDialog({\n width: 850,\n center: true,\n title: isNormalOpen ? '' : t('ep.attachment.manageAttachment'),\n modal: !isNormalOpen,\n showClose: !isNormalOpen,\n showFooter: !isNormalOpen,\n transition: isNormalOpen ? '' : 'dialog-fade',\n modalClass: bem.em(\n 'dialog',\n props.openType === 'normal' ? props.openType : '',\n ),\n onConfirm: async (resolve) => {\n onConfirm(resolve)\n },\n onCancel: (resolve) => {\n onCancel(resolve)\n },\n})\nconst open = AttachmentDialog.open\nif (isNormalOpen) {\n open()\n}\ndefineExpose({\n open,\n})\n</script>\n"],"names":["useLocale","bem","createNameSpace","props","_useModel","useAttachment","useDialog","_createBlock","_unref","ElButton","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","_createElementVNode","_mergeProps","prepareClassNames","prepareStyles"],"mappings":"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"}
@@ -102,6 +102,8 @@ const useAttachment = (props, { data }) => {
102
102
  const onConfirm = async (resolve) => {
103
103
  await tableRef.value?.validate();
104
104
  resolve(data.value);
105
+ toBeConfirmData = [];
106
+ toBeDeleteData = {};
105
107
  };
106
108
  const onCancel = (resolve) => {
107
109
  if (toBeConfirmData.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"use-attachment.js","sources":["../../../../../../packages/components/attachment/src/use-attachment.ts"],"sourcesContent":["import { ref, computed, useTemplateRef } from 'vue'\nimport { useNavigation } from '@el-plus/hooks/use-navigation'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { downloadFile, previewFile, importFile } from '@el-plus/utils/file'\nimport { Cookies } from '@el-plus/utils/cookie'\nimport type { TableInstance } from '@el-plus/components/table'\n\nexport const useAttachment = (props, { data }) => {\n const { mode: defaultMode } = useNavigation()\n const { t } = useLocale()\n const mode = computed(() => {\n return props.mode || defaultMode.value\n })\n const tableRef = useTemplateRef<TableInstance>('tableRef')\n const isNormalOpen = props.openType === 'normal'\n const isDialogOpen = props.openType === 'dialog'\n\n // 待确认的附件列表\n let toBeConfirmData: Record<string, any>[] = []\n // 待删除的附件列表\n let toBeDeleteData: {\n [key: number]: Record<string, any> // key要存储原来索引以便保留原顺序\n } = {}\n const columns = ref([\n {\n type: 'EpButtons',\n label: t('ep.attachment.operation'),\n width: '120px',\n props: {\n type: 'text',\n list: [\n {\n name: t('ep.attachment.download'),\n onClick({ row }) {\n downloadFile({\n src: row.filePath,\n fileName: row.originalFilename || row.originalFileName,\n })\n },\n },\n {\n name: t('ep.attachment.delete'),\n disabled: () => {\n return mode.value === 'browse'\n },\n onClick: ({ $index, row }) => {\n if (isDialogOpen) {\n // 待删除的附件列表\n toBeDeleteData[$index] = row\n }\n data.value.splice($index, 1)\n },\n },\n ],\n },\n },\n {\n label: t('ep.attachment.attachmentType'),\n prop: 'type',\n type: 'EpSelect',\n required: true,\n show: () => props.isType,\n props: {\n desc: ({ row }) => {\n return row.typeDesc\n },\n },\n },\n {\n label: t('ep.attachment.fileName'),\n prop: 'originalFilename',\n type: 'EpLink',\n onClick({ row }) {\n previewFile(row.filePath)\n },\n },\n {\n label: t('ep.attachment.creator'),\n prop: 'createBy',\n },\n {\n label: t('ep.attachment.createTime'),\n prop: 'createTime',\n },\n {\n label: t('ep.attachment.description'),\n prop: 'note',\n type: 'EpInput',\n show: () => props.isNote,\n },\n ])\n const addAttachment = async () => {\n toBeConfirmData = []\n const fileData = await importFile({\n api: 'api-f/fast/files/save',\n extraData: {\n createBy: Cookies.get('accountName') || '',\n },\n })\n fileData.fileId = fileData.id\n delete fileData.id\n if (isDialogOpen) {\n // 待确认的附件列表\n toBeConfirmData.push(fileData)\n }\n data.value.push(fileData)\n }\n // 确认\n const onConfirm = async (resolve) => {\n await tableRef.value?.validate()\n resolve(data.value)\n }\n // 取消\n const onCancel = (resolve) => {\n if (toBeConfirmData.length) {\n // 找到待确认的附件\n const index = data.value.findIndex((item) => {\n return item.fileId === toBeConfirmData[0].fileId\n })\n if (index !== -1) {\n // 删除待确认的附件\n data.value.splice(index, 1)\n }\n // 清空待确认的附件列表\n toBeConfirmData = []\n }\n if (Object.keys(toBeDeleteData).length) {\n // 找到待删除的附件在原位置插入\n Object.keys(toBeDeleteData).forEach((oldIndex) => {\n data.value.splice(Number(oldIndex), 0, toBeDeleteData[oldIndex])\n })\n // 清空待删除的附件列表\n toBeDeleteData = {}\n }\n resolve()\n }\n return {\n columns,\n addAttachment,\n isNormalOpen,\n isDialogOpen,\n onConfirm,\n onCancel,\n }\n}\n"],"names":["useNavigation","useLocale","computed","useTemplateRef","ref","downloadFile","previewFile","importFile"],"mappings":"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"}
1
+ {"version":3,"file":"use-attachment.js","sources":["../../../../../../packages/components/attachment/src/use-attachment.ts"],"sourcesContent":["import { ref, computed, useTemplateRef } from 'vue'\nimport { useNavigation } from '@el-plus/hooks/use-navigation'\nimport { useLocale } from '@el-plus/hooks/use-locale'\nimport { downloadFile, previewFile, importFile } from '@el-plus/utils/file'\nimport { Cookies } from '@el-plus/utils/cookie'\nimport type { TableInstance } from '@el-plus/components/table'\n\nexport const useAttachment = (props, { data }) => {\n const { mode: defaultMode } = useNavigation()\n const { t } = useLocale()\n const mode = computed(() => {\n return props.mode || defaultMode.value\n })\n const tableRef = useTemplateRef<TableInstance>('tableRef')\n const isNormalOpen = props.openType === 'normal'\n const isDialogOpen = props.openType === 'dialog'\n\n // 待确认的附件列表\n let toBeConfirmData: Record<string, any>[] = []\n // 待删除的附件列表\n let toBeDeleteData: {\n [key: number]: Record<string, any> // key要存储原来索引以便保留原顺序\n } = {}\n const columns = ref([\n {\n type: 'EpButtons',\n label: t('ep.attachment.operation'),\n width: '120px',\n props: {\n type: 'text',\n list: [\n {\n name: t('ep.attachment.download'),\n onClick({ row }) {\n downloadFile({\n src: row.filePath,\n fileName: row.originalFilename || row.originalFileName,\n })\n },\n },\n {\n name: t('ep.attachment.delete'),\n disabled: () => {\n return mode.value === 'browse'\n },\n onClick: ({ $index, row }) => {\n if (isDialogOpen) {\n // 待删除的附件列表\n toBeDeleteData[$index] = row\n }\n data.value.splice($index, 1)\n },\n },\n ],\n },\n },\n {\n label: t('ep.attachment.attachmentType'),\n prop: 'type',\n type: 'EpSelect',\n required: true,\n show: () => props.isType,\n props: {\n desc: ({ row }) => {\n return row.typeDesc\n },\n },\n },\n {\n label: t('ep.attachment.fileName'),\n prop: 'originalFilename',\n type: 'EpLink',\n onClick({ row }) {\n previewFile(row.filePath)\n },\n },\n {\n label: t('ep.attachment.creator'),\n prop: 'createBy',\n },\n {\n label: t('ep.attachment.createTime'),\n prop: 'createTime',\n },\n {\n label: t('ep.attachment.description'),\n prop: 'note',\n type: 'EpInput',\n show: () => props.isNote,\n },\n ])\n const addAttachment = async () => {\n toBeConfirmData = []\n const fileData = await importFile({\n api: 'api-f/fast/files/save',\n extraData: {\n createBy: Cookies.get('accountName') || '',\n },\n })\n fileData.fileId = fileData.id\n delete fileData.id\n if (isDialogOpen) {\n // 待确认的附件列表\n toBeConfirmData.push(fileData)\n }\n data.value.push(fileData)\n }\n // 确认\n const onConfirm = async (resolve) => {\n await tableRef.value?.validate()\n resolve(data.value)\n toBeConfirmData = []\n toBeDeleteData = {}\n }\n // 取消\n const onCancel = (resolve) => {\n if (toBeConfirmData.length) {\n // 找到待确认的附件\n const index = data.value.findIndex((item) => {\n return item.fileId === toBeConfirmData[0].fileId\n })\n if (index !== -1) {\n // 删除待确认的附件\n data.value.splice(index, 1)\n }\n // 清空待确认的附件列表\n toBeConfirmData = []\n }\n if (Object.keys(toBeDeleteData).length) {\n // 找到待删除的附件在原位置插入\n Object.keys(toBeDeleteData).forEach((oldIndex) => {\n data.value.splice(Number(oldIndex), 0, toBeDeleteData[oldIndex])\n })\n // 清空待删除的附件列表\n toBeDeleteData = {}\n }\n resolve()\n }\n return {\n columns,\n addAttachment,\n isNormalOpen,\n isDialogOpen,\n onConfirm,\n onCancel,\n }\n}\n"],"names":["useNavigation","useLocale","computed","useTemplateRef","ref","downloadFile","previewFile","importFile"],"mappings":"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"}