vue-devui 1.0.0-rc.1 → 1.0.0-rc.12

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 (352) hide show
  1. package/README.md +70 -121
  2. package/alert/index.es.js +46 -15
  3. package/alert/index.umd.js +1 -1
  4. package/alert/style.css +1 -1
  5. package/auto-complete/index.es.js +8204 -296
  6. package/auto-complete/index.umd.js +29 -1
  7. package/auto-complete/style.css +1 -1
  8. package/avatar/index.es.js +153 -146
  9. package/avatar/index.umd.js +1 -1
  10. package/avatar/style.css +1 -1
  11. package/badge/index.es.js +36 -5
  12. package/badge/index.umd.js +1 -1
  13. package/badge/style.css +1 -1
  14. package/button/index.es.js +5727 -111
  15. package/button/index.umd.js +27 -1
  16. package/button/style.css +1 -1
  17. package/card/index.es.js +63 -35
  18. package/card/index.umd.js +1 -1
  19. package/card/style.css +1 -1
  20. package/checkbox/index.es.js +8068 -255
  21. package/checkbox/index.umd.js +27 -1
  22. package/checkbox/style.css +1 -1
  23. package/{accordion → collapse}/index.d.ts +0 -0
  24. package/collapse/index.es.js +213 -0
  25. package/collapse/index.umd.js +1 -0
  26. package/{anchor → collapse}/package.json +1 -1
  27. package/collapse/style.css +1 -0
  28. package/countdown/index.es.js +59 -19
  29. package/countdown/index.umd.js +1 -1
  30. package/{anchor → date-picker-pro}/index.d.ts +0 -0
  31. package/date-picker-pro/index.es.js +10856 -0
  32. package/date-picker-pro/index.umd.js +27 -0
  33. package/{breadcrumb → date-picker-pro}/package.json +1 -1
  34. package/date-picker-pro/style.css +1 -0
  35. package/drawer/index.es.js +31 -4
  36. package/drawer/index.umd.js +1 -1
  37. package/drawer/style.css +1 -1
  38. package/dropdown/index.es.js +210 -149
  39. package/dropdown/index.umd.js +1 -1
  40. package/dropdown/style.css +1 -1
  41. package/editable-select/index.es.js +569 -159
  42. package/editable-select/index.umd.js +1 -1
  43. package/editable-select/style.css +1 -1
  44. package/form/index.es.js +1048 -1187
  45. package/form/index.umd.js +15 -15
  46. package/form/style.css +1 -1
  47. package/fullscreen/index.es.js +29 -5
  48. package/fullscreen/index.umd.js +1 -1
  49. package/fullscreen/style.css +1 -1
  50. package/grid/index.es.js +101 -86
  51. package/grid/index.umd.js +1 -1
  52. package/grid/style.css +1 -1
  53. package/icon/index.es.js +183 -23
  54. package/icon/index.umd.js +1 -1
  55. package/icon/style.css +1 -0
  56. package/image-preview/index.es.js +53 -30
  57. package/image-preview/index.umd.js +1 -1
  58. package/image-preview/style.css +1 -1
  59. package/input/index.es.js +8101 -144
  60. package/input/index.umd.js +27 -1
  61. package/input/style.css +1 -1
  62. package/input-number/index.es.js +274 -177
  63. package/input-number/index.umd.js +1 -1
  64. package/input-number/style.css +1 -1
  65. package/layout/index.es.js +40 -25
  66. package/layout/index.umd.js +1 -1
  67. package/layout/style.css +1 -1
  68. package/loading/index.es.js +74 -35
  69. package/loading/index.umd.js +1 -1
  70. package/loading/style.css +1 -1
  71. package/modal/index.es.js +375 -171
  72. package/modal/index.umd.js +1 -1
  73. package/modal/style.css +1 -1
  74. package/notification/index.es.js +293 -40
  75. package/notification/index.umd.js +1 -1
  76. package/notification/style.css +1 -1
  77. package/nuxt/components/ButtonGroup.js +3 -0
  78. package/nuxt/components/CheckboxButton.js +3 -0
  79. package/nuxt/components/CheckboxGroup.js +3 -0
  80. package/nuxt/components/Collapse.js +3 -0
  81. package/nuxt/components/CollapseItem.js +3 -0
  82. package/nuxt/components/DRangeDatePickerPro.js +3 -0
  83. package/nuxt/components/DatePickerPro.js +3 -0
  84. package/nuxt/components/DropdownPropsKey.js +3 -0
  85. package/nuxt/components/FORM_ITEM_TOKEN.js +3 -0
  86. package/nuxt/components/FORM_TOKEN.js +3 -0
  87. package/nuxt/components/Icon.js +1 -0
  88. package/nuxt/components/IconGroup.js +3 -0
  89. package/nuxt/components/LABEL_DATA.js +3 -0
  90. package/nuxt/components/LoadingOptions.js +3 -0
  91. package/nuxt/components/Option.js +3 -0
  92. package/nuxt/components/OptionGroup.js +3 -0
  93. package/nuxt/components/RadioButton.js +3 -0
  94. package/nuxt/components/Step.js +3 -0
  95. package/nuxt/components/Steps.js +3 -0
  96. package/nuxt/components/TABLE_TOKEN.js +3 -0
  97. package/nuxt/components/Tab.js +3 -0
  98. package/nuxt/components/TimeSelect.js +3 -0
  99. package/nuxt/components/autoCompleteProps.js +3 -0
  100. package/nuxt/components/avatarProps.js +3 -0
  101. package/nuxt/components/buttonGroupInjectionKey.js +3 -0
  102. package/nuxt/components/buttonGroupProps.js +3 -0
  103. package/nuxt/components/cardProps.js +3 -0
  104. package/nuxt/components/checkboxGroupInjectionKey.js +3 -0
  105. package/nuxt/components/checkboxGroupProps.js +3 -0
  106. package/nuxt/components/checkboxProps.js +3 -0
  107. package/nuxt/components/colProps.js +3 -0
  108. package/nuxt/components/colPropsBaseClass.js +3 -0
  109. package/nuxt/components/colPropsBaseStyle.js +3 -0
  110. package/nuxt/components/collapseItemProps.js +3 -0
  111. package/nuxt/components/collapseProps.js +3 -0
  112. package/nuxt/components/countdownProps.js +3 -0
  113. package/nuxt/components/datePickerProCommonProps.js +3 -0
  114. package/nuxt/components/datePickerProPanelProps.js +3 -0
  115. package/nuxt/components/datePickerProProps.js +3 -0
  116. package/nuxt/components/editableSelectProps.js +3 -0
  117. package/nuxt/components/formItemProps.js +3 -0
  118. package/nuxt/components/formProps.js +3 -0
  119. package/nuxt/components/iconProps.js +1 -0
  120. package/nuxt/components/imagePreviewProps.js +3 -0
  121. package/nuxt/components/inputProps.js +3 -0
  122. package/nuxt/components/loadingProps.js +3 -0
  123. package/nuxt/components/modalProps.js +3 -0
  124. package/nuxt/components/progressProps.js +3 -0
  125. package/nuxt/components/rateProps.js +3 -0
  126. package/nuxt/components/resultProps.js +3 -0
  127. package/nuxt/components/rowProps.js +3 -0
  128. package/nuxt/components/screenSizes.js +3 -0
  129. package/nuxt/components/skeletonProps.js +3 -0
  130. package/nuxt/components/sliderProps.js +3 -0
  131. package/nuxt/components/splitterProps.js +3 -0
  132. package/nuxt/components/statisticProps.js +3 -0
  133. package/nuxt/components/stepProps.js +3 -0
  134. package/nuxt/components/stepsProps.js +3 -0
  135. package/nuxt/components/svgIconProps.js +3 -0
  136. package/nuxt/components/switchProps.js +3 -0
  137. package/nuxt/components/tableProps.js +3 -0
  138. package/nuxt/components/tabsProps.js +3 -0
  139. package/nuxt/components/tagProps.js +3 -0
  140. package/nuxt/components/textareaProps.js +3 -0
  141. package/nuxt/components/timeAxisProps.js +3 -0
  142. package/nuxt/components/timerPickerPanelProps.js +3 -0
  143. package/nuxt/components/treeProps.js +3 -0
  144. package/overlay/index.es.js +104 -133
  145. package/overlay/index.umd.js +1 -1
  146. package/overlay/style.css +1 -1
  147. package/package.json +4 -2
  148. package/pagination/index.es.js +171 -141
  149. package/pagination/index.umd.js +1 -1
  150. package/pagination/style.css +1 -1
  151. package/panel/style.css +1 -1
  152. package/popover/index.es.js +294 -230
  153. package/popover/index.umd.js +15 -15
  154. package/popover/style.css +1 -1
  155. package/progress/index.es.js +110 -56
  156. package/progress/index.umd.js +3 -3
  157. package/progress/style.css +1 -1
  158. package/radio/index.es.js +7967 -146
  159. package/radio/index.umd.js +27 -1
  160. package/radio/style.css +1 -1
  161. package/rate/index.es.js +77 -55
  162. package/rate/index.umd.js +1 -1
  163. package/rate/style.css +1 -1
  164. package/result/index.es.js +170 -27
  165. package/result/index.umd.js +1 -1
  166. package/result/style.css +1 -1
  167. package/ripple/index.es.js +43 -42
  168. package/ripple/index.umd.js +1 -1
  169. package/search/index.es.js +3660 -1097
  170. package/search/index.umd.js +18 -18
  171. package/search/style.css +1 -1
  172. package/select/index.es.js +8998 -487
  173. package/select/index.umd.js +27 -1
  174. package/select/style.css +1 -1
  175. package/skeleton/index.es.js +46 -24
  176. package/skeleton/index.umd.js +1 -1
  177. package/skeleton/style.css +1 -1
  178. package/slider/index.es.js +144 -138
  179. package/slider/index.umd.js +1 -1
  180. package/slider/style.css +1 -1
  181. package/splitter/index.es.js +468 -340
  182. package/splitter/index.umd.js +16 -16
  183. package/splitter/style.css +1 -1
  184. package/statistic/index.es.js +41 -34
  185. package/statistic/index.umd.js +1 -1
  186. package/statistic/style.css +1 -1
  187. package/status/index.es.js +26 -2
  188. package/status/index.umd.js +1 -1
  189. package/status/style.css +1 -1
  190. package/{back-top → steps}/index.d.ts +0 -0
  191. package/steps/index.es.js +385 -0
  192. package/steps/index.umd.js +1 -0
  193. package/{gantt → steps}/package.json +1 -1
  194. package/steps/style.css +1 -0
  195. package/style.css +1 -1
  196. package/switch/index.es.js +7802 -64
  197. package/switch/index.umd.js +27 -1
  198. package/switch/style.css +1 -1
  199. package/table/index.es.js +10315 -1147
  200. package/table/index.umd.js +27 -1
  201. package/table/style.css +1 -1
  202. package/tabs/index.es.js +345 -142
  203. package/tabs/index.umd.js +1 -1
  204. package/tabs/style.css +1 -1
  205. package/tag/index.es.js +47 -23
  206. package/tag/index.umd.js +1 -1
  207. package/tag/style.css +1 -1
  208. package/textarea/index.es.js +7921 -83
  209. package/textarea/index.umd.js +35 -1
  210. package/textarea/style.css +1 -1
  211. package/time-picker/index.es.js +8704 -559
  212. package/time-picker/index.umd.js +27 -1
  213. package/time-picker/style.css +1 -1
  214. package/{breadcrumb → time-select}/index.d.ts +0 -0
  215. package/{color-picker → time-select}/index.es.js +4116 -2914
  216. package/time-select/index.umd.js +27 -0
  217. package/{back-top → time-select}/package.json +1 -1
  218. package/time-select/style.css +1 -0
  219. package/timeline/index.es.js +177 -37
  220. package/timeline/index.umd.js +1 -1
  221. package/timeline/style.css +1 -1
  222. package/tooltip/index.es.js +286 -221
  223. package/tooltip/index.umd.js +15 -15
  224. package/tooltip/style.css +1 -1
  225. package/tree/index.es.js +5325 -1855
  226. package/tree/index.umd.js +18 -18
  227. package/tree/style.css +1 -1
  228. package/upload/index.es.js +456 -133
  229. package/upload/index.umd.js +1 -1
  230. package/upload/style.css +1 -1
  231. package/vue-devui.es.js +14986 -16343
  232. package/vue-devui.umd.js +30 -20
  233. package/accordion/index.es.js +0 -723
  234. package/accordion/index.umd.js +0 -1
  235. package/accordion/package.json +0 -7
  236. package/accordion/style.css +0 -1
  237. package/anchor/index.es.js +0 -263
  238. package/anchor/index.umd.js +0 -1
  239. package/anchor/style.css +0 -1
  240. package/back-top/index.es.js +0 -130
  241. package/back-top/index.umd.js +0 -1
  242. package/back-top/style.css +0 -1
  243. package/breadcrumb/index.es.js +0 -128
  244. package/breadcrumb/index.umd.js +0 -1
  245. package/breadcrumb/style.css +0 -1
  246. package/carousel/index.d.ts +0 -7
  247. package/carousel/index.es.js +0 -314
  248. package/carousel/index.umd.js +0 -1
  249. package/carousel/package.json +0 -7
  250. package/carousel/style.css +0 -1
  251. package/cascader/index.d.ts +0 -7
  252. package/cascader/index.es.js +0 -5971
  253. package/cascader/index.umd.js +0 -27
  254. package/cascader/package.json +0 -7
  255. package/cascader/style.css +0 -1
  256. package/color-picker/index.d.ts +0 -7
  257. package/color-picker/index.umd.js +0 -27
  258. package/color-picker/package.json +0 -7
  259. package/color-picker/style.css +0 -1
  260. package/comment/index.d.ts +0 -7
  261. package/comment/index.es.js +0 -86
  262. package/comment/index.umd.js +0 -1
  263. package/comment/package.json +0 -7
  264. package/comment/style.css +0 -1
  265. package/date-picker/index.d.ts +0 -7
  266. package/date-picker/index.es.js +0 -1154
  267. package/date-picker/index.umd.js +0 -1
  268. package/date-picker/package.json +0 -7
  269. package/date-picker/style.css +0 -1
  270. package/dragdrop/index.d.ts +0 -7
  271. package/dragdrop/index.es.js +0 -157
  272. package/dragdrop/index.umd.js +0 -1
  273. package/dragdrop/package.json +0 -7
  274. package/gantt/index.d.ts +0 -7
  275. package/gantt/index.es.js +0 -523
  276. package/gantt/index.umd.js +0 -1
  277. package/gantt/style.css +0 -1
  278. package/input-icon/index.d.ts +0 -7
  279. package/input-icon/index.es.js +0 -332
  280. package/input-icon/index.umd.js +0 -1
  281. package/input-icon/package.json +0 -7
  282. package/input-icon/style.css +0 -1
  283. package/list/index.d.ts +0 -7
  284. package/list/index.es.js +0 -39
  285. package/list/index.umd.js +0 -1
  286. package/list/package.json +0 -7
  287. package/list/style.css +0 -1
  288. package/nav-sprite/index.d.ts +0 -7
  289. package/nav-sprite/index.es.js +0 -68
  290. package/nav-sprite/index.umd.js +0 -1
  291. package/nav-sprite/package.json +0 -7
  292. package/nuxt/components/Accordion.js +0 -3
  293. package/nuxt/components/Anchor.js +0 -3
  294. package/nuxt/components/BackTop.js +0 -3
  295. package/nuxt/components/Breadcrumb.js +0 -3
  296. package/nuxt/components/Carousel.js +0 -3
  297. package/nuxt/components/CarouselItem.js +0 -3
  298. package/nuxt/components/Cascader.js +0 -3
  299. package/nuxt/components/ColorPicker.js +0 -3
  300. package/nuxt/components/Comment.js +0 -3
  301. package/nuxt/components/DatePicker.js +0 -3
  302. package/nuxt/components/FormControl.js +0 -3
  303. package/nuxt/components/FormLabel.js +0 -3
  304. package/nuxt/components/Gantt.js +0 -3
  305. package/nuxt/components/InputIcon.js +0 -3
  306. package/nuxt/components/List.js +0 -3
  307. package/nuxt/components/ListItem.js +0 -3
  308. package/nuxt/components/NavSprite.js +0 -2
  309. package/nuxt/components/QuadrantDiagram.js +0 -3
  310. package/nuxt/components/ReadTip.js +0 -3
  311. package/nuxt/components/StepsGuide.js +0 -3
  312. package/nuxt/components/StickSlider.js +0 -3
  313. package/nuxt/components/Sticky.js +0 -2
  314. package/nuxt/components/TagInput.js +0 -3
  315. package/nuxt/components/Transfer.js +0 -3
  316. package/nuxt/components/TreeSelect.js +0 -3
  317. package/nuxt/components/overlayEmits.js +0 -3
  318. package/nuxt/components/overlayProps.js +0 -3
  319. package/quadrant-diagram/index.d.ts +0 -7
  320. package/quadrant-diagram/index.es.js +0 -5728
  321. package/quadrant-diagram/index.umd.js +0 -27
  322. package/quadrant-diagram/package.json +0 -7
  323. package/quadrant-diagram/style.css +0 -1
  324. package/read-tip/index.d.ts +0 -7
  325. package/read-tip/index.es.js +0 -261
  326. package/read-tip/index.umd.js +0 -1
  327. package/read-tip/package.json +0 -7
  328. package/read-tip/style.css +0 -1
  329. package/steps-guide/index.d.ts +0 -7
  330. package/steps-guide/index.es.js +0 -242
  331. package/steps-guide/index.umd.js +0 -1
  332. package/steps-guide/package.json +0 -7
  333. package/steps-guide/style.css +0 -1
  334. package/sticky/index.d.ts +0 -7
  335. package/sticky/index.es.js +0 -197
  336. package/sticky/index.umd.js +0 -1
  337. package/sticky/package.json +0 -7
  338. package/tag-input/index.d.ts +0 -7
  339. package/tag-input/index.es.js +0 -331
  340. package/tag-input/index.umd.js +0 -1
  341. package/tag-input/package.json +0 -7
  342. package/tag-input/style.css +0 -1
  343. package/transfer/index.d.ts +0 -7
  344. package/transfer/index.es.js +0 -7615
  345. package/transfer/index.umd.js +0 -27
  346. package/transfer/package.json +0 -7
  347. package/transfer/style.css +0 -1
  348. package/tree-select/index.d.ts +0 -7
  349. package/tree-select/index.es.js +0 -627
  350. package/tree-select/index.umd.js +0 -1
  351. package/tree-select/package.json +0 -7
  352. package/tree-select/style.css +0 -1
