pxd 0.1.2 → 0.1.3

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 (322) hide show
  1. package/dist/components/_internal/calendar-day.vue +19 -19
  2. package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
  3. package/dist/components/_internal/dismiss-container.vue +19 -19
  4. package/dist/components/_internal/loading-mask.vue +9 -1
  5. package/dist/components/_internal/mention-editor.d.vue.ts +1 -1
  6. package/dist/components/_internal/mention-editor.vue +1 -1
  7. package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
  8. package/dist/components/_internal/popover-arrow.vue +1 -1
  9. package/dist/components/{steps → _internal}/step-item.d.vue.ts +1 -1
  10. package/dist/components/{steps → _internal}/step-item.vue +1 -1
  11. package/dist/components/_internal/tree-node.d.vue.ts +20 -20
  12. package/dist/components/_internal/tree-node.vue +53 -45
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/approval-card/index.d.vue.ts +1 -1
  15. package/dist/components/approval-card/index.vue +34 -17
  16. package/dist/components/approval-card/types.d.ts +1 -1
  17. package/dist/components/avatar/index.d.vue.ts +2 -2
  18. package/dist/components/avatar/index.vue +1 -1
  19. package/dist/components/backtop/index.d.vue.ts +3 -3
  20. package/dist/components/backtop/index.vue +17 -17
  21. package/dist/components/backtop/types.d.ts +1 -1
  22. package/dist/components/badge/index.d.vue.ts +3 -3
  23. package/dist/components/badge/index.vue +43 -43
  24. package/dist/components/badge/types.d.ts +1 -1
  25. package/dist/components/book/types.d.ts +1 -1
  26. package/dist/components/border-beam/index.vue +1 -1
  27. package/dist/components/border-beam/types.d.ts +1 -1
  28. package/dist/components/bubble/index.vue +1 -1
  29. package/dist/components/bubble-group/index.d.vue.ts +4 -4
  30. package/dist/components/button/index.d.vue.ts +5 -5
  31. package/dist/components/button/index.vue +13 -13
  32. package/dist/components/button/types.d.ts +1 -1
  33. package/dist/components/button-group/types.d.ts +1 -1
  34. package/dist/components/calendar/index.d.vue.ts +2 -2
  35. package/dist/components/calendar/index.vue +5 -5
  36. package/dist/components/calendar/types.d.ts +1 -1
  37. package/dist/components/card/types.d.ts +1 -1
  38. package/dist/components/carousel/index.d.vue.ts +7 -7
  39. package/dist/components/carousel/index.vue +1 -1
  40. package/dist/components/carousel/types.d.ts +1 -1
  41. package/dist/components/checkbox/index.vue +1 -1
  42. package/dist/components/checkbox/types.d.ts +1 -1
  43. package/dist/components/checkbox-group/index.d.vue.ts +2 -2
  44. package/dist/components/checkbox-group/types.d.ts +1 -1
  45. package/dist/components/chip/index.d.vue.ts +1 -1
  46. package/dist/components/chip/types.d.ts +1 -1
  47. package/dist/components/choicebox/index.d.vue.ts +3 -3
  48. package/dist/components/choicebox/types.d.ts +1 -1
  49. package/dist/components/choicebox-item/index.vue +8 -8
  50. package/dist/components/choicebox-item/types.d.ts +1 -1
  51. package/dist/components/collapse/index.vue +2 -2
  52. package/dist/components/collapse-group/index.vue +1 -1
  53. package/dist/components/collapse-group/types.d.ts +1 -1
  54. package/dist/components/command-menu/index.d.vue.ts +5 -5
  55. package/dist/components/command-menu/index.vue +10 -3
  56. package/dist/components/config-provider/index.d.vue.ts +40 -5
  57. package/dist/components/config-provider/types.d.ts +2 -1
  58. package/dist/components/confirm-popover/index.d.vue.ts +39 -0
  59. package/dist/components/confirm-popover/index.vue +177 -0
  60. package/dist/components/confirm-popover/types.d.ts +23 -0
  61. package/dist/components/copy-button/index.d.vue.ts +2 -6
  62. package/dist/components/copy-button/index.vue +4 -6
  63. package/dist/components/dash-line/index.d.vue.ts +1 -1
  64. package/dist/components/dash-line/index.vue +8 -8
  65. package/dist/components/dash-line/types.d.ts +1 -1
  66. package/dist/components/date-picker/index.d.vue.ts +1 -1
  67. package/dist/components/date-picker/index.vue +3 -3
  68. package/dist/components/date-picker/types.d.ts +1 -1
  69. package/dist/components/drawer/index.d.vue.ts +7 -7
  70. package/dist/components/drawer/index.vue +30 -15
  71. package/dist/components/drawer/types.d.ts +2 -2
  72. package/dist/components/effort-slider/index.vue +12 -18
  73. package/dist/components/effort-slider/types.d.ts +1 -1
  74. package/dist/components/ellipsis-text/index.d.vue.ts +2 -2
  75. package/dist/components/ellipsis-text/index.vue +75 -75
  76. package/dist/components/error/types.d.ts +1 -1
  77. package/dist/components/fader/index.vue +2 -2
  78. package/dist/components/fader/types.d.ts +1 -1
  79. package/dist/components/gauge/index.vue +2 -2
  80. package/dist/components/gauge/types.d.ts +1 -1
  81. package/dist/components/grid/types.d.ts +1 -1
  82. package/dist/components/grid-item/types.d.ts +1 -1
  83. package/dist/components/hint/index.d.vue.ts +32 -0
  84. package/dist/components/hint/index.vue +239 -0
  85. package/dist/components/hint/types.d.ts +17 -0
  86. package/dist/components/hold-button/index.d.vue.ts +4 -4
  87. package/dist/components/hold-button/index.vue +10 -10
  88. package/dist/components/index.d.ts +4 -0
  89. package/dist/components/index.js +4 -0
  90. package/dist/components/input/index.d.vue.ts +1 -1
  91. package/dist/components/input/index.vue +14 -7
  92. package/dist/components/input/types.d.ts +1 -1
  93. package/dist/components/intersection-observer/index.vue +3 -3
  94. package/dist/components/kbd/index.vue +2 -2
  95. package/dist/components/kbd/types.d.ts +1 -1
  96. package/dist/components/link-button/index.d.vue.ts +5 -5
  97. package/dist/components/list/index.d.vue.ts +4 -4
  98. package/dist/components/list/index.vue +126 -47
  99. package/dist/components/list/types.d.ts +1 -1
  100. package/dist/components/list-group/types.d.ts +1 -1
  101. package/dist/components/list-item/index.d.vue.ts +2 -2
  102. package/dist/components/list-item/index.vue +26 -8
  103. package/dist/components/loading-bar/index.vue +5 -5
  104. package/dist/components/marching-ants/index.d.vue.ts +2 -2
  105. package/dist/components/marching-ants/index.vue +56 -56
  106. package/dist/components/marching-ants/types.d.ts +1 -1
  107. package/dist/components/marquee/index.d.vue.ts +6 -6
  108. package/dist/components/marquee/index.vue +16 -16
  109. package/dist/components/marquee/types.d.ts +1 -1
  110. package/dist/components/material/index.d.vue.ts +3 -3
  111. package/dist/components/mention/index.d.vue.ts +5 -5
  112. package/dist/components/mention/index.vue +68 -68
  113. package/dist/components/menu/index.d.vue.ts +4 -4
  114. package/dist/components/menu/index.vue +10 -10
  115. package/dist/components/menu/types.d.ts +1 -1
  116. package/dist/components/message/index.d.vue.ts +1 -1
  117. package/dist/components/message/index.vue +19 -25
  118. package/dist/components/message/types.d.ts +1 -1
  119. package/dist/components/message-item/index.vue +2 -6
  120. package/dist/components/modal/index.d.vue.ts +7 -7
  121. package/dist/components/modal/index.vue +26 -11
  122. package/dist/components/modal/types.d.ts +2 -2
  123. package/dist/components/noise-background/types.d.ts +1 -1
  124. package/dist/components/note/index.vue +6 -2
  125. package/dist/components/note/types.d.ts +2 -1
  126. package/dist/components/number-input/index.d.vue.ts +11 -6
  127. package/dist/components/number-input/index.vue +57 -16
  128. package/dist/components/number-input/types.d.ts +2 -1
  129. package/dist/components/overlay/index.d.vue.ts +2 -3
  130. package/dist/components/overlay/index.vue +10 -62
  131. package/dist/components/overlay/types.d.ts +0 -2
  132. package/dist/components/page-number/index.vue +30 -29
  133. package/dist/components/page-number/types.d.ts +1 -1
  134. package/dist/components/pin-input/index.d.vue.ts +1 -1
  135. package/dist/components/pin-input/index.vue +6 -6
  136. package/dist/components/pin-input/types.d.ts +1 -1
  137. package/dist/components/popover/index.vue +49 -21
  138. package/dist/components/popover/types.d.ts +3 -1
  139. package/dist/components/progress/index.d.vue.ts +2 -2
  140. package/dist/components/progress/index.vue +12 -12
  141. package/dist/components/progress/types.d.ts +1 -1
  142. package/dist/components/project-banner/types.d.ts +1 -1
  143. package/dist/components/questionnaire/index.vue +14 -14
  144. package/dist/components/radio/index.vue +1 -1
  145. package/dist/components/radio/types.d.ts +1 -1
  146. package/dist/components/radio-group/index.d.vue.ts +2 -2
  147. package/dist/components/radio-group/types.d.ts +1 -1
  148. package/dist/components/rating/index.vue +28 -28
  149. package/dist/components/rating/types.d.ts +1 -1
  150. package/dist/components/resizable/index.d.vue.ts +1 -0
  151. package/dist/components/resizable/index.vue +130 -195
  152. package/dist/components/resizable/types.d.ts +2 -10
  153. package/dist/components/reveal/index.d.vue.ts +3 -3
  154. package/dist/components/reveal/index.vue +4 -4
  155. package/dist/components/reveal/types.d.ts +1 -1
  156. package/dist/components/rolling-number/index.d.vue.ts +2 -2
  157. package/dist/components/rolling-number/index.vue +15 -15
  158. package/dist/components/scalable-text/index.vue +9 -9
  159. package/dist/components/scroll-text/index.d.vue.ts +3 -3
  160. package/dist/components/scroll-text/index.vue +6 -6
  161. package/dist/components/scroll-text/types.d.ts +1 -1
  162. package/dist/components/scrollable/types.d.ts +2 -1
  163. package/dist/components/search-input/index.d.vue.ts +5 -5
  164. package/dist/components/search-input/index.vue +2 -1
  165. package/dist/components/select/index.d.vue.ts +12 -9
  166. package/dist/components/select/index.vue +165 -42
  167. package/dist/components/select/types.d.ts +3 -1
  168. package/dist/components/separator/index.d.vue.ts +1 -1
  169. package/dist/components/separator/types.d.ts +1 -1
  170. package/dist/components/skeleton/index.d.vue.ts +1 -1
  171. package/dist/components/skeleton/index.vue +11 -11
  172. package/dist/components/skeleton/types.d.ts +1 -1
  173. package/dist/components/slider/index.d.vue.ts +1 -1
  174. package/dist/components/slider/index.vue +1 -1
  175. package/dist/components/slider/types.d.ts +1 -1
  176. package/dist/components/snippet/index.d.vue.ts +3 -3
  177. package/dist/components/snippet/index.vue +7 -5
  178. package/dist/components/snippet/types.d.ts +1 -1
  179. package/dist/components/spinner/index.vue +5 -1
  180. package/dist/components/spinner-dots/index.d.vue.ts +1 -1
  181. package/dist/components/split-button/index.d.vue.ts +5 -5
  182. package/dist/components/split-button/types.d.ts +1 -1
  183. package/dist/components/stack/index.d.vue.ts +3 -3
  184. package/dist/components/stack/index.vue +28 -29
  185. package/dist/components/stack/types.d.ts +1 -1
  186. package/dist/components/status-dot/types.d.ts +1 -1
  187. package/dist/components/steps/index.d.vue.ts +2 -2
  188. package/dist/components/steps/index.vue +6 -6
  189. package/dist/components/steps/types.d.ts +1 -1
  190. package/dist/components/stick-to-bottom/types.d.ts +1 -1
  191. package/dist/components/swipe-cell/index.d.vue.ts +6 -6
  192. package/dist/components/swipe-cell/index.vue +64 -64
  193. package/dist/components/swipe-cell/types.d.ts +2 -1
  194. package/dist/components/switch/index.vue +1 -1
  195. package/dist/components/switch/types.d.ts +1 -1
  196. package/dist/components/switch-item/index.vue +1 -1
  197. package/dist/components/switch-item/types.d.ts +1 -1
  198. package/dist/components/tabs/index.d.vue.ts +1 -1
  199. package/dist/components/tabs/index.vue +48 -51
  200. package/dist/components/tabs/types.d.ts +1 -1
  201. package/dist/components/teleport/index.vue +2 -2
  202. package/dist/components/text/index.d.vue.ts +3 -3
  203. package/dist/components/text/index.vue +11 -11
  204. package/dist/components/text/types.d.ts +1 -1
  205. package/dist/components/textarea/index.vue +1 -1
  206. package/dist/components/textarea/types.d.ts +1 -1
  207. package/dist/components/theme-switcher/index.d.vue.ts +3 -2
  208. package/dist/components/theme-switcher/index.vue +15 -7
  209. package/dist/components/theme-switcher/types.d.ts +2 -2
  210. package/dist/components/time-ago/index.d.vue.ts +6 -0
  211. package/dist/components/time-ago/index.vue +143 -0
  212. package/dist/components/time-ago/types.d.ts +4 -0
  213. package/dist/components/time-picker/index.d.vue.ts +1 -1
  214. package/dist/components/time-picker/index.vue +7 -7
  215. package/dist/components/time-picker/types.d.ts +1 -1
  216. package/dist/components/toc/index.d.vue.ts +2 -2
  217. package/dist/components/toc/index.vue +1 -1
  218. package/dist/components/todo-list/index.d.vue.ts +4 -4
  219. package/dist/components/todo-list/index.vue +15 -15
  220. package/dist/components/todo-list/types.d.ts +1 -1
  221. package/dist/components/toggle/index.vue +3 -3
  222. package/dist/components/toggle/types.d.ts +1 -1
  223. package/dist/components/toggle-button/index.vue +14 -11
  224. package/dist/components/toggle-button/types.d.ts +2 -2
  225. package/dist/components/toggle-button-group/index.d.vue.ts +3 -3
  226. package/dist/components/toggle-button-group/index.vue +2 -2
  227. package/dist/components/toggle-button-group/types.d.ts +2 -2
  228. package/dist/components/tool-call/index.vue +5 -5
  229. package/dist/components/tooltip/index.d.vue.ts +4 -5
  230. package/dist/components/tooltip/index.vue +4 -49
  231. package/dist/components/tooltip/types.d.ts +3 -7
  232. package/dist/components/tour/index.d.vue.ts +33 -0
  233. package/dist/components/tour/index.vue +302 -0
  234. package/dist/components/tour/types.d.ts +29 -0
  235. package/dist/components/tree/index.d.vue.ts +24 -28
  236. package/dist/components/tree/index.vue +290 -223
  237. package/dist/components/tree/types.d.ts +38 -13
  238. package/dist/components/virtual-list/index.d.vue.ts +4 -4
  239. package/dist/composables/_internal/use-list-keyboard-controller.js +9 -10
  240. package/dist/composables/_internal/use-list-rows.d.ts +4 -0
  241. package/dist/composables/_internal/use-list-rows.js +12 -4
  242. package/dist/composables/_internal/use-list-selection.d.ts +1 -1
  243. package/dist/composables/_internal/use-lock-scroll.d.ts +8 -1
  244. package/dist/composables/_internal/use-lock-scroll.js +57 -36
  245. package/dist/composables/_internal/use-mention-editor.js +1 -1
  246. package/dist/composables/_internal/use-message-group.d.ts +22 -0
  247. package/dist/composables/_internal/use-message-group.js +143 -0
  248. package/dist/composables/_internal/use-overlay-dialog.js +1 -3
  249. package/dist/composables/_internal/use-overlay-manager.d.ts +4 -1
  250. package/dist/composables/_internal/use-overlay-manager.js +67 -8
  251. package/dist/composables/_internal/use-swipe-gesture.d.ts +1 -1
  252. package/dist/composables/_internal/use-tour-target.d.ts +29 -0
  253. package/dist/composables/_internal/use-tour-target.js +201 -0
  254. package/dist/composables/_internal/use-tree.d.ts +103 -0
  255. package/dist/composables/_internal/use-tree.js +676 -0
  256. package/dist/composables/_internal/use-word-limit.d.ts +1 -1
  257. package/dist/composables/index.d.ts +1 -0
  258. package/dist/composables/index.js +1 -0
  259. package/dist/composables/use-color-scheme.d.ts +1 -1
  260. package/dist/composables/use-color-scheme.js +7 -6
  261. package/dist/composables/use-delay-destroy.d.ts +1 -1
  262. package/dist/composables/use-document-hidden.d.ts +1 -1
  263. package/dist/composables/use-intersection-observer.d.ts +1 -1
  264. package/dist/composables/use-intersection-observer.js +1 -1
  265. package/dist/composables/{_internal/use-motion-reduce.js → use-motion-reduce.js} +2 -2
  266. package/dist/composables/use-mutation-observer.d.ts +1 -1
  267. package/dist/composables/use-mutation-observer.js +1 -1
  268. package/dist/composables/use-resize-observer.d.ts +1 -1
  269. package/dist/composables/use-resize-observer.js +1 -1
  270. package/dist/composables/use-view-transition.js +1 -0
  271. package/dist/composables/use-virtual-list.d.ts +1 -1
  272. package/dist/constants/tooltip-variants.d.ts +28 -0
  273. package/dist/constants/tooltip-variants.js +27 -0
  274. package/dist/contexts/avatar.js +1 -1
  275. package/dist/contexts/breadcrumb.js +1 -1
  276. package/dist/contexts/button.js +1 -1
  277. package/dist/contexts/checkbox.js +1 -1
  278. package/dist/contexts/choicebox.js +1 -1
  279. package/dist/contexts/collapse.js +1 -1
  280. package/dist/contexts/config-provider.js +1 -1
  281. package/dist/contexts/list.js +1 -1
  282. package/dist/contexts/radio.js +1 -1
  283. package/dist/contexts/switch.js +1 -1
  284. package/dist/contexts/toggle-button.js +1 -1
  285. package/dist/index.d.ts +2 -1
  286. package/dist/locales/en-us.d.ts +35 -0
  287. package/dist/locales/en-us.js +20 -0
  288. package/dist/locales/zh-cn.d.ts +35 -0
  289. package/dist/locales/zh-cn.js +20 -0
  290. package/dist/styles/styles.css +1 -1
  291. package/dist/styles/tw.css +43 -30
  292. package/dist/utils/{context.js → _internal/context.js} +1 -1
  293. package/dist/utils/{observer.d.ts → _internal/observer.d.ts} +1 -1
  294. package/dist/utils/{observer.js → _internal/observer.js} +4 -4
  295. package/dist/{components/swipe-cell/instances.d.ts → utils/_internal/swipe-cell-instances.d.ts} +1 -1
  296. package/dist/utils/event.d.ts +2 -1
  297. package/dist/utils/event.js +3 -0
  298. package/package.json +26 -50
  299. package/volar.d.ts +4 -0
  300. package/dist/components/message/composables/use-group-expand.d.ts +0 -13
  301. package/dist/components/message/composables/use-group-expand.js +0 -50
  302. package/dist/components/message/composables/use-message-timer.d.ts +0 -9
  303. package/dist/components/message/composables/use-message-timer.js +0 -62
  304. package/dist/components/message/composables/use-promise-message.d.ts +0 -4
  305. package/dist/components/message/composables/use-promise-message.js +0 -49
  306. package/dist/components/resizable/utils.d.ts +0 -4
  307. package/dist/components/resizable/utils.js +0 -10
  308. package/dist/composables/_internal/use-tree-drag.d.ts +0 -23
  309. package/dist/composables/_internal/use-tree-drag.js +0 -196
  310. package/dist/composables/_internal/use-tree-move.d.ts +0 -20
  311. package/dist/composables/_internal/use-tree-move.js +0 -96
  312. package/dist/composables/_internal/use-tree-rows.d.ts +0 -46
  313. package/dist/composables/_internal/use-tree-rows.js +0 -101
  314. package/dist/composables/_internal/use-tree-selection.d.ts +0 -22
  315. package/dist/composables/_internal/use-tree-selection.js +0 -87
  316. package/dist/styles/source.css +0 -675
  317. package/dist/types/shared/index.d.ts +0 -2
  318. /package/dist/composables/{_internal/use-motion-reduce.d.ts → use-motion-reduce.d.ts} +0 -0
  319. /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
  320. /package/dist/utils/{mention-html.d.ts → _internal/mention-html.d.ts} +0 -0
  321. /package/dist/utils/{mention-html.js → _internal/mention-html.js} +0 -0
  322. /package/dist/{components/swipe-cell/instances.js → utils/_internal/swipe-cell-instances.js} +0 -0
