ll-plus 2.9.9 → 2.9.11

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 (73) hide show
  1. package/es/components/icon-base/index.d.ts +2 -1
  2. package/es/components/icon-base/src/icon-base.vue.d.ts +2 -1
  3. package/es/components/operate-icon/index.d.ts +2 -1
  4. package/es/components/operate-icon/src/operate-icon.vue.d.ts +2 -1
  5. package/es/components/upload-image/index.d.ts +4 -0
  6. package/es/components/upload-image/src/upload-image.d.ts +1 -0
  7. package/es/components/upload-image/src/upload-image.vue.d.ts +4 -0
  8. package/es/packages/components/icon-base/src/icon-base.vue2.mjs +10 -2
  9. package/es/packages/components/icon-base/src/icon-base.vue2.mjs.map +1 -1
  10. package/es/packages/components/operate-icon/src/operate-icon.vue2.mjs +18 -8
  11. package/es/packages/components/operate-icon/src/operate-icon.vue2.mjs.map +1 -1
  12. package/es/packages/components/upload-image/src/upload-image.mjs +4 -0
  13. package/es/packages/components/upload-image/src/upload-image.mjs.map +1 -1
  14. package/es/packages/components/upload-image/src/upload-image.vue2.mjs +24 -23
  15. package/es/packages/components/upload-image/src/upload-image.vue2.mjs.map +1 -1
  16. package/index.full.js +54 -31
  17. package/index.full.min.js +17 -17
  18. package/index.full.min.js.map +1 -1
  19. package/index.full.min.mjs +18 -18
  20. package/index.full.min.mjs.map +1 -1
  21. package/index.full.mjs +54 -31
  22. package/lib/components/icon-base/index.d.ts +2 -1
  23. package/lib/components/icon-base/src/icon-base.vue.d.ts +2 -1
  24. package/lib/components/operate-icon/index.d.ts +2 -1
  25. package/lib/components/operate-icon/src/operate-icon.vue.d.ts +2 -1
  26. package/lib/components/upload-image/index.d.ts +4 -0
  27. package/lib/components/upload-image/src/upload-image.d.ts +1 -0
  28. package/lib/components/upload-image/src/upload-image.vue.d.ts +4 -0
  29. package/lib/packages/components/icon-base/src/icon-base.vue2.js +9 -1
  30. package/lib/packages/components/icon-base/src/icon-base.vue2.js.map +1 -1
  31. package/lib/packages/components/operate-icon/src/operate-icon.vue2.js +18 -8
  32. package/lib/packages/components/operate-icon/src/operate-icon.vue2.js.map +1 -1
  33. package/lib/packages/components/upload-image/src/upload-image.js +4 -0
  34. package/lib/packages/components/upload-image/src/upload-image.js.map +1 -1
  35. package/lib/packages/components/upload-image/src/upload-image.vue2.js +23 -22
  36. package/lib/packages/components/upload-image/src/upload-image.vue2.js.map +1 -1
  37. package/package.json +1 -1
  38. package/theme-chalk/css/advanced-filtering.css +1 -5
  39. package/theme-chalk/css/api-component.css +1 -5
  40. package/theme-chalk/css/cascader.css +1 -5
  41. package/theme-chalk/css/checkbox.css +1 -5
  42. package/theme-chalk/css/code-editor.css +1 -5
  43. package/theme-chalk/css/color-picker.css +1 -5
  44. package/theme-chalk/css/cropper.css +1 -5
  45. package/theme-chalk/css/descriptions.css +1 -5
  46. package/theme-chalk/css/drawer.css +1 -5
  47. package/theme-chalk/css/dropdown-button-simple.css +1 -5
  48. package/theme-chalk/css/dropdown.css +1 -5
  49. package/theme-chalk/css/easy-cron.css +1 -5
  50. package/theme-chalk/css/form.css +1 -5
  51. package/theme-chalk/css/index.css +2 -6
  52. package/theme-chalk/css/input-number.css +1 -5
  53. package/theme-chalk/css/input.css +1 -5
  54. package/theme-chalk/css/key-value.css +1 -5
  55. package/theme-chalk/css/markdown-editor.css +1 -5
  56. package/theme-chalk/css/message.css +1 -5
  57. package/theme-chalk/css/modal.css +1 -5
  58. package/theme-chalk/css/new-drawer.css +1 -5
  59. package/theme-chalk/css/new-modal.css +1 -5
  60. package/theme-chalk/css/number-range.css +1 -5
  61. package/theme-chalk/css/rich-text-editor.css +1 -5
  62. package/theme-chalk/css/segmented.css +1 -5
  63. package/theme-chalk/css/switch.css +1 -5
  64. package/theme-chalk/css/table.css +1 -5
  65. package/theme-chalk/css/tabs-simple.css +1 -5
  66. package/theme-chalk/css/tag-group.css +1 -5
  67. package/types/packages/components/icon-base/index.d.ts +2 -1
  68. package/types/packages/components/icon-base/src/icon-base.vue.d.ts +2 -1
  69. package/types/packages/components/operate-icon/index.d.ts +2 -1
  70. package/types/packages/components/operate-icon/src/operate-icon.vue.d.ts +2 -1
  71. package/types/packages/components/upload-image/index.d.ts +4 -0
  72. package/types/packages/components/upload-image/src/upload-image.d.ts +1 -0
  73. package/types/packages/components/upload-image/src/upload-image.vue.d.ts +4 -0
@@ -79,6 +79,7 @@ export declare const LlIconBase: import("ll-plus/es/utils").SFCWithInstall<impor
79
79
  readonly tooltipTitle?: string | undefined;
80
80
  readonly isShowTitle?: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown> | undefined;
81
81
  } & {}>;
82
+ btn: import("vue").Ref<any>;
82
83
  btnClass: import("vue").ComputedRef<string>;
83
84
  bem: {
84
85
  b: (blockSuffix?: string) => string;
@@ -90,7 +91,7 @@ export declare const LlIconBase: import("ll-plus/es/utils").SFCWithInstall<impor
90
91
  bem: (blockSuffix: string, element: string, modifier: string) => string;
91
92
  is: (name?: string) => string;
92
93
  };
