vue-devui 1.0.0-beta.18 → 1.0.0-beta.220801

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 (403) hide show
  1. package/README.md +94 -118
  2. package/alert/index.es.js +74 -45
  3. package/alert/index.umd.js +1 -1
  4. package/alert/style.css +1 -1
  5. package/auto-complete/index.es.js +8349 -426
  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 +45 -20
  12. package/badge/index.umd.js +1 -1
  13. package/badge/style.css +1 -1
  14. package/button/index.es.js +5743 -127
  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 +8070 -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/{back-top → collapse}/package.json +1 -1
  27. package/collapse/style.css +1 -0
  28. package/countdown/index.es.js +60 -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 +12018 -0
  32. package/date-picker-pro/index.umd.js +27 -0
  33. package/date-picker-pro/package.json +7 -0
  34. package/date-picker-pro/style.css +1 -0
  35. package/drawer/index.es.js +184 -5736
  36. package/drawer/index.umd.js +1 -27
  37. package/drawer/style.css +1 -1
  38. package/dropdown/index.es.js +615 -396
  39. package/dropdown/index.umd.js +1 -1
  40. package/dropdown/style.css +1 -1
  41. package/editable-select/index.es.js +786 -195
  42. package/editable-select/index.umd.js +1 -1
  43. package/editable-select/style.css +1 -1
  44. package/form/index.es.js +2360 -2094
  45. package/form/index.umd.js +17 -17
  46. package/form/style.css +1 -1
  47. package/fullscreen/index.es.js +137 -134
  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 +199 -56
  54. package/icon/index.umd.js +1 -1
  55. package/icon/style.css +1 -0
  56. package/image-preview/index.es.js +55 -31
  57. package/image-preview/index.umd.js +1 -1
  58. package/image-preview/style.css +1 -1
  59. package/input/index.es.js +8254 -144
  60. package/input/index.umd.js +27 -1
  61. package/input/style.css +1 -1
  62. package/input-number/index.es.js +270 -187
  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/{back-top → mention}/index.d.ts +0 -0
  72. package/{color-picker → mention}/index.es.js +2983 -2861
  73. package/mention/index.umd.js +36 -0
  74. package/{anchor → mention}/package.json +1 -1
  75. package/mention/style.css +1 -0
  76. package/{breadcrumb → menu}/index.d.ts +0 -0
  77. package/menu/index.es.js +870 -0
  78. package/menu/index.umd.js +1 -0
  79. package/{toast → menu}/package.json +1 -1
  80. package/menu/style.css +1 -0
  81. package/{carousel → message}/index.d.ts +0 -0
  82. package/message/index.es.js +538 -0
  83. package/message/index.umd.js +1 -0
  84. package/{comment → message}/package.json +1 -1
  85. package/message/style.css +1 -0
  86. package/modal/index.es.js +598 -1025
  87. package/modal/index.umd.js +1 -1
  88. package/modal/style.css +1 -1
  89. package/{cascader → notification}/index.d.ts +0 -0
  90. package/notification/index.es.js +545 -0
  91. package/notification/index.umd.js +1 -0
  92. package/{accordion → notification}/package.json +1 -1
  93. package/notification/style.css +1 -0
  94. package/nuxt/components/ButtonGroup.js +3 -0
  95. package/nuxt/components/CheckboxButton.js +3 -0
  96. package/nuxt/components/CheckboxGroup.js +3 -0
  97. package/nuxt/components/Collapse.js +3 -0
  98. package/nuxt/components/CollapseItem.js +3 -0
  99. package/nuxt/components/DRangeDatePickerPro.js +3 -0
  100. package/nuxt/components/DatePickerPro.js +3 -0
  101. package/nuxt/components/DropdownMenu.js +3 -0
  102. package/nuxt/components/DropdownPropsKey.js +3 -0
  103. package/nuxt/components/FORM_ITEM_TOKEN.js +3 -0
  104. package/nuxt/components/FORM_TOKEN.js +3 -0
  105. package/nuxt/components/IFileOptions.js +3 -0
  106. package/nuxt/components/IUploadOptions.js +3 -0
  107. package/nuxt/components/Icon.js +1 -0
  108. package/nuxt/components/IconGroup.js +3 -0
  109. package/nuxt/components/LABEL_DATA.js +3 -0
  110. package/nuxt/components/LoadingOptions.js +3 -0
  111. package/nuxt/components/Mention.js +3 -0
  112. package/nuxt/components/Menu.js +3 -0
  113. package/nuxt/components/MenuItem.js +3 -0
  114. package/nuxt/components/Message.js +3 -0
  115. package/nuxt/components/Notification.js +3 -0
  116. package/nuxt/components/NotificationService.js +3 -0
  117. package/nuxt/components/Option.js +3 -0
  118. package/nuxt/components/OptionGroup.js +3 -0
  119. package/nuxt/components/PanelBody.js +3 -0
  120. package/nuxt/components/PanelFooter.js +3 -0
  121. package/nuxt/components/PanelHeader.js +3 -0
  122. package/nuxt/components/RadioButton.js +3 -0
  123. package/nuxt/components/Step.js +3 -0
  124. package/nuxt/components/Steps.js +3 -0
  125. package/nuxt/components/SubMenu.js +3 -0
  126. package/nuxt/components/TABLE_TOKEN.js +3 -0
  127. package/nuxt/components/Tab.js +3 -0
  128. package/nuxt/components/TimeSelect.js +3 -0
  129. package/nuxt/components/Timeline.js +3 -0
  130. package/nuxt/components/TimelineItem.js +3 -0
  131. package/nuxt/components/UploadStatus.js +3 -0
  132. package/nuxt/components/alertProps.js +3 -0
  133. package/nuxt/components/animationInjectionKey.js +3 -0
  134. package/nuxt/components/autoCompleteProps.js +3 -0
  135. package/nuxt/components/avatarProps.js +3 -0
  136. package/nuxt/components/badgeProps.js +3 -0
  137. package/nuxt/components/buttonGroupInjectionKey.js +3 -0
  138. package/nuxt/components/buttonGroupProps.js +3 -0
  139. package/nuxt/components/cardProps.js +3 -0
  140. package/nuxt/components/checkboxGroupInjectionKey.js +3 -0
  141. package/nuxt/components/checkboxGroupProps.js +3 -0
  142. package/nuxt/components/checkboxProps.js +3 -0
  143. package/nuxt/components/colProps.js +3 -0
  144. package/nuxt/components/colPropsBaseClass.js +3 -0
  145. package/nuxt/components/colPropsBaseStyle.js +3 -0
  146. package/nuxt/components/collapseItemProps.js +3 -0
  147. package/nuxt/components/collapseProps.js +3 -0
  148. package/nuxt/components/countdownProps.js +3 -0
  149. package/nuxt/components/datePickerProCommonProps.js +3 -0
  150. package/nuxt/components/datePickerProPanelProps.js +3 -0
  151. package/nuxt/components/datePickerProProps.js +3 -0
  152. package/nuxt/components/dropdownMenuProps.js +3 -0
  153. package/nuxt/components/editableSelectProps.js +3 -0
  154. package/nuxt/components/fixedOverlayProps.js +3 -0
  155. package/nuxt/components/flexibleOverlayProps.js +3 -0
  156. package/nuxt/components/formItemProps.js +3 -0
  157. package/nuxt/components/formProps.js +3 -0
  158. package/nuxt/components/fullscreenProps.js +3 -0
  159. package/nuxt/components/iconProps.js +3 -0
  160. package/nuxt/components/imagePreviewProps.js +3 -0
  161. package/nuxt/components/inputProps.js +3 -0
  162. package/nuxt/components/loadingProps.js +3 -0
  163. package/nuxt/components/mentionProps.js +3 -0
  164. package/nuxt/components/messageProps.js +3 -0
  165. package/nuxt/components/modalProps.js +3 -0
  166. package/nuxt/components/notificationProps.js +3 -0
  167. package/nuxt/components/paginationProps.js +3 -0
  168. package/nuxt/components/panelProps.js +3 -0
  169. package/nuxt/components/popoverProps.js +3 -0
  170. package/nuxt/components/progressProps.js +3 -0
  171. package/nuxt/components/rateProps.js +3 -0
  172. package/nuxt/components/resultProps.js +3 -0
  173. package/nuxt/components/roundInjectionKey.js +3 -0
  174. package/nuxt/components/rowProps.js +3 -0
  175. package/nuxt/components/screenSizes.js +3 -0
  176. package/nuxt/components/searchProps.js +3 -0
  177. package/nuxt/components/skeletonItemProps.js +3 -0
  178. package/nuxt/components/skeletonProps.js +3 -0
  179. package/nuxt/components/sliderProps.js +3 -0
  180. package/nuxt/components/splitterProps.js +3 -0
  181. package/nuxt/components/statisticProps.js +3 -0
  182. package/nuxt/components/stepProps.js +3 -0
  183. package/nuxt/components/stepsProps.js +3 -0
  184. package/nuxt/components/svgIconProps.js +3 -0
  185. package/nuxt/components/switchProps.js +3 -0
  186. package/nuxt/components/tableProps.js +3 -0
  187. package/nuxt/components/tabsProps.js +3 -0
  188. package/nuxt/components/tagProps.js +3 -0
  189. package/nuxt/components/textareaProps.js +3 -0
  190. package/nuxt/components/timeAxisProps.js +3 -0
  191. package/nuxt/components/timerPickerPanelProps.js +3 -0
  192. package/nuxt/components/tooltipProps.js +3 -0
  193. package/nuxt/components/treeNodeProps.js +3 -0
  194. package/nuxt/components/treeProps.js +3 -0
  195. package/nuxt/components/uploadProps.js +3 -0
  196. package/overlay/index.es.js +239 -314
  197. package/overlay/index.umd.js +1 -1
  198. package/overlay/style.css +1 -1
  199. package/package.json +44 -87
  200. package/pagination/index.es.js +331 -153
  201. package/pagination/index.umd.js +1 -1
  202. package/pagination/style.css +1 -1
  203. package/panel/index.es.js +45 -32
  204. package/panel/index.umd.js +1 -1
  205. package/panel/style.css +1 -1
  206. package/popover/index.es.js +6034 -215
  207. package/popover/index.umd.js +27 -1
  208. package/popover/style.css +1 -1
  209. package/progress/index.es.js +110 -56
  210. package/progress/index.umd.js +3 -3
  211. package/progress/style.css +1 -1
  212. package/radio/index.es.js +7974 -157
  213. package/radio/index.umd.js +27 -1
  214. package/radio/style.css +1 -1
  215. package/rate/index.es.js +77 -55
  216. package/rate/index.umd.js +1 -1
  217. package/rate/style.css +1 -1
  218. package/result/index.es.js +186 -57
  219. package/result/index.umd.js +1 -1
  220. package/result/style.css +1 -1
  221. package/ripple/index.es.js +47 -42
  222. package/ripple/index.umd.js +1 -1
  223. package/search/index.es.js +3868 -1149
  224. package/search/index.umd.js +18 -18
  225. package/search/style.css +1 -1
  226. package/select/index.es.js +9191 -493
  227. package/select/index.umd.js +27 -1
  228. package/select/style.css +1 -1
  229. package/skeleton/index.es.js +113 -265
  230. package/skeleton/index.umd.js +1 -1
  231. package/skeleton/style.css +1 -1
  232. package/slider/index.es.js +144 -137
  233. package/slider/index.umd.js +1 -1
  234. package/slider/style.css +1 -1
  235. package/splitter/index.es.js +6220 -226
  236. package/splitter/index.umd.js +27 -1
  237. package/splitter/style.css +1 -1
  238. package/statistic/index.es.js +41 -34
  239. package/statistic/index.umd.js +1 -1
  240. package/statistic/style.css +1 -1
  241. package/status/index.es.js +27 -6
  242. package/status/index.umd.js +1 -1
  243. package/status/style.css +1 -1
  244. package/{color-picker → steps}/index.d.ts +0 -0
  245. package/steps/index.es.js +386 -0
  246. package/steps/index.umd.js +1 -0
  247. package/{gantt → steps}/package.json +1 -1
  248. package/steps/style.css +1 -0
  249. package/style.css +1 -1
  250. package/switch/index.es.js +7804 -64
  251. package/switch/index.umd.js +27 -1
  252. package/switch/style.css +1 -1
  253. package/table/index.es.js +11010 -1367
  254. package/table/index.umd.js +27 -1
  255. package/table/style.css +1 -1
  256. package/tabs/index.es.js +356 -144
  257. package/tabs/index.umd.js +1 -1
  258. package/tabs/style.css +1 -1
  259. package/tag/index.es.js +49 -24
  260. package/tag/index.umd.js +1 -1
  261. package/tag/style.css +1 -1
  262. package/textarea/index.es.js +7924 -83
  263. package/textarea/index.umd.js +35 -1
  264. package/textarea/style.css +1 -1
  265. package/time-picker/index.es.js +8914 -602
  266. package/time-picker/index.umd.js +27 -1
  267. package/time-picker/style.css +1 -1
  268. package/{comment → time-select}/index.d.ts +0 -0
  269. package/{transfer → time-select}/index.es.js +4912 -2667
  270. package/time-select/index.umd.js +27 -0
  271. package/{breadcrumb → time-select}/package.json +1 -1
  272. package/time-select/style.css +1 -0
  273. package/{date-picker → timeline}/index.d.ts +0 -0
  274. package/timeline/index.es.js +427 -0
  275. package/timeline/index.umd.js +1 -0
  276. package/{carousel → timeline}/package.json +1 -1
  277. package/timeline/style.css +1 -0
  278. package/tooltip/index.es.js +5871 -96
  279. package/tooltip/index.umd.js +27 -1
  280. package/tooltip/style.css +1 -1
  281. package/tree/index.es.js +7556 -2491
  282. package/tree/index.umd.js +18 -18
  283. package/tree/style.css +1 -1
  284. package/upload/index.es.js +865 -6117
  285. package/upload/index.umd.js +1 -27
  286. package/upload/style.css +1 -1
  287. package/vue-devui.es.js +20283 -18856
  288. package/vue-devui.umd.js +30 -19
  289. package/accordion/index.es.js +0 -508
  290. package/accordion/index.umd.js +0 -1
  291. package/accordion/style.css +0 -1
  292. package/anchor/index.es.js +0 -263
  293. package/anchor/index.umd.js +0 -1
  294. package/anchor/style.css +0 -1
  295. package/back-top/index.es.js +0 -128
  296. package/back-top/index.umd.js +0 -1
  297. package/back-top/style.css +0 -1
  298. package/breadcrumb/index.es.js +0 -127
  299. package/breadcrumb/index.umd.js +0 -1
  300. package/breadcrumb/style.css +0 -1
  301. package/carousel/index.es.js +0 -329
  302. package/carousel/index.umd.js +0 -1
  303. package/carousel/style.css +0 -1
  304. package/cascader/index.es.js +0 -5963
  305. package/cascader/index.umd.js +0 -27
  306. package/cascader/package.json +0 -7
  307. package/cascader/style.css +0 -1
  308. package/color-picker/index.umd.js +0 -27
  309. package/color-picker/package.json +0 -7
  310. package/color-picker/style.css +0 -1
  311. package/comment/index.es.js +0 -86
  312. package/comment/index.umd.js +0 -1
  313. package/comment/style.css +0 -1
  314. package/date-picker/index.es.js +0 -1171
  315. package/date-picker/index.umd.js +0 -1
  316. package/date-picker/package.json +0 -7
  317. package/date-picker/style.css +0 -1
  318. package/dragdrop/index.d.ts +0 -7
  319. package/dragdrop/index.es.js +0 -157
  320. package/dragdrop/index.umd.js +0 -1
  321. package/dragdrop/package.json +0 -7
  322. package/gantt/index.d.ts +0 -7
  323. package/gantt/index.es.js +0 -523
  324. package/gantt/index.umd.js +0 -1
  325. package/gantt/style.css +0 -1
  326. package/input-icon/index.d.ts +0 -7
  327. package/input-icon/index.es.js +0 -331
  328. package/input-icon/index.umd.js +0 -1
  329. package/input-icon/package.json +0 -7
  330. package/input-icon/style.css +0 -1
  331. package/nav-sprite/index.d.ts +0 -7
  332. package/nav-sprite/index.es.js +0 -68
  333. package/nav-sprite/index.umd.js +0 -1
  334. package/nav-sprite/package.json +0 -7
  335. package/nuxt/components/Accordion.js +0 -3
  336. package/nuxt/components/Anchor.js +0 -3
  337. package/nuxt/components/BackTop.js +0 -3
  338. package/nuxt/components/Breadcrumb.js +0 -3
  339. package/nuxt/components/Carousel.js +0 -3
  340. package/nuxt/components/CarouselItem.js +0 -3
  341. package/nuxt/components/Cascader.js +0 -3
  342. package/nuxt/components/ColorPicker.js +0 -3
  343. package/nuxt/components/Comment.js +0 -3
  344. package/nuxt/components/DatePicker.js +0 -3
  345. package/nuxt/components/FormControl.js +0 -3
  346. package/nuxt/components/FormLabel.js +0 -3
  347. package/nuxt/components/Gantt.js +0 -3
  348. package/nuxt/components/InputIcon.js +0 -3
  349. package/nuxt/components/NavSprite.js +0 -2
  350. package/nuxt/components/QuadrantDiagram.js +0 -3
  351. package/nuxt/components/ReadTip.js +0 -3
  352. package/nuxt/components/StepsGuide.js +0 -3
  353. package/nuxt/components/StickSlider.js +0 -3
  354. package/nuxt/components/Sticky.js +0 -2
  355. package/nuxt/components/TagInput.js +0 -3
  356. package/nuxt/components/TimeAxis.js +0 -3
  357. package/nuxt/components/TimeAxisItem.js +0 -3
  358. package/nuxt/components/Toast.js +0 -3
  359. package/nuxt/components/ToastService.js +0 -3
  360. package/nuxt/components/Transfer.js +0 -3
  361. package/nuxt/components/TreeSelect.js +0 -3
  362. package/quadrant-diagram/index.d.ts +0 -7
  363. package/quadrant-diagram/index.es.js +0 -5728
  364. package/quadrant-diagram/index.umd.js +0 -27
  365. package/quadrant-diagram/package.json +0 -7
  366. package/quadrant-diagram/style.css +0 -1
  367. package/read-tip/index.d.ts +0 -7
  368. package/read-tip/index.es.js +0 -258
  369. package/read-tip/index.umd.js +0 -1
  370. package/read-tip/package.json +0 -7
  371. package/read-tip/style.css +0 -1
  372. package/steps-guide/index.d.ts +0 -7
  373. package/steps-guide/index.es.js +0 -239
  374. package/steps-guide/index.umd.js +0 -1
  375. package/steps-guide/package.json +0 -7
  376. package/steps-guide/style.css +0 -1
  377. package/sticky/index.d.ts +0 -7
  378. package/sticky/index.es.js +0 -197
  379. package/sticky/index.umd.js +0 -1
  380. package/sticky/package.json +0 -7
  381. package/tag-input/index.d.ts +0 -7
  382. package/tag-input/index.es.js +0 -329
  383. package/tag-input/index.umd.js +0 -1
  384. package/tag-input/package.json +0 -7
  385. package/tag-input/style.css +0 -1
  386. package/time-axis/index.d.ts +0 -7
  387. package/time-axis/index.es.js +0 -299
  388. package/time-axis/index.umd.js +0 -1
  389. package/time-axis/package.json +0 -7
  390. package/time-axis/style.css +0 -1
  391. package/toast/index.d.ts +0 -7
  392. package/toast/index.es.js +0 -5918
  393. package/toast/index.umd.js +0 -27
  394. package/toast/style.css +0 -1
  395. package/transfer/index.d.ts +0 -7
  396. package/transfer/index.umd.js +0 -27
  397. package/transfer/package.json +0 -7
  398. package/transfer/style.css +0 -1
  399. package/tree-select/index.d.ts +0 -7
  400. package/tree-select/index.es.js +0 -623
  401. package/tree-select/index.umd.js +0 -1
  402. package/tree-select/package.json +0 -7
  403. package/tree-select/style.css +0 -1
