vue-devui 1.0.0-beta.8 → 1.0.0-rc.0

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 (278) hide show
  1. package/README.md +81 -66
  2. package/accordion/index.es.js +522 -39
  3. package/accordion/index.umd.js +1 -1
  4. package/accordion/style.css +1 -1
  5. package/alert/index.es.js +6 -7
  6. package/alert/index.umd.js +1 -1
  7. package/alert/style.css +1 -1
  8. package/{toast → auto-complete}/index.d.ts +0 -0
  9. package/auto-complete/index.es.js +976 -0
  10. package/auto-complete/index.umd.js +1 -0
  11. package/auto-complete/package.json +7 -0
  12. package/auto-complete/style.css +1 -0
  13. package/back-top/index.es.js +1 -1
  14. package/back-top/index.umd.js +1 -1
  15. package/badge/index.es.js +12 -18
  16. package/badge/index.umd.js +1 -1
  17. package/button/index.es.js +262 -82
  18. package/button/index.umd.js +1 -1
  19. package/button/style.css +1 -1
  20. package/carousel/index.es.js +7 -6
  21. package/carousel/index.umd.js +1 -1
  22. package/cascader/index.es.js +5392 -772
  23. package/cascader/index.umd.js +27 -1
  24. package/checkbox/style.css +1 -1
  25. package/color-picker/index.d.ts +7 -0
  26. package/color-picker/index.es.js +8187 -0
  27. package/color-picker/index.umd.js +27 -0
  28. package/color-picker/package.json +7 -0
  29. package/color-picker/style.css +1 -0
  30. package/comment/index.es.js +42 -13
  31. package/comment/index.umd.js +1 -1
  32. package/comment/style.css +1 -1
  33. package/countdown/index.es.js +27 -18
  34. package/countdown/index.umd.js +1 -1
  35. package/countdown/style.css +1 -1
  36. package/date-picker/index.es.js +10 -11
  37. package/date-picker/index.umd.js +1 -1
  38. package/date-picker/style.css +1 -1
  39. package/dragdrop/index.es.js +135 -10
  40. package/dragdrop/index.umd.js +1 -1
  41. package/drawer/index.es.js +169 -223
  42. package/drawer/index.umd.js +1 -1
  43. package/drawer/style.css +1 -1
  44. package/dropdown/index.es.js +408 -300
  45. package/dropdown/index.umd.js +1 -1
  46. package/dropdown/style.css +1 -1
  47. package/editable-select/index.es.js +275 -5610
  48. package/editable-select/index.umd.js +1 -27
  49. package/editable-select/style.css +1 -1
  50. package/form/index.es.js +6129 -461
  51. package/form/index.umd.js +27 -1
  52. package/form/style.css +1 -1
  53. package/fullscreen/index.es.js +110 -118
  54. package/fullscreen/index.umd.js +1 -1
  55. package/fullscreen/style.css +1 -1
  56. package/gantt/index.es.js +6 -18
  57. package/gantt/index.umd.js +1 -1
  58. package/gantt/style.css +1 -1
  59. package/grid/index.es.js +1 -1
  60. package/grid/style.css +1 -1
  61. package/icon/index.es.js +2 -1
  62. package/icon/index.umd.js +1 -1
  63. package/image-preview/index.es.js +77 -19
  64. package/image-preview/index.umd.js +1 -1
  65. package/image-preview/style.css +1 -1
  66. package/input/index.es.js +4 -5
  67. package/input/index.umd.js +1 -1
  68. package/input/style.css +1 -1
  69. package/input-icon/index.es.js +6 -6
  70. package/input-icon/index.umd.js +1 -1
  71. package/input-icon/style.css +1 -1
  72. package/input-number/index.es.js +2 -1
  73. package/input-number/index.umd.js +1 -1
  74. package/list/index.d.ts +7 -0
  75. package/list/index.es.js +39 -0
  76. package/list/index.umd.js +1 -0
  77. package/{toast → list}/package.json +1 -1
  78. package/list/style.css +1 -0
  79. package/loading/index.es.js +2 -2
  80. package/modal/index.es.js +293 -759
  81. package/modal/index.umd.js +1 -1
  82. package/modal/style.css +1 -1
  83. package/nav-sprite/index.es.js +1 -675
  84. package/nav-sprite/index.umd.js +1 -1
  85. package/notification/index.d.ts +7 -0
  86. package/notification/index.es.js +286 -0
  87. package/notification/index.umd.js +1 -0
  88. package/notification/package.json +7 -0
  89. package/notification/style.css +1 -0
  90. package/nuxt/components/Accordion.js +3 -0
  91. package/nuxt/components/Alert.js +3 -0
  92. package/nuxt/components/Anchor.js +3 -0
  93. package/nuxt/components/Aside.js +3 -0
  94. package/nuxt/components/AutoComplete.js +3 -0
  95. package/nuxt/components/Avatar.js +3 -0
  96. package/nuxt/components/BackTop.js +3 -0
  97. package/nuxt/components/Badge.js +3 -0
  98. package/nuxt/components/Breadcrumb.js +3 -0
  99. package/nuxt/components/Button.js +3 -0
  100. package/nuxt/components/Card.js +3 -0
  101. package/nuxt/components/Carousel.js +3 -0
  102. package/nuxt/components/CarouselItem.js +3 -0
  103. package/nuxt/components/Cascader.js +3 -0
  104. package/nuxt/components/Checkbox.js +3 -0
  105. package/nuxt/components/Col.js +3 -0
  106. package/nuxt/components/ColorPicker.js +3 -0
  107. package/nuxt/components/Column.js +3 -0
  108. package/nuxt/components/Comment.js +3 -0
  109. package/nuxt/components/Content.js +3 -0
  110. package/nuxt/components/Countdown.js +3 -0
  111. package/nuxt/components/DatePicker.js +3 -0
  112. package/nuxt/components/Drawer.js +3 -0
  113. package/nuxt/components/DrawerService.js +3 -0
  114. package/nuxt/components/Dropdown.js +3 -0
  115. package/nuxt/components/DropdownMenu.js +3 -0
  116. package/nuxt/components/EditableSelect.js +3 -0
  117. package/nuxt/components/FixedOverlay.js +3 -0
  118. package/nuxt/components/FlexibleOverlay.js +3 -0
  119. package/nuxt/components/Footer.js +3 -0
  120. package/nuxt/components/Form.js +3 -0
  121. package/nuxt/components/FormControl.js +3 -0
  122. package/nuxt/components/FormItem.js +3 -0
  123. package/nuxt/components/FormLabel.js +3 -0
  124. package/nuxt/components/FormOperation.js +3 -0
  125. package/nuxt/components/Fullscreen.js +3 -0
  126. package/nuxt/components/Gantt.js +3 -0
  127. package/nuxt/components/Header.js +3 -0
  128. package/nuxt/components/IFileOptions.js +3 -0
  129. package/nuxt/components/IUploadOptions.js +3 -0
  130. package/nuxt/components/Icon.js +2 -0
  131. package/nuxt/components/ImagePreviewService.js +3 -0
  132. package/nuxt/components/Input.js +3 -0
  133. package/nuxt/components/InputIcon.js +3 -0
  134. package/nuxt/components/InputNumber.js +3 -0
  135. package/nuxt/components/Layout.js +3 -0
  136. package/nuxt/components/List.js +3 -0
  137. package/nuxt/components/ListItem.js +3 -0
  138. package/nuxt/components/Loading.js +3 -0
  139. package/nuxt/components/LoadingService.js +3 -0
  140. package/nuxt/components/Modal.js +3 -0
  141. package/nuxt/components/NavSprite.js +2 -0
  142. package/nuxt/components/Notification.js +3 -0
  143. package/nuxt/components/NotificationService.js +3 -0
  144. package/nuxt/components/Pagination.js +3 -0
  145. package/nuxt/components/Panel.js +3 -0
  146. package/nuxt/components/Popover.js +3 -0
  147. package/nuxt/components/Progress.js +3 -0
  148. package/nuxt/components/QuadrantDiagram.js +3 -0
  149. package/nuxt/components/Radio.js +3 -0
  150. package/nuxt/components/RadioGroup.js +3 -0
  151. package/nuxt/components/Rate.js +3 -0
  152. package/nuxt/components/ReadTip.js +3 -0
  153. package/nuxt/components/Result.js +3 -0
  154. package/nuxt/components/Row.js +3 -0
  155. package/nuxt/components/Search.js +3 -0
  156. package/nuxt/components/Select.js +3 -0
  157. package/nuxt/components/Skeleton.js +3 -0
  158. package/nuxt/components/SkeletonItem.js +3 -0
  159. package/nuxt/components/Slider.js +3 -0
  160. package/nuxt/components/Splitter.js +3 -0
  161. package/nuxt/components/Statistic.js +3 -0
  162. package/nuxt/components/Status.js +3 -0
  163. package/nuxt/components/StepsGuide.js +3 -0
  164. package/nuxt/components/StickSlider.js +3 -0
  165. package/nuxt/components/Sticky.js +2 -0
  166. package/nuxt/components/Switch.js +3 -0
  167. package/nuxt/components/Table.js +3 -0
  168. package/nuxt/components/Tabs.js +3 -0
  169. package/nuxt/components/Tag.js +3 -0
  170. package/nuxt/components/TagInput.js +3 -0
  171. package/nuxt/components/Textarea.js +3 -0
  172. package/nuxt/components/TimeAxis.js +3 -0
  173. package/nuxt/components/TimeAxisItem.js +3 -0
  174. package/nuxt/components/TimePicker.js +3 -0
  175. package/nuxt/components/Tooltip.js +3 -0
  176. package/nuxt/components/Transfer.js +3 -0
  177. package/nuxt/components/Tree.js +3 -0
  178. package/nuxt/components/TreeSelect.js +3 -0
  179. package/nuxt/components/Upload.js +3 -0
  180. package/nuxt/components/UploadStatus.js +3 -0
  181. package/nuxt/components/badgeProps.js +3 -0
  182. package/nuxt/components/buttonProps.js +3 -0
  183. package/nuxt/components/dropdownMenuProps.js +3 -0
  184. package/nuxt/components/fixedOverlayProps.js +3 -0
  185. package/nuxt/components/flexibleOverlayProps.js +3 -0
  186. package/nuxt/components/notificationProps.js +3 -0
  187. package/nuxt/components/overlayEmits.js +3 -0
  188. package/nuxt/components/overlayProps.js +3 -0
  189. package/nuxt/components/popoverProps.js +3 -0
  190. package/nuxt/components/tooltipProps.js +3 -0
  191. package/nuxt/components/uploadProps.js +3 -0
  192. package/nuxt/index.js +13 -0
  193. package/overlay/index.es.js +142 -198
  194. package/overlay/index.umd.js +1 -1
  195. package/overlay/style.css +1 -1
  196. package/package.json +10 -18
  197. package/pagination/index.es.js +1 -1
  198. package/pagination/style.css +1 -1
  199. package/panel/index.es.js +3 -3
  200. package/panel/index.umd.js +1 -1
  201. package/popover/index.es.js +5947 -189
  202. package/popover/index.umd.js +27 -1
  203. package/popover/style.css +1 -1
  204. package/progress/index.es.js +8 -8
  205. package/progress/index.umd.js +3 -3
  206. package/quadrant-diagram/index.es.js +5405 -166
  207. package/quadrant-diagram/index.umd.js +27 -1
  208. package/radio/index.es.js +5 -5
  209. package/radio/index.umd.js +1 -1
  210. package/radio/style.css +1 -1
  211. package/read-tip/index.es.js +17 -4
  212. package/read-tip/index.umd.js +1 -1
  213. package/read-tip/style.css +1 -1
  214. package/result/index.es.js +2 -1
  215. package/result/index.umd.js +1 -1
  216. package/ripple/index.es.js +1 -1
  217. package/search/index.es.js +5432 -198
  218. package/search/index.umd.js +27 -1
  219. package/search/style.css +1 -1
  220. package/select/index.es.js +3 -2
  221. package/select/index.umd.js +1 -1
  222. package/select/style.css +1 -1
  223. package/slider/index.es.js +2 -5
  224. package/slider/index.umd.js +1 -1
  225. package/slider/style.css +1 -1
  226. package/splitter/index.es.js +5881 -36
  227. package/splitter/index.umd.js +27 -1
  228. package/splitter/style.css +1 -1
  229. package/statistic/index.d.ts +7 -0
  230. package/statistic/index.es.js +267 -0
  231. package/statistic/index.umd.js +1 -0
  232. package/statistic/package.json +7 -0
  233. package/statistic/style.css +1 -0
  234. package/status/index.es.js +1 -1
  235. package/status/index.umd.js +1 -1
  236. package/status/style.css +1 -1
  237. package/steps-guide/index.es.js +8 -6
  238. package/steps-guide/index.umd.js +1 -1
  239. package/sticky/index.umd.js +1 -1
  240. package/style.css +1 -1
  241. package/table/index.es.js +698 -358
  242. package/table/index.umd.js +1 -1
  243. package/table/style.css +1 -1
  244. package/tabs/index.es.js +3 -4
  245. package/tabs/index.umd.js +1 -1
  246. package/tabs/style.css +1 -1
  247. package/tag/index.es.js +2 -2
  248. package/tag/index.umd.js +1 -1
  249. package/tag/style.css +1 -1
  250. package/tag-input/index.es.js +0 -12
  251. package/tag-input/index.umd.js +1 -1
  252. package/textarea/style.css +1 -1
  253. package/{theme → theme/theme.scss} +0 -0
  254. package/time-axis/index.es.js +2 -1
  255. package/time-axis/index.umd.js +1 -1
  256. package/time-picker/index.es.js +269 -84
  257. package/time-picker/index.umd.js +1 -1
  258. package/time-picker/style.css +1 -1
  259. package/tooltip/index.es.js +5798 -141
  260. package/tooltip/index.umd.js +27 -1
  261. package/tooltip/style.css +1 -1
  262. package/transfer/index.es.js +6522 -635
  263. package/transfer/index.umd.js +27 -1
  264. package/transfer/style.css +1 -1
  265. package/tree/index.es.js +5775 -192
  266. package/tree/index.umd.js +27 -1
  267. package/tree/style.css +1 -1
  268. package/tree-select/index.es.js +130 -35
  269. package/tree-select/index.umd.js +1 -1
  270. package/tree-select/style.css +1 -1
  271. package/upload/index.es.js +463 -2680
  272. package/upload/index.umd.js +1 -1
  273. package/upload/style.css +1 -1
  274. package/vue-devui.es.js +14630 -14010
  275. package/vue-devui.umd.js +18 -18
  276. package/toast/index.es.js +0 -2059
  277. package/toast/index.umd.js +0 -1
  278. package/toast/style.css +0 -1