93
- handleClickBtn: (e: Event) => any;
94
+ handleClickBtn: (e: Event) => void;
94
95
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
95
96
  readonly iconType: {
96
97
  readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<StringConstructor, "default" | "primary", unknown>>;
@@ -78,6 +78,7 @@ declare const _default: import("vue").DefineComponent<{
78
78
  readonly tooltipTitle?: string | undefined;
79
79
  readonly isShowTitle?: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown> | undefined;
80
80
  } & {}>;
81
+ btn: import("vue").Ref<any>;
81
82
  btnClass: import("vue").ComputedRef<string>;
82
83
  bem: {
83
84
  b: (blockSuffix?: string) => string;
@@ -89,7 +90,7 @@ declare const _default: import("vue").DefineComponent<{
89
90
  bem: (blockSuffix: string, element: string, modifier: string) => string;
90
91
  is: (name?: string) => string;
91
92
  };
92
- handleClickBtn: (e: Event) => any;
93
+ handleClickBtn: (e: Event) => void;
93
94
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
94
95
  readonly iconType: {
95
96
  readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<StringConstructor, "default" | "primary", unknown>>;
@@ -3365,6 +3365,7 @@ export declare const LlOperateIcon: import("ll-plus/es/utils").SFCWithInstall<im
3365
3365
  readonly tooltipTitle?: string | undefined;
3366
3366
  readonly isShowTitle?: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown> | undefined;
3367
3367
  } & {}>;
3368
+ btn: import("vue").Ref<any>;
3368
3369
  btnClass: import("vue").ComputedRef<string>;
3369
3370
  bem: {
3370
3371
  b: (blockSuffix?: string) => string;
@@ -3376,7 +3377,7 @@ export declare const LlOperateIcon: import("ll-plus/es/utils").SFCWithInstall<im
3376
3377
  bem: (blockSuffix: string, element: string, modifier: string) => string;
3377
3378
  is: (name?: string) => string;
3378
3379
  };
3379
- handleClickBtn: (e: Event) => any;
3380
+ handleClickBtn: (e: Event) => void;
3380
3381
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
3381
3382
  readonly iconType: {
3382
3383
  readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<StringConstructor, "default" | "primary", unknown>>;
@@ -3365,6 +3365,7 @@ declare const _default: import("vue").DefineComponent<{
3365
3365
  readonly tooltipTitle?: string | undefined;
3366
3366
  readonly isShowTitle?: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown> | undefined;
3367
3367
  } & {}>;
3368
+ btn: import("vue").Ref<any>;
3368
3369
  btnClass: import("vue").ComputedRef<string>;
3369
3370
  bem: {
3370
3371
  b: (blockSuffix?: string) => string;
@@ -3376,7 +3377,7 @@ declare const _default: import("vue").DefineComponent<{
3376
3377
  bem: (blockSuffix: string, element: string, modifier: string) => string;
3377
3378
  is: (name?: string) => string;
3378
3379
  };
3379
- handleClickBtn: (e: Event) => any;
3380
+ handleClickBtn: (e: Event) => void;
3380
3381
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
3381
3382
  readonly iconType: {
3382
3383
  readonly type: import("vue").PropType<import("ll-plus/es/utils").EpPropMergeType<StringConstructor, "default" | "primary", unknown>>;
@@ -25,6 +25,7 @@ export declare const LlUploadImage: import("ll-plus/es/utils").SFCWithInstall<im
25
25
  new (): any;
26
26
  readonly prototype: any;
27
27
  })[], unknown, unknown, () => void, boolean>;
28
+ readonly showTip: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
28
29
  }, {
29
30
  props: import("@vue/shared").LooseRequired<{
30
31
  readonly iconName: string;
@@ -45,6 +46,7 @@ export declare const LlUploadImage: import("ll-plus/es/utils").SFCWithInstall<im
45
46
  readonly imgLoading: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
46
47
  readonly useBase64: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
47
48
  readonly imgSize: number;
49
+ readonly showTip: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
48
50
  readonly onChange?: ((value: string | string[]) => any) | undefined;
49
51
  readonly "onUpdate:value"?: ((value: string | string[]) => any) | undefined;
50
52
  } & {}>;
@@ -106,6 +108,7 @@ export declare const LlUploadImage: import("ll-plus/es/utils").SFCWithInstall<im
106
108
  new (): any;
107
109
  readonly prototype: any;
108
110
  })[], unknown, unknown, () => void, boolean>;
111
+ readonly showTip: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
109
112
  }>> & {
110
113
  onChange?: ((value: string | string[]) => any) | undefined;
111
114
  "onUpdate:value"?: ((value: string | string[]) => any) | undefined;
@@ -128,6 +131,7 @@ export declare const LlUploadImage: import("ll-plus/es/utils").SFCWithInstall<im
128
131
  readonly imgLoading: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
129
132
  readonly useBase64: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
130
133
  readonly imgSize: number;
134
+ readonly showTip: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
131
135
  }, {}>>;
132
136
  export default LlUploadImage;
133
137
  export * from './src/upload-image';
@@ -29,6 +29,7 @@ export declare const uploadImageProps: {
29
29
  new (): any;
30
30
  readonly prototype: any;
31
31
  })[], unknown, unknown, () => void, boolean>;
32
+ readonly showTip: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
32
33
  };
33
34
  export declare const uploadImageEmits: {
34
35
  readonly change: (value: string | string[]) => boolean;
@@ -26,6 +26,7 @@ declare const _default: import("vue").DefineComponent<{
26
26
  new (): any;
27
27
  readonly prototype: any;
28
28
  })[], unknown, unknown, () => void, boolean>;
