ll-plus 2.4.5 → 2.4.8

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 (216) hide show
  1. package/es/component.mjs +3 -0
  2. package/es/component.mjs.map +1 -1
  3. package/es/components/advanced-filtering/index.d.ts +34 -16
  4. package/es/components/advanced-filtering/src/advanced-filtering.d.ts +1 -1
  5. package/es/components/advanced-filtering/src/advanced-filtering.vue.d.ts +17 -8
  6. package/es/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +18 -8
  7. package/es/components/avatar/index.d.ts +66 -31
  8. package/es/components/avatar/src/avatar.d.ts +33 -30
  9. package/es/components/avatar/src/avatar.vue.d.ts +66 -31
  10. package/es/components/cropper/index.d.ts +1485 -0
  11. package/es/components/cropper/src/cropper-image.d.ts +51 -0
  12. package/es/components/cropper/src/cropper-image.vue.d.ts +93 -0
  13. package/es/components/cropper/src/cropper-modal.vue.d.ts +1391 -0
  14. package/es/components/empty/index.d.ts +4 -0
  15. package/es/components/empty/src/empty.d.ts +1 -0
  16. package/es/components/empty/src/empty.vue.d.ts +4 -0
  17. package/es/components/form/index.d.ts +24 -8
  18. package/es/components/form/src/components/form-component.vue.d.ts +9 -2
  19. package/es/components/form/src/config/form-component.d.ts +4 -1
  20. package/es/components/form/src/config/form.d.ts +7 -1
  21. package/es/components/form/src/form.vue.d.ts +15 -6
  22. package/es/components/index.d.ts +1 -0
  23. package/es/components/key-value/index.d.ts +90 -36
  24. package/es/components/key-value/src/components/key-value-item.vue.d.ts +30 -12
  25. package/es/components/key-value/src/key-value.vue.d.ts +90 -36
  26. package/es/components/select-group/index.d.ts +5 -4
  27. package/es/components/select-group/src/select-group.d.ts +7 -1
  28. package/es/components/select-group/src/select-group.vue.d.ts +5 -4
  29. package/es/index.mjs +3 -1
  30. package/es/index.mjs.map +1 -1
  31. package/es/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.mjs +1576 -0
  32. package/es/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.mjs.map +1 -0
  33. package/es/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.mjs +30 -0
  34. package/es/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.mjs.map +1 -0
  35. package/es/packages/components/advanced-filtering/src/advanced-filtering.mjs +4 -1
  36. package/es/packages/components/advanced-filtering/src/advanced-filtering.mjs.map +1 -1
  37. package/es/packages/components/advanced-filtering/src/advanced-filtering.vue2.mjs +3 -4
  38. package/es/packages/components/advanced-filtering/src/advanced-filtering.vue2.mjs.map +1 -1
  39. package/es/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.mjs +9 -18
  40. package/es/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.mjs.map +1 -1
  41. package/es/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.mjs +1 -1
  42. package/es/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.mjs.map +1 -1
  43. package/es/packages/components/avatar/src/avatar.mjs +39 -13
  44. package/es/packages/components/avatar/src/avatar.mjs.map +1 -1
  45. package/es/packages/components/avatar/src/avatar.vue2.mjs +40 -127
  46. package/es/packages/components/avatar/src/avatar.vue2.mjs.map +1 -1
  47. package/es/packages/components/checkbox/index.mjs.map +1 -1
  48. package/es/packages/components/cropper/index.mjs +12 -0
  49. package/es/packages/components/cropper/index.mjs.map +1 -0
  50. package/es/packages/components/cropper/src/cropper-image.mjs +77 -0
  51. package/es/packages/components/cropper/src/cropper-image.mjs.map +1 -0
  52. package/es/packages/components/cropper/src/cropper-image.vue.mjs +8 -0
  53. package/es/packages/components/cropper/src/cropper-image.vue.mjs.map +1 -0
  54. package/es/packages/components/cropper/src/cropper-image.vue2.mjs +137 -0
  55. package/es/packages/components/cropper/src/cropper-image.vue2.mjs.map +1 -0
  56. package/es/packages/components/cropper/src/cropper-modal.vue.mjs +8 -0
  57. package/es/packages/components/cropper/src/cropper-modal.vue.mjs.map +1 -0
  58. package/es/packages/components/cropper/src/cropper-modal.vue2.mjs +407 -0
  59. package/es/packages/components/cropper/src/cropper-modal.vue2.mjs.map +1 -0
  60. package/es/packages/components/empty/src/empty.mjs +7 -0
  61. package/es/packages/components/empty/src/empty.mjs.map +1 -1
  62. package/es/packages/components/empty/src/empty.vue2.mjs +4 -4
  63. package/es/packages/components/empty/src/empty.vue2.mjs.map +1 -1
  64. package/es/packages/components/form/index.mjs +1 -1
  65. package/es/packages/components/form/src/components/form-component.vue2.mjs +14 -9
  66. package/es/packages/components/form/src/components/form-component.vue2.mjs.map +1 -1
  67. package/es/packages/components/form/src/config/form-component.mjs +4 -1
  68. package/es/packages/components/form/src/config/form-component.mjs.map +1 -1
  69. package/es/packages/components/form/src/config/form.mjs +1 -1
  70. package/es/packages/components/form/src/config/form.mjs.map +1 -1
  71. package/es/packages/components/form/src/config/index.mjs +1 -1
  72. package/es/packages/components/form/src/form.vue2.mjs +12 -15
  73. package/es/packages/components/form/src/form.vue2.mjs.map +1 -1
  74. package/es/packages/components/index.mjs +3 -1
  75. package/es/packages/components/index.mjs.map +1 -1
  76. package/es/packages/components/number-range/src/number-range.vue2.mjs +6 -5
  77. package/es/packages/components/number-range/src/number-range.vue2.mjs.map +1 -1
  78. package/es/packages/components/rich-text-editor/src/rich-text-editor.vue2.mjs +31 -22
  79. package/es/packages/components/rich-text-editor/src/rich-text-editor.vue2.mjs.map +1 -1
  80. package/es/packages/components/select-group/src/select-group.mjs +6 -0
  81. package/es/packages/components/select-group/src/select-group.mjs.map +1 -1
  82. package/es/packages/components/select-group/src/select-group.vue2.mjs +6 -6
  83. package/es/packages/components/select-group/src/select-group.vue2.mjs.map +1 -1
  84. package/es/packages/utils/file.mjs +13 -1
  85. package/es/packages/utils/file.mjs.map +1 -1
  86. package/es/packages/utils/index.mjs +1 -1
  87. package/es/utils/file.d.ts +4 -0
  88. package/global.d.ts +2 -0
  89. package/index.full.js +3981 -656
  90. package/index.full.min.js +41 -28
  91. package/index.full.min.js.map +1 -1
  92. package/index.full.min.mjs +40 -27
  93. package/index.full.min.mjs.map +1 -1
  94. package/index.full.mjs +3975 -658
  95. package/lib/component.js +92 -89
  96. package/lib/component.js.map +1 -1
  97. package/lib/components/advanced-filtering/index.d.ts +34 -16
  98. package/lib/components/advanced-filtering/src/advanced-filtering.d.ts +1 -1
  99. package/lib/components/advanced-filtering/src/advanced-filtering.vue.d.ts +17 -8
  100. package/lib/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +18 -8
  101. package/lib/components/avatar/index.d.ts +66 -31
  102. package/lib/components/avatar/src/avatar.d.ts +33 -30
  103. package/lib/components/avatar/src/avatar.vue.d.ts +66 -31
  104. package/lib/components/cropper/index.d.ts +1485 -0
  105. package/lib/components/cropper/src/cropper-image.d.ts +51 -0
  106. package/lib/components/cropper/src/cropper-image.vue.d.ts +93 -0
  107. package/lib/components/cropper/src/cropper-modal.vue.d.ts +1391 -0
  108. package/lib/components/empty/index.d.ts +4 -0
  109. package/lib/components/empty/src/empty.d.ts +1 -0
  110. package/lib/components/empty/src/empty.vue.d.ts +4 -0
  111. package/lib/components/form/index.d.ts +24 -8
  112. package/lib/components/form/src/components/form-component.vue.d.ts +9 -2
  113. package/lib/components/form/src/config/form-component.d.ts +4 -1
  114. package/lib/components/form/src/config/form.d.ts +7 -1
  115. package/lib/components/form/src/form.vue.d.ts +15 -6
  116. package/lib/components/index.d.ts +1 -0
  117. package/lib/components/key-value/index.d.ts +90 -36
  118. package/lib/components/key-value/src/components/key-value-item.vue.d.ts +30 -12
  119. package/lib/components/key-value/src/key-value.vue.d.ts +90 -36
  120. package/lib/components/select-group/index.d.ts +5 -4
  121. package/lib/components/select-group/src/select-group.d.ts +7 -1
  122. package/lib/components/select-group/src/select-group.vue.d.ts +5 -4
  123. package/lib/index.js +101 -91
  124. package/lib/index.js.map +1 -1
  125. package/lib/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.js +1696 -0
  126. package/lib/node_modules/.pnpm/@vueuse_shared@10.9.0_vue@3.4.25/node_modules/@vueuse/shared/index.js.map +1 -0
  127. package/lib/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.js +61 -0
  128. package/lib/node_modules/.pnpm/vue-demi@0.14.7_vue@3.4.25/node_modules/vue-demi/lib/index.js.map +1 -0
  129. package/lib/packages/components/advanced-filtering/src/advanced-filtering.js +4 -1
  130. package/lib/packages/components/advanced-filtering/src/advanced-filtering.js.map +1 -1
  131. package/lib/packages/components/advanced-filtering/src/advanced-filtering.vue2.js +2 -3
  132. package/lib/packages/components/advanced-filtering/src/advanced-filtering.vue2.js.map +1 -1
  133. package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.js +9 -18
  134. package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue2.js.map +1 -1
  135. package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.js +1 -1
  136. package/lib/packages/components/advanced-filtering/src/components/advanced-filtering-tags.vue2.js.map +1 -1
  137. package/lib/packages/components/avatar/src/avatar.js +39 -13
  138. package/lib/packages/components/avatar/src/avatar.js.map +1 -1
  139. package/lib/packages/components/avatar/src/avatar.vue2.js +39 -126
  140. package/lib/packages/components/avatar/src/avatar.vue2.js.map +1 -1
  141. package/lib/packages/components/checkbox/index.js.map +1 -1
  142. package/lib/packages/components/cropper/index.js +20 -0
  143. package/lib/packages/components/cropper/index.js.map +1 -0
  144. package/lib/packages/components/cropper/src/cropper-image.js +83 -0
  145. package/lib/packages/components/cropper/src/cropper-image.js.map +1 -0
  146. package/lib/packages/components/cropper/src/cropper-image.vue.js +12 -0
  147. package/lib/packages/components/cropper/src/cropper-image.vue.js.map +1 -0
  148. package/lib/packages/components/cropper/src/cropper-image.vue2.js +141 -0
  149. package/lib/packages/components/cropper/src/cropper-image.vue2.js.map +1 -0
  150. package/lib/packages/components/cropper/src/cropper-modal.vue.js +12 -0
  151. package/lib/packages/components/cropper/src/cropper-modal.vue.js.map +1 -0
  152. package/lib/packages/components/cropper/src/cropper-modal.vue2.js +411 -0
  153. package/lib/packages/components/cropper/src/cropper-modal.vue2.js.map +1 -0
  154. package/lib/packages/components/empty/src/empty.js +7 -0
  155. package/lib/packages/components/empty/src/empty.js.map +1 -1
  156. package/lib/packages/components/empty/src/empty.vue2.js +3 -3
  157. package/lib/packages/components/empty/src/empty.vue2.js.map +1 -1
  158. package/lib/packages/components/form/index.js +1 -0
  159. package/lib/packages/components/form/index.js.map +1 -1
  160. package/lib/packages/components/form/src/components/form-component.vue2.js +12 -7
  161. package/lib/packages/components/form/src/components/form-component.vue2.js.map +1 -1
  162. package/lib/packages/components/form/src/config/form-component.js +4 -0
  163. package/lib/packages/components/form/src/config/form-component.js.map +1 -1
  164. package/lib/packages/components/form/src/config/form.js +1 -1
  165. package/lib/packages/components/form/src/config/form.js.map +1 -1
  166. package/lib/packages/components/form/src/config/index.js +1 -0
  167. package/lib/packages/components/form/src/config/index.js.map +1 -1
  168. package/lib/packages/components/form/src/form.vue2.js +12 -15
  169. package/lib/packages/components/form/src/form.vue2.js.map +1 -1
  170. package/lib/packages/components/index.js +101 -91
  171. package/lib/packages/components/index.js.map +1 -1
  172. package/lib/packages/components/number-range/src/number-range.vue2.js +6 -5
  173. package/lib/packages/components/number-range/src/number-range.vue2.js.map +1 -1
  174. package/lib/packages/components/rich-text-editor/src/rich-text-editor.vue2.js +30 -21
  175. package/lib/packages/components/rich-text-editor/src/rich-text-editor.vue2.js.map +1 -1
  176. package/lib/packages/components/select-group/src/select-group.js +6 -0
  177. package/lib/packages/components/select-group/src/select-group.js.map +1 -1
  178. package/lib/packages/components/select-group/src/select-group.vue2.js +6 -6
  179. package/lib/packages/components/select-group/src/select-group.vue2.js.map +1 -1
  180. package/lib/packages/utils/file.js +13 -0
  181. package/lib/packages/utils/file.js.map +1 -1
  182. package/lib/packages/utils/index.js +1 -0
  183. package/lib/packages/utils/index.js.map +1 -1
  184. package/lib/utils/file.d.ts +4 -0
  185. package/package.json +2 -1
  186. package/theme-chalk/css/avatar.css +1 -1
  187. package/theme-chalk/css/cropper.css +13 -0
  188. package/theme-chalk/css/index.css +9 -1
  189. package/theme-chalk/css/rich-text-editor.css +1 -1
  190. package/types/packages/components/advanced-filtering/index.d.ts +34 -16
  191. package/types/packages/components/advanced-filtering/src/advanced-filtering.d.ts +1 -1
  192. package/types/packages/components/advanced-filtering/src/advanced-filtering.vue.d.ts +17 -8
  193. package/types/packages/components/advanced-filtering/src/components/advanced-filtering-params.vue.d.ts +18 -8
  194. package/types/packages/components/avatar/index.d.ts +66 -31
  195. package/types/packages/components/avatar/src/avatar.d.ts +33 -30
  196. package/types/packages/components/avatar/src/avatar.vue.d.ts +66 -31
  197. package/types/packages/components/cropper/index.d.ts +1485 -0
  198. package/types/packages/components/cropper/src/cropper-image.d.ts +51 -0
  199. package/types/packages/components/cropper/src/cropper-image.vue.d.ts +93 -0
  200. package/types/packages/components/cropper/src/cropper-modal.vue.d.ts +1391 -0
  201. package/types/packages/components/empty/index.d.ts +4 -0
  202. package/types/packages/components/empty/src/empty.d.ts +1 -0
  203. package/types/packages/components/empty/src/empty.vue.d.ts +4 -0
  204. package/types/packages/components/form/index.d.ts +24 -8
  205. package/types/packages/components/form/src/components/form-component.vue.d.ts +9 -2
  206. package/types/packages/components/form/src/config/form-component.d.ts +4 -1
  207. package/types/packages/components/form/src/config/form.d.ts +7 -1
  208. package/types/packages/components/form/src/form.vue.d.ts +15 -6
  209. package/types/packages/components/index.d.ts +1 -0
  210. package/types/packages/components/key-value/index.d.ts +90 -36
  211. package/types/packages/components/key-value/src/components/key-value-item.vue.d.ts +30 -12
  212. package/types/packages/components/key-value/src/key-value.vue.d.ts +90 -36
  213. package/types/packages/components/select-group/index.d.ts +5 -4
  214. package/types/packages/components/select-group/src/select-group.d.ts +7 -1
  215. package/types/packages/components/select-group/src/select-group.vue.d.ts +5 -4
  216. package/types/packages/utils/file.d.ts +4 -0