@@ -0,0 +1,3 @@
1
+ import '../../result/style.css'
2
+
3
+ export { Result as default } from '../../result/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../grid/style.css'
2
+
3
+ export { Row as default } from '../../grid/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../search/style.css'
2
+
3
+ export { Search as default } from '../../search/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../select/style.css'
2
+
3
+ export { Select as default } from '../../select/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../skeleton/style.css'
2
+
3
+ export { Skeleton as default } from '../../skeleton/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../skeleton/style.css'
2
+
3
+ export { SkeletonItem as default } from '../../skeleton/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../slider/style.css'
2
+
3
+ export { Slider as default } from '../../slider/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../splitter/style.css'
2
+
3
+ export { Splitter as default } from '../../splitter/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../statistic/style.css'
2
+
3
+ export { Statistic as default } from '../../statistic/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../status/style.css'
2
+
3
+ export { Status as default } from '../../status/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../steps-guide/style.css'
2
+
3
+ export { StepsGuide as default } from '../../steps-guide/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../date-picker/style.css'
2
+
3
+ export { StickSlider as default } from '../../date-picker/index.es.js'
@@ -0,0 +1,2 @@
1
+
2
+ export { Sticky as default } from '../../sticky/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../switch/style.css'
2
+
3
+ export { Switch as default } from '../../switch/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../table/style.css'
2
+
3
+ export { Table as default } from '../../table/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tabs/style.css'
2
+
3
+ export { Tabs as default } from '../../tabs/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tag/style.css'
2
+
3
+ export { Tag as default } from '../../tag/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tag-input/style.css'
2
+
3
+ export { TagInput as default } from '../../tag-input/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../textarea/style.css'
2
+
3
+ export { Textarea as default } from '../../textarea/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../time-axis/style.css'
2
+
3
+ export { TimeAxis as default } from '../../time-axis/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../time-axis/style.css'
2
+
3
+ export { TimeAxisItem as default } from '../../time-axis/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../time-picker/style.css'
2
+
3
+ export { TimePicker as default } from '../../time-picker/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tooltip/style.css'
2
+
3
+ export { Tooltip as default } from '../../tooltip/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../transfer/style.css'
2
+
3
+ export { Transfer as default } from '../../transfer/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tree/style.css'
2
+
3
+ export { Tree as default } from '../../tree/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tree-select/style.css'
2
+
3
+ export { TreeSelect as default } from '../../tree-select/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../upload/style.css'
2
+
3
+ export { Upload as default } from '../../upload/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../upload/style.css'
2
+
3
+ export { UploadStatus as default } from '../../upload/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../badge/style.css'
2
+
3
+ export { badgeProps as default } from '../../badge/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../button/style.css'
2
+
3
+ export { buttonProps as default } from '../../button/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../dropdown/style.css'
2
+
3
+ export { dropdownMenuProps as default } from '../../dropdown/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../overlay/style.css'
2
+
3
+ export { fixedOverlayProps as default } from '../../overlay/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../overlay/style.css'
2
+
3
+ export { flexibleOverlayProps as default } from '../../overlay/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../notification/style.css'
2
+
3
+ export { notificationProps as default } from '../../notification/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../overlay/style.css'
2
+
3
+ export { overlayEmits as default } from '../../overlay/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../overlay/style.css'
2
+
3
+ export { overlayProps as default } from '../../overlay/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../popover/style.css'
2
+
3
+ export { popoverProps as default } from '../../popover/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../tooltip/style.css'
2
+
3
+ export { tooltipProps as default } from '../../tooltip/index.es.js'
@@ -0,0 +1,3 @@
1
+ import '../../upload/style.css'
2
+
3
+ export { uploadProps as default } from '../../upload/index.es.js'
package/nuxt/index.js ADDED
@@ -0,0 +1,13 @@
1
+ import { join } from 'pathe'
2
+ import { defineNuxtModule } from '@nuxt/kit'
3
+
4
+ export default defineNuxtModule({
5
+ hooks: {
6
+ 'components:dirs'(dirs) {
7
+ dirs.push({
8
+ path: join(__dirname,'./components'),
9
+ prefix:'D'
10
+ })
11
+ }
12
+ }
13
+ })
@@ -17,7 +17,8 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { defineComponent, createVNode, Teleport, Transition, renderSlot, isVNode, computed, onMounted, watch, onUnmounted, withDirectives, vShow, ref, reactive, toRef, isRef } from "vue";
20
+ import { defineComponent, createVNode, Teleport, Transition, renderSlot, isVNode, computed, onMounted, watch, onUnmounted, ref, nextTick, unref, mergeProps } from "vue";
21
+ import { offset, autoPlacement, arrow, computePosition } from "@floating-ui/dom";
21
22
  var overlay = "";