29
+ readonly showTip: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
29
30
  }, {
30
31
  props: import("@vue/shared").LooseRequired<{
31
32
  readonly iconName: string;
@@ -46,6 +47,7 @@ declare const _default: import("vue").DefineComponent<{
46
47
  readonly imgLoading: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
47
48
  readonly useBase64: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
48
49
  readonly imgSize: number;
50
+ readonly showTip: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
49
51
  readonly onChange?: ((value: string | string[]) => any) | undefined;
50
52
  readonly "onUpdate:value"?: ((value: string | string[]) => any) | undefined;
51
53
  } & {}>;
@@ -107,6 +109,7 @@ declare const _default: import("vue").DefineComponent<{
107
109
  new (): any;
108
110
  readonly prototype: any;
109
111
  })[], unknown, unknown, () => void, boolean>;
112
+ readonly showTip: import("ll-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
110
113
  }>> & {
111
114
  onChange?: ((value: string | string[]) => any) | undefined;
112
115
  "onUpdate:value"?: ((value: string | string[]) => any) | undefined;
@@ -129,5 +132,6 @@ declare const _default: import("vue").DefineComponent<{
129
132
  readonly imgLoading: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
130
133
  readonly useBase64: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
131
134
  readonly imgSize: number;
135
+ readonly showTip: import("ll-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
132
136
  }, {}>;
133
137
  export default _default;
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, Fragment, createCommentVNode, createBlock, normalizeClass, withCtx, createVNode, normalizeStyle, unref, toDisplayString } from 'vue';
1
+ import { defineComponent, ref, computed, resolveComponent, openBlock, createElementBlock, Fragment, createCommentVNode, createBlock, normalizeClass, withCtx, createVNode, normalizeStyle, unref, toDisplayString } from 'vue';
2
2
  import '../../../utils/index.mjs';
3
3
  import { iconBaseProps } from './icon-base.mjs';
4
4
  import { createNamespace } from '../../../utils/create-namespace.mjs';
@@ -12,6 +12,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
12
12
  props: iconBaseProps,
13
13
  setup(__props) {
14
14
  const props = __props;
15
+ const btn = ref();
15
16
  const btnClass = computed(() => {
16
17
  const isDefault = props.iconType === "default" || !props.iconType;
17
18
  const typeClass = isDefault ? bem.m("default") : bem.m("primary");
@@ -21,7 +22,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
21
22
  return `${props.class} ${bem.b()} ${typeClass} ${exposedClass} ${hasTextClass} ${disabledClass}`;
22
23
  });
23
24
  const bem = createNamespace("icon-base");
24
- const handleClickBtn = (e) => props.onClick && props.onClick(e, props.data);
25
+ const handleClickBtn = (e) => {
26
+ props.onClick && props.onClick(e, props.data);
27
+ btn.value?.blur();
28
+ };
25
29
  return (_ctx, _cache) => {
26
30
  const _component_ll_icon = resolveComponent("ll-icon");
27
31
  const _component_a_button = resolveComponent("a-button");
@@ -38,6 +42,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
38
42
  }, {
39
43
  default: withCtx(() => [
40
44
  createVNode(_component_a_button, {
45
+ ref_key: "btn",
46
+ ref: btn,
41
47
  type: "text",
42
48
  disabled: _ctx.disabled,
43
49
  class: normalizeClass(`${btnClass.value}`),
@@ -72,6 +78,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
72
78
  [
73
79
  createCommentVNode(" \u6CA1\u6709\u6587\u5B57\u63D0\u793A\u5F39\u7A97 "),
74
80
  createVNode(_component_a_button, {
81
+ ref_key: "btn",
82
+ ref: btn,
75
83
  type: "text",
76
84
  disabled: _ctx.disabled,
77
85
  class: normalizeClass(`${btnClass.value}`),
@@ -1 +1 @@
1
- {"version":3,"file":"icon-base.vue2.mjs","sources":["../../../../../../packages/components/icon-base/src/icon-base.vue"],"sourcesContent":["<template>\n <!-- 有文字提示弹窗 -->\n <ll-tooltip\n v-if=\"isShowTooltip && isShow\"\n :tip=\"tooltipTitle\"\n :class=\"tooltipClass\"\n >\n <a-button\n type=\"text\"\n :disabled=\"disabled\"\n :class=\"`${btnClass}`\"\n :style=\"style\"\n @click=\"handleClickBtn\"\n >\n <ll-icon v-if=\"iconName\" :icon-name=\"iconName\" />\n <span v-if=\"isShowTitle\" :class=\"bem.e('text')\">{{ tooltipTitle }}</span>\n </a-button>\n </ll-tooltip>\n <!-- 没有文字提示弹窗 -->\n <a-button\n v-else-if=\"!isShowTooltip && isShow\"\n type=\"text\"\n :disabled=\"disabled\"\n :class=\"`${btnClass}`\"\n :style=\"style\"\n @click=\"handleClickBtn\"\n >\n <ll-icon\n v-if=\"iconName\"\n :icon-name=\"iconName\"\n :class=\"bem.e('text-icon')\"\n />\n <span v-if=\"isShowTitle\" :class=\"bem.e('text')\">{{ tooltipTitle }}</span>\n </a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\n\nimport { createNamespace } from '@ll-plus/utils'\nimport { iconBaseProps } from './icon-base'\n\n// 1.defineOptions\ndefineOptions({\n name: 'LlIconBase'\n})\n\n// 2.props\nconst props = defineProps(iconBaseProps)\n// 3.computed/const\n// button的类名样式\nconst btnClass = computed(() => {\n const isDefault = props.iconType === 'default' || !props.iconType\n // 1.类型的class\n const typeClass = isDefault ? bem.m('default') : bem.m('primary')\n // 2.是否要裸露的class\n const exposedClass = props.isShowContainer\n ? bem.m('container')\n : bem.m('exposed')\n // 3.有文本的class\n const hasTextClass = props.isShowTitle ? bem.m('has-text') : ''\n // 4.禁用的class\n const disabledClass = props.disabled\n ? isDefault\n ? bem.is('default-disable')\n : bem.is('primary-disable')\n : ''\n return `${\n props.class\n } ${bem.b()} ${typeClass} ${exposedClass} ${hasTextClass} ${disabledClass}`\n})\nconst bem = createNamespace('icon-base')\n\n// 4.methods\nconst handleClickBtn = (e: Event) =>\n props.onClick && props.onClick(e, props.data)\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAgDA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAGd,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAa,KAAA,SAAA,IAAa,CAAC,KAAM,CAAA,QAAA,CAAA;AAEzD,MAAM,MAAA,SAAA,GAAY,YAAY,GAAI,CAAA,CAAA,CAAE,SAAS,CAAI,GAAA,GAAA,CAAI,EAAE,SAAS,CAAA,CAAA;AAEhE,MAAM,MAAA,YAAA,GAAe,MAAM,eACvB,GAAA,GAAA,CAAI,EAAE,WAAW,CAAA,GACjB,GAAI,CAAA,CAAA,CAAE,SAAS,CAAA,CAAA;AAEnB,MAAA,MAAM,eAAe,KAAM,CAAA,WAAA,GAAc,GAAI,CAAA,CAAA,CAAE,UAAU,CAAI,GAAA,EAAA,CAAA;AAE7D,MAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,QAAA,GACxB,SACE,GAAA,GAAA,CAAI,EAAG,CAAA,iBAAiB,CACxB,GAAA,GAAA,CAAI,EAAG,CAAA,iBAAiB,CAC1B,GAAA,EAAA,CAAA;AACJ,MAAA,OAAO,CACL,EAAA,KAAA,CAAM,KACR,CAAA,CAAA,EAAI,IAAI,CAAE,EAAC,CAAI,CAAA,EAAA,SAAS,CAAI,CAAA,EAAA,YAAY,CAAI,CAAA,EAAA,YAAY,IAAI,aAAa,CAAA,CAAA,CAAA;AAAA,KAC1E,CAAA,CAAA;AACD,IAAM,MAAA,GAAA,GAAM,gBAAgB,WAAW,CAAA,CAAA;AAGvC,IAAM,MAAA,cAAA,GAAiB,CAAC,CACtB,KAAA,KAAA,CAAM,WAAW,KAAM,CAAA,OAAA,CAAQ,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"icon-base.vue2.mjs","sources":["../../../../../../packages/components/icon-base/src/icon-base.vue"],"sourcesContent":["<template>\n <!-- 有文字提示弹窗 -->\n <ll-tooltip\n v-if=\"isShowTooltip && isShow\"\n :tip=\"tooltipTitle\"\n :class=\"tooltipClass\"\n >\n <a-button\n ref=\"btn\"\n type=\"text\"\n :disabled=\"disabled\"\n :class=\"`${btnClass}`\"\n :style=\"style\"\n @click=\"handleClickBtn\"\n >\n <ll-icon v-if=\"iconName\" :icon-name=\"iconName\" />\n <span v-if=\"isShowTitle\" :class=\"bem.e('text')\">{{ tooltipTitle }}</span>\n </a-button>\n </ll-tooltip>\n <!-- 没有文字提示弹窗 -->\n <a-button\n v-else-if=\"!isShowTooltip && isShow\"\n ref=\"btn\"\n type=\"text\"\n :disabled=\"disabled\"\n :class=\"`${btnClass}`\"\n :style=\"style\"\n @click=\"handleClickBtn\"\n >\n <ll-icon\n v-if=\"iconName\"\n :icon-name=\"iconName\"\n :class=\"bem.e('text-icon')\"\n />\n <span v-if=\"isShowTitle\" :class=\"bem.e('text')\">{{ tooltipTitle }}</span>\n </a-button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\n\nimport { createNamespace } from '@ll-plus/utils'\nimport { iconBaseProps } from './icon-base'\n\n// 1.defineOptions\ndefineOptions({\n name: 'LlIconBase',\n})\n\n// 2.props\nconst props = defineProps(iconBaseProps)\n// 3.computed/const\nconst btn = ref()\n// button的类名样式\nconst btnClass = computed(() => {\n const isDefault = props.iconType === 'default' || !props.iconType\n // 1.类型的class\n const typeClass = isDefault ? bem.m('default') : bem.m('primary')\n // 2.是否要裸露的class\n const exposedClass = props.isShowContainer\n ? bem.m('container')\n : bem.m('exposed')\n // 3.有文本的class\n const hasTextClass = props.isShowTitle ? bem.m('has-text') : ''\n // 4.禁用的class\n const disabledClass = props.disabled\n ? isDefault\n ? bem.is('default-disable')\n : bem.is('primary-disable')\n : ''\n return `${\n props.class\n } ${bem.b()} ${typeClass} ${exposedClass} ${hasTextClass} ${disabledClass}`\n})\nconst bem = createNamespace('icon-base')\n\n// 4.methods\nconst handleClickBtn = (e: Event) => {\n props.onClick && props.onClick(e, props.data)\n btn.value?.blur()\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAkDA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAA,MAAM,MAAM,GAAI,EAAA,CAAA;AAEhB,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC9B,MAAA,MAAM,SAAY,GAAA,KAAA,CAAM,QAAa,KAAA,SAAA,IAAa,CAAC,KAAM,CAAA,QAAA,CAAA;AAEzD,MAAM,MAAA,SAAA,GAAY,YAAY,GAAI,CAAA,CAAA,CAAE,SAAS,CAAI,GAAA,GAAA,CAAI,EAAE,SAAS,CAAA,CAAA;AAEhE,MAAM,MAAA,YAAA,GAAe,MAAM,eACvB,GAAA,GAAA,CAAI,EAAE,WAAW,CAAA,GACjB,GAAI,CAAA,CAAA,CAAE,SAAS,CAAA,CAAA;AAEnB,MAAA,MAAM,eAAe,KAAM,CAAA,WAAA,GAAc,GAAI,CAAA,CAAA,CAAE,UAAU,CAAI,GAAA,EAAA,CAAA;AAE7D,MAAM,MAAA,aAAA,GAAgB,KAAM,CAAA,QAAA,GACxB,SACE,GAAA,GAAA,CAAI,EAAG,CAAA,iBAAiB,CACxB,GAAA,GAAA,CAAI,EAAG,CAAA,iBAAiB,CAC1B,GAAA,EAAA,CAAA;AACJ,MAAA,OAAO,CACL,EAAA,KAAA,CAAM,KACR,CAAA,CAAA,EAAI,IAAI,CAAE,EAAC,CAAI,CAAA,EAAA,SAAS,CAAI,CAAA,EAAA,YAAY,CAAI,CAAA,EAAA,YAAY,IAAI,aAAa,CAAA,CAAA,CAAA;AAAA,KAC1E,CAAA,CAAA;AACD,IAAM,MAAA,GAAA,GAAM,gBAAgB,WAAW,CAAA,CAAA;AAGvC,IAAM,MAAA,cAAA,GAAiB,CAAC,CAAa,KAAA;AACnC,MAAA,KAAA,CAAM,OAAW,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAA,EAAG,MAAM,IAAI,CAAA,CAAA;AAC5C,MAAA,GAAA,CAAI,OAAO,IAAK,EAAA,CAAA;AAAA,KAClB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -95,6 +95,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
95
95
  { immediate: true, deep: true }
96
96
  );
97
97
  return (_ctx, _cache) => {
98
+ const _component_ll_tooltip = resolveComponent("ll-tooltip");
98
99
  const _component_a_menu_item = resolveComponent("a-menu-item");
99
100
  const _component_a_menu = resolveComponent("a-menu");
100
101
  const _component_a_dropdown = resolveComponent("a-dropdown");
@@ -193,14 +194,23 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
193
194
  class: normalizeClass(unref(bem).e("dropdown-container"))
194
195
  },
195
196
  [
196
- createVNode(unref(LlIconBase), {
197
- "is-show-tooltip": false,
198
- "is-show-container": showIconList.value[0].isShowContainer,
199
- "icon-type": showIconList.value[0].iconType,
200
- data: _ctx.data,
201
- "icon-name": "icon-more",
202
- class: normalizeClass(unref(bem).e("icon-more"))
203
- }, null, 8, ["is-show-container", "icon-type", "data", "class"])
197
+ createVNode(_component_ll_tooltip, {
198
+ title: "\u66F4\u591A",
199
+ placement: "topLeft"
200
+ }, {
201
+ default: withCtx(() => [
202
+ createVNode(unref(LlIconBase), {
203
+ "is-show-tooltip": false,
204
+ "is-show-container": showIconList.value[0].isShowContainer,
205
+ "icon-type": showIconList.value[0].iconType,
206
+ data: _ctx.data,
207
+ "icon-name": "icon-more",
208
+ class: normalizeClass(unref(bem).e("icon-more"))
209
+ }, null, 8, ["is-show-container", "icon-type", "data", "class"])
210
+ ]),
211
+ _: 1
212
+ /* STABLE */
213
+ })
204
214
  ],
205
215
  2
206
216
  /* CLASS */
@@ -1 +1 @@
1
- {"version":3,"file":"operate-icon.vue2.mjs","sources":["../../../../../../packages/components/operate-icon/src/operate-icon.vue"],"sourcesContent":["<template>\n <div :class=\"operateIconClass\">\n <!-- 显示的icon -->\n <ll-icon-base\n v-for=\"(item, index) in showIconList\"\n v-bind=\"item\"\n :key=\"item.iconName\"\n :data=\"data\"\n :is-show=\"Object.keys(item).includes('isShow') ? item.isShow : true\"\n :tooltip-class=\"bem.e(marginButtonClass(index, showIconList.length - 1))\"\n />\n <template v-if=\"modalIconList.length === 1\">\n <ll-icon-base\n v-for=\"(item, index) in modalIconList\"\n :key=\"index\"\n v-bind=\"item\"\n :data=\"data\"\n :tooltip-class=\"`${bem.e('last-icon')}`\"\n />\n </template>\n <!-- 下拉提示的icon -->\n <a-dropdown\n v-if=\"showDropdown && modalIconList.length > 1\"\n :overlay-class-name=\"`${bem.e('dropdown')} ${props.overlayClassName}`\"\n :open=\"dropdownOpen\"\n :trigger=\"trigger\"\n @open-change=\"handleDropdownOpenChange\"\n >\n <div :class=\"bem.e('dropdown-container')\">\n <ll-icon-base\n :is-show-tooltip=\"false\"\n :is-show-container=\"showIconList[0].isShowContainer\"\n :icon-type=\"showIconList[0].iconType\"\n :data=\"data\"\n icon-name=\"icon-more\"\n :class=\"bem.e('icon-more')\"\n />\n </div>\n <template #overlay>\n <a-menu @click=\"handleDropdownParentClick\">\n <slot>\n <template v-for=\"item in modalIconList\">\n <a-menu-item\n v-if=\"Object.keys(item).includes('isShow') ? item.isShow : true\"\n :key=\"item.iconName\"\n >\n <ll-icon-base\n v-bind=\"item\"\n :data=\"data\"\n :icon-name=\"showDropdownItemIcon ? item.iconName : ''\"\n />\n </a-menu-item>\n </template>\n </slot>\n </a-menu>\n </template>\n </a-dropdown>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport { IconBaseProps, LlIconBase } from '@ll-plus/components'\nimport { operateIconEmits, operateIconProps } from './operate-icon'\n\n// 1.defineOptions\ndefineOptions({\n name: 'LlOperateIcon'\n})\n\n// 2.props/emits\nconst props = defineProps(operateIconProps)\nconst emits = defineEmits(operateIconEmits)\n\n// 3.ref/const\nconst showIconList = ref<IconBaseProps[]>([]) // 显示的icon列表\nconst modalIconList = ref<IconBaseProps[]>([]) // 弹窗的icon列表\nconst dropdownOpen = ref(false) // 下拉菜单的open\nconst defaultList = ref([\n // 默认的icon列表\n {\n iconType: computed(() => props.iconType || 'primary'), // default默认为灰色\n isShowContainer: false, // 是否显示icon容器\n iconName: 'icon-edit',\n tooltipTitle: '编辑',\n disabled: props.disabled,\n onClick: (e: Event, data: any) => {\n emits('edit', e, data)\n }\n },\n {\n iconType: computed(() => props.iconType || 'primary'), // default默认为灰色\n isShowContainer: false, // 是否显示icon容器\n iconName: 'icon-delete',\n tooltipTitle: '删除',\n disabled: props.disabled,\n onClick: (e: Event, data: any) => {\n emits('delete', e, data)\n }\n }\n])\nconst bem = createNamespace('operate-icon')\nconst operateIconClass = computed(() => {\n const isHasDropdown = props.showDropdown && modalIconList.value.length\n return `${bem.b()} ${\n isHasDropdown ? bem.m('has-dropdown') : bem.m('no-dropdown')\n }`\n})\n// 4.methods\n// 点击更多按钮\nconst marginButtonClass = (index, length) => {\n return index < length ? 'margin-tooltip' : ''\n}\nconst handleOpenChange = (open: boolean) => emits('onDropdownOpenChange', open)\n// 下拉菜单open\nconst handleDropdownOpenChange = (open: boolean) => {\n dropdownOpen.value = open\n handleOpenChange(open)\n}\nconst handleDropdownParentClick = () => {\n dropdownOpen.value = false\n handleOpenChange(false)\n}\n\n// 5.watch\nwatch(\n () => [props.list, props.showDropdown],\n (data: any) => {\n const [newList, showDropdown] = data\n const list = newList\n ? newList.filter(Boolean).filter(item => Boolean(item.isShow))\n : defaultList.value\n const length = list.length\n if (length >= props.showIconLimit && showDropdown) {\n showIconList.value = list\n .slice(0, props.showIconLimit - 1)\n .map(item => ({ ...item, isShowTooltip: true })) as IconBaseProps[]\n // 默认modal里面要icon后面跟文字\n const sliceList = list.slice(props.showIconLimit - 1)\n if (sliceList.length === 1) {\n modalIconList.value = sliceList.map((item: any) => ({\n ...item,\n isShowTitle: false,\n isShowTooltip: true,\n isShowContainer: false\n }))\n } else {\n modalIconList.value = sliceList.map((item: any) => ({\n ...item,\n isShowTitle: true\n }))\n }\n } else {\n showIconList.value = list.map((item: any) => ({\n ...item,\n isShowTooltip: true\n })) as IconBaseProps[]\n }\n },\n { immediate: true, deep: true }\n)\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operate-icon.vue2.mjs","sources":["../../../../../../packages/components/operate-icon/src/operate-icon.vue"],"sourcesContent":["<template>\n <div :class=\"operateIconClass\">\n <!-- 显示的icon -->\n <ll-icon-base\n v-for=\"(item, index) in showIconList\"\n v-bind=\"item\"\n :key=\"item.iconName\"\n :data=\"data\"\n :is-show=\"Object.keys(item).includes('isShow') ? item.isShow : true\"\n :tooltip-class=\"bem.e(marginButtonClass(index, showIconList.length - 1))\"\n />\n <template v-if=\"modalIconList.length === 1\">\n <ll-icon-base\n v-for=\"(item, index) in modalIconList\"\n :key=\"index\"\n v-bind=\"item\"\n :data=\"data\"\n :tooltip-class=\"`${bem.e('last-icon')}`\"\n />\n </template>\n <!-- 下拉提示的icon -->\n <a-dropdown\n v-if=\"showDropdown && modalIconList.length > 1\"\n :overlay-class-name=\"`${bem.e('dropdown')} ${props.overlayClassName}`\"\n :open=\"dropdownOpen\"\n :trigger=\"trigger\"\n @open-change=\"handleDropdownOpenChange\"\n >\n <div :class=\"bem.e('dropdown-container')\">\n <ll-tooltip title=\"更多\" placement=\"topLeft\">\n <ll-icon-base\n :is-show-tooltip=\"false\"\n :is-show-container=\"showIconList[0].isShowContainer\"\n :icon-type=\"showIconList[0].iconType\"\n :data=\"data\"\n icon-name=\"icon-more\"\n :class=\"bem.e('icon-more')\"\n />\n </ll-tooltip>\n </div>\n <template #overlay>\n <a-menu @click=\"handleDropdownParentClick\">\n <slot>\n <template v-for=\"item in modalIconList\">\n <a-menu-item\n v-if=\"Object.keys(item).includes('isShow') ? item.isShow : true\"\n :key=\"item.iconName\"\n >\n <ll-icon-base\n v-bind=\"item\"\n :data=\"data\"\n :icon-name=\"showDropdownItemIcon ? item.iconName : ''\"\n />\n </a-menu-item>\n </template>\n </slot>\n </a-menu>\n </template>\n </a-dropdown>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport { IconBaseProps, LlIconBase } from '@ll-plus/components'\nimport { operateIconEmits, operateIconProps } from './operate-icon'\n\n// 1.defineOptions\ndefineOptions({\n name: 'LlOperateIcon',\n})\n\n// 2.props/emits\nconst props = defineProps(operateIconProps)\nconst emits = defineEmits(operateIconEmits)\n\n// 3.ref/const\nconst showIconList = ref<IconBaseProps[]>([]) // 显示的icon列表\nconst modalIconList = ref<IconBaseProps[]>([]) // 弹窗的icon列表\nconst dropdownOpen = ref(false) // 下拉菜单的open\nconst defaultList = ref([\n // 默认的icon列表\n {\n iconType: computed(() => props.iconType || 'primary'), // default默认为灰色\n isShowContainer: false, // 是否显示icon容器\n iconName: 'icon-edit',\n tooltipTitle: '编辑',\n disabled: props.disabled,\n onClick: (e: Event, data: any) => {\n emits('edit', e, data)\n },\n },\n {\n iconType: computed(() => props.iconType || 'primary'), // default默认为灰色\n isShowContainer: false, // 是否显示icon容器\n iconName: 'icon-delete',\n tooltipTitle: '删除',\n disabled: props.disabled,\n onClick: (e: Event, data: any) => {\n emits('delete', e, data)\n },\n },\n])\nconst bem = createNamespace('operate-icon')\nconst operateIconClass = computed(() => {\n const isHasDropdown = props.showDropdown && modalIconList.value.length\n return `${bem.b()} ${\n isHasDropdown ? bem.m('has-dropdown') : bem.m('no-dropdown')\n }`\n})\n// 4.methods\n// 点击更多按钮\nconst marginButtonClass = (index, length) => {\n return index < length ? 'margin-tooltip' : ''\n}\nconst handleOpenChange = (open: boolean) => emits('onDropdownOpenChange', open)\n// 下拉菜单open\nconst handleDropdownOpenChange = (open: boolean) => {\n dropdownOpen.value = open\n handleOpenChange(open)\n}\nconst handleDropdownParentClick = () => {\n dropdownOpen.value = false\n handleOpenChange(false)\n}\n\n// 5.watch\nwatch(\n () => [props.list, props.showDropdown],\n (data: any) => {\n const [newList, showDropdown] = data\n const list = newList\n ? newList.filter(Boolean).filter((item) => Boolean(item.isShow))\n : defaultList.value\n const length = list.length\n if (length >= props.showIconLimit && showDropdown) {\n showIconList.value = list\n .slice(0, props.showIconLimit - 1)\n .map((item) => ({ ...item, isShowTooltip: true })) as IconBaseProps[]\n // 默认modal里面要icon后面跟文字\n const sliceList = list.slice(props.showIconLimit - 1)\n if (sliceList.length === 1) {\n modalIconList.value = sliceList.map((item: any) => ({\n ...item,\n isShowTitle: false,\n isShowTooltip: true,\n isShowContainer: false,\n }))\n } else {\n modalIconList.value = sliceList.map((item: any) => ({\n ...item,\n isShowTitle: true,\n }))\n }\n } else {\n showIconList.value = list.map((item: any) => ({\n ...item,\n isShowTooltip: true,\n })) as IconBaseProps[]\n }\n },\n { immediate: true, deep: true },\n)\n</script>\n"],"names":[],"mappings":"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"}
@@ -43,6 +43,10 @@ const uploadImageProps = buildProps({
43
43
  type: definePropType(Function),
44
44
  default: () => {
45
45
  }
46
+ },
47
+ showTip: {
48
+ type: Boolean,
49
+ default: true
46
50
  }
47
51
  });
48
52
  const uploadImageEmits = {
@@ -1 +1 @@
1
- {"version":3,"file":"upload-image.mjs","sources":["../../../../../../packages/components/upload-image/src/upload-image.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\n\nimport type { ExtractPropTypes } from 'vue'\n\nimport type {\n UploadProps,\n FileType\n} from 'ant-design-vue/es/upload/interface.d.ts'\n\nimport type { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface.d.ts'\n\nimport type UploadImage from './upload-image.vue'\n\nexport const uploadImageProps = buildProps({\n value: {\n type: definePropType<string | string[]>([String, Array]),\n default: []\n },\n imgLoading: {\n type: Boolean,\n default: false\n },\n useBase64: {\n type: Boolean,\n default: true\n },\n iconName: {\n type: String,\n default: 'icon-add'\n },\n maxCount: {\n type: Number,\n default: 1\n },\n accept: {\n type: String,\n default: '.jpg,.png,.jpeg,.svg'\n },\n imgSize: {\n type: Number,\n default: 2 * 1024 * 1024\n },\n tip: {\n type: [String, Boolean],\n default: true\n },\n beforeUpload: {\n type: definePropType<UploadProps['beforeUpload']>(Function),\n default: () => true\n },\n customRequest: {\n type: definePropType<\n (options: UploadRequestOption, base64: string) => void\n >(Function),\n default: (): void => {}\n }\n} as const)\n\nexport const uploadImageEmits = {\n change: (value: string | string[]) => !!value,\n 'update:value': (value: string | string[]) => !!value\n} as const\n\nexport type RcFileType = FileType\n\nexport type RcUploadRequestOption = UploadRequestOption\n\nexport type RcUploadProps = UploadProps\n\n// props\nexport type UploadImageProps = ExtractPropTypes<typeof uploadImageProps>\n\n// emits\nexport type UploadImageEmits = typeof uploadImageEmits\n\n// instance\nexport type UploadImageInstance = InstanceType<typeof UploadImage>\n"],"names":[],"mappings":";;;;AAaO,MAAM,mBAAmB,UAAW,CAAA;AAAA,EACzC,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,cAAA,CAAkC,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,IACvD,SAAS,EAAC;AAAA,GACZ;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,UAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,sBAAA;AAAA,GACX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,IAAI,IAAO,GAAA,IAAA;AAAA,GACtB;AAAA,EACA,GAAK,EAAA;AAAA,IACH,IAAA,EAAM,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA,IACtB,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAA,EAAM,eAA4C,QAAQ,CAAA;AAAA,IAC1D,SAAS,MAAM,IAAA;AAAA,GACjB;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAA,EAAM,eAEJ,QAAQ,CAAA;AAAA,IACV,SAAS,MAAY;AAAA,KAAC;AAAA,GACxB;AACF,CAAU,EAAA;AAEH,MAAM,gBAAmB,GAAA;AAAA,EAC9B,MAAQ,EAAA,CAAC,KAA6B,KAAA,CAAC,CAAC,KAAA;AAAA,EACxC,cAAgB,EAAA,CAAC,KAA6B,KAAA,CAAC,CAAC,KAAA;AAClD;;;;"}
1
+ {"version":3,"file":"upload-image.mjs","sources":["../../../../../../packages/components/upload-image/src/upload-image.ts"],"sourcesContent":["import { buildProps, definePropType } from '@ll-plus/utils'\n\nimport type { ExtractPropTypes } from 'vue'\n\nimport type {\n UploadProps,\n FileType,\n} from 'ant-design-vue/es/upload/interface.d.ts'\n\nimport type { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface.d.ts'\n\nimport type UploadImage from './upload-image.vue'\n\nexport const uploadImageProps = buildProps({\n value: {\n type: definePropType<string | string[]>([String, Array]),\n default: [],\n },\n imgLoading: {\n type: Boolean,\n default: false,\n },\n useBase64: {\n type: Boolean,\n default: true,\n },\n iconName: {\n type: String,\n default: 'icon-add',\n },\n maxCount: {\n type: Number,\n default: 1,\n },\n accept: {\n type: String,\n default: '.jpg,.png,.jpeg,.svg',\n },\n imgSize: {\n type: Number,\n default: 2 * 1024 * 1024,\n },\n tip: {\n type: [String, Boolean],\n default: true,\n },\n beforeUpload: {\n type: definePropType<UploadProps['beforeUpload']>(Function),\n default: () => true,\n },\n customRequest: {\n type: definePropType<\n (options: UploadRequestOption, base64: string) => void\n >(Function),\n default: (): void => {},\n },\n showTip: {\n type: Boolean,\n default: true,\n },\n} as const)\n\nexport const uploadImageEmits = {\n change: (value: string | string[]) => !!value,\n 'update:value': (value: string | string[]) => !!value,\n} as const\n\nexport type RcFileType = FileType\n\nexport type RcUploadRequestOption = UploadRequestOption\n\nexport type RcUploadProps = UploadProps\n\n// props\nexport type UploadImageProps = ExtractPropTypes<typeof uploadImageProps>\n\n// emits\nexport type UploadImageEmits = typeof uploadImageEmits\n\n// instance\nexport type UploadImageInstance = InstanceType<typeof UploadImage>\n"],"names":[],"mappings":";;;;AAaO,MAAM,mBAAmB,UAAW,CAAA;AAAA,EACzC,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,cAAA,CAAkC,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,IACvD,SAAS,EAAC;AAAA,GACZ;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,UAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,sBAAA;AAAA,GACX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,IAAI,IAAO,GAAA,IAAA;AAAA,GACtB;AAAA,EACA,GAAK,EAAA;AAAA,IACH,IAAA,EAAM,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA,IACtB,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAA,EAAM,eAA4C,QAAQ,CAAA;AAAA,IAC1D,SAAS,MAAM,IAAA;AAAA,GACjB;AAAA,EACA,aAAe,EAAA;AAAA,IACb,IAAA,EAAM,eAEJ,QAAQ,CAAA;AAAA,IACV,SAAS,MAAY;AAAA,KAAC;AAAA,GACxB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AACF,CAAU,EAAA;AAEH,MAAM,gBAAmB,GAAA;AAAA,EAC9B,MAAQ,EAAA,CAAC,KAA6B,KAAA,CAAC,CAAC,KAAA;AAAA,EACxC,cAAgB,EAAA,CAAC,KAA6B,KAAA,CAAC,CAAC,KAAA;AAClD;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, useAttrs, ref, computed, watch, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, createVNode, mergeProps, withCtx, createBlock, withModifiers, toDisplayString, Fragment, renderList } from 'vue';
1
+ import { defineComponent, useAttrs, ref, computed, watch, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, createVNode, withCtx, mergeProps, createBlock, withModifiers, toDisplayString, createCommentVNode, Fragment, renderList } from 'vue';
2
2
  import { omit } from 'lodash-es';
3
3
  import '../../../utils/index.mjs';
4
4
  import { uploadImageProps, uploadImageEmits } from './upload-image.mjs';
@@ -93,8 +93,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
93
93
  return (_ctx, _cache) => {
94
94
  const _component_ll_icon = resolveComponent("ll-icon");
95
95
  const _component_ll_image = resolveComponent("ll-image");
96
- const _component_a_spin = resolveComponent("a-spin");
97
96
  const _component_a_upload = resolveComponent("a-upload");
97
+ const _component_a_spin = resolveComponent("a-spin");
98
98
  const _component_a_image = resolveComponent("a-image");
99
99
  const _component_a_image_preview_group = resolveComponent("a-image-preview-group");
100
100
  return openBlock(), createElementBlock(
@@ -109,24 +109,24 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
109
109
  class: normalizeClass(unref(bem).m("preview-box"))
110
110
  },
111
111
  [
112
- createVNode(_component_a_upload, mergeProps({
113
- fileList: fileList.value,
114
- "onUpdate:fileList": _cache[1] || (_cache[1] = ($event) => fileList.value = $event)
115
- }, getBindValue.value, {
116
- accept: props.accept,
117
- "show-upload-list": false,
118
- "max-count": props.maxCount,
119
- multiple: computedMultiple.value,
120
- "before-upload": beforeUpload,
121
- "custom-request": customRequest,
122
- class: unref(bem).m("upload"),
123
- "list-type": "picture-card"
124
- }), {
112
+ createVNode(_component_a_spin, {
113
+ size: "small",
114
+ spinning: props.imgLoading
115
+ }, {
125
116
  default: withCtx(() => [
126
- createVNode(_component_a_spin, {
127
- size: "small",
128
- spinning: props.imgLoading
129
- }, {
117
+ createVNode(_component_a_upload, mergeProps({
118
+ fileList: fileList.value,
119
+ "onUpdate:fileList": _cache[1] || (_cache[1] = ($event) => fileList.value = $event)
120
+ }, getBindValue.value, {
121
+ accept: props.accept,
122
+ "show-upload-list": false,
123
+ "max-count": props.maxCount,
124
+ multiple: computedMultiple.value,
125
+ "before-upload": beforeUpload,
126
+ "custom-request": customRequest,
127
+ class: unref(bem).m("upload"),
128
+ "list-type": "picture-card"
129
+ }), {
130
130
  default: withCtx(() => [
131
131
  innerValue.value.length > 0 ? (openBlock(), createBlock(_component_ll_image, {
132
132
  key: 0,
@@ -178,20 +178,21 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
178
178
  ]),
179
179
  _: 1
180
180
  /* STABLE */
181
- }, 8, ["spinning"])
181
+ }, 16, ["fileList", "accept", "max-count", "multiple", "class"])
182
182
  ]),
183
183
  _: 1
184
184
  /* STABLE */
185
- }, 16, ["fileList", "accept", "max-count", "multiple", "class"]),
186
- createElementVNode(
185
+ }, 8, ["spinning"]),
186
+ _ctx.showTip ? (openBlock(), createElementBlock(
187
187
  "p",
188
188
  {
189
+ key: 0,
189
190
  class: normalizeClass(unref(bem).e("tip"))
190
191
  },
191
192
  toDisplayString(computedTip.value),
192
193
  3
193
194
  /* TEXT, CLASS */
194
- )
195
+ )) : createCommentVNode("v-if", true)
195
196
  ],
196
197
  2
197
198
  /* CLASS */
@@ -1 +1 @@
1
- {"version":3,"file":"upload-image.vue2.mjs","sources":["../../../../../../packages/components/upload-image/src/upload-image.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <div :class=\"bem.m('preview-box')\">\n <a-upload\n v-model:fileList=\"fileList\"\n v-bind=\"getBindValue\"\n :accept=\"props.accept\"\n :show-upload-list=\"false\"\n :max-count=\"props.maxCount\"\n :multiple=\"computedMultiple\"\n :before-upload=\"beforeUpload\"\n :custom-request=\"customRequest\"\n :class=\"bem.m('upload')\"\n list-type=\"picture-card\"\n >\n <a-spin size=\"small\" :spinning=\"props.imgLoading\">\n <ll-image\n v-if=\"innerValue.length > 0\"\n :preview=\"{ visible: false }\"\n :width=\"98\"\n :height=\"98\"\n :src=\"innerValue[0]\"\n :style=\"{\n objectFit: 'contain',\n }\"\n >\n <template #previewMask>\n <div :class=\"bem.m('preview-mask')\">\n <a href=\"javascript:;\" @click.stop=\"imageVisible = true\">\n <ll-icon\n :icon-name=\"`icon-pwd-look`\"\n :class=\"bem.e('image-icon')\"\n />\n </a>\n <a href=\"javascript:;\" @click.stop=\"handleRemoveImage\">\n <ll-icon\n :icon-name=\"`icon-delete`\"\n :class=\"bem.e('image-icon')\"\n />\n </a>\n </div>\n </template>\n </ll-image>\n <ll-icon v-else :icon-name=\"props.iconName\" style=\"font-size: 30px\" />\n </a-spin>\n </a-upload>\n <p :class=\"bem.e('tip')\">{{ computedTip }}</p>\n </div>\n\n <div style=\"display: none\">\n <a-image-preview-group\n :preview=\"{\n visible: imageVisible,\n onVisibleChange: (vis: boolean) => (imageVisible = vis)\n }\"\n >\n <a-image v-for=\"item in innerValue\" :key=\"item\" :src=\"item\" />\n </a-image-preview-group>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, useAttrs, computed } from 'vue'\nimport { omit } from 'lodash-es'\nimport { createNamespace, formatFileSize, fileToBase64 } from '@ll-plus/utils'\nimport { uploadImageProps, uploadImageEmits } from './upload-image'\nimport { message, Form } from 'ant-design-vue'\n\nimport type {\n UploadProps,\n FileType,\n} from 'ant-design-vue/es/upload/interface.d.ts'\n\n//1.Init props/emits/bem/attrs\n\ndefineOptions({ name: 'LlUploadImage' })\n\nconst props = defineProps(uploadImageProps)\n\nconst emits = defineEmits(uploadImageEmits)\n\nconst bem = createNamespace('upload-image')\n\nconst attrs = useAttrs()\n\nconst fileList = ref([])\n\nconst imageVisible = ref(false)\n\nconst innerValue = ref<string[]>(\n Array.isArray(props.value)\n ? [...props.value]\n : props.value\n ? [props.value]\n : []\n)\n\nconst formItemContext = Form.useInjectFormItemContext()\n\nconst computedAccept = computed(() => {\n return props.accept\n ? props.accept\n .split(',')\n .map((e) => e.replace('.', ''))\n .join(',')\n : props.accept\n})\n\nconst computedTip = computed(() => {\n return typeof props.tip === 'string'\n ? props.tip\n : props.tip\n ? `支持${computedAccept.value}格式,不超过${formatFileSize(\n props.imgSize\n )}。`\n : ''\n})\n\nconst computedMultiple = computed(() => props.maxCount > 1)\n\nconst getBindValue = computed(() => ({\n ...omit({ ...attrs }, [...Object.keys(uploadImageProps)]),\n}))\n\nconst beforeUpload = async (file: FileType, FileList: FileType[]) => {\n const fileType = file.type.toLowerCase().replace('image/', '')\n const isType = fileType === 'svg+xml' ? true : props.accept.includes(fileType)\n const isSize = file.size <= props.imgSize\n if (!isType) {\n message.error(`${file.name} 需要为${computedAccept.value}格式。`)\n return false\n }\n if (!isSize) {\n message.error(`${file.name} 文件不得大于${formatFileSize(props.imgSize)}。`)\n return false\n }\n return isType && isSize && props.beforeUpload?.(file, FileList)\n}\n\nconst customRequest: UploadProps['customRequest'] = async (res: any) => {\n const fileUrl = (await fileToBase64(res.file)) as string\n if (props.useBase64) {\n props.maxCount === 1\n ? (innerValue.value = [fileUrl])\n : innerValue.value.push(fileUrl)\n }\n try {\n props.customRequest?.(res, fileUrl)\n } catch (error) {\n innerValue.value.splice(innerValue.value.length - 1, 1)\n message.error('上传失败')\n }\n}\n\nconst handleRemoveImage = async () => {\n const index = innerValue.value.length - 1\n innerValue.value.splice(index, 1)\n\n setValue()\n}\n\nconst setValue = () => {\n const value =\n props.maxCount === 1\n ? innerValue.value.length\n ? innerValue.value[0]\n : ''\n : innerValue.value\n emits('update:value', value)\n emits('change', value)\n formItemContext.onFieldChange()\n}\n\nwatch(\n () => props.value,\n (newVal) => {\n if (newVal !== innerValue.value) {\n innerValue.value = Array.isArray(newVal)\n ? [...newVal]\n : newVal\n ? [newVal]\n : []\n }\n }\n)\n\nwatch(\n innerValue,\n () => {\n setValue()\n },\n {\n deep: true,\n }\n)\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-image.vue2.mjs","sources":["../../../../../../packages/components/upload-image/src/upload-image.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <div :class=\"bem.m('preview-box')\">\n <a-spin size=\"small\" :spinning=\"props.imgLoading\">\n <a-upload\n v-model:fileList=\"fileList\"\n v-bind=\"getBindValue\"\n :accept=\"props.accept\"\n :show-upload-list=\"false\"\n :max-count=\"props.maxCount\"\n :multiple=\"computedMultiple\"\n :before-upload=\"beforeUpload\"\n :custom-request=\"customRequest\"\n :class=\"bem.m('upload')\"\n list-type=\"picture-card\"\n >\n <ll-image\n v-if=\"innerValue.length > 0\"\n :preview=\"{ visible: false }\"\n :width=\"98\"\n :height=\"98\"\n :src=\"innerValue[0]\"\n :style=\"{\n objectFit: 'contain',\n }\"\n >\n <template #previewMask>\n <div :class=\"bem.m('preview-mask')\">\n <a href=\"javascript:;\" @click.stop=\"imageVisible = true\">\n <ll-icon\n :icon-name=\"`icon-pwd-look`\"\n :class=\"bem.e('image-icon')\"\n />\n </a>\n <a href=\"javascript:;\" @click.stop=\"handleRemoveImage\">\n <ll-icon\n :icon-name=\"`icon-delete`\"\n :class=\"bem.e('image-icon')\"\n />\n </a>\n </div>\n </template>\n </ll-image>\n <ll-icon v-else :icon-name=\"props.iconName\" style=\"font-size: 30px\" />\n </a-upload>\n </a-spin>\n\n <p v-if=\"showTip\" :class=\"bem.e('tip')\">{{ computedTip }}</p>\n </div>\n\n <div style=\"display: none\">\n <a-image-preview-group\n :preview=\"{\n visible: imageVisible,\n onVisibleChange: (vis: boolean) => (imageVisible = vis)\n }\"\n >\n <a-image v-for=\"item in innerValue\" :key=\"item\" :src=\"item\" />\n </a-image-preview-group>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, useAttrs, computed } from 'vue'\nimport { omit } from 'lodash-es'\nimport { createNamespace, formatFileSize, fileToBase64 } from '@ll-plus/utils'\nimport { uploadImageProps, uploadImageEmits } from './upload-image'\nimport { message, Form } from 'ant-design-vue'\n\nimport type {\n UploadProps,\n FileType,\n} from 'ant-design-vue/es/upload/interface.d.ts'\n\n//1.Init props/emits/bem/attrs\n\ndefineOptions({ name: 'LlUploadImage' })\n\nconst props = defineProps(uploadImageProps)\n\nconst emits = defineEmits(uploadImageEmits)\n\nconst bem = createNamespace('upload-image')\n\nconst attrs = useAttrs()\n\nconst fileList = ref([])\n\nconst imageVisible = ref(false)\n\nconst innerValue = ref<string[]>(\n Array.isArray(props.value)\n ? [...props.value]\n : props.value\n ? [props.value]\n : []\n)\n\nconst formItemContext = Form.useInjectFormItemContext()\n\nconst computedAccept = computed(() => {\n return props.accept\n ? props.accept\n .split(',')\n .map((e) => e.replace('.', ''))\n .join(',')\n : props.accept\n})\n\nconst computedTip = computed(() => {\n return typeof props.tip === 'string'\n ? props.tip\n : props.tip\n ? `支持${computedAccept.value}格式,不超过${formatFileSize(\n props.imgSize\n )}。`\n : ''\n})\n\nconst computedMultiple = computed(() => props.maxCount > 1)\n\nconst getBindValue = computed(() => ({\n ...omit({ ...attrs }, [...Object.keys(uploadImageProps)]),\n}))\n\nconst beforeUpload = async (file: FileType, FileList: FileType[]) => {\n const fileType = file.type.toLowerCase().replace('image/', '')\n const isType = fileType === 'svg+xml' ? true : props.accept.includes(fileType)\n const isSize = file.size <= props.imgSize\n if (!isType) {\n message.error(`${file.name} 需要为${computedAccept.value}格式。`)\n return false\n }\n if (!isSize) {\n message.error(`${file.name} 文件不得大于${formatFileSize(props.imgSize)}。`)\n return false\n }\n return isType && isSize && props.beforeUpload?.(file, FileList)\n}\n\nconst customRequest: UploadProps['customRequest'] = async (res: any) => {\n const fileUrl = (await fileToBase64(res.file)) as string\n if (props.useBase64) {\n props.maxCount === 1\n ? (innerValue.value = [fileUrl])\n : innerValue.value.push(fileUrl)\n }\n try {\n props.customRequest?.(res, fileUrl)\n } catch (error) {\n innerValue.value.splice(innerValue.value.length - 1, 1)\n message.error('上传失败')\n }\n}\n\nconst handleRemoveImage = async () => {\n const index = innerValue.value.length - 1\n innerValue.value.splice(index, 1)\n\n setValue()\n}\n\nconst setValue = () => {\n const value =\n props.maxCount === 1\n ? innerValue.value.length\n ? innerValue.value[0]\n : ''\n : innerValue.value\n emits('update:value', value)\n emits('change', value)\n formItemContext.onFieldChange()\n}\n\nwatch(\n () => props.value,\n (newVal) => {\n if (newVal !== innerValue.value) {\n innerValue.value = Array.isArray(newVal)\n ? [...newVal]\n : newVal\n ? [newVal]\n : []\n }\n }\n)\n\nwatch(\n innerValue,\n () => {\n setValue()\n },\n {\n deep: true,\n }\n)\n</script>\n"],"names":[],"mappings":"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"}