@@ -1,4 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
2
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
4
6
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -14,22 +16,30 @@ var __spreadValues = (a, b) => {
14
16
  }
15
17
  return a;
16
18
  };
17
- import { computed, nextTick, defineComponent, ref, reactive, watch, withDirectives, createVNode, withModifiers, resolveComponent, resolveDirective, vShow, Transition } from "vue";
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __publicField = (obj, key, value) => {
21
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
22
+ return value;
23
+ };
24
+ import { defineComponent, ref, createVNode, h, render, computed, nextTick, unref, watch, onUnmounted, mergeProps, reactive, getCurrentInstance, withDirectives, withModifiers, resolveComponent, Teleport, Transition, vShow, resolveDirective } from "vue";
25
+ import { offset, autoPlacement, arrow, shift, computePosition } from "@floating-ui/dom";
18
26
  const editableSelectProps = {
19
- appendToBody: {
20
- type: Boolean
27
+ modelValue: {
28
+ type: String,
29
+ default: ""
21
30
  },
22
31
  options: {
23
32
  type: Array,
24
33
  default: () => []
25
34
  },
26
- disabled: {
27
- type: Boolean
35
+ allowClear: {
36
+ type: Boolean,
37
+ default: false
28
38
  },
29
- loading: {
39
+ disabled: {
30
40
  type: Boolean
31
41
  },
32
- optionDisabledKey: {
42
+ disabledKey: {
33
43
  type: String,
34
44
  default: ""
35
45
  },
@@ -37,20 +47,24 @@ const editableSelectProps = {
37
47
  type: String,
38
48
  default: "Search"
39
49
  },
40
- modelValue: {
41
- type: String
42
- },
43
50
  width: {
44
51
  type: Number
45
52
  },
46
53
  maxHeight: {
47
54
  type: Number
48
55
  },
49
- filterOption: {
50
- type: [Function, Boolean]
56
+ loading: {
57
+ type: Boolean
51
58
  },
52
- loadMore: {
59
+ enableLazyLoad: {
60
+ type: Boolean,
61
+ default: false
62
+ },
63
+ searchFn: {
53
64
  type: Function
65
+ },
66
+ filterOption: {
67
+ type: [Function, Boolean]
54
68
  }
55
69
  };
56
70
  const inBrowser = typeof window !== "undefined";
@@ -108,6 +122,234 @@ const clickoutsideDirective = {
108
122
  delete el[ctx];
109
123
  }
110
124
  };
125
+ class View {
126
+ constructor() {
127
+ __publicField(this, "top", "50%");
128
+ __publicField(this, "left", "50%");
129
+ }
130
+ }
131
+ const loadingProps = {
132
+ message: String,
133
+ backdrop: Boolean,
134
+ view: {
135
+ type: Object,
136
+ default: () => new View()
137
+ },
138
+ zIndex: Number,
139
+ isFull: {
140
+ type: Boolean,
141
+ default: false
142
+ }
143
+ };
144
+ class LoadingOptions {
145
+ constructor() {
146
+ __publicField(this, "target");
147
+ __publicField(this, "message");
148
+ __publicField(this, "loadingTemplateRef");
149
+ __publicField(this, "backdrop", true);
150
+ __publicField(this, "positionType", "relative");
151
+ __publicField(this, "view", new View());
152
+ __publicField(this, "zIndex");
153
+ }
154
+ }
155
+ function createBem(namespace, element, modifier) {
156
+ let cls = namespace;
157
+ if (element) {
158
+ cls += `__${element}`;
159
+ }
160
+ if (modifier) {
161
+ cls += `--${modifier}`;
162
+ }
163
+ return cls;
164
+ }
165
+ function useNamespace(block, needDot = false) {
166
+ const namespace = needDot ? `.devui-${block}` : `devui-${block}`;
167
+ const b = () => createBem(namespace);
168
+ const e = (element) => element ? createBem(namespace, element) : "";
169
+ const m = (modifier) => modifier ? createBem(namespace, "", modifier) : "";
170
+ const em = (element, modifier) => element && modifier ? createBem(namespace, element, modifier) : "";
171
+ return {
172
+ b,
173
+ e,
174
+ m,
175
+ em
176
+ };
177
+ }
178
+ var loading = "";
179
+ var Loading = defineComponent({
180
+ name: "DLoading",
181
+ inheritAttrs: false,
182
+ props: loadingProps,
183
+ setup(props) {
184
+ const style = {
185
+ top: props.view.top,
186
+ left: props.view.left,
187
+ zIndex: props.zIndex
188
+ };
189
+ if (!props.message) {
190
+ style.background = "none";
191
+ }
192
+ const isShow = ref(false);
193
+ const open = () => {
194
+ isShow.value = true;
195
+ };
196
+ const close = () => {
197
+ isShow.value = false;
198
+ };
199
+ return {
200
+ style,
201
+ isShow,
202
+ open,
203
+ close
204
+ };
205
+ },
206
+ render() {
207
+ var _a;
208
+ const {
209
+ isShow,
210
+ isFull,
211
+ backdrop,
212
+ style,
213
+ message,
214
+ $slots
215
+ } = this;
216
+ const ns = useNamespace("loading");
217
+ return isShow && createVNode("div", {
218
+ "class": [ns.b(), isFull ? ns.m("full") : ""]
219
+ }, [((_a = $slots.default) == null ? void 0 : _a.call($slots)) || createVNode("div", {
220
+ "class": ns.e("wrapper")
221
+ }, [backdrop ? createVNode("div", {
222
+ "class": ns.e("mask")
223
+ }, null) : null, createVNode("div", {
224
+ "style": style,
225
+ "class": ns.e("area")
226
+ }, [createVNode("div", {
227
+ "class": ns.e("busy-default-spinner")
228
+ }, [createVNode("div", {
229
+ "class": ns.e("bar1")
230
+ }, null), createVNode("div", {
231
+ "class": ns.e("bar2")
232
+ }, null), createVNode("div", {
233
+ "class": ns.e("bar3")
234
+ }, null), createVNode("div", {
235
+ "class": ns.e("bar4")
236
+ }, null)]), message ? createVNode("span", {
237
+ "class": ns.e("text")
238
+ }, [message]) : null])])]);
239
+ }
240
+ });
241
+ const COMPONENT_CONTAINER_SYMBOL = Symbol("dev_component_container");
242
+ function createComponent(component, props, children = null) {
243
+ const vnode = h(component, __spreadValues({}, props), children);
244
+ const container = document.createElement("div");
245
+ vnode[COMPONENT_CONTAINER_SYMBOL] = container;
246
+ render(vnode, container);
247
+ return vnode.component;
248
+ }
249
+ function unmountComponent(ComponnetInstance) {
250
+ render(null, ComponnetInstance == null ? void 0 : ComponnetInstance.vnode[COMPONENT_CONTAINER_SYMBOL]);
251
+ }
252
+ const loadingConstructor = defineComponent(Loading);
253
+ const cacheInstance = /* @__PURE__ */ new WeakSet();
254
+ const isEmpty = (val) => {
255
+ if (!val) {
256
+ return true;
257
+ }
258
+ if (Array.isArray(val)) {
259
+ return val.length === 0;
260
+ }
261
+ if (val instanceof Set || val instanceof Map) {
262
+ return val.size === 0;
263
+ }
264
+ if (val instanceof Promise) {
265
+ return false;
266
+ }
267
+ if (typeof val === "object") {
268
+ try {
269
+ return Object.keys(val).length === 0;
270
+ } catch (e) {
271
+ return false;
272
+ }
273
+ }
274
+ return false;
275
+ };
276
+ const getType = (vari) => {
277
+ return Object.prototype.toString.call(vari).slice(8, -1).toLowerCase();
278
+ };
279
+ const isPromise = (value) => {
280
+ const type = getType(value);
281
+ switch (type) {
282
+ case "promise":
283
+ return [value];
284
+ case "array":
285
+ if (value.some((val) => getType(val) !== "promise")) {
286
+ console.error(new TypeError("Binding values should all be of type Promise"));
287
+ return "error";
288
+ }
289
+ return value;
290
+ default:
291
+ return false;
292
+ }
293
+ };
294
+ const unmount = (el) => {
295
+ cacheInstance.delete(el);
296
+ el.instance.proxy.close();
297
+ unmountComponent(el.instance);
298
+ };
299
+ const toggleLoading = (el, binding) => {
300
+ var _a, _b, _c;
301
+ if (binding.value) {
302
+ const vals = isPromise(binding.value);
303
+ if (vals === "error") {
304
+ return;
305
+ }
306
+ (_c = (_b = (_a = el == null ? void 0 : el.instance) == null ? void 0 : _a.proxy) == null ? void 0 : _b.open) == null ? void 0 : _c.call(_b);
307
+ el.appendChild(el.mask);
308
+ cacheInstance.add(el);
309
+ if (vals) {
310
+ Promise.all(vals).catch((err) => {
311
+ console.error(new Error("Promise handling errors"), err);
312
+ }).finally(() => {
313
+ unmount(el);
314
+ });
315
+ }
316
+ } else {
317
+ unmount(el);
318
+ }
319
+ };
320
+ const removeAttribute = (el) => {
321
+ el.removeAttribute("zindex");
322
+ el.removeAttribute("positiontype");
323
+ el.removeAttribute("backdrop");
324
+ el.removeAttribute("message");
325
+ el.removeAttribute("view");
326
+ el.removeAttribute("loadingtemplateref");
327
+ };
328
+ const handleProps = (el, vprops) => {
329
+ var _a;
330
+ const props = __spreadValues(__spreadValues({}, new LoadingOptions()), vprops);
331
+ const loadingTemplateRef = props.loadingTemplateRef;
332
+ const loadingInstance = createComponent(loadingConstructor, __spreadValues({}, props), loadingTemplateRef ? () => loadingTemplateRef : null);
333
+ el.style.position = props.positionType;
334
+ el.options = props;
335
+ el.instance = loadingInstance;
336
+ el.mask = (_a = loadingInstance == null ? void 0 : loadingInstance.proxy) == null ? void 0 : _a.$el;
337
+ };
338
+ const loadingDirective = {
339
+ mounted: function(el, binding, vnode) {
340
+ handleProps(el, vnode.props);
341
+ removeAttribute(el);
342
+ !isEmpty(binding.value) && toggleLoading(el, binding);
343
+ },
344
+ updated: function(el, binding, vnode) {
345
+ if (!isEmpty(binding.value) && cacheInstance.has(el) || isEmpty(binding.value) && !cacheInstance.has(el)) {
346
+ return;
347
+ }
348
+ !cacheInstance.has(el) && handleProps(el, vnode.props);
349
+ removeAttribute(el);
350
+ toggleLoading(el, binding);
351
+ }
352
+ };
111
353
  function className(classStr, classOpt) {
112
354
  let classname = classStr;
113
355
  if (typeof classOpt === "object") {
@@ -118,21 +360,38 @@ function className(classStr, classOpt) {
118
360
  return classname;
119
361
  }
120
362
  var editableSelect = "";
121
- const getFilterFunc = () => (val, option) => option.label.toLocaleLowerCase().indexOf(val.toLocaleLowerCase()) > -1;
122
- const userFilterOptions = (normalizeOptions, inputValue, filterOption) => computed(() => {
123
- const filteredOptions = [];
124
- if (!inputValue.value || filterOption === false) {
125
- return normalizeOptions.value;
126
- }
127
- const filterFunc = typeof filterOption === "function" ? filterOption : getFilterFunc();
128
- normalizeOptions.value.forEach((option) => {
129
- if (filterFunc(inputValue.value, option)) {
130
- filteredOptions.push(option);
363
+ function useSelect(props) {
364
+ const normalizeOptions = computed(() => {
365
+ return props.options.map((option) => {
366
+ let res;
367
+ if (option !== "null" && typeof option === "object") {
368
+ res = __spreadProps(__spreadValues({}, option), {
369
+ label: option.label || "",
370
+ value: option.value !== void 0 ? option.value : option.label || ""
371
+ });
372
+ } else {
373
+ res = {
374
+ label: String(option),
375
+ value: option
376
+ };
377
+ }
378
+ return res;
379
+ });
380
+ });
381
+ return { normalizeOptions };
382
+ }
383
+ function useFilterOptions(enableLazyLoad, normalizeOptions, inputValue, searchFn) {
384
+ const filteredOptions = computed(() => {
385
+ if (!inputValue.value || enableLazyLoad) {
386
+ return normalizeOptions.value;
131
387
  }
388
+ return normalizeOptions.value.filter((option) => {
389
+ return searchFn(option, inputValue.value);
390
+ });
132
391
  });
133
- return filteredOptions;
134
- });
135
- const useInput = (inputValue, ctx2) => {
392
+ return { filteredOptions };
393
+ }
394
+ function useInput(inputValue, ctx2) {
136
395
  const onInputChange = (value) => {
137
396
  ctx2.emit("search", value);
138
397
  };
@@ -144,18 +403,22 @@ const useInput = (inputValue, ctx2) => {
144
403
  return {
145
404
  handleInput
146
405
  };
147
- };
148
- const useLazyLoad = (dropdownRef, inputValue, filterOtion, load) => {
406
+ }
407
+ function useLazyLoad(dropdownRef, enableLazyLoad, ctx2) {
149
408
  const loadMore = () => {
150
- if (filterOtion !== false)
409
+ const dropdownVal = dropdownRef.value;
410
+ if (!enableLazyLoad) {
151
411
  return;
152
- if (dropdownRef.value.clientHeight + dropdownRef.value.scrollTop >= dropdownRef.value.scrollHeight) {
153
- load(inputValue.value);
412
+ }
413
+ if (dropdownVal.clientHeight + dropdownVal.scrollTop >= dropdownVal.scrollHeight) {
414
+ ctx2.emit("loadMore");
154
415
  }
155
416
  };
156
417
  return { loadMore };
157
- };
158
- const useKeyboardSelect = (dropdownRef, disabled, visible, hoverIndex, selectedIndex, options, toggleMenu, closeMenu, handleClick) => {
418
+ }
419
+ function useKeyboardSelect(dropdownRef, visible, inputValue, cacheInput, filteredOptions, optionDisabledKey, filterOption, loading2, handleClick, closeMenu, toggleMenu) {
420
+ const hoverIndex = ref(0);
421
+ const selectedIndex = ref(0);
159
422
  const updateHoveringIndex = (index2) => {
160
423
  hoverIndex.value = index2;
161
424
  };
@@ -174,184 +437,451 @@ const useKeyboardSelect = (dropdownRef, disabled, visible, hoverIndex, selectedI
174
437
  }
175
438
  });
176
439
  };
177
- const onKeyboardNavigation = (direction, newIndex) => {
178
- if (!newIndex) {
179
- newIndex = hoverIndex.value;
440
+ const handleEscape = () => {
441
+ inputValue.value = cacheInput.value;
442
+ closeMenu();
443
+ };
444
+ const handleEnter = () => {
445
+ const len = filteredOptions.value.length;
446
+ if (!visible.value || !len) {
447
+ return toggleMenu();
448
+ }
449
+ len && len === 1 ? handleClick(filteredOptions.value[0], 1) : handleClick(filteredOptions.value[hoverIndex.value], hoverIndex.value);
450
+ return closeMenu();
451
+ };
452
+ const handleKeyboardNavigation = (direction) => {
453
+ const len = filteredOptions.value.length;
454
+ if (!len || len === 1) {
455
+ return;
180
456
  }
181
- if (!["ArrowDown", "ArrowUp"].includes(direction))
457
+ if (!["ArrowDown", "ArrowUp"].includes(direction)) {
182
458
  return;
459
+ }
460
+ if (filterOption === false && loading2.value) {
461
+ return;
462
+ }
463
+ let newIndex = 0;
464
+ newIndex = hoverIndex.value;
183
465
  if (direction === "ArrowUp") {
184
- if (newIndex === 0) {
185
- newIndex = options.value.length - 1;
186
- scrollToItem(newIndex);
187
- updateHoveringIndex(newIndex);
188
- return;
466
+ newIndex -= 1;
467
+ if (newIndex === -1) {
468
+ newIndex = len - 1;
189
469
  }
190
- newIndex = newIndex - 1;
191
470
  } else if (direction === "ArrowDown") {
192
- if (newIndex === options.value.length - 1) {
471
+ newIndex += 1;
472
+ if (newIndex === len) {
193
473
  newIndex = 0;
194
- scrollToItem(newIndex);
195
- updateHoveringIndex(newIndex);
196
- return;
197
474
  }
198
- newIndex = newIndex + 1;
199
475
  }
200
- const option = options.value[newIndex];
201
- if (option[disabled]) {
202
- return onKeyboardNavigation(direction, newIndex);
476
+ hoverIndex.value = newIndex;
477
+ const option = filteredOptions.value[newIndex];
478
+ if (option[optionDisabledKey]) {
479
+ return handleKeyboardNavigation(direction);
203
480
  }
204
- scrollToItem(newIndex);
205
481
  updateHoveringIndex(newIndex);
482
+ scrollToItem(newIndex);
206
483
  };
207
484
  const handleKeydown = (event) => {
208
485
  const keyCode = event.key || event.code;
209
- if (options.value.length === 0)
210
- return;
211
- if (!visible.value) {
212
- return toggleMenu();
213
- }
214
- const onKeydownEnter = () => {
215
- handleClick(options.value[hoverIndex.value]);
216
- closeMenu();
217
- };
218
- const onKeydownEsc = () => {
219
- closeMenu();
220
- };
221
486
  switch (keyCode) {
222
- case "Enter":
223
- onKeydownEnter();
224
- break;
225
487
  case "Escape":
226
- onKeydownEsc();
488
+ handleEscape();
489
+ break;
490
+ case "Enter":
491
+ handleEnter();
227
492
  break;
228
493
  default:
229
- onKeyboardNavigation(keyCode);
494
+ handleKeyboardNavigation(keyCode);
230
495
  }
231
496
  };
497
+ return { handleKeydown, hoverIndex, selectedIndex };
498
+ }
499
+ const flexibleOverlayProps = {
500
+ modelValue: {
501
+ type: Boolean,
502
+ default: false
503
+ },
504
+ origin: {
505
+ type: Object,
506
+ require: true
507
+ },
508
+ position: {
509
+ type: Array,
510
+ default: ["bottom"]
511
+ },
512
+ offset: {
513
+ type: [Number, Object],
514
+ default: 8
515
+ },
516
+ shiftOffset: {
517
+ type: Number
518
+ },
519
+ align: {
520
+ type: String,
521
+ default: null
522
+ },
523
+ showArrow: {
524
+ type: Boolean,
525
+ default: false
526
+ },
527
+ isArrowCenter: {
528
+ type: Boolean,
529
+ default: true
530
+ }
531
+ };
532
+ function getScrollParent(element) {
533
+ const overflowRegex = /(auto|scroll|hidden)/;
534
+ for (let parent = element; parent = parent.parentElement; parent.parentElement !== document.body) {
535
+ const style = window.getComputedStyle(parent);
536
+ if (overflowRegex.test(style.overflow + style.overflowX + style.overflowY)) {
537
+ return parent;
538
+ }
539
+ }
540
+ return window;
541
+ }
542
+ function adjustArrowPosition(isArrowCenter, point, placement, originRect) {
543
+ let { x, y } = point;
544
+ if (!isArrowCenter) {
545
+ const { width, height } = originRect;
546
+ if (x && placement.includes("start")) {
547
+ x = 12;
548
+ }
549
+ if (x && placement.includes("end")) {
550
+ x = Math.round(width - 24);
551
+ }
552
+ if (y && placement.includes("start")) {
553
+ y = 10;
554
+ }
555
+ if (y && placement.includes("end")) {
556
+ y = height - 14;
557
+ }
558
+ }
559
+ return { x, y };
560
+ }
561
+ function useOverlay(props, emit) {
562
+ const overlayRef = ref();
563
+ const arrowRef = ref();
564
+ let originParent = null;
565
+ const updateArrowPosition = (arrowEl, placement, point, overlayEl) => {
566
+ const { x, y } = adjustArrowPosition(props.isArrowCenter, point, placement, overlayEl.getBoundingClientRect());
567
+ const staticSide = {
568
+ top: "bottom",
569
+ right: "left",
570
+ bottom: "top",
571
+ left: "right"
572
+ }[placement.split("-")[0]];
573
+ Object.assign(arrowEl.style, {
574
+ left: x ? `${x}px` : "",
575
+ top: y ? `${y}px` : "",
576
+ right: "",
577
+ bottom: "",
578
+ [staticSide]: "-4px"
579
+ });
580
+ };
581
+ const updatePosition = async () => {
582
+ const hostEl = props.origin;
583
+ const overlayEl = unref(overlayRef.value);
584
+ const arrowEl = unref(arrowRef.value);
585
+ const middleware = [
586
+ offset(props.offset),
587
+ autoPlacement({
588
+ alignment: props.align,
589
+ allowedPlacements: props.position
590
+ })
591
+ ];
592
+ props.showArrow && middleware.push(arrow({ element: arrowEl }));
593
+ props.shiftOffset !== void 0 && middleware.push(shift());
594
+ const { x, y, placement, middlewareData } = await computePosition(hostEl, overlayEl, {
595
+ strategy: "fixed",
596
+ middleware
597
+ });
598
+ let applyX = x;
599
+ let applyY = y;
600
+ if (props.shiftOffset !== void 0) {
601
+ const { x: shiftX, y: shiftY } = middlewareData.shift;
602
+ shiftX < 0 && (applyX -= props.shiftOffset);
603
+ shiftX > 0 && (applyX += props.shiftOffset);
604
+ shiftY < 0 && (applyY -= props.shiftOffset);
605
+ shiftY > 0 && (applyY += props.shiftOffset);
606
+ }
607
+ emit("positionChange", placement);
608
+ Object.assign(overlayEl.style, { top: `${applyY}px`, left: `${applyX}px` });
609
+ props.showArrow && updateArrowPosition(arrowEl, placement, middlewareData.arrow, overlayEl);
610
+ };
611
+ watch(() => props.modelValue, () => {
612
+ if (props.modelValue && props.origin) {
613
+ originParent = getScrollParent(props.origin);
614
+ nextTick(updatePosition);
615
+ originParent == null ? void 0 : originParent.addEventListener("scroll", updatePosition);
616
+ originParent !== window && window.addEventListener("scroll", updatePosition);
617
+ window.addEventListener("resize", updatePosition);
618
+ } else {
619
+ originParent == null ? void 0 : originParent.removeEventListener("scroll", updatePosition);
620
+ originParent !== window && window.removeEventListener("scroll", updatePosition);
621
+ window.removeEventListener("resize", updatePosition);
622
+ }
623
+ });
624
+ onUnmounted(() => {
625
+ originParent == null ? void 0 : originParent.removeEventListener("scroll", updatePosition);
626
+ originParent !== window && window.removeEventListener("scroll", updatePosition);
627
+ window.removeEventListener("resize", updatePosition);
628
+ });
629
+ return { arrowRef, overlayRef, updatePosition };
630
+ }
631
+ var flexibleOverlay = "";
632
+ const FlexibleOverlay = defineComponent({
633
+ name: "DFlexibleOverlay",
634
+ inheritAttrs: false,
635
+ props: flexibleOverlayProps,
636
+ emits: ["update:modelValue", "positionChange"],
637
+ setup(props, {
638
+ slots,
639
+ attrs,
640
+ emit,
641
+ expose
642
+ }) {
643
+ const ns = useNamespace("flexible-overlay");
644
+ const {
645
+ arrowRef,
646
+ overlayRef,
647
+ updatePosition
648
+ } = useOverlay(props, emit);
649
+ expose({
650
+ updatePosition
651
+ });
652
+ return () => {
653
+ var _a;
654
+ return props.modelValue && createVNode("div", mergeProps({
655
+ "ref": overlayRef,
656
+ "class": ns.b()
657
+ }, attrs), [(_a = slots.default) == null ? void 0 : _a.call(slots), props.showArrow && createVNode("div", {
658
+ "ref": arrowRef,
659
+ "class": ns.e("arrow")
660
+ }, null)]);
661
+ };
662
+ }
663
+ });
664
+ function useCacheFilteredOptions(filteredOptions) {
665
+ const cacheFilteredOptions = computed(() => {
666
+ const map = /* @__PURE__ */ new Map();
667
+ filteredOptions.value.forEach((item) => {
668
+ map.set(item, item.value);
669
+ });
670
+ return map;
671
+ });
672
+ const getOptionValue = (option) => cacheFilteredOptions.value.get(option);
232
673
  return {
233
- handleKeydown
674
+ getOptionValue
234
675
  };
676
+ }
677
+ function deepAssign(...objects) {
678
+ const isObject = (obj) => obj && typeof obj === "object";
679
+ return objects.reduce((prev, from) => {
680
+ Object.keys(from).forEach((key) => {
681
+ const pVal = prev[key];
682
+ const oVal = from[key];
683
+ if (Array.isArray(pVal) && Array.isArray(oVal)) {
684
+ prev[key] = Array.from(/* @__PURE__ */ new Set([...oVal, ...pVal]));
685
+ } else if (isObject(pVal) && isObject(oVal)) {
686
+ prev[key] = deepAssign(pVal, oVal);
687
+ } else {
688
+ prev[key] = oVal;
689
+ }
690
+ });
691
+ return prev;
692
+ }, {});
693
+ }
694
+ var zhCN = {
695
+ pagination: {
696
+ totalItemText: "\u6240\u6709\u6761\u76EE",
697
+ goToText: "\u8DF3\u81F3"
698
+ },
699
+ accordion: {
700
+ loading: "\u52A0\u8F7D\u4E2D",
701
+ noData: "\u6CA1\u6709\u6570\u636E"
702
+ },
703
+ autoCompleteDropdown: {
704
+ latestInput: "\u6700\u8FD1\u8F93\u5165"
705
+ },
706
+ cascaderList: {
707
+ noData: "\u6CA1\u6709\u6570\u636E"
708
+ },
709
+ colorPicker: {
710
+ foundationPanel: "\u57FA\u7840\u9762\u677F",
711
+ advancedPanel: "\u9AD8\u7EA7\u9762\u677F"
712
+ },
713
+ datePickerPro: {
714
+ ok: "\u786E\u5B9A",
715
+ placeholder: "\u8BF7\u9009\u62E9\u65E5\u671F",
716
+ month1: "1\u6708",
717
+ month2: "2\u6708",
718
+ month3: "3\u6708",
719
+ month4: "4\u6708",
720
+ month5: "5\u6708",
721
+ month6: "6\u6708",
722
+ month7: "7\u6708",
723
+ month8: "8\u6708",
724
+ month9: "9\u6708",
725
+ month10: "10\u6708",
726
+ month11: "11\u6708",
727
+ month12: "12\u6708",
728
+ year: "\u5E74",
729
+ startPlaceholder: "\u8BF7\u9009\u62E9\u5F00\u59CB\u65E5\u671F",
730
+ endPlaceholder: "\u8BF7\u9009\u62E9\u7ED3\u675F\u65E5\u671F",
731
+ getWeekDays() {
732
+ return ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"];
733
+ },
734
+ getTimeArr() {
735
+ return ["\u65F6", "\u5206", "\u79D2"];
736
+ },
737
+ getYearMonthStr(year, month) {
738
+ return `${year}\u5E74${month}\u6708`;
739
+ }
740
+ },
741
+ editableSelect: {
742
+ noRelatedRecords: "\u627E\u4E0D\u5230\u76F8\u5173\u8BB0\u5F55",
743
+ noData: "\u6CA1\u6709\u6570\u636E"
744
+ },
745
+ input: {
746
+ placeholder: "\u8BF7\u8F93\u5165"
747
+ },
748
+ splitterBar: {
749
+ collapse: "\u6536\u8D77",
750
+ expand: "\u5C55\u5F00"
751
+ },
752
+ stepsGuide: {
753
+ previous: "\u4E0A\u4E00\u6B65",
754
+ continue: "\u6211\u77E5\u9053\u5566\uFF0C\u7EE7\u7EED",
755
+ ok: "\u6211\u77E5\u9053\u5566"
756
+ },
757
+ table: {
758
+ selectAll: "\u5168\u9009",
759
+ ok: "\u786E\u5B9A"
760
+ },
761
+ timePopup: {
762
+ ok: "\u786E\u5B9A"
763
+ },
764
+ transfer: {
765
+ unit: "\u9879",
766
+ panelUnit: "\u9879",
767
+ headerUnit: "\u9879",
768
+ noData: "\u6682\u65E0\u6570\u636E",
769
+ placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22"
770
+ },
771
+ tree: {
772
+ loading: "\u52A0\u8F7D\u4E2D",
773
+ newNode: "\u65B0\u8282\u70B9",
774
+ selectPlaceholder: "\u8BF7\u9009\u62E9"
775
+ },
776
+ upload: {
777
+ placeholder: "\u9009\u62E9\u6587\u4EF6",
778
+ getExistSameNameFilesMsg(sameNames) {
779
+ return `\u60A8\u4E0A\u4F20\u7684 "${sameNames}" \u5B58\u5728\u91CD\u540D\u6587\u4EF6, \u8BF7\u91CD\u65B0\u9009\u62E9\u6587\u4EF6`;
780
+ },
781
+ getAllFilesBeyondMaximalFileSizeMsg(maximalSize) {
782
+ return `\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`;
783
+ },
784
+ getBeyondMaximalFileSizeMsg(filename, maximalSize) {
785
+ 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`;
786
+ },
787
+ getNotAllowedFileTypeMsg(filename, scope) {
788
+ 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`;
789
+ }
790
+ },
791
+ search: {
792
+ placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u5B57"
793
+ },
794
+ select: {
795
+ placeholder: "\u8BF7\u9009\u62E9",
796
+ noDataText: "\u65E0\u6570\u636E",
797
+ noMatchText: "\u627E\u4E0D\u5230\u76F8\u5173\u8BB0\u5F55",
798
+ loadingText: "\u52A0\u8F7D\u4E2D..."
799
+ },
800
+ tagInput: {
801
+ maxTagsText: "\u5DF2\u8FBE\u5230\u6700\u5927\u4E2A\u6570\uFF1A"
802
+ },
803
+ timeSelect: {
804
+ placeholder: "\u8BF7\u9009\u62E9\u65F6\u95F4"
805
+ }
235
806
  };
807
+ const lang = ref("zh-CN");
808
+ let langMessages = reactive({
809
+ [lang.value]: zhCN
810
+ });
811
+ const Locale = {
812
+ messages() {
813
+ return langMessages[lang.value];
814
+ },
815
+ lang() {
816
+ return lang.value;
817
+ },
818
+ use(newLang, newMessages) {
819
+ lang.value = newLang;
820
+ this.add({ [newLang]: newMessages });
821
+ },
822
+ add(newMessages = {}) {
823
+ langMessages = deepAssign(langMessages, newMessages);
824
+ }
825
+ };
826
+ const camelize = (name) => name.substring(1).replace(/^\S/, (s) => s.toLocaleLowerCase());
827
+ function get(object, path) {
828
+ const keys = path.split(".");
829
+ let result = object;
830
+ keys.forEach((key) => {
831
+ var _a;
832
+ result = (_a = result[key]) != null ? _a : "";
833
+ });
834
+ return result;
835
+ }
836
+ function createI18nTranslate(name, app, newPrefix) {
837
+ const prefix = newPrefix || camelize(name) + ".";
838
+ return (path) => {
839
+ var _a;
840
+ const messages = ((_a = app == null ? void 0 : app.appContext.config.globalProperties.langMessages) == null ? void 0 : _a.value) || Locale.messages();
841
+ const message = get(messages, prefix + path) || get(messages, path);
842
+ return message;
843
+ };
844
+ }
236
845
  var EditableSelect = defineComponent({
237
846
  name: "DEditableSelect",
238
847
  directives: {
239
- clickOutside: clickoutsideDirective
848
+ clickOutside: clickoutsideDirective,
849
+ dLoading: loadingDirective
240
850
  },
241
851
  props: editableSelectProps,
242
852
  emits: ["update:modelValue", "search", "loadMore"],
243
853
  setup(props, ctx2) {
244
- const getItemCls = (option, index2) => {
245
- const {
246
- optionDisabledKey: disabledKey
247
- } = props;
248
- return className("devui-dropdown-item", {
249
- disabled: disabledKey ? !!option[disabledKey] : false,
250
- selected: index2 === selectIndex.value,
251
- "devui-dropdown-bg": index2 === hoverIndex.value
252
- });
253
- };
254
- const renderDropdown = () => {
255
- if (props.appendToBody) {
256
- return createVNode(resolveComponent("d-flexible-overlay"), {
257
- "origin": origin,
258
- "visible": visible.value,
259
- "onUpdate:visible": ($event) => visible.value = $event,
260
- "position": position,
261
- "hasBackdrop": false
262
- }, {
263
- default: () => [createVNode("div", {
264
- "class": "devui-editable-select-dropdown",
265
- "style": {
266
- width: props.width + "px"
267
- }
268
- }, [withDirectives(createVNode("div", {
269
- "class": "devui-dropdown-menu"
270
- }, [createVNode("ul", {
271
- "ref": dopdownRef,
272
- "class": "devui-list-unstyled scroll-height",
273
- "style": {
274
- maxHeight: props.maxHeight + "px"
275
- },
276
- "onScroll": loadMore
277
- }, [filteredOptions.value.map((option, index2) => {
278
- return createVNode("li", {
279
- "class": getItemCls(option, index2),
280
- "onClick": (e) => {
281
- e.stopPropagation();
282
- handleClick(option);
283
- }
284
- }, [ctx2.slots.itemTemplate ? ctx2.slots.itemTemplate(option) : option.label]);
285
- }), withDirectives(createVNode("li", {
286
- "class": "devui-no-result-template"
287
- }, [createVNode("div", {
288
- "class": "devui-no-data-tip"
289
- }, [emptyText.value])]), [[vShow, !filteredOptions.value.length]])])]), [[resolveDirective("dLoading"), props.loading], [vShow, visible.value]])])]
290
- });
291
- } else {
292
- return createVNode(Transition, {
293
- "name": "fade"
294
- }, {
295
- default: () => [withDirectives(createVNode("div", {
296
- "class": "devui-dropdown-menu"
297
- }, [createVNode("ul", {
298
- "ref": dopdownRef,
299
- "class": "devui-list-unstyled scroll-height",
300
- "style": {
301
- maxHeight: props.maxHeight + "px"
302
- },
303
- "onScroll": loadMore
304
- }, [filteredOptions.value.map((option, index2) => {
305
- return createVNode("li", {
306
- "class": getItemCls(option, index2),
307
- "onClick": (e) => {
308
- e.stopPropagation();
309
- handleClick(option);
310
- }
311
- }, [ctx2.slots.itemTemplate ? ctx2.slots.itemTemplate(option) : option.label]);
312
- }), withDirectives(createVNode("li", {
313
- "class": "devui-no-result-template"
314
- }, [createVNode("div", {
315
- "class": "devui-no-data-tip"
316
- }, [emptyText.value])]), [[vShow, !filteredOptions.value.length]])])]), [[vShow, visible.value]])]
317
- });
318
- }
319
- };
320
- const dopdownRef = ref();
854
+ const app = getCurrentInstance();
855
+ const t = createI18nTranslate("DEditableSelect", app);
856
+ const ns = useNamespace("editable-select");
857
+ const dropdownRef = ref();
321
858
  const origin = ref();
322
- const position = reactive({
323
- originX: "left",
324
- originY: "bottom",
325
- overlayX: "left",
326
- overlayY: "top"
327
- });
859
+ const position = ref(["bottom"]);
328
860
  const visible = ref(false);
329
861
  const inputValue = ref(props.modelValue);
330
- const hoverIndex = ref(0);
331
- const selectIndex = ref(0);
332
- const normalizeOptions = computed(() => {
333
- return props.options.map((option) => {
334
- if (typeof option === "object") {
335
- return __spreadValues({
336
- label: option.label ? option.label : option.value,
337
- value: option.value
338
- }, option);
339
- }
340
- return {
341
- label: option + "",
342
- value: option
343
- };
344
- });
345
- });
346
- const filteredOptions = userFilterOptions(normalizeOptions, inputValue, props.filterOption);
862
+ const cacheInput = ref();
863
+ const loading2 = ref(props.loading);
864
+ const {
865
+ normalizeOptions
866
+ } = useSelect(props);
867
+ const searchFn = props.searchFn || ((option, term) => option.label.toLocaleLowerCase().includes(term.trim().toLocaleLowerCase()));
868
+ const {
869
+ filteredOptions
870
+ } = useFilterOptions(props.enableLazyLoad, normalizeOptions, inputValue, searchFn);
871
+ const {
872
+ getOptionValue
873
+ } = useCacheFilteredOptions(filteredOptions);
347
874
  const emptyText = computed(() => {
348
875
  let text;
349
- if (props.filterOption !== false && !filteredOptions.value.length) {
350
- text = "\u627E\u4E0D\u5230\u76F8\u5173\u8BB0\u5F55";
351
- } else if (props.filterOption === false && !filteredOptions.value.length) {
352
- text = "\u6CA1\u6709\u6570\u636E";
876
+ if (props.enableLazyLoad) {
877
+ text = t("noData");
878
+ } else {
879
+ text = t("noRelatedRecords");
353
880
  }
354
- return ctx2.slots.noResultItemTemplate ? ctx2.slots.noResultItemTemplate() : text;
881
+ return text;
882
+ });
883
+ watch(() => props.loading, (newVal) => {
884
+ loading2.value = newVal;
355
885
  });
356
886
  const toggleMenu = () => {
357
887
  visible.value = !visible.value;
@@ -361,28 +891,48 @@ var EditableSelect = defineComponent({
361
891
  };
362
892
  const {
363
893
  loadMore
364
- } = useLazyLoad(dopdownRef, inputValue, props.filterOption, props.loadMore);
894
+ } = useLazyLoad(dropdownRef, props.enableLazyLoad, ctx2);
365
895
  const {
366
896
  handleInput
367
897
  } = useInput(inputValue, ctx2);
368
- const handleClick = (option) => {
898
+ const handleClick = (option, index2, curSelectedIndex) => {
369
899
  const {
370
- optionDisabledKey: disabledKey
900
+ disabledKey
371
901
  } = props;
372
- if (disabledKey && !!option[disabledKey])
902
+ if (disabledKey && !!option[disabledKey]) {
373
903
  return;
374
- ctx2.emit("update:modelValue", option.label);
904
+ }
905
+ inputValue.value = option.label;
906
+ cacheInput.value = option.label;
907
+ curSelectedIndex.value = index2;
908
+ const value = getOptionValue(option);
909
+ ctx2.emit("update:modelValue", value + "");
375
910
  closeMenu();
376
911
  };
912
+ const handleClear = () => {
913
+ inputValue.value = "";
914
+ };
377
915
  const {
378
- handleKeydown
379
- } = useKeyboardSelect(dopdownRef, props.optionDisabledKey, visible, hoverIndex, selectIndex, filteredOptions, toggleMenu, closeMenu, handleClick);
380
- watch(() => props.modelValue, (newVal) => {
381
- inputValue.value = newVal;
382
- });
916
+ handleKeydown,
917
+ hoverIndex,
918
+ selectedIndex
919
+ } = useKeyboardSelect(dropdownRef, visible, inputValue, cacheInput, filteredOptions, props.disabledKey, props.filterOption, loading2, (option, index2) => handleClick(option, index2, selectedIndex), closeMenu, toggleMenu);
920
+ const getItemCls = (option, index2) => {
921
+ const {
922
+ disabledKey
923
+ } = props;
924
+ return className(`devui-dropdown-item`, {
925
+ disabled: disabledKey ? !!option[disabledKey] : false,
926
+ selected: index2 === selectedIndex.value,
927
+ [`${ns.em("dropdown", "bg")}`]: index2 === hoverIndex.value
928
+ });
929
+ };
383
930
  return () => {
384
- const selectCls = className("devui-editable-select devui-form-group devui-has-feedback", {
385
- "devui-select-open": visible.value === true
931
+ const selectCls = className(`${ns.b()} devui-form-group devui-has-feedback ${inputValue.value && props.allowClear && "allow-clear"}`, {
932
+ [`${ns.m("open")}`]: visible.value === true
933
+ });
934
+ const inputCls = className(`devui-form-control devui-dropdown-origin`, {
935
+ "devui-dropdown-origin-open": visible.value === true
386
936
  });
387
937
  return withDirectives(createVNode("div", {
388
938
  "class": selectCls,
@@ -391,7 +941,7 @@ var EditableSelect = defineComponent({
391
941
  width: props.width + "px"
392
942
  }
393
943
  }, [createVNode("input", {
394
- "class": "devui-form-control devui-dropdown-origin devui-dropdown-origin-open",
944
+ "class": inputCls,
395
945
  "onClick": withModifiers(toggleMenu, ["self"]),
396
946
  "onInput": handleInput,
397
947
  "onKeydown": handleKeydown,
@@ -402,22 +952,63 @@ var EditableSelect = defineComponent({
402
952
  }, null), createVNode("span", {
403
953
  "class": "devui-form-control-feedback"
404
954
  }, [createVNode("span", {
955
+ "class": "devui-select-clear-icon",
956
+ "onClick": handleClear
957
+ }, [createVNode(resolveComponent("d-icon"), {
958
+ "name": "icon-remove"
959
+ }, null)]), createVNode("span", {
405
960
  "class": "devui-select-chevron-icon"
406
961
  }, [createVNode(resolveComponent("d-icon"), {
407
962
  "name": "select-arrow"
408
- }, null)])]), renderDropdown()]), [[resolveDirective("click-outside"), closeMenu]]);
963
+ }, null)])]), createVNode(Teleport, {
964
+ "to": "body"
965
+ }, {
966
+ default: () => [createVNode(Transition, {
967
+ "name": "fade"
968
+ }, {
969
+ default: () => [createVNode(FlexibleOverlay, {
970
+ "origin": origin.value,
971
+ "modelValue": visible.value,
972
+ "onUpdate:modelValue": ($event) => visible.value = $event,
973
+ "position": position.value
974
+ }, {
975
+ default: () => [createVNode("div", {
976
+ "style": {
977
+ width: props.width + "px"
978
+ },
979
+ "class": `${ns.e("menu")}`
980
+ }, [withDirectives(createVNode("div", {
981
+ "class": `devui-dropdown-menu`
982
+ }, [createVNode("ul", {
983
+ "ref": dropdownRef,
984
+ "class": `${ns.em("list", "unstyled")} devui-scrollbar scroll-height`,
985
+ "style": {
986
+ maxHeight: props.maxHeight + "px"
987
+ },
988
+ "onScroll": loadMore
989
+ }, [filteredOptions.value.map((option, index2) => {
990
+ return createVNode("li", {
991
+ "class": getItemCls(option, index2),
992
+ "onClick": (e) => {
993
+ e.stopPropagation();
994
+ handleClick(option, index2, selectedIndex);
995
+ }
996
+ }, [ctx2.slots.item ? ctx2.slots.item(option) : option.label]);
997
+ }), withDirectives(createVNode("div", {
998
+ "class": "devui-no-data-tip"
999
+ }, [ctx2.slots.noResultItem ? ctx2.slots.noResultItem(inputValue.value) : emptyText.value]), [[vShow, !filteredOptions.value.length]])])]), [[vShow, visible.value], [resolveDirective("d-loading"), props.loading]])])]
1000
+ })]
1001
+ })]
1002
+ })]), [[resolveDirective("click-outside"), closeMenu]]);
409
1003
  };
410
1004
  }
411
1005
  });
412
- EditableSelect.install = function(app) {
413
- app.component(EditableSelect.name, EditableSelect);
414
- };
415
1006
  var index = {
416
1007
  title: "EditableSelect \u53EF\u8F93\u5165\u4E0B\u62C9\u9009\u62E9\u6846",
417
1008
  category: "\u6570\u636E\u5F55\u5165",
418
1009
  status: "100%",
419
1010
  install(app) {
420
- app.use(EditableSelect);
1011
+ app.component(EditableSelect.name, EditableSelect);
421
1012
  }
422
1013
  };
423
- export { EditableSelect, index as default };
1014
+ export { EditableSelect, index as default, editableSelectProps };