@@ -1,6 +1,6 @@
1
1
  export { formEmits, formProps } from './form.mjs';
2
2
  export { checkedType } from './components.mjs';
3
- export { formComponentProps } from './form-component.mjs';
3
+ export { formComponentEmits, formComponentProps } from './form-component.mjs';
4
4
 
5
5
  "use strict";
6
6
  //# sourceMappingURL=index.mjs.map
@@ -18,6 +18,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
18
18
  const bem = createNamespace("form");
19
19
  const formData = reactive(props.formData);
20
20
  const formRef = ref();
21
+ const id = ref(`ll-form-${+/* @__PURE__ */ new Date()}`);
21
22
  const validate = async () => {
22
23
  return await formRef.value.validateFields();
23
24
  };
@@ -44,15 +45,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
44
45
  }
45
46
  return bem.is("label-top");
46
47
  };
47
- watch(
48
- () => formData,
49
- (val) => {
50
- emits("change", val);
51
- },
52
- {
53
- deep: true
54
- }
55
- );
48
+ const handleChangeField = (item) => {
49
+ emits("change", { item, value: formData[item.key], formData });
50
+ };
56
51
  watch(
57
52
  () => props.formData,
58
53
  async (val) => {
@@ -88,10 +83,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
88
83
  spinning: props.loading
89
84
  }, {
90
85
  default: withCtx(() => [
91
- createVNode(_component_a_form, mergeProps({
86
+ createVNode(_component_a_form, mergeProps(props.formOptions, {
87
+ id: id.value,
92
88
  ref_key: "formRef",
93
- ref: formRef
94
- }, props.formOptions, {
89
+ ref: formRef,
95
90
  model: props.formData
96
91
  }), {
97
92
  default: withCtx(() => [
@@ -191,7 +186,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
191
186
  }, () => [
192
187
  createVNode(FormComponent, {
193
188
  item: child,
194
- "form-data": formData
189
+ "form-data": formData,
190
+ onChangeField: handleChangeField
195
191
  }, null, 8, ["item", "form-data"])
196
192
  ])
197
193
  ]),
@@ -214,7 +210,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
214
210
  )) : (openBlock(), createBlock(FormComponent, {
215
211
  key: 1,
216
212
  item,
217
- "form-data": formData
213
+ "form-data": formData,
214
+ onChangeField: handleChangeField
218
215
  }, null, 8, ["item", "form-data"]))
219
216
  ])
220
217
  ]),
@@ -240,7 +237,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
240
237
  ]),
241
238
  _: 3
242
239
  /* FORWARDED */
243
- }, 16, ["model"])
240
+ }, 16, ["id", "model"])
244
241
  ]),
245
242
  _: 3
246
243
  /* FORWARDED */