@@ -1,10 +1,12 @@
1
- import type { ComponentClass, ComponentLabel, ComponentValue } from '../../types/shared'
1
+ import type { ComponentClass, ComponentLabel, ComponentValue } from '../../types/shared/props'
2
2
 
3
3
  export interface TreeOption {
4
4
  value: ComponentValue
5
5
  label?: ComponentLabel
6
6
  disabled?: boolean
7
7
  children?: TreeOption[]
8
+ /** Marks a leaf under `lazy`: no arrow, and never handed to `load`. */
9
+ isLeaf?: boolean
8
10
  keywords?: string[]
9
11
  [key: string]: any
10
12
  }
@@ -15,6 +17,30 @@ export type TreeModelValue = ComponentValue | ComponentValue[] | null
15
17
 
16
18
  export type TreeFilterFn = (node: TreeOption, query: string) => boolean
17
19
 
20
+ /** Hands the tree the nodes a query matched, their ancestors included. */
21
+ export type TreeRemoteFilterFn = (query: string) => TreeOptions | Promise<TreeOptions>
22
+
23
+ /** Hands the children of a node to the tree. An empty array marks it a leaf. */
24
+ export type TreeLoadResolve = (children: TreeOptions) => void
25
+
26
+ /** Gives up on a node without children: the arrow stays, and the next expand asks again. */
27
+ export type TreeLoadReject = () => void
28
+
29
+ export interface TreeLoadDetail {
30
+ node: TreeOption
31
+ depth: number
32
+ parent?: TreeOption
33
+ }
34
+
35
+ export type TreeLoadFn = (
36
+ detail: TreeLoadDetail,
37
+ resolve: TreeLoadResolve,
38
+ reject: TreeLoadReject,
39
+ ) => void
40
+
41
+ /** Keeps a node out of the model without the rest of `disabled`: it still expands and takes drops. */
42
+ export type TreeSelectableFn = (node: TreeOption) => boolean
43
+
18
44
  export interface TreeNodeDetail {
19
45
  value: ComponentValue
20
46
  node: TreeOption
@@ -23,7 +49,6 @@ export interface TreeNodeDetail {
23
49
  export interface TreeChangeDetail extends TreeNodeDetail {
24
50
  checked: boolean
25
51
  checkedValues: ComponentValue[]
26
- /** Partially checked parents of the new selection, empty without the cascade. */
27
52
  halfCheckedValues: ComponentValue[]
28
53
  }
29
54
 
@@ -40,25 +65,19 @@ export interface TreeDropTarget {
40
65
  }
41
66
 
42
67
  export interface TreeMoveLocation {
43
- /** The parent the node sat in, `undefined` at the root level. */
44
68
  parentValue?: ComponentValue
45
- /** Position inside that parent's children. */
46
69
  index: number
47
70
  }
48
71
 
49
72
  export interface TreeDropInfo {
50
73
  dragValue: ComponentValue
51
74
  dragNode: TreeOption
52
- /** The row the drop is aimed at. */
53
75
  targetValue: ComponentValue
54
76
  targetNode: TreeOption
55
77
  position: TreeDropPosition
56
78
  }
57
79
 
58
- /**
59
- * Decides whether a drop may land. Supplying it takes over the policy rules; the structural
60
- * ones (a node never lands on itself or inside its own subtree) hold either way.
61
- */
80
+ /** Decides whether a drop may land; the structural rules hold either way. */
62
81
  export type TreeAllowDropFn = (info: TreeDropInfo) => boolean
63
82
 
64
83
  export interface TreeMoveDetail {
@@ -66,7 +85,6 @@ export interface TreeMoveDetail {
66
85
  node: TreeOption
67
86
  from: TreeMoveLocation
68
87
  to: TreeMoveLocation & {
69
- /** The row the drop was aimed at. */
70
88
  targetValue: ComponentValue
71
89
  position: TreeDropPosition
72
90
  }
@@ -80,7 +98,6 @@ export interface TreeFlatNode {
80
98
  parentValue?: ComponentValue
81
99
  hasChildren: boolean
82
100
  expanded: boolean
83
- matched: boolean
84
101
  }
85
102
 
86
103
  export interface TreeProps {
@@ -89,10 +106,11 @@ export interface TreeProps {
89
106
  multiple?: boolean
90
107
  checkStrictly?: boolean
91
108
  disabled?: boolean
92
- expandOnClick?: boolean
109
+ selectable?: TreeSelectableFn
110
+ expandOnly?: boolean
93
111
  draggable?: boolean
94
112
  allowDrop?: TreeAllowDropFn
95
- showIcon?: boolean
113
+ dropInsideLeaf?: boolean
96
114
  virtual?: boolean
97
115
  itemSize?: number
98
116
  overScan?: number
@@ -101,8 +119,15 @@ export interface TreeProps {
101
119
  expandedKeys?: ComponentValue[]
102
120
  defaultExpandedKeys?: ComponentValue[]
103
121
  childrenField?: string
122
+ /** Fetch the children of a node when it first opens, instead of reading them from `data`. */
123
+ lazy?: boolean
124
+ /** Fetches the children of a node neither `data` nor an earlier request provided. */
125
+ load?: TreeLoadFn
126
+ loading?: boolean
104
127
  filterable?: boolean
105
128
  filter?: TreeFilterFn
129
+ /** Fetches the nodes a query matched, their ancestors included: giving it searches remotely. */
130
+ remoteFilter?: TreeRemoteFilterFn
106
131
  /** Render only the nodes the filter matched, instead of the hits plus their ancestors. */
107
132
  searchMatchesOnly?: boolean
108
133
  /** Highlights the query inside a label. Only a contiguous run of characters is marked: a
@@ -1,13 +1,13 @@
1
1
  import type { VirtualListProps } from './types';
2
2
  import { type VirtualListItem } from '../../composables/use-virtual-list.js';
3
- declare var __VLS_1: {
3
+ declare var __VLS_2: {
4
4
  item: any;
5
5
  virtualItem: VirtualListItem;
6
- }, __VLS_3: {};
6
+ }, __VLS_4: {};
7
7
  type __VLS_Slots = {} & {
8
- item?: (props: typeof __VLS_1) => any;
8
+ item?: (props: typeof __VLS_2) => any;
9
9
  } & {
10
- message?: (props: typeof __VLS_3) => any;
10
+ message?: (props: typeof __VLS_4) => any;
11
11
  };
12
12
  declare const __VLS_base: import("vue").DefineComponent<VirtualListProps, {
13
13
  totalSize: import("vue").ComputedRef<number>;
@@ -5,23 +5,22 @@ export function useListKeyboardController(options) {
5
5
  if (toValue(options.enabled) === false || ev.isComposing || ev.key === "Process") {
6
6
  return;
7
7
  }
8
- const preventDefaultKeys = toValue(options.preventDefaultKeys) ?? DEFAULT_PREVENT_DEFAULT_KEYS;
9
- if (preventDefaultKeys.includes(ev.key)) {
10
- ev.preventDefault();
11
- return;
12
- }
13
8
  if (ev.ctrlKey || ev.metaKey || ev.altKey || ev.shiftKey) {
14
9
  return;
15
10
  }
16
11
  const command = toValue(options.keymap)[ev.key];
17
- if (!command) {
12
+ if (command) {
13
+ if (!options.onCommand(command, ev)) {
14
+ return;
15
+ }
16
+ ev.preventDefault();
17
+ ev.stopPropagation();
18
18
  return;
19
19
  }
20
- if (!options.onCommand(command, ev)) {
21
- return;
20
+ const preventDefaultKeys = toValue(options.preventDefaultKeys) ?? DEFAULT_PREVENT_DEFAULT_KEYS;
21
+ if (preventDefaultKeys.includes(ev.key)) {
22
+ ev.preventDefault();
22
23
  }
23
- ev.preventDefault();
24
- ev.stopPropagation();
25
24
  }
26
25
  return { onKeydown };
27
26
  }
@@ -11,6 +11,8 @@ export interface ListItemRow {
11
11
  key: string;
12
12
  option: ListOption;
13
13
  navIndex: number;
14
+ /** Index of this row in the flattened render/virtualizer row list. */
15
+ rowIndex: number;
14
16
  group?: ListOptionGroup;
15
17
  groupIndex?: number;
16
18
  itemIndex: number;
@@ -18,6 +20,8 @@ export interface ListItemRow {
18
20
  export type ListRow = ListHeaderRow | ListItemRow;
19
21
  export interface FlattenListOptionsResult {
20
22
  rows: ListRow[];
23
+ /** Item rows indexed by their dense `navIndex`. */
24
+ itemRows: ListItemRow[];
21
25
  navigableCount: number;
22
26
  }
23
27
  /**
@@ -1,6 +1,7 @@
1
1
  import { isListOptionGroup } from "./use-selected-list-item.js";
2
2
  export function flattenListOptions(options) {
3
3
  const rows = [];
4
+ const itemRows = [];
4
5
  let navIndex = 0;
5
6
  for (let groupIndex = 0; groupIndex < options.length; groupIndex++) {
6
7
  const entry = options[groupIndex];
@@ -14,28 +15,35 @@ export function flattenListOptions(options) {
14
15
  });
15
16
  for (let itemIndex = 0; itemIndex < entry.options.length; itemIndex++) {
16
17
  const option = entry.options[itemIndex];
17
- rows.push({
18
+ const row = {
18
19
  type: "item",
19
20
  key: String(option.value),
20
21
  option,
21
22
  navIndex: navIndex++,
23
+ rowIndex: rows.length,
22
24
  group: entry,
23
25
  groupIndex,
24
26
  itemIndex
25
- });
27
+ };
28
+ rows.push(row);
29
+ itemRows.push(row);
26
30
  }
27
31
  } else {
28
- rows.push({
32
+ const row = {
29
33
  type: "item",
30
34
  key: String(entry.value),
31
35
  option: entry,
32
36
  navIndex: navIndex++,
37
+ rowIndex: rows.length,
33
38
  itemIndex: groupIndex
34
- });
39
+ };
40
+ rows.push(row);
41
+ itemRows.push(row);
35
42
  }
36
43
  }
37
44
  return {
38
45
  rows,
46
+ itemRows,
39
47
  navigableCount: navIndex
40
48
  };
41
49
  }
@@ -1,5 +1,5 @@
1
1
  import type { ListModelValue } from '../../components/list/types';
2
- import type { ComponentValue } from '../../types/shared';
2
+ import type { ComponentValue } from '../../types/shared/props';
3
3
  interface ListSelectionProps {
4
4
  modelValue?: ListModelValue;
5
5
  multiple?: boolean;
@@ -1,5 +1,12 @@
1
- export declare function useLockScroll(): {
1
+ import type { MaybeElementRef } from '../../types/shared/utils';
2
+ interface LockScrollOptions {
3
+ /** Whether to keep looking up the ancestor chain when the anchor itself does not scroll. */
4
+ walkAncestors?: boolean;
5
+ }
6
+ /** Locks the scroll container that `target` sits in. */
7
+ export declare function useLockScroll(target: MaybeElementRef, options?: LockScrollOptions): {
2
8
  isLocked: () => boolean;
3
9
  lockScroll: () => void;
4
10
  unlockScroll: () => void;
5
11
  };
12
+ export {};
@@ -1,51 +1,72 @@
1
1
  import { onScopeDispose } from "vue";
2
- import { hasScrollbar, isScrollable } from "../../utils/dom.js";
3
- import { cachedOff, cachedOn, preventDefaultScroll } from "../../utils/event.js";
4
- const rootLockClassNames = ["pointer-events-none"];
5
- const touchMoveOptions = { passive: false };
6
- let rootTouchMoveLocks = 0;
7
- let rootAddedClassNames = [];
8
- function lockRootScroll() {
9
- const rootEl = document.documentElement;
10
- const classNames = [...rootLockClassNames];
11
- cachedOn(document, "touchmove", preventDefaultScroll, touchMoveOptions);
12
- const { x: xScrollbar, y: yScrollbar } = hasScrollbar(rootEl);
13
- const { x: xScrollable, y: yScrollable } = isScrollable(rootEl);
14
- if (xScrollbar && xScrollable || yScrollbar && yScrollable) {
15
- classNames.push("scrollbar-gutter-stable", "scrollbar-disabled");
16
- }
17
- rootAddedClassNames = classNames.filter((className) => !rootEl.classList.contains(className));
18
- rootEl.classList.add(...classNames);
2
+ import { getElement, hasScrollbar, isScrollable } from "../../utils/dom.js";
3
+ const elementLocks = /* @__PURE__ */ new WeakMap();
4
+ function lockElementScroll(el) {
5
+ const locked = elementLocks.get(el);
6
+ if (locked) {
7
+ locked.count++;
8
+ return true;
9
+ }
10
+ const { x: xScrollable, y: yScrollable } = isScrollable(el);
11
+ if (!xScrollable && !yScrollable) {
12
+ return false;
13
+ }
14
+ const { y: yScrollbar } = hasScrollbar(el);
15
+ const styles = { "overflow-x": "hidden", "overflow-y": "hidden" };
16
+ if (yScrollbar && yScrollable) {
17
+ styles["scrollbar-gutter"] = "stable";
18
+ }
19
+ const lockedStyles = Object.entries(styles).map(([property, lockedValue]) => ({
20
+ property,
21
+ lockedValue,
22
+ prevValue: el.style.getPropertyValue(property),
23
+ prevPriority: el.style.getPropertyPriority(property)
24
+ }));
25
+ for (const { property, lockedValue } of lockedStyles) {
26
+ el.style.setProperty(property, lockedValue, "important");
27
+ }
28
+ elementLocks.set(el, { count: 1, styles: lockedStyles });
29
+ return true;
19
30
  }
20
- function unlockRootScroll() {
21
- cachedOff(document, "touchmove", preventDefaultScroll, touchMoveOptions);
22
- document.documentElement.classList.remove(...rootAddedClassNames);
23
- rootAddedClassNames = [];
31
+ function unlockElementScroll(el) {
32
+ const lock = elementLocks.get(el);
33
+ if (!lock || --lock.count > 0) {
34
+ return;
35
+ }
36
+ for (const { property, lockedValue, prevValue, prevPriority } of lock.styles) {
37
+ if (el.style.getPropertyValue(property) !== lockedValue) {
38
+ continue;
39
+ }
40
+ if (prevValue) {
41
+ el.style.setProperty(property, prevValue, prevPriority);
42
+ } else {
43
+ el.style.removeProperty(property);
44
+ }
45
+ }
46
+ elementLocks.delete(el);
24
47
  }
25
- export function useLockScroll() {
26
- let instanceTouchMoveLocks = 0;
48
+ export function useLockScroll(target, options = {}) {
49
+ const { walkAncestors = false } = options;
50
+ const lockedElements = [];
27
51
  function isLocked() {
28
- return rootTouchMoveLocks > 0;
52
+ return lockedElements.length > 0;
29
53
  }
30
54
  function lockScroll() {
31
- if (rootTouchMoveLocks === 0) {
32
- lockRootScroll();
55
+ for (let el = getElement(target); el; el = walkAncestors ? el.parentElement : null) {
56
+ if (lockElementScroll(el)) {
57
+ lockedElements.push(el);
58
+ return;
59
+ }
33
60
  }
34
- rootTouchMoveLocks++;
35
- instanceTouchMoveLocks++;
36
61
  }
37
62
  function unlockScroll() {
38
- if (instanceTouchMoveLocks <= 0) {
39
- return;
40
- }
41
- instanceTouchMoveLocks--;
42
- rootTouchMoveLocks--;
43
- if (!rootTouchMoveLocks) {
44
- unlockRootScroll();
63
+ const el = lockedElements.pop();
64
+ if (el) {
65
+ unlockElementScroll(el);
45
66
  }
46
67
  }
47
68
  onScopeDispose(() => {
48
- while (instanceTouchMoveLocks > 0) {
69
+ while (lockedElements.length > 0) {
49
70
  unlockScroll();
50
71
  }
51
72
  });
@@ -12,7 +12,7 @@ import {
12
12
  sanitizeMentionClipboardHtml,
13
13
  serializeMentionHtml,
14
14
  setMentionEditorContent
15
- } from "../../utils/mention-html.js";
15
+ } from "../../utils/_internal/mention-html.js";
16
16
  export function useMentionEditor({
17
17
  editorRef,
18
18
  getModelValue,
@@ -0,0 +1,22 @@
1
+ import type { MessageItemConfig } from '../use-message.js';
2
+ import type { MaybeRefOrGetter } from 'vue';
3
+ interface UseMessageGroupOptions {
4
+ messages: MaybeRefOrGetter<MessageItemConfig[]>;
5
+ expand: MaybeRefOrGetter<boolean | undefined>;
6
+ onTimeout: (id: MessageItemConfig['id']) => void;
7
+ }
8
+ export declare function useMessageGroup({ messages, expand, onTimeout }: UseMessageGroupOptions): {
9
+ groupExpand: import("vue").ShallowRef<boolean | undefined, boolean | undefined>;
10
+ collapse: () => void;
11
+ onPointerEnter: () => void;
12
+ onPointerLeave: () => void;
13
+ startTimer: (message: MessageItemConfig) => void;
14
+ clearTimer: (message: MessageItemConfig) => void;
15
+ clearTimers: () => void;
16
+ pauseMessage: (message: MessageItemConfig) => void;
17
+ resumeMessage: (message: MessageItemConfig) => void;
18
+ pauseAll: () => void;
19
+ resumeAll: () => void;
20
+ handlePromiseMessage: (message: MessageItemConfig) => Promise<void>;
21
+ };
22
+ export {};
@@ -0,0 +1,143 @@
1
+ import { shallowRef, watchEffect } from "vue";
2
+ import { toValue } from "../../utils/helper.js";
3
+ import { isNil } from "../../utils/is.js";
4
+ const TRANSITION_LOCK_MS = 250;
5
+ const LEAVE_DEBOUNCE_MS = 200;
6
+ const NEARLY_EXPIRED_MS = 100;
7
+ export function useMessageGroup({ messages, expand, onTimeout }) {
8
+ const groupExpand = shallowRef(toValue(expand));
9
+ let leaveTimeoutId;
10
+ let isTransitioning = false;
11
+ function lockTransition() {
12
+ isTransitioning = true;
13
+ setTimeout(() => {
14
+ isTransitioning = false;
15
+ }, TRANSITION_LOCK_MS);
16
+ }
17
+ function onPointerEnter() {
18
+ clearTimeout(leaveTimeoutId);
19
+ if (groupExpand.value || isTransitioning) {
20
+ return;
21
+ }
22
+ lockTransition();
23
+ groupExpand.value = true;
24
+ pauseAll();
25
+ }
26
+ function onPointerLeave() {
27
+ clearTimeout(leaveTimeoutId);
28
+ if (isTransitioning) {
29
+ return;
30
+ }
31
+ leaveTimeoutId = setTimeout(() => {
32
+ resumeAll();
33
+ if (toValue(expand)) {
34
+ return;
35
+ }
36
+ groupExpand.value = false;
37
+ lockTransition();
38
+ }, LEAVE_DEBOUNCE_MS);
39
+ }
40
+ function collapse() {
41
+ groupExpand.value = false;
42
+ }
43
+ function clearTimer(message) {
44
+ if (message._timerId) {
45
+ clearTimeout(message._timerId);
46
+ message._timerId = void 0;
47
+ }
48
+ }
49
+ function startTimer(message) {
50
+ message._startedAtMs = Date.now();
51
+ if (isNil(message._remainingMs)) {
52
+ message._remainingMs = message.durations;
53
+ }
54
+ clearTimer(message);
55
+ message._timerId = setTimeout(() => {
56
+ onTimeout(message.id);
57
+ }, message._remainingMs);
58
+ }
59
+ function pauseMessage(message) {
60
+ if (!message.durations || message.durations <= 0) {
61
+ return;
62
+ }
63
+ if (!message._timerId) {
64
+ return;
65
+ }
66
+ clearTimer(message);
67
+ const elapsed = Date.now() - message._startedAtMs;
68
+ const remaining = message._remainingMs ?? message.durations;
69
+ message._remainingMs = Math.max(0, remaining - elapsed);
70
+ }
71
+ function resumeMessage(message) {
72
+ if (!message.durations || message.durations <= 0) {
73
+ return;
74
+ }
75
+ if (message._startedAtMs == null) {
76
+ return;
77
+ }
78
+ if ((message._remainingMs ?? 0) <= NEARLY_EXPIRED_MS) {
79
+ onTimeout(message.id);
80
+ return;
81
+ }
82
+ startTimer(message);
83
+ }
84
+ function applyHandlerMessage(message, handler, data) {
85
+ const content = typeof handler === "function" ? handler(data) : handler;
86
+ if (!isNil(content)) {
87
+ message.message = content;
88
+ }
89
+ }
90
+ async function handlePromiseMessage(message) {
91
+ if (!message.promise) {
92
+ return;
93
+ }
94
+ let result;
95
+ try {
96
+ result = await message.promise;
97
+ message.type = "success";
98
+ applyHandlerMessage(message, message.success, result);
99
+ } catch (err) {
100
+ result = err;
101
+ message.type = "error";
102
+ applyHandlerMessage(message, message.error, err);
103
+ } finally {
104
+ applyHandlerMessage(message, message.finally, result);
105
+ message.promise = void 0;
106
+ message.success = void 0;
107
+ message.error = void 0;
108
+ message.finally = void 0;
109
+ const isAlive = toValue(messages).includes(message);
110
+ if (isAlive && message.durations && message.durations > 0) {
111
+ message._remainingMs = message.durations;
112
+ startTimer(message);
113
+ }
114
+ }
115
+ }
116
+ function clearTimers() {
117
+ toValue(messages).forEach(clearTimer);
118
+ }
119
+ function pauseAll() {
120
+ toValue(messages).forEach(pauseMessage);
121
+ }
122
+ function resumeAll() {
123
+ const snapshot = [...toValue(messages)];
124
+ snapshot.forEach(resumeMessage);
125
+ }
126
+ watchEffect(() => {
127
+ groupExpand.value = toValue(expand);
128
+ });
129
+ return {
130
+ groupExpand,
131
+ collapse,
132
+ onPointerEnter,
133
+ onPointerLeave,
134
+ startTimer,
135
+ clearTimer,
136
+ clearTimers,
137
+ pauseMessage,
138
+ resumeMessage,
139
+ pauseAll,
140
+ resumeAll,
141
+ handlePromiseMessage
142
+ };
143
+ }
@@ -3,9 +3,7 @@ import { isTruthyProp } from "../../utils/format.js";
3
3
  import { useFocusTrap } from "./use-focus-trap.js";
4
4
  export function useOverlayDialog({ props, emits, elementRef, onClose }) {
5
5
  const focusTrapOptions = computed(() => ({
6
- autoFocusElement: props.autoFocusElement,
7
- escapeDeactivates: props.closeOnPressEscape,
8
- clickOutsideDeactivates: props.closeOnClickOverlay
6
+ autoFocusElement: props.autoFocusElement
9
7
  }));
10
8
  useFocusTrap(elementRef, focusTrapOptions);
11
9
  function closeOverlayIfNeed() {
@@ -4,11 +4,14 @@ interface OverlayManagerOptions {
4
4
  lockScrollOnVisible?: MaybeRefOrGetter<boolean>;
5
5
  lockScroll: () => void;
6
6
  unlockScroll: () => void;
7
- onPressEscape?: (ev: KeyboardEvent) => void;
7
+ /** Return `false` to let the next overlay below handle the event. */
8
+ onPressEscape?: (ev: KeyboardEvent) => boolean | void;
9
+ zIndex?: MaybeRefOrGetter<number | undefined>;
8
10
  }
9
11
  interface OverlayManagerEntry {
10
12
  id: symbol;
11
13
  onPressEscape: OverlayManagerOptions['onPressEscape'];
14
+ zIndex: OverlayManagerOptions['zIndex'];
12
15
  }
13
16
  export declare function useOverlayManager(options: OverlayManagerOptions): {
14
17
  isTopOverlay: (entry?: OverlayManagerEntry) => boolean;