22
23
  function _isSlot(s) {
23
24
  return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
@@ -42,9 +43,6 @@ const overlayProps = {
42
43
  visible: {
43
44
  type: Boolean
44
45
  },
45
- "onUpdate:visible": {
46
- type: Function
47
- },
48
46
  backgroundBlock: {
49
47
  type: Boolean,
50
48
  default: false
@@ -68,29 +66,44 @@ const overlayProps = {
68
66
  default: true
69
67
  }
70
68
  };
71
- const overlayEmits = ["onUpdate:visible", "backdropClick"];
69
+ const overlayEmits = ["update:visible", "backdropClick"];
72
70
  const fixedOverlayProps = __spreadProps(__spreadValues({}, overlayProps), {
73
71
  overlayStyle: {
74
72
  type: [String, Object],
75
73
  default: void 0
76
74
  }
77
75
  });
78
- const flexibleOverlayProps = __spreadValues({
76
+ const flexibleOverlayProps = {
77
+ modelValue: {
78
+ type: Boolean,
79
+ default: false
80
+ },
79
81
  origin: {
80
82
  type: Object,
81
83
  require: true
82
84
  },
83
85
  position: {
84
- type: Object,
85
- default: () => ({
86
- originX: "left",
87
- originY: "top",
88
- overlayX: "left",
89
- overlayY: "top"
90
- })
86
+ type: Array,
87
+ default: ["bottom"]
88
+ },
89
+ offset: {
90
+ type: [Number, Object],
91
+ default: 8
92
+ },
93
+ align: {
94
+ type: String,
95
+ default: null
96
+ },
97
+ showArrow: {
98
+ type: Boolean,
99
+ default: false
100
+ },
101
+ isArrowCenter: {
102
+ type: Boolean,
103
+ default: true
91
104
  }
92
- }, overlayProps);
93
- function useOverlayLogic(props) {
105
+ };
106
+ function useOverlayLogic(props, ctx) {
94
107
  const backgroundClass = computed(() => {
95
108
  return [
96
109
  "devui-overlay-background",
@@ -102,11 +115,11 @@ function useOverlayLogic(props) {
102
115
  return "devui-overlay";
103
116
  });
104
117
  const handleBackdropClick = (event) => {
105
- var _a, _b;
118
+ var _a;
106
119
  event.preventDefault();
107
120
  (_a = props.onBackdropClick) == null ? void 0 : _a.call(props);
108
121
  if (props.backdropClose) {
109
- (_b = props["onUpdate:visible"]) == null ? void 0 : _b.call(props, false);
122
+ ctx.emit("update:visible", false);
110
123
  }
111
124
  };
112
125
  const handleOverlayBubbleCancel = (event) => event.cancelBubble = true;
@@ -150,9 +163,9 @@ const FixedOverlay = defineComponent({
150
163
  overlayClass,
151
164
  handleBackdropClick,
152
165
  handleOverlayBubbleCancel
153
- } = useOverlayLogic(props);
166
+ } = useOverlayLogic(props, ctx);
154
167
  return () => createVNode(CommonOverlay, null, {
155
- default: () => [withDirectives(createVNode("div", {
168
+ default: () => [props.visible && createVNode("div", {
156
169
  "class": backgroundClass.value,
157
170
  "style": props.backgroundStyle,
158
171
  "onClick": handleBackdropClick
@@ -160,203 +173,134 @@ const FixedOverlay = defineComponent({
160
173
  "class": overlayClass.value,
161
174
  "style": props.overlayStyle,
162
175
  "onClick": handleOverlayBubbleCancel
163
- }, [renderSlot(ctx.slots, "default")])]), [[vShow, props.visible]])]
176
+ }, [renderSlot(ctx.slots, "default")])])]
164
177
  });
165
178
  }
166
179
  });
167
- function isComponent(target) {
168
- return !!(target == null ? void 0 : target.$el);
169
- }
170
- function getElement(element) {
171
- if (element instanceof Element) {
172
- return element;
180
+ function getScrollParent(element) {
181
+ const overflowRegex = /(auto|scroll|hidden)/;
182
+ for (let parent = element; parent = parent.parentElement; parent.parentElement !== document.body) {
183
+ const style = window.getComputedStyle(parent);
184
+ if (overflowRegex.test(style.overflow + style.overflowX + style.overflowY)) {
185
+ return parent;
186
+ }
173
187
  }
174
- if (element && typeof element === "object" && element.$el instanceof Element) {
175
- return element.$el;
188
+ return window;
189
+ }
190
+ function adjustArrowPosition(isArrowCenter, point, placement, originRect) {
191
+ let { x, y } = point;
192
+ if (!isArrowCenter) {
193
+ const { width, height } = originRect;
194
+ if (x && placement.includes("start")) {
195
+ x = 12;
196
+ }
197
+ if (x && placement.includes("end")) {
198
+ x = Math.round(width - 24);
199
+ }
200
+ if (y && placement.includes("start")) {
201
+ y = 10;
202
+ }
203
+ if (y && placement.includes("end")) {
204
+ y = height - 14;
205
+ }
176
206
  }
177
- return null;
207
+ return { x, y };
208
+ }
209
+ function useOverlay(props, emit) {
210
+ const overlayRef = ref();
211
+ const arrowRef = ref();
212
+ const updateArrowPosition = (arrowEl, placement, point, overlayEl) => {
213
+ const { x, y } = adjustArrowPosition(props.isArrowCenter, point, placement, overlayEl.getBoundingClientRect());
214
+ const staticSide = {
215
+ top: "bottom",
216
+ right: "left",
217
+ bottom: "top",
218
+ left: "right"
219
+ }[placement.split("-")[0]];
220
+ Object.assign(arrowEl.style, {
221
+ left: x ? `${x}px` : "",
222
+ top: y ? `${y}px` : "",
223
+ right: "",
224
+ bottom: "",
225
+ [staticSide]: "-4px"
226
+ });
227
+ };
228
+ const updatePosition = async () => {
229
+ const hostEl = props.origin;
230
+ const overlayEl = unref(overlayRef.value);
231
+ const arrowEl = unref(arrowRef.value);
232
+ const middleware = [
233
+ offset(props.offset),
234
+ autoPlacement({
235
+ alignment: props.align,
236
+ allowedPlacements: props.position
237
+ })
238
+ ];
239
+ props.showArrow && middleware.push(arrow({ element: arrowEl }));
240
+ const { x, y, placement, middlewareData } = await computePosition(hostEl, overlayEl, {
241
+ strategy: "fixed",
242
+ middleware
243
+ });
244
+ emit("positionChange", placement);
245
+ Object.assign(overlayEl.style, { top: `${y}px`, left: `${x}px` });
246
+ props.showArrow && updateArrowPosition(arrowEl, placement, middlewareData.arrow, overlayEl);
247
+ };
248
+ watch(() => props.modelValue, () => {
249
+ const originParent = getScrollParent(props.origin);
250
+ if (props.modelValue && props.origin) {
251
+ nextTick(updatePosition);
252
+ originParent.addEventListener("scroll", updatePosition);
253
+ originParent !== window && window.addEventListener("scroll", updatePosition);
254
+ window.addEventListener("resize", updatePosition);
255
+ } else {
256
+ originParent.removeEventListener("scroll", updatePosition);
257
+ originParent !== window && window.removeEventListener("scroll", updatePosition);
258
+ window.removeEventListener("resize", updatePosition);
259
+ }
260
+ });
261
+ onUnmounted(() => {
262
+ const originParent = getScrollParent(props.origin);
263
+ originParent.removeEventListener("scroll", updatePosition);
264
+ originParent !== window && window.removeEventListener("scroll", updatePosition);
265
+ window.removeEventListener("resize", updatePosition);
266
+ });
267
+ return { arrowRef, overlayRef };
178
268
  }
269
+ var flexibleOverlay = "";
179
270
  const FlexibleOverlay = defineComponent({
180
271
  name: "DFlexibleOverlay",
272
+ inheritAttrs: false,
181
273
  props: flexibleOverlayProps,
182
- emits: overlayEmits,
183
- setup(props, ctx) {
184
- const overlayRef = ref(null);
185
- const positionedStyle = reactive({
186
- position: "absolute"
187
- });
188
- onMounted(async () => {
189
- const handleRectChange = (position, rect, origin) => {
190
- const point = calculatePosition(position, rect, origin);
191
- positionedStyle.left = `${point.x}px`;
192
- positionedStyle.top = `${point.y}px`;
193
- };
194
- const locationElements = computed(() => {
195
- const overlay2 = overlayRef.value;
196
- const origin = getOrigin(props.origin);
197
- if (!overlay2 || !origin) {
198
- return;
199
- }
200
- return {
201
- origin,
202
- overlay: overlay2
203
- };
204
- });
205
- const visibleRef = toRef(props, "visible");
206
- const positionRef = toRef(props, "position");
207
- watch([locationElements, visibleRef, positionRef], async ([locationElements2, visible, position], ov, onInvalidate) => {
208
- if (!visible || !locationElements2) {
209
- return;
210
- }
211
- const {
212
- origin,
213
- overlay: overlay2
214
- } = locationElements2;
215
- handleRectChange(position, overlay2.getBoundingClientRect(), origin);
216
- const unsubscriptions = [subscribeLayoutEvent(() => handleRectChange(position, overlay2.getBoundingClientRect(), origin)), subscribeOverlayResize(overlay2, (entries) => handleRectChange(position, entries[0].contentRect, origin)), subscribeOriginResize(origin, () => handleRectChange(position, overlay2.getBoundingClientRect(), origin))];
217
- onInvalidate(() => {
218
- unsubscriptions.forEach((fn) => fn());
219
- });
220
- });
221
- });
274
+ emits: ["update:modelValue", "positionChange"],
275
+ setup(props, {
276
+ slots,
277
+ attrs,
278
+ emit
279
+ }) {
222
280
  const {
223
- backgroundClass,
224
- overlayClass,
225
- handleBackdropClick,
226
- handleOverlayBubbleCancel
227
- } = useOverlayLogic(props);
228
- return () => createVNode(CommonOverlay, null, {
229
- default: () => [withDirectives(createVNode("div", {
230
- "style": props.backgroundStyle,
231
- "class": backgroundClass.value,
232
- "onClick": handleBackdropClick
233
- }, [createVNode("div", {
281
+ arrowRef,
282
+ overlayRef
283
+ } = useOverlay(props, emit);
284
+ return () => {
285
+ var _a;
286
+ return props.modelValue && createVNode("div", mergeProps({
234
287
  "ref": overlayRef,
235
- "class": overlayClass.value,
236
- "style": positionedStyle,
237
- "onClick": handleOverlayBubbleCancel
238
- }, [renderSlot(ctx.slots, "default")])]), [[vShow, props.visible]])]
239
- });
288
+ "class": "devui-flexible-overlay"
289
+ }, attrs), [(_a = slots.default) == null ? void 0 : _a.call(slots), props.showArrow && createVNode("div", {
290
+ "ref": arrowRef,
291
+ "class": "devui-flexible-overlay-arrow"
292
+ }, null)]);
293
+ };
240
294
  }
241
295
  });
242
- function getOrigin(origin) {
243
- if (origin instanceof Element) {
244
- return origin;
245
- }
246
- if (isRef(origin)) {
247
- return getElement(origin.value);
248
- }
249
- if (isComponent(origin)) {
250
- return getElement(origin);
251
- }
252
- return origin;
253
- }
254
- function calculatePosition(position, rect, origin) {
255
- const originRect = getOriginRect(origin);
256
- const originPoint = getOriginRelativePoint(originRect, position);
257
- return getOverlayPoint(originPoint, rect, position);
258
- }
259
- function getOriginRect(origin) {
260
- if (origin instanceof Element) {
261
- return origin.getBoundingClientRect();
262
- }
263
- const width = origin.width || 0;
264
- const height = origin.height || 0;
265
- return {
266
- top: origin.y,
267
- bottom: origin.y + height,
268
- left: origin.x,
269
- right: origin.x + width,
270
- height,
271
- width
272
- };
273
- }
274
- function getOverlayPoint(originPoint, rect, position) {
275
- let x;
276
- const {
277
- width,
278
- height
279
- } = rect;
280
- if (position.overlayX == "center") {
281
- x = originPoint.x - width / 2;
282
- } else {
283
- x = position.overlayX == "left" ? originPoint.x : originPoint.x - width;
284
- }
285
- let y;
286
- if (position.overlayY == "center") {
287
- y = originPoint.y - height / 2;
288
- } else {
289
- y = position.overlayY == "top" ? originPoint.y : originPoint.y - height;
290
- }
291
- return {
292
- x,
293
- y
294
- };
295
- }
296
- function getOriginRelativePoint(originRect, position) {
297
- let x;
298
- if (position.originX == "center") {
299
- x = originRect.left + originRect.width / 2;
300
- } else {
301
- const startX = originRect.left;
302
- const endX = originRect.right;
303
- x = position.originX == "left" ? startX : endX;
304
- }
305
- let y;
306
- if (position.originY == "center") {
307
- y = originRect.top + originRect.height / 2;
308
- } else {
309
- y = position.originY == "top" ? originRect.top : originRect.bottom;
310
- }
311
- return {
312
- x,
313
- y
314
- };
315
- }
316
- function subscribeLayoutEvent(event) {
317
- window.addEventListener("scroll", event, true);
318
- window.addEventListener("resize", event);
319
- window.addEventListener("orientationchange", event);
320
- return () => {
321
- window.removeEventListener("scroll", event, true);
322
- window.removeEventListener("resize", event);
323
- window.removeEventListener("orientationchange", event);
324
- };
325
- }
326
- function subscribeOverlayResize(overlay2, callback) {
327
- if (overlay2 instanceof Element) {
328
- const resizeObserver = new ResizeObserver(callback);
329
- resizeObserver.observe(overlay2);
330
- return () => resizeObserver.disconnect();
331
- }
332
- return () => {
333
- };
334
- }
335
- function subscribeOriginResize(origin, callback) {
336
- if (origin instanceof Element) {
337
- const observer = new MutationObserver(callback);
338
- observer.observe(origin, {
339
- attributeFilter: ["style"]
340
- });
341
- return () => observer.disconnect();
342
- }
343
- return () => {
344
- };
345
- }
346
296
  const inBrowser = typeof window !== "undefined";
347
- FlexibleOverlay.install = function(app) {
348
- app.component(FlexibleOverlay.name, FlexibleOverlay);
349
- };
350
- FixedOverlay.install = function(app) {
351
- app.component(FixedOverlay.name, FixedOverlay);
352
- };
353
297
  var index = {
354
298
  title: "Overlay \u906E\u7F69\u5C42",
355
299
  category: "\u901A\u7528",
356
300
  status: "100%",
357
301
  install(app) {
358
- app.use(FixedOverlay);
359
- app.use(FlexibleOverlay);
302
+ app.component(FixedOverlay.name, FixedOverlay);
303
+ app.component(FlexibleOverlay.name, FlexibleOverlay);
360
304
  if (inBrowser && !document.getElementById("d-overlay-anchor")) {
361
305
  const overlayAnchor = document.createElement("div");
362
306
  overlayAnchor.setAttribute("id", "d-overlay-anchor");
@@ -368,4 +312,4 @@ var index = {
368
312
  }
369
313
  }
370
314
  };
371
- export { FixedOverlay, FlexibleOverlay, index as default };
315
+ export { FixedOverlay, FlexibleOverlay, index as default, fixedOverlayProps, flexibleOverlayProps, overlayEmits, overlayProps };