@@ -1 +1 @@
1
- {"version":3,"file":"form.vue2.mjs","sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"props.loading\">\n <a-form ref=\"formRef\" v-bind=\"props.formOptions\" :model=\"props.formData\">\n <a-row v-bind=\"props.rowOptions\">\n <a-col\n v-for=\"(item, index) in props.formColumns\"\n :key=\"index\"\n v-bind=\"item?.colOptions ?? {}\"\n :span=\"item?.spanCol ?? 24\"\n >\n <slot name=\"formItem\" :item=\"item\" :index=\"index\">\n <ll-form-item\n :name=\"item?.key ?? index\"\n :class=\"getFormItemClass(item)\"\n v-bind=\"getBindValue(item)\"\n >\n <template #label>\n <slot name=\"label\" :item=\"item\" :index=\"index\">\n <span>{{ item.label }}</span>\n <span v-if=\"item?.tip\" :class=\"bem.e('tooltip-wrapper')\">\n <ll-tooltip\n style=\"margin-left: 8px\"\n :overlay-class-name=\"bem.e('tooltip')\"\n :arrow-point-at-center=\"true\"\n :max-width=\"item?.tipConfig?.maxWidth ?? 406\"\n :placement=\"item?.tipConfig?.placement ?? 'top'\"\n :tip=\"item.tip\"\n :font-size=\"'16px'\"\n v-bind=\"item?.tipConfig\"\n />\n </span>\n </slot>\n </template>\n <slot name=\"content\" :item=\"item\" :index=\"index\">\n <template v-if=\"!isEmpty(item.children)\">\n <a-row :gutter=\"5\" v-bind=\"item.rowOptions\">\n <a-col\n v-for=\"(child, childIndex) in item.children\"\n :key=\"childIndex\"\n :style=\"{\n display: 'flex',\n 'align-items': 'center'\n }\"\n v-bind=\"item?.colOptions ?? {}\"\n >\n <slot name=\"children\" :item=\"child\" :index=\"index\">\n <form-component :item=\"child\" :form-data=\"formData\" />\n </slot>\n </a-col>\n </a-row>\n </template>\n <form-component v-else :item=\"item\" :form-data=\"formData\" />\n </slot>\n </ll-form-item>\n </slot>\n </a-col>\n </a-row>\n </a-form>\n </a-spin>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { reactive, ref, watch } from 'vue'\nimport { omit, isEmpty } from 'lodash-es'\nimport { formProps, formEmits, type FormColumn } from './config'\n\nimport type { NamePath } from 'ant-design-vue/es/form/interface'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport formComponent from './components/form-component.vue'\n\n// 定义组件名称\ndefineOptions({ name: 'LlForm' })\n\n// Props\nconst props = defineProps(formProps)\n\nconst emits = defineEmits(formEmits)\n\nconst bem = createNamespace('form')\n\nconst formData = reactive(props.formData)\n\nconst formRef = ref()\n\nconst validate = async () => {\n return await formRef.value.validateFields()\n}\n\nconst resetFields = async () => {\n return await formRef.value.resetFields()\n}\n\nconst clearValidate = async (nameList?: NamePath[]) => {\n return await formRef.value.clearValidate(nameList)\n}\n\nconst scrollToField = async (name: NamePath, options?: ScrollOptions) => {\n return await formRef.value.scrollToField(name, options)\n}\n\nconst getBindValue = (item: FormColumn) => {\n const obj = { ...item }\n return omit(obj, ['label'])\n}\n\nconst getFormItemClass = (item = {} as FormColumn) => {\n if (props.formOptions.layout === 'horizontal') {\n if (item?.labelCol) {\n return item.labelCol.span && item.labelCol.span >= 24\n ? bem.is('label-top')\n : bem.is('label-left')\n } else {\n return bem.is('label-left')\n }\n }\n return bem.is('label-top')\n}\n\nwatch(\n () => formData,\n val => {\n emits('change', val)\n },\n {\n deep: true\n }\n)\n\nwatch(\n () => props.formData,\n async val => {\n for (const i in val) {\n formData[i] = val[i]\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate,\n scrollToField\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.vue2.mjs","sources":["../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"props.loading\">\n <a-form\n v-bind=\"props.formOptions\"\n :id=\"id\"\n ref=\"formRef\"\n :model=\"props.formData\"\n >\n <a-row v-bind=\"props.rowOptions\">\n <a-col\n v-for=\"(item, index) in props.formColumns\"\n :key=\"index\"\n v-bind=\"item?.colOptions ?? {}\"\n :span=\"item?.spanCol ?? 24\"\n >\n <slot name=\"formItem\" :item=\"item\" :index=\"index\">\n <ll-form-item\n :name=\"item?.key ?? index\"\n :class=\"getFormItemClass(item)\"\n v-bind=\"getBindValue(item)\"\n >\n <template #label>\n <slot name=\"label\" :item=\"item\" :index=\"index\">\n <span>{{ item.label }}</span>\n <span v-if=\"item?.tip\" :class=\"bem.e('tooltip-wrapper')\">\n <ll-tooltip\n style=\"margin-left: 8px\"\n :overlay-class-name=\"bem.e('tooltip')\"\n :arrow-point-at-center=\"true\"\n :max-width=\"item?.tipConfig?.maxWidth ?? 406\"\n :placement=\"item?.tipConfig?.placement ?? 'top'\"\n :tip=\"item.tip\"\n :font-size=\"'16px'\"\n v-bind=\"item?.tipConfig\"\n />\n </span>\n </slot>\n </template>\n <slot name=\"content\" :item=\"item\" :index=\"index\">\n <template v-if=\"!isEmpty(item.children)\">\n <a-row :gutter=\"5\" v-bind=\"item.rowOptions\">\n <a-col\n v-for=\"(child, childIndex) in item.children\"\n :key=\"childIndex\"\n :style=\"{\n display: 'flex',\n 'align-items': 'center'\n }\"\n v-bind=\"item?.colOptions ?? {}\"\n >\n <slot name=\"children\" :item=\"child\" :index=\"index\">\n <form-component\n :item=\"child\"\n :form-data=\"formData\"\n @change-field=\"handleChangeField\"\n />\n </slot>\n </a-col>\n </a-row>\n </template>\n <form-component\n v-else\n :item=\"item\"\n :form-data=\"formData\"\n @change-field=\"handleChangeField\"\n />\n </slot>\n </ll-form-item>\n </slot>\n </a-col>\n </a-row>\n </a-form>\n </a-spin>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { reactive, ref, watch } from 'vue'\nimport { omit, isEmpty } from 'lodash-es'\nimport { formProps, formEmits, type FormColumn } from './config'\n\nimport type { NamePath } from 'ant-design-vue/es/form/interface'\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport formComponent from './components/form-component.vue'\n\n// 定义组件名称\ndefineOptions({ name: 'LlForm' })\n\n// Props\nconst props = defineProps(formProps)\n\nconst emits = defineEmits(formEmits)\n\nconst bem = createNamespace('form')\n\nconst formData = reactive(props.formData)\n\nconst formRef = ref()\n\nconst id = ref(`ll-form-${+new Date()}`)\n\nconst validate = async () => {\n return await formRef.value.validateFields()\n}\n\nconst resetFields = async () => {\n return await formRef.value.resetFields()\n}\n\nconst clearValidate = async (nameList?: NamePath[]) => {\n return await formRef.value.clearValidate(nameList)\n}\n\nconst scrollToField = async (name: NamePath, options?: ScrollOptions) => {\n return await formRef.value.scrollToField(name, options)\n}\n\nconst getBindValue = (item: FormColumn) => {\n const obj = { ...item }\n return omit(obj, ['label'])\n}\n\nconst getFormItemClass = (item = {} as FormColumn) => {\n if (props.formOptions.layout === 'horizontal') {\n if (item?.labelCol) {\n return item.labelCol.span && item.labelCol.span >= 24\n ? bem.is('label-top')\n : bem.is('label-left')\n } else {\n return bem.is('label-left')\n }\n }\n return bem.is('label-top')\n}\n\nconst handleChangeField = (item: FormColumn) => {\n emits('change', { item, value: formData[item.key], formData })\n}\n\n// watch(\n// () => formData,\n// val => {\n// emits('change', val)\n// },\n// {\n// deep: true\n// }\n// )\n\nwatch(\n () => props.formData,\n async val => {\n for (const i in val) {\n formData[i] = val[i]\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\ndefineExpose({\n validate,\n resetFields,\n clearValidate,\n scrollToField\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export { LlCascader } from './cascader/index.mjs';
6
6
  export { LlCheckbox, LlCheckboxGroup } from './checkbox/index.mjs';
7
7
  export { LlCodeEditor } from './code-editor/index.mjs';
8
8
  export { LlConfigProvider } from './config-provider/index.mjs';
9
+ export { LlCropperImage, LlCropperModal } from './cropper/index.mjs';
9
10
  export { LlDatePicker } from './date-picker/index.mjs';
10
11
  export { LlDateRange } from './date-range/index.mjs';
11
12
  export { LlDescriptions } from './descriptions/index.mjs';
@@ -62,6 +63,7 @@ export { buttonProps } from './button/src/button.mjs';
62
63
  export { checkboxGroupProps, checkboxProps } from './checkbox/src/checkbox.mjs';
63
64
  export { codeEditorEmits, codeEditorProps, defaultOptions } from './code-editor/src/config/code-editor.mjs';
64
65
  export { codeThemeList } from './code-editor/src/config/code-theme-list.mjs';
66
+ export { cropperImageEmits, cropperImageProps, cropperModalEmits, cropperModalProps, defaultCropperOptions } from './cropper/src/cropper-image.mjs';
65
67
  export { descriptionsProps } from './descriptions/src/descriptions.mjs';
66
68
  export { descriptionsItemProps } from './descriptions-item/src/descriptions-item.mjs';
67
69
  export { drawerEmits, drawerOptions, drawerProps } from './drawer/src/drawer.mjs';
@@ -74,7 +76,7 @@ export { TypeEnum, useTabEmits, useTabProps, useTabSetup } from './easy-cron/src
74
76
  export { emptyProps, url } from './empty/src/empty.mjs';
75
77
  export { formEmits, formProps } from './form/src/config/form.mjs';
76
78
  export { checkedType } from './form/src/config/components.mjs';
77
- export { formComponentProps } from './form/src/config/form-component.mjs';
79
+ export { formComponentEmits, formComponentProps } from './form/src/config/form-component.mjs';
78
80
  export { iconProps } from './icon/src/icon.mjs';
79
81
  export { iconBaseProps, iconTypes } from './icon-base/src/icon-base.mjs';
80
82
  export { iconPickerProps } from './icon-picker/src/config/icon-picker.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  import { defineComponent, ref, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, createVNode, createCommentVNode, renderSlot, createTextVNode } from 'vue';
2
+ import { isNil } from 'lodash-es';
2
3
  import { numberRangeProps, numberRangeEmits } from './number-range.mjs';
3
4
  import '../../../utils/index.mjs';
4
5
  import '../../index.mjs';
@@ -23,7 +24,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
23
24
  emits("change", arr);
24
25
  };
25
26
  const handleMinChange = (e) => {
26
- if (!!e || e.value === 0) {
27
+ if (!isNil(e)) {
27
28
  minValue.value = e;
28
29
  } else {
29
30
  minValue.value = void 0;
@@ -31,10 +32,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
31
32
  setValue();
32
33
  };
33
34
  const handleMaxChange = (e) => {
34
- if (!!e || e.value === 0) {
35
+ if (!isNil(e)) {
35
36
  maxValue.value = e;
36
37
  } else {
37
- minValue.value = void 0;
38
+ maxValue.value = void 0;
38
39
  }
39
40
  setValue();
40
41
  };
@@ -58,12 +59,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
58
59
  () => props.value,
59
60
  (n) => {
60
61
  if (n && n.length) {
61
- if (n[0] || n[0] === 0) {
62
+ if (!isNil(n[0])) {
62
63
  minValue.value = n[0];
63
64
  } else {
64
65
  minValue.value = void 0;
65
66
  }
66
- if (n[1] || n[1] === 0) {
67
+ if (!isNil(n[1])) {
67
68
  maxValue.value = n[1];
68
69
  } else {
69
70
  maxValue.value = void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"number-range.vue2.mjs","sources":["../../../../../../packages/components/number-range/src/number-range.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <div :class=\"bem.m('input')\">\n <ll-input-number\n v-model:value=\"minValue\"\n :placeholder=\"placeholder[0]\"\n :precision=\"props.precision\"\n :min=\"props.min\"\n :max=\"props.max\"\n :disabled=\"props.disabled\"\n :controls=\"false\"\n :bordered=\"false\"\n style=\"width: 100%\"\n @change=\"handleMinChange\"\n @blur=\"handleMinBlur\"\n />\n </div>\n <!-- 左边InputNumber -->\n\n <span :class=\"bem.m('separator')\">\n <slot name=\"separator\"> - </slot>\n </span>\n <!-- 右边InputNumber -->\n <div :class=\"bem.m('input')\">\n <ll-input-number\n v-model:value=\"maxValue\"\n :placeholder=\"placeholder[1]\"\n :precision=\"props.precision\"\n :min=\"props.min\"\n :max=\"props.max\"\n :disabled=\"props.disabled\"\n :controls=\"false\"\n :bordered=\"false\"\n style=\"width: 100%\"\n @change=\"handleMaxChange\"\n @blur=\"handleMaxBlur\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport { numberRangeProps, numberRangeEmits } from './number-range'\n\ndefineOptions({ name: 'LlNumberRange' })\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport { LlInputNumber } from '@ll-plus/components'\n\nimport type { InputNumberProps } from 'ant-design-vue'\n\n// 1.props/ref\nconst props = defineProps(numberRangeProps)\n// 2.emits\nconst emits = defineEmits(numberRangeEmits)\n\nconst bem = createNamespace('number-range')\n\nconst minValue = ref<InputNumberProps['value']>(undefined)\n\nconst maxValue = ref<InputNumberProps['value']>(undefined)\n\nconst setValue = () => {\n const arr = [minValue.value, maxValue.value]\n emits('update:value', arr)\n emits('change', arr)\n}\n\nconst handleMinChange = e => {\n if (!!e || e.value === 0) {\n minValue.value = e\n } else {\n minValue.value = undefined\n }\n setValue()\n}\nconst handleMaxChange = e => {\n if (!!e || e.value === 0) {\n maxValue.value = e\n } else {\n minValue.value = undefined\n }\n setValue()\n}\n\nconst handleMaxBlur = () => {\n if (minValue.value || minValue.value === 0) {\n if (maxValue.value && maxValue.value < minValue.value) {\n maxValue.value = minValue.value\n }\n }\n setValue()\n}\n\nconst handleMinBlur = () => {\n if (maxValue.value || maxValue.value === 0) {\n if (minValue.value && minValue.value > maxValue.value) {\n minValue.value = maxValue.value\n }\n }\n setValue()\n}\n\nwatch(\n () => props.value,\n n => {\n if (n && n.length!) {\n if (n[0] || n[0] === 0) {\n minValue.value = n[0]\n } else {\n minValue.value = undefined\n }\n if (n[1] || n[1] === 0) {\n maxValue.value = n[1]\n } else {\n maxValue.value = undefined\n }\n } else {\n minValue.value = undefined\n maxValue.value = undefined\n }\n },\n {\n immediate: true,\n deep: true\n }\n)\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number-range.vue2.mjs","sources":["../../../../../../packages/components/number-range/src/number-range.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <div :class=\"bem.m('input')\">\n <ll-input-number\n v-model:value=\"minValue\"\n :placeholder=\"placeholder[0]\"\n :precision=\"props.precision\"\n :min=\"props.min\"\n :max=\"props.max\"\n :disabled=\"props.disabled\"\n :controls=\"false\"\n :bordered=\"false\"\n style=\"width: 100%\"\n @change=\"handleMinChange\"\n @blur=\"handleMinBlur\"\n />\n </div>\n <!-- 左边InputNumber -->\n\n <span :class=\"bem.m('separator')\">\n <slot name=\"separator\"> - </slot>\n </span>\n <!-- 右边InputNumber -->\n <div :class=\"bem.m('input')\">\n <ll-input-number\n v-model:value=\"maxValue\"\n :placeholder=\"placeholder[1]\"\n :precision=\"props.precision\"\n :min=\"props.min\"\n :max=\"props.max\"\n :disabled=\"props.disabled\"\n :controls=\"false\"\n :bordered=\"false\"\n style=\"width: 100%\"\n @change=\"handleMaxChange\"\n @blur=\"handleMaxBlur\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport { isNil } from 'lodash-es'\nimport { numberRangeProps, numberRangeEmits } from './number-range'\n\ndefineOptions({ name: 'LlNumberRange' })\n\nimport { createNamespace } from '@ll-plus/utils'\n\nimport { LlInputNumber } from '@ll-plus/components'\n\nimport type { InputNumberProps } from 'ant-design-vue'\n\n// 1.props/ref\nconst props = defineProps(numberRangeProps)\n// 2.emits\nconst emits = defineEmits(numberRangeEmits)\n\nconst bem = createNamespace('number-range')\n\nconst minValue = ref<InputNumberProps['value']>(undefined)\n\nconst maxValue = ref<InputNumberProps['value']>(undefined)\n\nconst setValue = () => {\n const arr = [minValue.value, maxValue.value]\n emits('update:value', arr)\n emits('change', arr)\n}\n\nconst handleMinChange = e => {\n if (!isNil(e)) {\n minValue.value = e\n } else {\n minValue.value = undefined\n }\n setValue()\n}\nconst handleMaxChange = e => {\n if (!isNil(e)) {\n maxValue.value = e\n } else {\n maxValue.value = undefined\n }\n setValue()\n}\n\nconst handleMaxBlur = () => {\n if (minValue.value || minValue.value === 0) {\n if (maxValue.value && maxValue.value < minValue.value) {\n maxValue.value = minValue.value\n }\n }\n setValue()\n}\n\nconst handleMinBlur = () => {\n if (maxValue.value || maxValue.value === 0) {\n if (minValue.value && minValue.value > maxValue.value) {\n minValue.value = maxValue.value\n }\n }\n setValue()\n}\n\nwatch(\n () => props.value,\n n => {\n if (n && n.length!) {\n if (!isNil(n[0])) {\n minValue.value = n[0]\n } else {\n minValue.value = undefined\n }\n if (!isNil(n[1])) {\n maxValue.value = n[1]\n } else {\n maxValue.value = undefined\n }\n } else {\n minValue.value = undefined\n maxValue.value = undefined\n }\n },\n {\n immediate: true,\n deep: true\n }\n)\n</script>\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, shallowRef, ref, computed, onBeforeUnmount, watch, nextTick, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx } from 'vue';
1
+ import { defineComponent, shallowRef, ref, computed, onBeforeUnmount, watch, nextTick, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, withCtx, createElementVNode } from 'vue';
2
2
  import { Toolbar, Editor } from '@wangeditor/editor-for-vue';
3
3
  import '../../../utils/index.mjs';
4
4
  import { richTextEditorProps, richTextEditorEmits, FALLBACK_IMAGE } from './rich-text-editor.mjs';
@@ -136,31 +136,40 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
136
136
  return openBlock(), createElementBlock(
137
137
  "div",
138
138
  {
139
- class: normalizeClass(unref(bem).b()),
140
- style: { "border": "1px solid #ccc" }
139
+ class: normalizeClass(unref(bem).b())
141
140
  },
142
141
  [
143
142
  createVNode(_component_a_spin, { spinning: loading.value }, {
144
143
  default: withCtx(() => [
145
- createVNode(unref(Toolbar), {
146
- style: { "border-bottom": "1px solid #ccc" },
147
- editor: editorRef.value,
148
- "default-config": props.toolbarConfig,
149
- mode: props.mode
150
- }, null, 8, ["editor", "default-config", "mode"]),
151
- createVNode(unref(Editor), {
152
- modelValue: innerValue.value,
153
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => innerValue.value = $event),
154
- style: { "height": "500px", "overflow-y": "hidden" },
155
- "default-config": editorConfig.value,
156
- mode: props.mode,
157
- onOnCreated: handleCreated,
158
- onOnChange: handleChange,
159
- onOnDestroyed: handleDestroyed,
160
- onOnFocus: handleFocus,
161
- onOnBlur: handleBlur,
162
- onCustomAlert: customAlert
163
- }, null, 8, ["modelValue", "default-config", "mode"])
144
+ createElementVNode(
145
+ "div",
146
+ {
147
+ class: normalizeClass(unref(bem).e("container"))
148
+ },
149
+ [
150
+ createVNode(unref(Toolbar), {
151
+ class: normalizeClass(unref(bem).e("toolbar-container")),
152
+ editor: editorRef.value,
153
+ "default-config": props.toolbarConfig,
154
+ mode: props.mode
155
+ }, null, 8, ["class", "editor", "default-config", "mode"]),
156
+ createVNode(unref(Editor), {
157
+ modelValue: innerValue.value,
158
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => innerValue.value = $event),
159
+ class: normalizeClass(unref(bem).e("editor-container")),
160
+ "default-config": editorConfig.value,
161
+ mode: props.mode,
162
+ onOnCreated: handleCreated,
163
+ onOnChange: handleChange,
164
+ onOnDestroyed: handleDestroyed,
165
+ onOnFocus: handleFocus,
166
+ onOnBlur: handleBlur,
167
+ onCustomAlert: customAlert
168
+ }, null, 8, ["modelValue", "class", "default-config", "mode"])
169
+ ],
170
+ 2
171
+ /* CLASS */
172
+ )
164
173
  ]),
165
174
  _: 1
166
175
  /* STABLE */
@@ -1 +1 @@
1
- {"version":3,"file":"rich-text-editor.vue2.mjs","sources":["../../../../../../packages/components/rich-text-editor/src/rich-text-editor.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\" style=\"border: 1px solid #ccc\">\n <a-spin :spinning=\"loading\">\n <Toolbar\n style=\"border-bottom: 1px solid #ccc\"\n :editor=\"editorRef\"\n :default-config=\"props.toolbarConfig\"\n :mode=\"props.mode\"\n />\n <Editor\n v-model=\"innerValue\"\n style=\"height: 500px; overflow-y: hidden\"\n :default-config=\"editorConfig\"\n :mode=\"props.mode\"\n @on-created=\"handleCreated\"\n @on-change=\"handleChange\"\n @on-destroyed=\"handleDestroyed\"\n @on-focus=\"handleFocus\"\n @on-blur=\"handleBlur\"\n @custom-alert=\"customAlert\"\n />\n </a-spin>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n onBeforeUnmount,\n ref,\n shallowRef,\n computed,\n watch,\n nextTick\n} from 'vue'\nimport { Editor, Toolbar } from '@wangeditor/editor-for-vue'\nimport { createNamespace } from '@ll-plus/utils'\nimport {\n richTextEditorProps,\n richTextEditorEmits,\n FALLBACK_IMAGE,\n type InsertPicType,\n type InsertVidType,\n type ImageElement\n} from './rich-text-editor'\n\nimport '@wangeditor/editor/dist/css/style.css' // 引入 css\n\nimport type { IDomEditor } from '@wangeditor/editor'\n\n//@ts-ignore\ndefineOptions({ name: 'LlRichTextEditor' })\n\nconst bem = createNamespace('rich-text-editor')\n\nconst props = defineProps(richTextEditorProps)\n\nconst emits = defineEmits(richTextEditorEmits)\n\nconst editorRef = shallowRef()\n\nconst innerValue = ref(props.value)\n\nconst loading = ref<boolean>(props.loading)\n\nconst allImages = ref<any>([])\n\nconst editorConfig = computed(() => {\n return {\n MENU_CONF: {\n uploadImage: {\n async onBeforeUpload(file: File) {\n if (props.onBeforeUploadImage) {\n const res = await props.onBeforeUploadImage(file)\n return res ? file : false\n }\n return file\n },\n\n async customUpload(file: File, insertFn: InsertPicType) {\n loading.value = true\n //图片上传接口调用\n try {\n const res = await props.customUploadImage(file)\n insertFn(res)\n loading.value = false\n } catch (error) {\n editorRef.value.alert('错误信息', props.uploadImageError)\n loading.value = false\n }\n },\n base64LimitSize: 5 * 1024\n },\n insertImage: {\n async onInsertedImage(imageNode: ImageElement | null) {\n allImages.value.push(imageNode)\n }\n },\n uploadVideo: {\n async customUpload(file: File, insertFn: InsertVidType) {\n if (props.customUploadVideo) {\n loading.value = true\n //图片上传接口调用\n try {\n const res = await props.customUploadVideo(file)\n insertFn(res, FALLBACK_IMAGE)\n loading.value = false\n } catch (error) {\n editorRef.value.alert('错误信息', props.uploadImageError)\n loading.value = false\n }\n }\n }\n }\n },\n ...props.editorConfig\n }\n})\n\nconst handleCreated = (editor: IDomEditor) => {\n editorRef.value = editor\n allImages.value = editor.getElemsByType('image')\n emits('created', editor)\n}\n\nconst handleChange = (editor: IDomEditor) => {\n innerValue.value = editor.getHtml()\n emits('change', editor)\n emits('update:value', innerValue.value)\n}\nconst handleDestroyed = (editor: IDomEditor) => {\n emits('destroyed', editor)\n}\nconst handleFocus = (editor: IDomEditor) => {\n emits('focus', editor)\n}\nconst handleBlur = (editor: IDomEditor) => {\n emits('blur', editor)\n}\nconst customAlert = (info, type) => {\n emits('alert', [info, type])\n}\n\nconst getEditorImage = () => {\n const editor = editorRef.value\n if (editor == null) return\n return {\n allImages: allImages.value,\n currentImages: editor.getElemsByType('image')\n }\n}\n\n// 组件销毁时,也及时销毁编辑器\nonBeforeUnmount(() => {\n const editor = editorRef.value\n if (editor == null) return\n editor.destroy()\n})\n\nwatch(\n () => props.loading,\n (val: boolean) => {\n loading.value = val\n }\n)\n\nwatch(\n () => [props.disabled, loading.value],\n async (val: boolean[]) => {\n const editor = editorRef.value\n if (editor == null) return\n await nextTick()\n if (val[0] || val[1]) {\n editor.disable()\n } else {\n editor.enable()\n }\n },\n {\n deep: true\n }\n)\n\ndefineExpose({\n editorRef: editorRef.value,\n getEditorImage\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rich-text-editor.vue2.mjs","sources":["../../../../../../packages/components/rich-text-editor/src/rich-text-editor.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <a-spin :spinning=\"loading\">\n <div :class=\"bem.e('container')\">\n <Toolbar\n :class=\"bem.e('toolbar-container')\"\n :editor=\"editorRef\"\n :default-config=\"props.toolbarConfig\"\n :mode=\"props.mode\"\n />\n <Editor\n v-model=\"innerValue\"\n :class=\"bem.e('editor-container')\"\n :default-config=\"editorConfig\"\n :mode=\"props.mode\"\n @on-created=\"handleCreated\"\n @on-change=\"handleChange\"\n @on-destroyed=\"handleDestroyed\"\n @on-focus=\"handleFocus\"\n @on-blur=\"handleBlur\"\n @custom-alert=\"customAlert\"\n />\n </div>\n </a-spin>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n onBeforeUnmount,\n ref,\n shallowRef,\n computed,\n watch,\n nextTick\n} from 'vue'\nimport { Editor, Toolbar } from '@wangeditor/editor-for-vue'\nimport { createNamespace } from '@ll-plus/utils'\nimport {\n richTextEditorProps,\n richTextEditorEmits,\n FALLBACK_IMAGE,\n type InsertPicType,\n type InsertVidType,\n type ImageElement\n} from './rich-text-editor'\n\nimport '@wangeditor/editor/dist/css/style.css' // 引入 css\n\nimport type { IDomEditor } from '@wangeditor/editor'\n\n//@ts-ignore\ndefineOptions({ name: 'LlRichTextEditor' })\n\nconst bem = createNamespace('rich-text-editor')\n\nconst props = defineProps(richTextEditorProps)\n\nconst emits = defineEmits(richTextEditorEmits)\n\nconst editorRef = shallowRef()\n\nconst innerValue = ref(props.value)\n\nconst loading = ref<boolean>(props.loading)\n\nconst allImages = ref<any>([])\n\nconst editorConfig = computed(() => {\n return {\n MENU_CONF: {\n uploadImage: {\n async onBeforeUpload(file: File) {\n if (props.onBeforeUploadImage) {\n const res = await props.onBeforeUploadImage(file)\n return res ? file : false\n }\n return file\n },\n\n async customUpload(file: File, insertFn: InsertPicType) {\n loading.value = true\n //图片上传接口调用\n try {\n const res = await props.customUploadImage(file)\n insertFn(res)\n loading.value = false\n } catch (error) {\n editorRef.value.alert('错误信息', props.uploadImageError)\n loading.value = false\n }\n },\n base64LimitSize: 5 * 1024\n },\n insertImage: {\n async onInsertedImage(imageNode: ImageElement | null) {\n allImages.value.push(imageNode)\n }\n },\n uploadVideo: {\n async customUpload(file: File, insertFn: InsertVidType) {\n if (props.customUploadVideo) {\n loading.value = true\n //图片上传接口调用\n try {\n const res = await props.customUploadVideo(file)\n insertFn(res, FALLBACK_IMAGE)\n loading.value = false\n } catch (error) {\n editorRef.value.alert('错误信息', props.uploadImageError)\n loading.value = false\n }\n }\n }\n }\n },\n ...props.editorConfig\n }\n})\n\nconst handleCreated = (editor: IDomEditor) => {\n editorRef.value = editor\n allImages.value = editor.getElemsByType('image')\n emits('created', editor)\n}\n\nconst handleChange = (editor: IDomEditor) => {\n innerValue.value = editor.getHtml()\n emits('change', editor)\n emits('update:value', innerValue.value)\n}\nconst handleDestroyed = (editor: IDomEditor) => {\n emits('destroyed', editor)\n}\nconst handleFocus = (editor: IDomEditor) => {\n emits('focus', editor)\n}\nconst handleBlur = (editor: IDomEditor) => {\n emits('blur', editor)\n}\nconst customAlert = (info, type) => {\n emits('alert', [info, type])\n}\n\nconst getEditorImage = () => {\n const editor = editorRef.value\n if (editor == null) return\n return {\n allImages: allImages.value,\n currentImages: editor.getElemsByType('image')\n }\n}\n\n// 组件销毁时,也及时销毁编辑器\nonBeforeUnmount(() => {\n const editor = editorRef.value\n if (editor == null) return\n editor.destroy()\n})\n\nwatch(\n () => props.loading,\n (val: boolean) => {\n loading.value = val\n }\n)\n\nwatch(\n () => [props.disabled, loading.value],\n async (val: boolean[]) => {\n const editor = editorRef.value\n if (editor == null) return\n await nextTick()\n if (val[0] || val[1]) {\n editor.disable()\n } else {\n editor.enable()\n }\n },\n {\n deep: true\n }\n)\n\ndefineExpose({\n editorRef: editorRef.value,\n getEditorImage\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -54,6 +54,12 @@ const selectGroupData = buildProps({
54
54
  */
55
55
  list: {
56
56
  type: definePropType(Array)
57
+ },
58
+ /**
59
+ * @description 是否在下拉框select最前面添加全部
60
+ */
61
+ noFirstAddAll: {
62
+ type: Boolean
57
63
  }
58
64
  });
59
65
  const selectGroupProps = buildProps({
@@ -1 +1 @@
1
- {"version":3,"file":"select-group.mjs","sources":["../../../../../../packages/components/select-group/src/select-group.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n\nimport { buildProps, definePropType } from '@ll-plus/utils'\n\nimport type SelectGroup from './select-group.vue'\n\nexport interface ISelectGroupItem {\n name?: string\n value?: any\n [key: string]: any\n}\n\nexport const selectGroupFormType = [\n 'input',\n 'select',\n 'range-picker',\n 'treeSelect'\n] as const\n\nexport const selectGroupData = buildProps({\n // buildProps和defineprops一样\n /**\n * @description 表单提示占位符\n */\n placeholder: {\n type: String\n },\n /**\n * @description 表单的字段 name\n */\n name: {\n type: String,\n required: true\n },\n /**\n * @description 右边表单的 value\n */\n value: {\n type: String,\n required: true\n },\n /**\n * @description SVG 图标的大小,size x size\n */\n showFormType: {\n type: String,\n values: selectGroupFormType\n },\n /**\n * @description 格式化属性例如tree/select\n */\n fieldNames: {\n type: definePropType<object>(Object)\n },\n /**\n * @description select的options\n */\n options: {\n type: definePropType<any[]>(Array)\n },\n /**\n * @description 左侧选择的options\n */\n list: {\n type: definePropType<ISelectGroupItem[]>(Array)\n }\n} as const)\nexport const selectGroupProps = buildProps({\n /**\n * @description 选中select中的某一项(和value对应)\n */\n selectValue: {\n type: String\n },\n /**\n * @description 右边表单的 value\n */\n value: {\n type: [Array, String, Number, Boolean, Object],\n default: undefined\n },\n /**\n * @description select的options\n */\n data: {\n type: definePropType<SelectGroupData[]>(Array),\n default: () => []\n }\n} as const)\n\nexport const selectGroupEmits = {\n change: (selectV: string, value?: string) => !!selectV || !!value,\n onSelectChange: (selectV: string, item: SelectGroupData) =>\n !!selectV && !!item // 左侧selectchange\n}\n\nexport const LEFT_SELECT_MIN_WIDTH = 84 // 左侧select的宽度\n\n// props\nexport type SelectGroupProps = ExtractPropTypes<typeof selectGroupProps>\nexport type SelectGroupData = ExtractPropTypes<typeof selectGroupData>\nexport type SelectGroupFormType = SelectGroupData['showFormType']\n\nexport type SelectGroupEmits = typeof selectGroupEmits\n\n// instance\nexport type SelectGroupInstance = InstanceType<typeof SelectGroup>\n"],"names":[],"mappings":";;;;AAYO,MAAM,mBAAsB,GAAA;AAAA,EACjC,OAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AACF,EAAA;AAEO,MAAM,kBAAkB,UAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA;AAAA;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAIA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,IACN,MAAQ,EAAA,mBAAA;AAAA,GACV;AAAA;AAAA;AAAA;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAA,EAAM,eAAuB,MAAM,CAAA;AAAA,GACrC;AAAA;AAAA;AAAA;AAAA,EAIA,OAAS,EAAA;AAAA,IACP,IAAA,EAAM,eAAsB,KAAK,CAAA;AAAA,GACnC;AAAA;AAAA;AAAA;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAA,EAAM,eAAmC,KAAK,CAAA;AAAA,GAChD;AACF,CAAU,EAAA;AACH,MAAM,mBAAmB,UAAW,CAAA;AAAA;AAAA;AAAA;AAAA,EAIzC,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA;AAAA;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,MAAM,CAAC,KAAA,EAAO,MAAQ,EAAA,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA,IAC7C,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAA,EAAM,eAAkC,KAAK,CAAA;AAAA,IAC7C,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AACF,CAAU,EAAA;AAEH,MAAM,gBAAmB,GAAA;AAAA,EAC9B,MAAA,EAAQ,CAAC,OAAiB,EAAA,KAAA,KAAmB,CAAC,CAAC,OAAA,IAAW,CAAC,CAAC,KAAA;AAAA,EAC5D,cAAA,EAAgB,CAAC,OAAiB,EAAA,IAAA,KAChC,CAAC,CAAC,OAAA,IAAW,CAAC,CAAC,IAAA;AAAA;AACnB,EAAA;AAEO,MAAM,qBAAwB,GAAA;;;;"}
1
+ {"version":3,"file":"select-group.mjs","sources":["../../../../../../packages/components/select-group/src/select-group.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n\nimport { buildProps, definePropType } from '@ll-plus/utils'\n\nimport type SelectGroup from './select-group.vue'\n\nexport interface ISelectGroupItem {\n name?: string\n value?: any\n [key: string]: any\n}\n\nexport const selectGroupFormType = [\n 'input',\n 'select',\n 'range-picker',\n 'treeSelect'\n] as const\n\nexport const selectGroupData = buildProps({\n // buildProps和defineprops一样\n /**\n * @description 表单提示占位符\n */\n placeholder: {\n type: String\n },\n /**\n * @description 表单的字段 name\n */\n name: {\n type: String,\n required: true\n },\n /**\n * @description 右边表单的 value\n */\n value: {\n type: String,\n required: true\n },\n /**\n * @description SVG 图标的大小,size x size\n */\n showFormType: {\n type: String,\n values: selectGroupFormType\n },\n /**\n * @description 格式化属性例如tree/select\n */\n fieldNames: {\n type: definePropType<object>(Object)\n },\n /**\n * @description select的options\n */\n options: {\n type: definePropType<any[]>(Array)\n },\n /**\n * @description 左侧选择的options\n */\n list: {\n type: definePropType<ISelectGroupItem[]>(Array)\n },\n /**\n * @description 是否在下拉框select最前面添加全部\n */\n noFirstAddAll: {\n type: Boolean\n }\n} as const)\nexport const selectGroupProps = buildProps({\n /**\n * @description 选中select中的某一项(和value对应)\n */\n selectValue: {\n type: String\n },\n /**\n * @description 右边表单的 value\n */\n value: {\n type: [Array, String, Number, Boolean, Object],\n default: undefined\n },\n /**\n * @description select的options\n */\n data: {\n type: definePropType<SelectGroupData[]>(Array),\n default: () => []\n }\n} as const)\n\nexport const selectGroupEmits = {\n change: (selectV: string, value?: any) => !!selectV || !!value,\n onSelectChange: (selectV: string, item: SelectGroupData) =>\n !!selectV && !!item // 左侧selectchange\n}\n\nexport const LEFT_SELECT_MIN_WIDTH = 84 // 左侧select的宽度\n\n// props\nexport type SelectGroupProps = ExtractPropTypes<typeof selectGroupProps>\nexport type SelectGroupData = ExtractPropTypes<typeof selectGroupData>\nexport type SelectGroupFormType = SelectGroupData['showFormType']\n\nexport type SelectGroupEmits = typeof selectGroupEmits\n\n// instance\nexport type SelectGroupInstance = InstanceType<typeof SelectGroup>\n"],"names":[],"mappings":";;;;AAYO,MAAM,mBAAsB,GAAA;AAAA,EACjC,OAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AACF,EAAA;AAEO,MAAM,kBAAkB,UAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA;AAAA;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA;AAAA;AAAA;AAAA,EAIA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,IACN,MAAQ,EAAA,mBAAA;AAAA,GACV;AAAA;AAAA;AAAA;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAA,EAAM,eAAuB,MAAM,CAAA;AAAA,GACrC;AAAA;AAAA;AAAA;AAAA,EAIA,OAAS,EAAA;AAAA,IACP,IAAA,EAAM,eAAsB,KAAK,CAAA;AAAA,GACnC;AAAA;AAAA;AAAA;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAA,EAAM,eAAmC,KAAK,CAAA;AAAA,GAChD;AAAA;AAAA;AAAA;AAAA,EAIA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,OAAA;AAAA,GACR;AACF,CAAU,EAAA;AACH,MAAM,mBAAmB,UAAW,CAAA;AAAA;AAAA;AAAA;AAAA,EAIzC,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,GACR;AAAA;AAAA;AAAA;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,MAAM,CAAC,KAAA,EAAO,MAAQ,EAAA,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA,IAC7C,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAA,EAAM,eAAkC,KAAK,CAAA;AAAA,IAC7C,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AACF,CAAU,EAAA;AAEH,MAAM,gBAAmB,GAAA;AAAA,EAC9B,MAAA,EAAQ,CAAC,OAAiB,EAAA,KAAA,KAAgB,CAAC,CAAC,OAAA,IAAW,CAAC,CAAC,KAAA;AAAA,EACzD,cAAA,EAAgB,CAAC,OAAiB,EAAA,IAAA,KAChC,CAAC,CAAC,OAAA,IAAW,CAAC,CAAC,IAAA;AAAA;AACnB,EAAA;AAEO,MAAM,qBAAwB,GAAA;;;;"}
@@ -35,16 +35,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
35
35
  } else if (formType === "range-picker") {
36
36
  value.value = [void 0, void 0];
37
37
  } else if (formType === "select") {
38
- value.value = -1;
38
+ value.value = item.noFirstAddAll ? void 0 : -1;
39
39
  }
40
40
  selectItem.value = options.item;
41
- emits("onSelectChange", _, options);
41
+ emits("onSelectChange", _, item);
42
42
  };
43
43
  const handleChange = () => {
44
44
  emits(
45
45
  "change",
46
46
  selectItem.value?.value,
47
- value.value === -1 ? void 0 : value.value
47
+ value.value === -1 ? null : value.value
48
48
  );
49
49
  };
50
50
  watch(
@@ -54,7 +54,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
54
54
  const list = newData.map((item) => {
55
55
  const newItem = { ...item };
56
56
  if (newItem.showFormType === "select") {
57
- if (newItem.options?.length) {
57
+ if (newItem.options?.length && !newItem.noFirstAddAll) {
58
58
  newItem.options = [
59
59
  {
60
60
  label: "\u5168\u90E8",
@@ -62,7 +62,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
62
62
  },
63
63
  ...newItem.options
64
64
  ];
65
- } else if (newItem.list?.length) {
65
+ } else if (newItem.list?.length && !newItem.noFirstAddAll) {
66
66
  newItem.list = [
67
67
  {
68
68
  name: "\u5168\u90E8",
@@ -79,7 +79,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
79
79
  if (findItem) {
80
80
  firstItem = findItem;
81
81
  }
82
- if (firstItem.showFormType === "select") {
82
+ if (firstItem.showFormType === "select" && !firstItem.noFirstAddAll) {
83
83
  value.value = -1;
84
84
  }
85
85
  selectItem.value = firstItem;
@@ -1 +1 @@
1
- {"version":3,"file":"select-group.vue2.mjs","sources":["../../../../../../packages/components/select-group/src/select-group.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <div :class=\"bemContainer.b()\">\n <a-input-group compact>\n <!-- 左侧select -->\n <a-select\n v-model:value=\"typeSelectValue\"\n class=\"select-group-left-select-container\"\n :style=\"{ minWidth: leftSelectWidth }\"\n @change=\"handleSelectChange\"\n >\n <a-select-option\n v-for=\"item in newList\"\n :key=\"item.name\"\n :value=\"item.value\"\n :item=\"item\"\n >\n {{ item.name }}\n </a-select-option>\n </a-select>\n <!-- 右侧组合表单 -->\n <!-- input输入框 -->\n <template\n v-if=\"\n !selectItem?.showFormType || selectItem?.showFormType === 'input'\n \"\n >\n <a-input\n v-model:value=\"value\"\n :class=\"bem.e('right-input')\"\n :placeholder=\"selectItem?.placeholder\"\n @press-enter=\"handleChange\"\n >\n <template #suffix>\n <ll-icon :icon-name=\"`icon-search`\" @click=\"handleChange\" />\n </template>\n </a-input>\n </template>\n <!-- select下拉框 -->\n <template v-else-if=\"selectItem?.showFormType === 'select'\">\n <a-select\n v-model:value=\"value\"\n :class=\"bem.e('right-select')\"\n popup-class-name=\"select-group-right-select\"\n :options=\"selectItem?.options\"\n :placeholder=\"selectItem?.placeholder\"\n :field-names=\"selectItem?.fieldNames\"\n @change=\"handleChange\"\n >\n <a-select-option\n v-for=\"item in selectItem.list\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.name }}\n </a-select-option>\n </a-select>\n </template>\n <!-- 日期选择 -->\n <template v-else-if=\"selectItem?.showFormType === 'range-picker'\">\n <a-range-picker\n v-model:value=\"value\"\n :class=\"bem.e('right-range-picker')\"\n @change=\"handleChange\"\n />\n </template>\n <!-- 树选择 -->\n <template v-else-if=\"selectItem?.showFormType === 'treeSelect'\">\n <a-tree-select\n v-model:value=\"value\"\n :class=\"bem.e('right-tree-select')\"\n :field-names=\"selectItem.fieldNames\"\n :placeholder=\"selectItem?.placeholder\"\n :tree-data=\"selectItem.list\"\n @select=\"handleChange\"\n ></a-tree-select>\n </template>\n <template v-else>\n <slot name=\"extra\" v-bind=\"selectItem\" />\n </template>\n </a-input-group>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, watch } from 'vue'\n\nimport { selectGroupProps, selectGroupEmits } from './select-group'\nimport { createNamespace } from '@ll-plus/utils'\nimport { LEFT_SELECT_MIN_WIDTH } from './select-group'\n\nimport type { SelectGroupData } from './select-group'\n\n// 1.defineOptions\ndefineOptions({ name: 'LlSelectGroup' })\n\n// 1.props/emits\nconst props = defineProps(selectGroupProps)\nconst emits = defineEmits(selectGroupEmits)\n\n// 3.ref/const\nconst typeSelectValue = ref('1') // selectinput组合select的值\nconst value = ref<any>('') // 左边的value\nconst selectItem = ref<SelectGroupData>() // 选中表单的类型\nconst newList = ref<SelectGroupData[]>([]) // 处理后的数据,比如select的类型前面加个全部\nconst bem = createNamespace('select-group')\nconst bemContainer = createNamespace('select-group-container')\nconst leftSelectWidth = computed(() => {\n const names = newList.value.map(item => item.name.length)\n const maxNameLength = Math.max(...names)\n if (maxNameLength <= 3) {\n return LEFT_SELECT_MIN_WIDTH + 'px'\n }\n const width = LEFT_SELECT_MIN_WIDTH + (maxNameLength - 3) * 14\n return width + 'px'\n})\n\n// 4.methods\n// 第一个select的change\nconst handleSelectChange = (_: string, options: any) => {\n const item = options.item\n const formType = item.showFormType\n // 如果\n if (!formType || formType === 'input' || formType === 'treeSelect') {\n value.value = ''\n } else if (formType === 'range-picker') {\n value.value = [undefined, undefined]\n } else if (formType === 'select') {\n value.value = -1\n }\n selectItem.value = options.item\n emits('onSelectChange', _, options)\n}\n// 整合处理change\nconst handleChange = () => {\n // 过滤-1的下拉全部\n emits(\n 'change',\n selectItem.value?.value as string,\n value.value === -1 ? undefined : value.value\n )\n}\n\n// 5.watch\n// 已第一个为标准\nwatch(\n () => [props.selectValue, props.data] as [string, SelectGroupData[]],\n ([selectValue, newData]) => {\n if (newData && newData.length) {\n const list = newData.map(item => {\n const newItem = { ...item }\n if (newItem.showFormType === 'select') {\n if (newItem.options?.length) {\n newItem.options = [\n {\n label: '全部',\n value: -1\n },\n ...newItem.options!\n ]\n } else if (newItem.list?.length) {\n newItem.list = [\n {\n name: '全部',\n value: -1\n },\n ...newItem.list!\n ]\n }\n }\n return newItem\n })\n let firstItem = list[0]\n const findItem = list.find(item => item.value === selectValue)\n if (findItem) {\n firstItem = findItem\n }\n // 如果默认第一个是下拉框,选中全部\n if (firstItem.showFormType === 'select') {\n value.value = -1\n }\n selectItem.value = firstItem!\n typeSelectValue.value = selectValue ? selectValue : firstItem.value\n newList.value = list\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(\n () => [props.value, props.selectValue],\n (newV: any) => {\n value.value = newV[0]\n },\n {\n immediate: true\n }\n)\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-group.vue2.mjs","sources":["../../../../../../packages/components/select-group/src/select-group.vue"],"sourcesContent":["<template>\n <div :class=\"bem.b()\">\n <div :class=\"bemContainer.b()\">\n <a-input-group compact>\n <!-- 左侧select -->\n <a-select\n v-model:value=\"typeSelectValue\"\n class=\"select-group-left-select-container\"\n :style=\"{ minWidth: leftSelectWidth }\"\n @change=\"handleSelectChange\"\n >\n <a-select-option\n v-for=\"item in newList\"\n :key=\"item.name\"\n :value=\"item.value\"\n :item=\"item\"\n >\n {{ item.name }}\n </a-select-option>\n </a-select>\n <!-- 右侧组合表单 -->\n <!-- input输入框 -->\n <template\n v-if=\"\n !selectItem?.showFormType || selectItem?.showFormType === 'input'\n \"\n >\n <a-input\n v-model:value=\"value\"\n :class=\"bem.e('right-input')\"\n :placeholder=\"selectItem?.placeholder\"\n @press-enter=\"handleChange\"\n >\n <template #suffix>\n <ll-icon :icon-name=\"`icon-search`\" @click=\"handleChange\" />\n </template>\n </a-input>\n </template>\n <!-- select下拉框 -->\n <template v-else-if=\"selectItem?.showFormType === 'select'\">\n <a-select\n v-model:value=\"value\"\n :class=\"bem.e('right-select')\"\n popup-class-name=\"select-group-right-select\"\n :options=\"selectItem?.options\"\n :placeholder=\"selectItem?.placeholder\"\n :field-names=\"selectItem?.fieldNames\"\n @change=\"handleChange\"\n >\n <a-select-option\n v-for=\"item in selectItem.list\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.name }}\n </a-select-option>\n </a-select>\n </template>\n <!-- 日期选择 -->\n <template v-else-if=\"selectItem?.showFormType === 'range-picker'\">\n <a-range-picker\n v-model:value=\"value\"\n :class=\"bem.e('right-range-picker')\"\n @change=\"handleChange\"\n />\n </template>\n <!-- 树选择 -->\n <template v-else-if=\"selectItem?.showFormType === 'treeSelect'\">\n <a-tree-select\n v-model:value=\"value\"\n :class=\"bem.e('right-tree-select')\"\n :field-names=\"selectItem.fieldNames\"\n :placeholder=\"selectItem?.placeholder\"\n :tree-data=\"selectItem.list\"\n @select=\"handleChange\"\n ></a-tree-select>\n </template>\n <template v-else>\n <slot name=\"extra\" v-bind=\"selectItem\" />\n </template>\n </a-input-group>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, watch } from 'vue'\n\nimport { selectGroupProps, selectGroupEmits } from './select-group'\nimport { createNamespace } from '@ll-plus/utils'\nimport { LEFT_SELECT_MIN_WIDTH } from './select-group'\n\nimport type { SelectGroupData } from './select-group'\n\n// 1.defineOptions\ndefineOptions({ name: 'LlSelectGroup' })\n\n// 1.props/emits\nconst props = defineProps(selectGroupProps)\nconst emits = defineEmits(selectGroupEmits)\n\n// 3.ref/const\nconst typeSelectValue = ref('1') // selectinput组合select的值\nconst value = ref<any>('') // 左边的value\nconst selectItem = ref<SelectGroupData>() // 选中表单的类型\nconst newList = ref<SelectGroupData[]>([]) // 处理后的数据,比如select的类型前面加个全部\nconst bem = createNamespace('select-group')\nconst bemContainer = createNamespace('select-group-container')\n\n// 动态计算左边文字最长的宽度\nconst leftSelectWidth = computed(() => {\n const names = newList.value.map(item => item.name.length)\n const maxNameLength = Math.max(...names)\n if (maxNameLength <= 3) {\n return LEFT_SELECT_MIN_WIDTH + 'px'\n }\n const width = LEFT_SELECT_MIN_WIDTH + (maxNameLength - 3) * 14\n return width + 'px'\n})\n\n// 4.methods\n// 第一个select的change\nconst handleSelectChange = (_: string, options: any) => {\n const item = options.item\n const formType = item.showFormType\n // 如果\n if (!formType || formType === 'input' || formType === 'treeSelect') {\n value.value = ''\n } else if (formType === 'range-picker') {\n value.value = [undefined, undefined]\n } else if (formType === 'select') {\n value.value = item.noFirstAddAll ? undefined : -1\n }\n selectItem.value = options.item\n emits('onSelectChange', _, item)\n}\n// 整合处理change\nconst handleChange = () => {\n // 过滤-1的下拉全部\n emits(\n 'change',\n selectItem.value?.value as string,\n value.value === -1 ? null : value.value\n )\n}\n\n// 5.watch\n// 已第一个为标准\nwatch(\n () => [props.selectValue, props.data] as [string, SelectGroupData[]],\n ([selectValue, newData]) => {\n if (newData && newData.length) {\n const list = newData.map(item => {\n const newItem = { ...item }\n if (newItem.showFormType === 'select') {\n if (newItem.options?.length && !newItem.noFirstAddAll) {\n newItem.options = [\n {\n label: '全部',\n value: -1\n },\n ...newItem.options!\n ]\n } else if (newItem.list?.length && !newItem.noFirstAddAll) {\n newItem.list = [\n {\n name: '全部',\n value: -1\n },\n ...newItem.list!\n ]\n }\n }\n return newItem\n })\n let firstItem = list[0]\n const findItem = list.find(item => item.value === selectValue)\n if (findItem) {\n firstItem = findItem\n }\n // 如果默认第一个是下拉框,选中全部\n if (firstItem.showFormType === 'select' && !firstItem.noFirstAddAll) {\n value.value = -1\n }\n selectItem.value = firstItem!\n typeSelectValue.value = selectValue ? selectValue : firstItem.value\n newList.value = list\n }\n },\n {\n deep: true,\n immediate: true\n }\n)\n\nwatch(\n () => [props.value, props.selectValue],\n (newV: any) => {\n value.value = newV[0]\n },\n {\n immediate: true\n }\n)\n</script>\n"],"names":[],"mappings":"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"}
@@ -18,6 +18,18 @@ function formatFileSize(size) {
18
18
  return `${(size / 1024 / 1024 / 1024).toFixed(0)}GB`;
19
19
  }
20
20
  }
21
+ function dataURLtoBlob(base64Buf) {
22
+ const arr = base64Buf.split(",");
23
+ const typeItem = arr[0];
24
+ const mime = typeItem.match(/:(.*?);/)[1];
25
+ const bstr = window.atob(arr[1]);
26
+ let n = bstr.length;
27
+ const u8arr = new Uint8Array(n);
28
+ while (n--) {
29
+ u8arr[n] = bstr.charCodeAt(n);
30
+ }
31
+ return new Blob([u8arr], { type: mime });
32
+ }
21
33
 
22
- export { fileToBase64, formatFileSize };
34
+ export { dataURLtoBlob, fileToBase64, formatFileSize };
23
35
  //# sourceMappingURL=file.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.mjs","sources":["../../../../packages/utils/file.ts"],"sourcesContent":["/**\n * File 转 Base64\n * @param file {File} file\n * @return {Promise<String>}\n */\nexport function fileToBase64(file: File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.addEventListener('load', evt => resolve(evt.target!.result))\n reader.addEventListener('error', reject)\n reader.readAsDataURL(file)\n })\n}\n\nexport function formatFileSize(size: number) {\n if (size < 1024) {\n return `${size}Bytes`\n } else if (size < 1024 * 1024) {\n return `${(size / 1024).toFixed(0)}KB`\n } else if (size < 1024 * 1024 * 1024) {\n return `${(size / 1024 / 1024).toFixed(0)}MB`\n } else {\n return `${(size / 1024 / 1024 / 1024).toFixed(0)}GB`\n }\n}\n"],"names":[],"mappings":";AAKO,SAAS,aAAa,IAAY,EAAA;AACvC,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,IAAA,MAAA,CAAO,iBAAiB,MAAQ,EAAA,CAAA,GAAA,KAAO,QAAQ,GAAI,CAAA,MAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AAClE,IAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM,CAAA,CAAA;AACvC,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AACH,CAAA;AAEO,SAAS,eAAe,IAAc,EAAA;AAC3C,EAAA,IAAI,OAAO,IAAM,EAAA;AACf,IAAA,OAAO,GAAG,IAAI,CAAA,KAAA,CAAA,CAAA;AAAA,GAChB,MAAA,IAAW,IAAO,GAAA,IAAA,GAAO,IAAM,EAAA;AAC7B,IAAA,OAAO,CAAI,EAAA,CAAA,IAAA,GAAO,IAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GACzB,MAAA,IAAA,IAAA,GAAO,IAAO,GAAA,IAAA,GAAO,IAAM,EAAA;AACpC,IAAA,OAAO,IAAI,IAAO,GAAA,IAAA,GAAO,IAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GACpC,MAAA;AACL,IAAA,OAAO,IAAI,IAAO,GAAA,IAAA,GAAO,OAAO,IAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GAClD;AACF;;;;"}
1
+ {"version":3,"file":"file.mjs","sources":["../../../../packages/utils/file.ts"],"sourcesContent":["/**\n * File 转 Base64\n * @param file {File} file\n * @return {Promise<String>}\n */\nexport function fileToBase64(file: File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n\n reader.addEventListener('load', evt => resolve(evt.target!.result))\n reader.addEventListener('error', reject)\n reader.readAsDataURL(file)\n })\n}\n\nexport function formatFileSize(size: number) {\n if (size < 1024) {\n return `${size}Bytes`\n } else if (size < 1024 * 1024) {\n return `${(size / 1024).toFixed(0)}KB`\n } else if (size < 1024 * 1024 * 1024) {\n return `${(size / 1024 / 1024).toFixed(0)}MB`\n } else {\n return `${(size / 1024 / 1024 / 1024).toFixed(0)}GB`\n }\n}\n\n/**\n * @description: base64 to blob\n */\nexport function dataURLtoBlob(base64Buf: string): Blob {\n const arr = base64Buf.split(',')\n const typeItem = arr[0]\n const mime = typeItem.match(/:(.*?);/)![1]\n const bstr = window.atob(arr[1])\n let n = bstr.length\n const u8arr = new Uint8Array(n)\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n)\n }\n return new Blob([u8arr], { type: mime })\n}\n"],"names":[],"mappings":";AAKO,SAAS,aAAa,IAAY,EAAA;AACvC,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,IAAA,MAAA,CAAO,iBAAiB,MAAQ,EAAA,CAAA,GAAA,KAAO,QAAQ,GAAI,CAAA,MAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AAClE,IAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM,CAAA,CAAA;AACvC,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AACH,CAAA;AAEO,SAAS,eAAe,IAAc,EAAA;AAC3C,EAAA,IAAI,OAAO,IAAM,EAAA;AACf,IAAA,OAAO,GAAG,IAAI,CAAA,KAAA,CAAA,CAAA;AAAA,GAChB,MAAA,IAAW,IAAO,GAAA,IAAA,GAAO,IAAM,EAAA;AAC7B,IAAA,OAAO,CAAI,EAAA,CAAA,IAAA,GAAO,IAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GACzB,MAAA,IAAA,IAAA,GAAO,IAAO,GAAA,IAAA,GAAO,IAAM,EAAA;AACpC,IAAA,OAAO,IAAI,IAAO,GAAA,IAAA,GAAO,IAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GACpC,MAAA;AACL,IAAA,OAAO,IAAI,IAAO,GAAA,IAAA,GAAO,OAAO,IAAM,EAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,CAAA;AAAA,GAClD;AACF,CAAA;AAKO,SAAS,cAAc,SAAyB,EAAA;AACrD,EAAM,MAAA,GAAA,GAAM,SAAU,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/B,EAAM,MAAA,QAAA,GAAW,IAAI,CAAC,CAAA,CAAA;AACtB,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,KAAM,CAAA,SAAS,EAAG,CAAC,CAAA,CAAA;AACzC,EAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAK,CAAA,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AAC/B,EAAA,IAAI,IAAI,IAAK,CAAA,MAAA,CAAA;AACb,EAAM,MAAA,KAAA,GAAQ,IAAI,UAAA,CAAW,CAAC,CAAA,CAAA;AAC9B,EAAA,OAAO,CAAK,EAAA,EAAA;AACV,IAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAK,CAAA,UAAA,CAAW,CAAC,CAAA,CAAA;AAAA,GAC9B;AACA,EAAO,OAAA,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AACzC;;;;"}
@@ -6,7 +6,7 @@ export { withInstall } from './with-install.mjs';
6
6
  export { calcRPN, getAmountChinese, getDateTimeUnit, mergeNumberOfExps, thousandsFormat, toRPN } from './number.mjs';
7
7
  export { removeQueryString } from './remove-query-string.mjs';
8
8
  export { getType, isBoolean, isElement, isEmpty, isNumber, isPropAbsent, isStringNumber, isUndefined, isWindow } from './types.mjs';
9
- export { fileToBase64, formatFileSize } from './file.mjs';
9
+ export { dataURLtoBlob, fileToBase64, formatFileSize } from './file.mjs';
10
10
  export { buildProp, buildProps, definePropType, epPropKey, isEpProp } from './props/runtime.mjs';
11
11
  export { isArray, isDate, isFunction, isObject, isPromise, isString, isSymbol } from '@vue/shared';
12
12
  export { isVNode } from 'vue';
@@ -5,3 +5,7 @@
5
5
  */
6
6
  export declare function fileToBase64(file: File): Promise<unknown>;
7
7
  export declare function formatFileSize(size: number): string;
8
+ /**
9
+ * @description: base64 to blob
10
+ */
11
+ export declare function dataURLtoBlob(base64Buf: string): Blob;
package/global.d.ts CHANGED
@@ -10,6 +10,8 @@ declare module '@vue/runtime-core' {
10
10
  LlCheckbox: typeof import('ll-plus')['LlCheckbox']
11
11
  LlCheckboxGroup: typeof import('ll-plus')['LlCheckboxGroup']
12
12
  LlConfigProvider: typeof import('ll-plus')['LlConfigProvider']
13
+ LlCropperImage: typeof import('ll-plus')['LlCropperImage']
14
+ LlCropperModal: typeof import('ll-plus')['LlCropperModal']
13
15
  LlDescriptions: typeof import('ll-plus')['LlDescriptions']
14
16
  LlDescriptionsItem: typeof import('ll-plus')['LlDescriptionsItem']
15
17
  LlDrawer: typeof import('ll-plus')['LlDrawer']