@@ -21,7 +21,7 @@ var __publicField = (obj, key, value) => {
21
21
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
22
22
  return value;
23
23
  };
24
- import { defineComponent, toRefs, createVNode, computed, watch, Transition, reactive, createApp, onUnmounted, mergeProps, isVNode, ref, withDirectives, resolveComponent, resolveDirective } from "vue";
24
+ import { defineComponent, toRefs, computed, createVNode, resolveDynamicComponent, mergeProps, watch, Transition, reactive, createApp, onUnmounted, isVNode, ref, getCurrentInstance, withDirectives, resolveComponent, resolveDirective } from "vue";
25
25
  const notificationProps = {
26
26
  modelValue: {
27
27
  type: Boolean,
@@ -43,6 +43,7 @@ const notificationProps = {
43
43
  type: Function
44
44
  }
45
45
  };
46
+ const DEFAULT_PREFIX = "icon";
46
47
  const iconProps = {
47
48
  name: {
48
49
  type: String,
@@ -50,43 +51,201 @@ const iconProps = {
50
51
  required: true
51
52
  },
52
53
  size: {
53
- type: String,
54
+ type: [Number, String],
54
55
  default: "inherit"
55
56
  },
56
57
  color: {
57
58
  type: String,
58
59
  default: "inherit"
59
60
  },
61
+ component: {
62
+ type: Object,
63
+ default: null
64
+ },
60
65
  classPrefix: {
61
66
  type: String,
62
- default: "icon"
67
+ default: DEFAULT_PREFIX
68
+ },
69
+ operable: {
70
+ type: Boolean,
71
+ default: false
72
+ },
73
+ disabled: {
74
+ type: Boolean,
75
+ default: false
76
+ },
77
+ rotate: {
78
+ type: [Number, String]
63
79
  }
64
80
  };
65
- var Icon = defineComponent({
66
- name: "DIcon",
67
- props: iconProps,
81
+ const svgIconProps = {
82
+ name: {
83
+ type: String,
84
+ default: "",
85
+ required: true
86
+ },
87
+ color: {
88
+ type: String,
89
+ default: "inherit"
90
+ },
91
+ size: {
92
+ type: [Number, String],
93
+ default: "inherit"
94
+ }
95
+ };
96
+ function createBem(namespace, element, modifier) {
97
+ let cls = namespace;
98
+ if (element) {
99
+ cls += `__${element}`;
100
+ }
101
+ if (modifier) {
102
+ cls += `--${modifier}`;
103
+ }
104
+ return cls;
105
+ }
106
+ function useNamespace(block, needDot = false) {
107
+ const namespace = needDot ? `.devui-${block}` : `devui-${block}`;
108
+ const b = () => createBem(namespace);
109
+ const e = (element) => element ? createBem(namespace, element) : "";
110
+ const m = (modifier) => modifier ? createBem(namespace, "", modifier) : "";
111
+ const em = (element, modifier) => element && modifier ? createBem(namespace, element, modifier) : "";
112
+ return {
113
+ b,
114
+ e,
115
+ m,
116
+ em
117
+ };
118
+ }
119
+ var icon = "";
120
+ var svgIcon = defineComponent({
121
+ name: "DSvgIcon",
122
+ props: svgIconProps,
68
123
  setup(props) {
69
124
  const {
70
125
  name,
71
- size,
72
126
  color,
73
- classPrefix
127
+ size
74
128
  } = toRefs(props);
129
+ const ns2 = useNamespace("svg-icon");
130
+ const iconName = computed(() => `#icon-${name.value}`);
131
+ const iconSize = computed(() => {
132
+ return typeof size.value === "number" ? `${size.value}px` : size.value;
133
+ });
134
+ const styles = {
135
+ width: iconSize.value,
136
+ height: iconSize.value
137
+ };
75
138
  return () => {
76
- return /^((https?):)?\/\//.test(name.value) ? createVNode("img", {
77
- "src": name.value,
78
- "alt": name.value.split("/")[name.value.split("/").length - 1],
79
- "style": {
80
- width: size.value,
81
- verticalAlign: "text-bottom"
82
- }
83
- }, null) : createVNode("i", {
84
- "class": `${classPrefix.value} ${classPrefix.value}-${name.value}`,
85
- "style": {
86
- fontSize: size.value,
87
- color: color.value
88
- }
89
- }, null);
139
+ return createVNode("svg", {
140
+ "class": ns2.b(),
141
+ "style": styles
142
+ }, [createVNode("use", {
143
+ "xlink:href": iconName.value,
144
+ "fill": color.value
145
+ }, null)]);
146
+ };
147
+ }
148
+ });
149
+ function isUrl(value) {
150
+ return /^((http|https):)?\/\//.test(value);
151
+ }
152
+ function useIconDom(props, ctx) {
153
+ const {
154
+ component,
155
+ name,
156
+ size,
157
+ color,
158
+ classPrefix,
159
+ rotate
160
+ } = toRefs(props);
161
+ const ns2 = useNamespace("icon");
162
+ const iconSize = computed(() => {
163
+ return typeof size.value === "number" ? `${size.value}px` : size.value;
164
+ });
165
+ const IconComponent = component.value ? resolveDynamicComponent(component.value) : resolveDynamicComponent(svgIcon);
166
+ const imgIconDom = () => {
167
+ return createVNode("img", mergeProps({
168
+ "src": name.value,
169
+ "alt": name.value.split("/")[name.value.split("/").length - 1],
170
+ "class": [(rotate == null ? void 0 : rotate.value) === "infinite" && ns2.m("spin")],
171
+ "style": {
172
+ width: iconSize.value || "",
173
+ transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
174
+ }
175
+ }, ctx.attrs), null);
176
+ };
177
+ const svgIconDom = () => {
178
+ return createVNode(IconComponent, mergeProps({
179
+ "name": name.value,
180
+ "color": color.value,
181
+ "size": iconSize.value,
182
+ "class": [(rotate == null ? void 0 : rotate.value) === "infinite" && ns2.m("spin")],
183
+ "style": {
184
+ transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
185
+ }
186
+ }, ctx.attrs), null);
187
+ };
188
+ const fontIconDom = () => {
189
+ const fontIconClass = /^icon-/.test(name.value) ? name.value : `${classPrefix.value}-${name.value}`;
190
+ return createVNode("i", mergeProps({
191
+ "class": [classPrefix.value, fontIconClass, (rotate == null ? void 0 : rotate.value) === "infinite" && ns2.m("spin")],
192
+ "style": {
193
+ fontSize: iconSize.value,
194
+ color: color.value,
195
+ transform: `rotate(${rotate == null ? void 0 : rotate.value}deg)`
196
+ }
197
+ }, ctx.attrs), null);
198
+ };
199
+ const iconDom = () => {
200
+ return component.value ? svgIconDom() : isUrl(name.value) ? imgIconDom() : fontIconDom();
201
+ };
202
+ return {
203
+ iconDom
204
+ };
205
+ }
206
+ var Icon = defineComponent({
207
+ name: "DIcon",
208
+ props: iconProps,
209
+ emits: ["click"],
210
+ setup(props, ctx) {
211
+ const {
212
+ disabled,
213
+ operable
214
+ } = toRefs(props);
215
+ const {
216
+ iconDom
217
+ } = useIconDom(props, ctx);
218
+ const ns2 = useNamespace("icon");
219
+ const wrapClassed = computed(() => ({
220
+ [ns2.e("container")]: true,
221
+ [ns2.m("disabled")]: disabled.value,
222
+ [ns2.m("operable")]: operable.value
223
+ }));
224
+ const onClick = (e) => {
225
+ if (disabled.value) {
226
+ return;
227
+ }
228
+ ctx.emit("click", e);
229
+ };
230
+ return () => {
231
+ var _a, _b, _c, _d;
232
+ return createVNode("div", {
233
+ "class": wrapClassed.value,
234
+ "onClick": onClick
235
+ }, [(_b = (_a = ctx.slots).prefix) == null ? void 0 : _b.call(_a), iconDom(), (_d = (_c = ctx.slots).suffix) == null ? void 0 : _d.call(_c)]);
236
+ };
237
+ }
238
+ });
239
+ var iconGroup = "";
240
+ defineComponent({
241
+ name: "DIconGroup",
242
+ setup(_, ctx) {
243
+ const ns2 = useNamespace("icon-group");
244
+ return () => {
245
+ var _a, _b;
246
+ return createVNode("div", {
247
+ "class": ns2.b()
248
+ }, [(_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a)]);
90
249
  };
91
250
  }
92
251
  });
@@ -95,8 +254,9 @@ var Close = defineComponent({
95
254
  setup(props, {
96
255
  emit
97
256
  }) {
257
+ const ns2 = useNamespace("notification");
98
258
  return () => createVNode("div", {
99
- "class": "devui-notification-icon-close",
259
+ "class": ns2.e("icon-close"),
100
260
  "onClick": (e) => emit("click", e)
101
261
  }, [createVNode(Icon, {
102
262
  "name": "close",
@@ -104,6 +264,106 @@ var Close = defineComponent({
104
264
  }, null)]);
105
265
  }
106
266
  });
267
+ const ns = useNamespace("notification");
268
+ function SuccessIcon() {
269
+ return createVNode("svg", {
270
+ "width": "16px",
271
+ "height": "16px",
272
+ "viewBox": "0 0 16 16",
273
+ "version": "1.1",
274
+ "xmlns": "http://www.w3.org/2000/svg",
275
+ "xmlns:xlink": "http://www.w3.org/1999/xlink"
276
+ }, [createVNode("defs", null, [createVNode("polygon", {
277
+ "id": "path-s",
278
+ "points": "6.53553391 9.77817459 12.1923882 4.12132034 13.6066017 5.53553391 6.53553391 12.6066017 3 9.07106781 4.41421356 7.65685425 6.53553391 9.77817459"
279
+ }, null)]), createVNode("g", {
280
+ "id": "correct",
281
+ "stroke": "none",
282
+ "stroke-width": "1",
283
+ "fill": "none",
284
+ "fill-rule": "evenodd"
285
+ }, [createVNode("mask", {
286
+ "id": "mask-2",
287
+ "fill": "white"
288
+ }, [createVNode("use", {
289
+ "xlink:href": "#path-s"
290
+ }, null)]), createVNode("use", {
291
+ "id": "Mask",
292
+ "class": ns.e("image-success-path"),
293
+ "xlink:href": "#path-s"
294
+ }, null)])]);
295
+ }
296
+ function WarningIcon() {
297
+ return createVNode("svg", {
298
+ "width": "16px",
299
+ "height": "16px",
300
+ "viewBox": "0 0 16 16",
301
+ "version": "1.1",
302
+ "xmlns": "http://www.w3.org/2000/svg",
303
+ "xmlns:xlink": "http://www.w3.org/1999/xlink"
304
+ }, [createVNode("g", {
305
+ "stroke": "none",
306
+ "stroke-width": "1",
307
+ "fill": "none",
308
+ "fill-rule": "evenodd"
309
+ }, [createVNode("path", {
310
+ "class": ns.e("warning-outer"),
311
+ "d": "M8.96244623,0.57254229 L15.8714442,13.4101975 C16.1549662,13.9370117 15.9538562,14.5918482 15.4222523,14.8728158 C15.2642579,14.9563203 15.0879506,15 14.9088903,15 L1.09089441,15 C0.488410063,15 0,14.5159904 0,13.9189343 C0,13.7414873 0.0440768395,13.5667684 0.128340519,13.4101975 L7.03733844,0.57254229 C7.32086049,0.0457280838 7.98165058,-0.153569987 8.51325441,0.127397589 C8.70423071,0.228333932 8.8605922,0.383286648 8.96244623,0.57254229 Z"
312
+ }, null), createVNode("path", {
313
+ "class": ns.e("warning-inner"),
314
+ "stroke-width": "0.3",
315
+ "fill-rule": "nonzero",
316
+ "d": "M8.87894737,13 L7.08947368,13 L7.08947368,11.2105263 L8.87894737,11.2105263 L8.87894737,13 Z M8.62102372,9.86842105 L7.32800539,9.86842105 L7,4.5 L8.96842105,4.5 L8.62102372,9.86842105 Z"
317
+ }, null)])]);
318
+ }
319
+ function InfoIcon() {
320
+ return createVNode("svg", {
321
+ "width": "16px",
322
+ "height": "16px",
323
+ "viewBox": "0 0 16 16",
324
+ "version": "1.1",
325
+ "xmlns": "http://www.w3.org/2000/svg",
326
+ "xmlns:xlink": "http://www.w3.org/1999/xlink"
327
+ }, [createVNode("g", {
328
+ "id": "info",
329
+ "stroke": "none",
330
+ "stroke-width": "1",
331
+ "fill": "none",
332
+ "fill-rule": "evenodd"
333
+ }, [createVNode("path", {
334
+ "class": ns.e("image-info-path"),
335
+ "d": "M7,13 L7,6 L9,6 L9,13 L7,13 Z M7,5 L7,3 L9,3 L9,5 L7,5 Z",
336
+ "id": "info"
337
+ }, null)])]);
338
+ }
339
+ function ErrorIcon() {
340
+ return createVNode("svg", {
341
+ "width": "16px",
342
+ "height": "16px",
343
+ "viewBox": "0 0 16 16",
344
+ "version": "1.1",
345
+ "xmlns": "http://www.w3.org/2000/svg",
346
+ "xmlns:xlink": "http://www.w3.org/1999/xlink"
347
+ }, [createVNode("defs", null, [createVNode("polygon", {
348
+ "id": "path-e",
349
+ "points": "8.07106781 6.65685425 10.8994949 3.82842712 12.3137085 5.24264069 9.48528137 8.07106781 12.3137085 10.8994949 10.8994949 12.3137085 8.07106781 9.48528137 5.24264069 12.3137085 3.82842712 10.8994949 6.65685425 8.07106781 3.82842712 5.24264069 5.24264069 3.82842712"
350
+ }, null)]), createVNode("g", {
351
+ "id": "error",
352
+ "stroke": "none",
353
+ "stroke-width": "1",
354
+ "fill": "none",
355
+ "fill-rule": "evenodd"
356
+ }, [createVNode("mask", {
357
+ "id": "mask-2",
358
+ "fill": "white"
359
+ }, [createVNode("use", {
360
+ "xlink:href": "#path-e"
361
+ }, null)]), createVNode("use", {
362
+ "id": "Mask",
363
+ "class": ns.e("image-error-path"),
364
+ "xlink:href": "#path-e"
365
+ }, null)])]);
366
+ }
107
367
  var TypeIcon = defineComponent({
108
368
  props: {
109
369
  type: {
@@ -115,22 +375,14 @@ var TypeIcon = defineComponent({
115
375
  const {
116
376
  type
117
377
  } = toRefs(props);
378
+ const ns2 = useNamespace("notification");
118
379
  const classes = computed(() => ({
119
- "devui-notification-image": true,
120
- [`devui-notification-image-${type.value}`]: true
380
+ [ns2.e("image")]: true,
381
+ [ns2.em("image", type.value)]: true
121
382
  }));
122
- const severityIconMap = {
123
- info: "info-o",
124
- success: "right-o",
125
- warning: "warning-o",
126
- error: "error-o"
127
- };
128
383
  return () => createVNode("span", {
129
384
  "class": classes.value
130
- }, [type.value !== "normal" && createVNode(Icon, {
131
- "name": severityIconMap[type.value],
132
- "size": "16px"
133
- }, null)]);
385
+ }, [type.value && type.value !== "normal" && (type.value === "success" && createVNode(SuccessIcon, null, null) || type.value === "info" && createVNode(InfoIcon, null, null) || type.value === "warning" && createVNode(WarningIcon, null, null) || type.value === "error" && createVNode(ErrorIcon, null, null))]);
134
386
  }
135
387
  });
136
388
  function useNotification(props) {
@@ -198,6 +450,7 @@ var Notification = defineComponent({
198
450
  close: close2,
199
451
  handleDestroy
200
452
  } = useEvent(props, emit);
453
+ const ns2 = useNamespace("notification");
201
454
  return () => createVNode(Transition, {
202
455
  "name": "notification-fade",
203
456
  "onAfterLeave": handleDestroy
@@ -205,23 +458,23 @@ var Notification = defineComponent({
205
458
  default: () => {
206
459
  var _a;
207
460
  return [modelValue.value && createVNode("div", {
208
- "class": "devui-notification"
461
+ "class": ns2.b()
209
462
  }, [createVNode("div", {
210
463
  "class": classes.value,
211
464
  "onMouseenter": interrupt,
212
465
  "onMouseleave": removeReset
213
466
  }, [createVNode("div", {
214
- "class": "devui-notification-item"
467
+ "class": ns2.e("item")
215
468
  }, [createVNode(Close, {
216
469
  "onClick": close2
217
470
  }, null), title.value && createVNode(TypeIcon, {
218
471
  "type": type.value
219
472
  }, null), createVNode("div", {
220
- "class": "devui-notification-message"
473
+ "class": ns2.e("message")
221
474
  }, [createVNode("span", {
222
- "class": "devui-notification-title"
475
+ "class": ns2.e("title")
223
476
  }, [title.value]), createVNode("span", {
224
- "class": "devui-notification-content"
477
+ "class": ns2.e("content")
225
478
  }, [(_a = slots.default) == null ? void 0 : _a.call(slots)])])])])])];
226
479
  }
227
480
  });
@@ -326,7 +579,7 @@ const uploadProps = {
326
579
  },
327
580
  placeholder: {
328
581
  type: String,
329
- default: "\u9009\u62E9\u6587\u4EF6"
582
+ default: ""
330
583
  },
331
584
  modelValue: {
332
585
  type: Array,
@@ -365,30 +618,40 @@ const uploadProps = {
365
618
  type: Function,
366
619
  default: void 0
367
620
  },
368
- "on-error": {
621
+ onError: {
369
622
  type: Function,
370
623
  default: void 0
371
624
  },
372
- "on-success": {
625
+ onSuccess: {
626
+ type: Function,
627
+ default: void 0
628
+ },
629
+ onExceed: {
630
+ type: Function,
631
+ default: void 0
632
+ },
633
+ onProgress: {
634
+ type: Function,
635
+ default: void 0
636
+ },
637
+ onPreview: {
373
638
  type: Function,
374
639
  default: void 0
375
640
  },
376
641
  oneTimeUpload: {
377
642
  type: Boolean,
378
643
  default: false
644
+ },
645
+ limit: {
646
+ type: Number,
647
+ default: 0
648
+ },
649
+ httpRequest: {
650
+ type: Function,
651
+ default: void 0
379
652
  }
380
653
  };
381
- const getAllFilesBeyondMaximalFileSizeMsg = (maximalSize) => `\u6700\u5927\u652F\u6301\u4E0A\u4F20${maximalSize}MB\u7684\u6587\u4EF6, \u60A8\u672C\u6B21\u4E0A\u4F20\u7684\u6240\u6709\u6587\u4EF6\u8D85\u8FC7\u53EF\u4E0A\u4F20\u6587\u4EF6\u5927\u5C0F`;
382
- const getBeyondMaximalFileSizeMsg = (filename, maximalSize) => {
383
- return `\u6700\u5927\u652F\u6301\u4E0A\u4F20${maximalSize}MB\u7684\u6587\u4EF6, \u60A8\u4E0A\u4F20\u7684\u6587\u4EF6"${filename}"\u8D85\u8FC7\u53EF\u4E0A\u4F20\u6587\u4EF6\u5927\u5C0F`;
384
- };
385
- const getNotAllowedFileTypeMsg = (filename, scope) => {
386
- return `\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B: "${scope}", \u60A8\u4E0A\u4F20\u7684\u6587\u4EF6"${filename}"\u4E0D\u5728\u5141\u8BB8\u8303\u56F4\u5185\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u6587\u4EF6`;
387
- };
388
- const getExistSameNameFilesMsg = (sameNames) => {
389
- return `\u60A8\u4E0A\u4F20\u7684 "${sameNames}" \u5B58\u5728\u91CD\u540D\u6587\u4EF6, \u8BF7\u91CD\u65B0\u9009\u62E9\u6587\u4EF6`;
390
- };
391
- const useSelectFiles = () => {
654
+ const useSelectFiles = (t) => {
392
655
  const BEYOND_MAXIMAL_FILE_SIZE_MSG = ref("");
393
656
  const simulateClickEvent = (input) => {
394
657
  const evt = document.createEvent("MouseEvents");
@@ -449,13 +712,13 @@ const useSelectFiles = () => {
449
712
  if (!isAllowedFileType(accept, file)) {
450
713
  return {
451
714
  checkError: true,
452
- errorMsg: getNotAllowedFileTypeMsg(file.name, accept)
715
+ errorMsg: t("getNotAllowedFileTypeMsg")(file.name, accept)
453
716
  };
454
717
  }
455
718
  if (uploadOptions && beyondMaximalSize(file.size, uploadOptions.maximumSize)) {
456
719
  return {
457
720
  checkError: true,
458
- errorMsg: getBeyondMaximalFileSizeMsg(file.name, uploadOptions.maximumSize)
721
+ errorMsg: t("getBeyondMaximalFileSizeMsg")(file.name, uploadOptions.maximumSize || 0)
459
722
  };
460
723
  }
461
724
  return { checkError: false, errorMsg: void 0 };
@@ -469,7 +732,7 @@ const useSelectFiles = () => {
469
732
  };
470
733
  const checkAllFilesSize = (fileSize, maximumSize) => {
471
734
  if (beyondMaximalSize(fileSize, maximumSize)) {
472
- BEYOND_MAXIMAL_FILE_SIZE_MSG.value = getAllFilesBeyondMaximalFileSizeMsg(maximumSize);
735
+ BEYOND_MAXIMAL_FILE_SIZE_MSG.value = t("getAllFilesBeyondMaximalFileSizeMsg")(maximumSize);
473
736
  return { checkError: true, errorMsg: BEYOND_MAXIMAL_FILE_SIZE_MSG.value };
474
737
  }
475
738
  };
@@ -494,11 +757,11 @@ class FileUploader {
494
757
  }
495
758
  send(uploadFiles) {
496
759
  return new Promise((resolve, reject) => {
497
- const { uri, method, headers, authToken, authTokenHeader, additionalParameter, fileFieldName, withCredentials, responseType } = this.uploadOptions;
760
+ const { uri, method, headers, authToken, authTokenHeader, additionalParameter, fileFieldName, withCredentials, responseType } = this.uploadOptions || {};
498
761
  const authTokenHeader_ = authTokenHeader || "Authorization";
499
762
  const fileFieldName_ = fileFieldName || "file";
500
763
  this.xhr = new XMLHttpRequest();
501
- this.xhr.open(method || "POST", uri);
764
+ this.xhr.open(method || "POST", uri || "");
502
765
  if (withCredentials) {
503
766
  this.xhr.withCredentials = withCredentials;
504
767
  }
@@ -510,7 +773,8 @@ class FileUploader {
510
773
  }
511
774
  if (headers) {
512
775
  Object.keys(headers).forEach((key) => {
513
- this.xhr.setRequestHeader(key, headers[key]);
776
+ var _a;
777
+ (_a = this.xhr) == null ? void 0 : _a.setRequestHeader(key, headers[key]);
514
778
  });
515
779
  }
516
780
  this.xhr.upload.onprogress = (e) => {
@@ -524,19 +788,21 @@ class FileUploader {
524
788
  this.xhr = null;
525
789
  };
526
790
  this.xhr.onerror = () => {
527
- this.response = this.xhr.response;
791
+ var _a, _b;
792
+ this.response = (_a = this.xhr) == null ? void 0 : _a.response;
528
793
  this.status = UploadStatus.failed;
529
- reject({ file: this.file, response: this.xhr.response });
794
+ reject({ file: this.file, response: (_b = this.xhr) == null ? void 0 : _b.response });
530
795
  };
531
796
  this.xhr.onload = () => {
532
- if (this.xhr.readyState === 4 && this.xhr.status >= 200 && this.xhr.status < 300) {
797
+ var _a, _b, _c;
798
+ if (((_a = this.xhr) == null ? void 0 : _a.readyState) === 4 && this.xhr.status >= 200 && this.xhr.status < 300) {
533
799
  this.response = this.xhr.response;
534
800
  this.status = UploadStatus.uploaded;
535
801
  resolve({ file: this.file, response: this.xhr.response });
536
802
  } else {
537
- this.response = this.xhr.response;
803
+ this.response = (_b = this.xhr) == null ? void 0 : _b.response;
538
804
  this.status = UploadStatus.failed;
539
- reject({ file: this.file, response: this.xhr.response });
805
+ reject({ file: this.file, response: (_c = this.xhr) == null ? void 0 : _c.response });
540
806
  }
541
807
  };
542
808
  });
@@ -643,7 +909,7 @@ const useUpload = () => {
643
909
  };
644
910
  const deleteFile = (file) => {
645
911
  const deleteUploadFile = fileUploaders.value.find((fileUploader) => fileUploader.file === file);
646
- deleteUploadFile.cancel();
912
+ deleteUploadFile == null ? void 0 : deleteUploadFile.cancel();
647
913
  fileUploaders.value = fileUploaders.value.filter((fileUploader) => {
648
914
  return file !== fileUploader.file;
649
915
  });
@@ -672,11 +938,31 @@ const useUpload = () => {
672
938
  };
673
939
  };
674
940
  var upload = "";
941
+ const camelize = (name) => name.substring(1).replace(/^\S/, (s) => s.toLocaleLowerCase());
942
+ function get(object, path) {
943
+ const keys = path.split(".");
944
+ let result = object;
945
+ keys.forEach((key) => {
946
+ var _a;
947
+ result = (_a = result[key]) != null ? _a : "";
948
+ });
949
+ return result;
950
+ }
951
+ function createI18nTranslate(name, app, newPrefix) {
952
+ const prefix = newPrefix || camelize(name) + ".";
953
+ return (path) => {
954
+ const messages = app == null ? void 0 : app.appContext.config.globalProperties.langMessages.value;
955
+ const message = get(messages, prefix + path) || get(messages, path);
956
+ return message;
957
+ };
958
+ }
675
959
  var Upload = defineComponent({
676
960
  name: "DUpload",
677
961
  props: uploadProps,
678
962
  emits: ["fileDrop", "fileOver", "fileSelect", "deleteUploadedFile", "update:modelValue"],
679
963
  setup(props, ctx) {
964
+ const app = getCurrentInstance();
965
+ const t = createI18nTranslate("DUpload", app);
680
966
  const {
681
967
  uploadOptions,
682
968
  placeholder,
@@ -688,14 +974,20 @@ var Upload = defineComponent({
688
974
  modelValue,
689
975
  multiple,
690
976
  accept,
691
- webkitdirectory
977
+ webkitdirectory,
978
+ limit,
979
+ httpRequest
692
980
  } = toRefs(props);
981
+ const ns2 = useNamespace("upload");
982
+ const inputGroupNs = useNamespace("input-group");
983
+ const formControlNs = useNamespace("form-control");
984
+ const inputGroupAddOnNs = useNamespace("input-group-addon");
693
985
  const {
694
986
  triggerSelectFiles,
695
987
  _validateFiles,
696
988
  triggerDropFiles,
697
989
  checkAllFilesSize
698
- } = useSelectFiles();
990
+ } = useSelectFiles(t);
699
991
  const {
700
992
  fileUploaders,
701
993
  addFile,
@@ -707,8 +999,8 @@ var Upload = defineComponent({
707
999
  _oneTimeUpload,
708
1000
  getSameNameFiles
709
1001
  } = useUpload();
710
- const isDropOVer = ref(false);
711
- ref("");
1002
+ const isDropOver = ref(false);
1003
+ const selectedFiles = ref([]);
712
1004
  const alertMsg = (errorMsg) => {
713
1005
  NotificationService.open({
714
1006
  type: "warning",
@@ -716,10 +1008,11 @@ var Upload = defineComponent({
716
1008
  });
717
1009
  };
718
1010
  const checkValid = () => {
1011
+ var _a;
719
1012
  let totalFileSize = 0;
720
1013
  fileUploaders.value.forEach((fileUploader) => {
721
1014
  totalFileSize += fileUploader.file.size;
722
- const checkResult = _validateFiles(fileUploader.file, accept.value, fileUploader.uploadOptions);
1015
+ const checkResult = _validateFiles(fileUploader.file, (accept == null ? void 0 : accept.value) || "", fileUploader.uploadOptions);
723
1016
  if (checkResult && checkResult.checkError) {
724
1017
  deleteFile(fileUploader.file);
725
1018
  alertMsg(checkResult.errorMsg);
@@ -727,53 +1020,15 @@ var Upload = defineComponent({
727
1020
  }
728
1021
  });
729
1022
  if (oneTimeUpload.value) {
730
- const checkResult = checkAllFilesSize(totalFileSize, uploadOptions.value.maximumSize);
1023
+ const checkResult = checkAllFilesSize(totalFileSize, ((_a = uploadOptions == null ? void 0 : uploadOptions.value) == null ? void 0 : _a.maximumSize) || 0);
731
1024
  if (checkResult && checkResult.checkError) {
732
1025
  removeFiles();
733
1026
  alertMsg(checkResult.errorMsg);
734
1027
  }
735
1028
  }
736
1029
  };
737
- const _dealFiles = (promise) => {
738
- resetSameNameFiles();
739
- promise.then((files) => {
740
- files.forEach((file) => {
741
- if (!multiple.value) {
742
- removeFiles();
743
- }
744
- addFile(file, uploadOptions.value);
745
- });
746
- checkValid();
747
- const sameNameFiles = getSameNameFiles();
748
- if (uploadOptions.value && uploadOptions.value.checkSameName && sameNameFiles.length) {
749
- alertMsg(getExistSameNameFilesMsg(sameNameFiles));
750
- }
751
- const selectedFiles = fileUploaders.value.filter((fileUploader) => fileUploader.status === UploadStatus.preLoad).map((fileUploader) => fileUploader.file);
752
- ctx.emit("fileSelect", selectedFiles);
753
- if (autoUpload.value) {
754
- fileUpload();
755
- }
756
- }).catch((error) => {
757
- alertMsg(error.message);
758
- });
759
- };
760
- const handleClick = () => {
761
- if (disabled.value) {
762
- return;
763
- }
764
- _dealFiles(triggerSelectFiles({
765
- accept: accept.value,
766
- multiple: multiple.value,
767
- webkitdirectory: webkitdirectory.value
768
- }));
769
- };
770
- const onFileDrop = (files) => {
771
- isDropOVer.value = false;
772
- _dealFiles(triggerDropFiles(files));
773
- ctx.emit("fileDrop", files);
774
- };
775
1030
  const onFileOver = (event) => {
776
- isDropOVer.value = event;
1031
+ isDropOver.value = event;
777
1032
  ctx.emit("fileOver", event);
778
1033
  };
779
1034
  const deleteUploadedFile = (file) => {
@@ -784,7 +1039,7 @@ var Upload = defineComponent({
784
1039
  ctx.emit("update:modelValue", newUploadedFiles);
785
1040
  };
786
1041
  const onDeleteFile = (event, file, status) => {
787
- event.stopPropagation();
1042
+ event == null ? void 0 : event.stopPropagation();
788
1043
  if (status === UploadStatus.uploaded) {
789
1044
  deleteUploadedFile(file);
790
1045
  }
@@ -792,13 +1047,13 @@ var Upload = defineComponent({
792
1047
  };
793
1048
  const canUpload = () => {
794
1049
  let uploadResult = Promise.resolve(true);
795
- if (beforeUpload.value) {
796
- const result = beforeUpload.value(getFullFiles());
1050
+ if (beforeUpload == null ? void 0 : beforeUpload.value) {
1051
+ const result = beforeUpload == null ? void 0 : beforeUpload.value(getFullFiles());
797
1052
  if (typeof result !== "undefined") {
798
- if (result.then) {
799
- uploadResult = result;
800
- } else {
1053
+ if (typeof result === "boolean") {
801
1054
  uploadResult = Promise.resolve(result);
1055
+ } else {
1056
+ uploadResult = result;
802
1057
  }
803
1058
  }
804
1059
  }
@@ -813,44 +1068,112 @@ var Upload = defineComponent({
813
1068
  removeFiles();
814
1069
  return;
815
1070
  }
1071
+ if (typeof (httpRequest == null ? void 0 : httpRequest.value) === "function") {
1072
+ const files = fileUploaders.value.map((tempFileUploader) => tempFileUploader.file);
1073
+ httpRequest.value(files);
1074
+ return;
1075
+ }
816
1076
  const uploadObservable = oneTimeUpload.value ? _oneTimeUpload() : upload2(fileUploader);
817
- uploadObservable.then((results) => {
818
- props["on-success"] && props["on-success"](results);
1077
+ props.onProgress && props.onProgress(selectedFiles.value, modelValue.value);
1078
+ uploadObservable == null ? void 0 : uploadObservable.then((results) => {
1079
+ props.onSuccess && props.onSuccess(results);
819
1080
  const newFiles = results.map((result) => result.file);
820
1081
  const newUploadedFiles = [...newFiles, ...modelValue.value];
821
1082
  ctx.emit("update:modelValue", newUploadedFiles);
1083
+ props.onChange && props.onChange(newFiles, newUploadedFiles);
822
1084
  }).catch((error) => {
823
- props["on-error"] && props["on-error"](error);
1085
+ props.onError && props.onError(error);
1086
+ props.onChange && props.onChange([error.file], modelValue.value);
1087
+ });
1088
+ });
1089
+ };
1090
+ const _dealFiles = (promise) => {
1091
+ resetSameNameFiles();
1092
+ promise.then((files) => {
1093
+ if (limit.value && modelValue.value.length + files.length > limit.value) {
1094
+ props.onExceed && props.onExceed(files, modelValue.value);
1095
+ return;
1096
+ }
1097
+ props.onChange && props.onChange(files, modelValue.value);
1098
+ files.forEach((file) => {
1099
+ if (!multiple.value) {
1100
+ removeFiles();
1101
+ }
1102
+ addFile(file, uploadOptions == null ? void 0 : uploadOptions.value);
824
1103
  });
1104
+ checkValid();
1105
+ const sameNameFiles = getSameNameFiles();
1106
+ if ((uploadOptions == null ? void 0 : uploadOptions.value) && uploadOptions.value.checkSameName && sameNameFiles.length) {
1107
+ alertMsg(t("getExistSameNameFilesMsg")(sameNameFiles));
1108
+ }
1109
+ selectedFiles.value = fileUploaders.value.filter((fileUploader) => fileUploader.status === UploadStatus.preLoad).map((fileUploader) => fileUploader.file);
1110
+ ctx.emit("fileSelect", selectedFiles.value);
1111
+ if (autoUpload.value) {
1112
+ fileUpload();
1113
+ }
1114
+ }).catch((error) => {
1115
+ alertMsg(error.message);
1116
+ });
1117
+ };
1118
+ const handleClick = () => {
1119
+ if (disabled.value) {
1120
+ return;
1121
+ }
1122
+ _dealFiles(triggerSelectFiles({
1123
+ accept: accept == null ? void 0 : accept.value,
1124
+ multiple: multiple.value,
1125
+ webkitdirectory: webkitdirectory.value
1126
+ }));
1127
+ };
1128
+ const onFileDrop = (files) => {
1129
+ isDropOver.value = false;
1130
+ _dealFiles(triggerDropFiles(files));
1131
+ ctx.emit("fileDrop", files);
1132
+ };
1133
+ const submit = (event, fileUploader) => {
1134
+ fileUpload(event, fileUploader);
1135
+ };
1136
+ const clearFiles = (event) => {
1137
+ fileUploaders.value.forEach((fileUploader) => {
1138
+ onDeleteFile(event, fileUploader.file, fileUploader.status);
825
1139
  });
826
1140
  };
1141
+ const clickSelectedFile = (event, file) => {
1142
+ event == null ? void 0 : event.stopPropagation();
1143
+ props.onPreview && props.onPreview(file);
1144
+ };
1145
+ ctx.expose({
1146
+ submit,
1147
+ clearFiles
1148
+ });
827
1149
  return () => {
828
1150
  var _a, _b, _c, _d;
829
1151
  return createVNode("div", null, [withDirectives(createVNode("div", {
830
- "class": "devui-upload",
831
- "style": `border: ${isDropOVer.value ? "1px solid #15bf15" : "0"}`
1152
+ "class": ns2.b(),
1153
+ "style": `border: ${isDropOver.value ? "1px solid #15bf15" : "0"}`
832
1154
  }, [((_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a)) ? createVNode("div", {
833
1155
  "onClick": handleClick
834
1156
  }, [ctx.slots.default()]) : createVNode("div", {
835
- "class": `devui-input-group ${disabled.value ? "disabled" : ""}`,
1157
+ "class": [inputGroupNs.b(), disabled.value ? "disabled" : ""],
836
1158
  "onClick": handleClick
837
1159
  }, [fileUploaders.value.length === 0 && createVNode("div", {
838
- "class": "devui-form-control devui-upload-placeholder"
839
- }, [placeholder.value]), fileUploaders.value.length > 0 && createVNode("ul", {
840
- "class": "devui-form-control devui-files-list"
1160
+ "class": [formControlNs.b(), ns2.e("placeholder")]
1161
+ }, [placeholder.value || t("placeholder")]), fileUploaders.value.length > 0 && createVNode("ul", {
1162
+ "class": [formControlNs.b(), ns2.e("files-list")]
841
1163
  }, [fileUploaders.value.map((fileUploader, index2) => createVNode("li", {
842
1164
  "key": index2,
843
- "class": "devui-file-item devui-file-tag",
844
- "style": "display: inline-block; margin: 0 2px 2px 0",
845
- "title": fileUploader.file.name
1165
+ "class": [ns2.e("file-item"), ns2.e("file-tag")],
1166
+ "style": "display: inline-block;",
1167
+ "title": fileUploader.file.name,
1168
+ "onClick": (event) => clickSelectedFile(event, fileUploader.file)
846
1169
  }, [createVNode("span", {
847
- "class": `devui-filename ${fileUploader.status === UploadStatus.failed ? "devui-failed-color" : ""}`
1170
+ "class": [ns2.e("filename"), fileUploader.status === UploadStatus.failed ? ns2.m("failed-color") : ""]
848
1171
  }, [fileUploader.file.name]), createVNode(resolveComponent("d-icon"), {
849
1172
  "name": "close",
850
- "class": `${(fileUploader == null ? void 0 : fileUploader.status) === UploadStatus.failed ? "devui-upload-delete-file-button" : ""} ${(fileUploader == null ? void 0 : fileUploader.status) === UploadStatus.uploading || (fileUploader == null ? void 0 : fileUploader.status) === UploadStatus.uploaded ? "devui-uploading-delete" : ""}`,
1173
+ "class": [(fileUploader == null ? void 0 : fileUploader.status) === UploadStatus.failed ? ns2.e("delete-file-button") : "", (fileUploader == null ? void 0 : fileUploader.status) === UploadStatus.uploading || (fileUploader == null ? void 0 : fileUploader.status) === UploadStatus.uploaded ? ns2.e("delete") : ""],
851
1174
  "onClick": (event) => onDeleteFile(event, fileUploader.file, fileUploader.status)
852
1175
  }, null), fileUploader.status === UploadStatus.uploading && createVNode("div", {
853
- "class": "icon devui-upload-progress"
1176
+ "class": ["icon", ns2.e("progress")]
854
1177
  }, [createVNode(resolveComponent("d-progress"), {
855
1178
  "isCircle": true,
856
1179
  "percentage": fileUploader.percentage,
@@ -864,7 +1187,7 @@ var Upload = defineComponent({
864
1187
  "name": "right",
865
1188
  "color": "#50d4ab"
866
1189
  }, null)]))]), createVNode("span", {
867
- "class": "devui-input-group-addon"
1190
+ "class": inputGroupAddOnNs.b()
868
1191
  }, [createVNode(resolveComponent("d-icon"), {
869
1192
  "name": "more-operate",
870
1193
  "color": "#252b3a"