pxd 0.0.64 → 0.1.2

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 (486) hide show
  1. package/README.md +21 -10
  2. package/dist/components/_internal/calendar-day.d.vue.ts +33 -0
  3. package/dist/components/_internal/calendar-day.vue +85 -0
  4. package/dist/components/_internal/dismiss-container.vue +68 -121
  5. package/dist/components/_internal/fragment-container.vue +3 -3
  6. package/dist/components/_internal/loading-mask.d.vue.ts +8 -0
  7. package/dist/components/_internal/loading-mask.vue +25 -0
  8. package/dist/components/_internal/mention-editor.d.vue.ts +42 -0
  9. package/dist/components/_internal/mention-editor.vue +114 -0
  10. package/dist/components/_internal/popover-arrow.vue +8 -5
  11. package/dist/components/_internal/tree-node.d.vue.ts +72 -0
  12. package/dist/components/_internal/tree-node.vue +260 -0
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/active-graph/index.vue +381 -239
  15. package/dist/components/active-graph/types.d.ts +2 -1
  16. package/dist/components/approval-card/index.d.vue.ts +28 -0
  17. package/dist/components/approval-card/index.vue +235 -0
  18. package/dist/components/approval-card/types.d.ts +37 -0
  19. package/dist/components/avatar/index.d.vue.ts +2 -2
  20. package/dist/components/avatar/index.vue +43 -72
  21. package/dist/components/avatar-group/index.d.vue.ts +1 -1
  22. package/dist/components/avatar-group/index.vue +38 -25
  23. package/dist/components/backtop/index.d.vue.ts +10 -3
  24. package/dist/components/backtop/index.vue +97 -54
  25. package/dist/components/backtop/types.d.ts +10 -3
  26. package/dist/components/badge/index.d.vue.ts +6 -3
  27. package/dist/components/badge/index.vue +126 -79
  28. package/dist/components/badge/types.d.ts +3 -2
  29. package/dist/components/book/index.vue +57 -162
  30. package/dist/components/border-beam/index.d.vue.ts +18 -0
  31. package/dist/components/border-beam/index.vue +64 -0
  32. package/dist/components/border-beam/types.d.ts +8 -0
  33. package/dist/components/{resizable-panel → breadcrumb}/index.d.vue.ts +3 -4
  34. package/dist/components/breadcrumb/index.vue +32 -0
  35. package/dist/components/breadcrumb/types.d.ts +6 -0
  36. package/dist/components/breadcrumb-item/index.d.vue.ts +16 -0
  37. package/dist/components/breadcrumb-item/index.vue +50 -0
  38. package/dist/components/breadcrumb-item/types.d.ts +4 -0
  39. package/dist/components/browser/index.d.vue.ts +2 -2
  40. package/dist/components/browser/index.vue +13 -28
  41. package/dist/components/bubble/index.d.vue.ts +6 -3
  42. package/dist/components/bubble/index.vue +85 -18
  43. package/dist/components/bubble/types.d.ts +3 -1
  44. package/dist/components/bubble-group/index.d.vue.ts +19 -0
  45. package/dist/components/bubble-group/index.vue +86 -0
  46. package/dist/components/bubble-group/types.d.ts +6 -0
  47. package/dist/components/bubble-group/types.js +0 -0
  48. package/dist/components/button/index.d.vue.ts +2 -1
  49. package/dist/components/button/index.vue +121 -86
  50. package/dist/components/button-group/index.vue +20 -7
  51. package/dist/components/calendar/index.d.vue.ts +41 -0
  52. package/dist/components/calendar/index.vue +247 -0
  53. package/dist/components/calendar/types.d.ts +37 -0
  54. package/dist/components/card/index.d.vue.ts +21 -0
  55. package/dist/components/card/index.vue +47 -0
  56. package/dist/components/card/types.d.ts +6 -0
  57. package/dist/components/carousel/index.d.vue.ts +8 -4
  58. package/dist/components/carousel/index.vue +232 -283
  59. package/dist/components/carousel/types.d.ts +15 -1
  60. package/dist/components/checkbox/index.d.vue.ts +6 -5
  61. package/dist/components/checkbox/index.vue +107 -90
  62. package/dist/components/checkbox/types.d.ts +6 -4
  63. package/dist/components/checkbox-group/index.d.vue.ts +6 -6
  64. package/dist/components/checkbox-group/index.vue +26 -11
  65. package/dist/components/checkbox-group/types.d.ts +3 -1
  66. package/dist/components/checkerboard/index.d.vue.ts +14 -0
  67. package/dist/components/checkerboard/index.vue +37 -0
  68. package/dist/components/checkerboard/types.d.ts +5 -0
  69. package/dist/components/chip/index.d.vue.ts +3 -1
  70. package/dist/components/chip/index.vue +49 -46
  71. package/dist/components/choicebox/index.d.vue.ts +7 -7
  72. package/dist/components/choicebox/index.vue +52 -30
  73. package/dist/components/choicebox-item/index.d.vue.ts +7 -5
  74. package/dist/components/choicebox-item/index.vue +172 -53
  75. package/dist/components/choicebox-item/types.d.ts +3 -7
  76. package/dist/components/collapse/index.d.vue.ts +2 -2
  77. package/dist/components/collapse/index.vue +72 -98
  78. package/dist/components/collapse-group/index.vue +43 -32
  79. package/dist/components/color-selector/index.vue +45 -41
  80. package/dist/components/command-menu/index.d.vue.ts +10 -7
  81. package/dist/components/command-menu/index.vue +103 -45
  82. package/dist/components/command-menu/types.d.ts +3 -2
  83. package/dist/components/config-provider/index.d.vue.ts +77 -3
  84. package/dist/components/config-provider/index.vue +54 -11
  85. package/dist/components/config-provider/types.d.ts +5 -3
  86. package/dist/components/copy-button/index.d.vue.ts +24 -0
  87. package/dist/components/copy-button/index.vue +40 -0
  88. package/dist/components/copy-button/types.d.ts +7 -0
  89. package/dist/components/countdown/index.d.vue.ts +1 -1
  90. package/dist/components/countdown/index.vue +77 -29
  91. package/dist/components/dash-line/index.d.vue.ts +2 -1
  92. package/dist/components/dash-line/index.vue +78 -76
  93. package/dist/components/date-picker/index.d.vue.ts +16 -0
  94. package/dist/components/date-picker/index.vue +295 -0
  95. package/dist/components/date-picker/types.d.ts +20 -0
  96. package/dist/components/description/index.vue +16 -7
  97. package/dist/components/drawer/index.d.vue.ts +5 -5
  98. package/dist/components/drawer/index.vue +138 -67
  99. package/dist/components/drawer/types.d.ts +1 -0
  100. package/dist/components/effort-slider/index.d.vue.ts +10 -0
  101. package/dist/components/effort-slider/index.vue +347 -0
  102. package/dist/components/effort-slider/types.d.ts +14 -0
  103. package/dist/components/ellipsis-text/index.d.vue.ts +1 -1
  104. package/dist/components/ellipsis-text/index.vue +208 -165
  105. package/dist/components/empty-state/index.vue +11 -4
  106. package/dist/components/error/index.d.vue.ts +3 -1
  107. package/dist/components/error/index.vue +42 -28
  108. package/dist/components/error/types.d.ts +1 -0
  109. package/dist/components/fader/index.d.vue.ts +1 -1
  110. package/dist/components/fader/index.vue +56 -112
  111. package/dist/components/fader/types.d.ts +2 -1
  112. package/dist/components/feedback-bar/index.d.vue.ts +12 -0
  113. package/dist/components/feedback-bar/index.vue +81 -0
  114. package/dist/components/feedback-bar/types.d.ts +9 -0
  115. package/dist/components/gauge/index.vue +89 -69
  116. package/dist/components/grid/index.vue +58 -52
  117. package/dist/components/grid-item/index.vue +44 -39
  118. package/dist/components/hold-button/index.vue +111 -115
  119. package/dist/components/hue-text/index.d.vue.ts +16 -0
  120. package/dist/components/hue-text/index.vue +48 -0
  121. package/dist/components/hue-text/types.d.ts +4 -0
  122. package/dist/components/index.d.ts +40 -5
  123. package/dist/components/index.js +40 -5
  124. package/dist/components/input/index.d.vue.ts +5 -4
  125. package/dist/components/input/index.vue +250 -134
  126. package/dist/components/input/types.d.ts +9 -6
  127. package/dist/components/intersection-observer/index.vue +65 -42
  128. package/dist/components/kbd/index.vue +45 -23
  129. package/dist/components/label/index.vue +7 -3
  130. package/dist/components/link-button/index.vue +49 -32
  131. package/dist/components/list/index.d.vue.ts +22 -14
  132. package/dist/components/list/index.vue +238 -77
  133. package/dist/components/list/types.d.ts +39 -11
  134. package/dist/components/list-group/index.d.vue.ts +4 -0
  135. package/dist/components/list-group/index.vue +22 -0
  136. package/dist/components/list-group/types.d.ts +5 -0
  137. package/dist/components/list-item/index.d.vue.ts +7 -7
  138. package/dist/components/list-item/index.vue +78 -76
  139. package/dist/components/list-item/types.d.ts +7 -4
  140. package/dist/components/loading-bar/index.vue +152 -145
  141. package/dist/components/loading-dots/index.d.vue.ts +1 -13
  142. package/dist/components/loading-dots/index.vue +13 -15
  143. package/dist/components/marching-ants/index.d.vue.ts +25 -0
  144. package/dist/components/marching-ants/index.vue +486 -0
  145. package/dist/components/marching-ants/types.d.ts +9 -0
  146. package/dist/components/marquee/index.d.vue.ts +37 -0
  147. package/dist/components/marquee/index.vue +242 -0
  148. package/dist/components/marquee/types.d.ts +18 -0
  149. package/dist/components/material/index.vue +22 -28
  150. package/dist/components/mention/index.d.vue.ts +38 -0
  151. package/dist/components/mention/index.vue +251 -0
  152. package/dist/components/mention/types.d.ts +35 -0
  153. package/dist/components/menu/index.d.vue.ts +17 -10
  154. package/dist/components/menu/index.vue +98 -27
  155. package/dist/components/menu/types.d.ts +7 -5
  156. package/dist/components/message/composables/use-group-expand.js +1 -1
  157. package/dist/components/message/composables/use-message-timer.js +2 -1
  158. package/dist/components/message/composables/use-promise-message.js +4 -4
  159. package/dist/components/message/index.d.vue.ts +7 -7
  160. package/dist/components/message/index.vue +141 -234
  161. package/dist/components/message-item/index.vue +50 -62
  162. package/dist/components/modal/index.d.vue.ts +4 -4
  163. package/dist/components/modal/index.vue +125 -63
  164. package/dist/components/modal/types.d.ts +1 -3
  165. package/dist/components/more-button/index.vue +25 -13
  166. package/dist/components/noise-background/index.d.vue.ts +0 -16
  167. package/dist/components/noise-background/index.vue +70 -9
  168. package/dist/components/noise-background/types.d.ts +4 -0
  169. package/dist/components/note/index.d.vue.ts +1 -1
  170. package/dist/components/note/index.vue +108 -98
  171. package/dist/components/note/types.d.ts +1 -0
  172. package/dist/components/number-input/index.d.vue.ts +1 -3
  173. package/dist/components/number-input/index.vue +196 -161
  174. package/dist/components/number-input/types.d.ts +1 -2
  175. package/dist/components/overlay/index.d.vue.ts +2 -2
  176. package/dist/components/overlay/index.vue +110 -68
  177. package/dist/components/page-number/index.d.vue.ts +18 -0
  178. package/dist/components/page-number/index.vue +232 -0
  179. package/dist/components/page-number/types.d.ts +18 -0
  180. package/dist/components/pagination/index.vue +14 -7
  181. package/dist/components/pin-input/index.d.vue.ts +2 -2
  182. package/dist/components/pin-input/index.vue +191 -173
  183. package/dist/components/placeholder/index.vue +22 -32
  184. package/dist/components/popover/index.d.vue.ts +0 -47
  185. package/dist/components/popover/index.vue +528 -345
  186. package/dist/components/popover/types.d.ts +7 -0
  187. package/dist/components/progress/index.d.vue.ts +2 -8
  188. package/dist/components/progress/index.vue +84 -62
  189. package/dist/components/progress/types.d.ts +0 -5
  190. package/dist/components/project-banner/index.d.vue.ts +3 -1
  191. package/dist/components/project-banner/index.vue +36 -34
  192. package/dist/components/project-banner/types.d.ts +1 -1
  193. package/dist/components/questionnaire/index.d.vue.ts +10 -0
  194. package/dist/components/questionnaire/index.vue +353 -0
  195. package/dist/components/questionnaire/types.d.ts +30 -0
  196. package/dist/components/radial-burst/index.d.vue.ts +14 -0
  197. package/dist/components/radial-burst/index.vue +53 -0
  198. package/dist/components/radial-burst/types.d.ts +5 -0
  199. package/dist/components/radio/index.d.vue.ts +4 -4
  200. package/dist/components/radio/index.vue +56 -74
  201. package/dist/components/radio-group/index.d.vue.ts +4 -4
  202. package/dist/components/radio-group/index.vue +26 -12
  203. package/dist/components/rating/index.d.vue.ts +17 -0
  204. package/dist/components/rating/index.vue +253 -0
  205. package/dist/components/rating/types.d.ts +18 -0
  206. package/dist/components/reasoning/index.d.vue.ts +16 -0
  207. package/dist/components/reasoning/index.vue +68 -0
  208. package/dist/components/reasoning/types.d.ts +3 -0
  209. package/dist/components/resizable/index.d.vue.ts +27 -4
  210. package/dist/components/resizable/index.vue +404 -158
  211. package/dist/components/resizable/types.d.ts +20 -13
  212. package/dist/components/resizable/utils.d.ts +4 -0
  213. package/dist/components/resizable/utils.js +10 -0
  214. package/dist/components/reveal/index.d.vue.ts +22 -0
  215. package/dist/components/reveal/index.vue +100 -0
  216. package/dist/components/reveal/types.d.ts +15 -0
  217. package/dist/components/rolling-number/index.d.vue.ts +17 -0
  218. package/dist/components/rolling-number/index.vue +252 -0
  219. package/dist/components/rolling-number/types.d.ts +11 -0
  220. package/dist/components/scalable-text/index.vue +113 -110
  221. package/dist/components/scroll-progress/index.d.vue.ts +22 -0
  222. package/dist/components/scroll-progress/index.vue +75 -0
  223. package/dist/components/scroll-progress/types.d.ts +9 -0
  224. package/dist/components/scroll-text/index.d.vue.ts +18 -0
  225. package/dist/components/scroll-text/index.vue +123 -0
  226. package/dist/components/scroll-text/types.d.ts +7 -0
  227. package/dist/components/scrollable/index.d.vue.ts +3 -3
  228. package/dist/components/scrollable/index.vue +281 -222
  229. package/dist/components/search-input/index.d.vue.ts +152 -0
  230. package/dist/components/search-input/index.vue +55 -0
  231. package/dist/components/search-input/types.d.ts +7 -0
  232. package/dist/components/select/index.d.vue.ts +33 -0
  233. package/dist/components/select/index.vue +134 -0
  234. package/dist/components/select/types.d.ts +23 -0
  235. package/dist/components/separator/index.vue +9 -6
  236. package/dist/components/shimmer-text/index.d.vue.ts +18 -0
  237. package/dist/components/shimmer-text/index.vue +216 -0
  238. package/dist/components/shimmer-text/types.d.ts +14 -0
  239. package/dist/components/skeleton/index.d.vue.ts +2 -2
  240. package/dist/components/skeleton/index.vue +59 -51
  241. package/dist/components/slider/index.d.vue.ts +2 -2
  242. package/dist/components/slider/index.vue +391 -261
  243. package/dist/components/slider/types.d.ts +3 -1
  244. package/dist/components/snippet/index.d.vue.ts +2 -1
  245. package/dist/components/snippet/index.vue +80 -69
  246. package/dist/components/snippet/types.d.ts +3 -3
  247. package/dist/components/spinner/index.vue +9 -8
  248. package/dist/components/spinner-dots/index.d.vue.ts +7 -0
  249. package/dist/components/spinner-dots/index.vue +232 -0
  250. package/dist/components/spinner-dots/types.d.ts +9 -0
  251. package/dist/components/split-button/index.d.vue.ts +31 -0
  252. package/dist/components/split-button/index.vue +93 -0
  253. package/dist/components/split-button/types.d.ts +18 -0
  254. package/dist/components/stack/index.d.vue.ts +1 -1
  255. package/dist/components/stack/index.vue +98 -84
  256. package/dist/components/status-dot/index.d.vue.ts +1 -1
  257. package/dist/components/status-dot/index.vue +34 -20
  258. package/dist/components/steps/index.d.vue.ts +28 -0
  259. package/dist/components/steps/index.vue +143 -0
  260. package/dist/components/steps/step-item.d.vue.ts +24 -0
  261. package/dist/components/steps/step-item.vue +86 -0
  262. package/dist/components/steps/types.d.ts +25 -0
  263. package/dist/components/stick-to-bottom/index.d.vue.ts +35 -0
  264. package/dist/components/stick-to-bottom/index.vue +78 -0
  265. package/dist/components/stick-to-bottom/types.d.ts +13 -0
  266. package/dist/components/swipe-cell/index.d.vue.ts +53 -0
  267. package/dist/components/swipe-cell/index.vue +412 -0
  268. package/dist/components/swipe-cell/instances.d.ts +7 -0
  269. package/dist/components/swipe-cell/instances.js +17 -0
  270. package/dist/components/swipe-cell/types.d.ts +52 -0
  271. package/dist/components/switch/index.d.vue.ts +1 -1
  272. package/dist/components/switch/index.vue +42 -21
  273. package/dist/components/switch-item/index.vue +36 -37
  274. package/dist/components/tabs/index.d.vue.ts +8 -6
  275. package/dist/components/tabs/index.vue +242 -196
  276. package/dist/components/tabs/tab-slot.d.ts +24 -0
  277. package/dist/components/tabs/tab-slot.js +13 -0
  278. package/dist/components/tabs/types.d.ts +11 -5
  279. package/dist/components/teleport/index.vue +69 -60
  280. package/dist/components/text/index.d.vue.ts +1 -1
  281. package/dist/components/text/index.vue +68 -57
  282. package/dist/components/textarea/index.d.vue.ts +7 -5
  283. package/dist/components/textarea/index.vue +148 -71
  284. package/dist/components/textarea/types.d.ts +5 -2
  285. package/dist/components/theme-switcher/index.d.vue.ts +2 -2
  286. package/dist/components/theme-switcher/index.vue +8 -12
  287. package/dist/components/time-picker/index.d.vue.ts +7 -8
  288. package/dist/components/time-picker/index.vue +246 -183
  289. package/dist/components/time-picker/types.d.ts +7 -7
  290. package/dist/components/timeline/index.d.vue.ts +6 -0
  291. package/dist/components/timeline/index.vue +52 -0
  292. package/dist/components/timeline/types.d.ts +6 -0
  293. package/dist/components/timeline-item/index.d.vue.ts +22 -0
  294. package/dist/components/timeline-item/index.vue +110 -0
  295. package/dist/components/timeline-item/types.d.ts +16 -0
  296. package/dist/components/toc/index.d.vue.ts +37 -0
  297. package/dist/components/toc/index.vue +199 -0
  298. package/dist/components/toc/types.d.ts +28 -0
  299. package/dist/components/todo-list/index.d.vue.ts +64 -0
  300. package/dist/components/todo-list/index.vue +357 -0
  301. package/dist/components/todo-list/types.d.ts +53 -0
  302. package/dist/components/toggle/index.d.vue.ts +6 -6
  303. package/dist/components/toggle/index.vue +92 -41
  304. package/dist/components/toggle/types.d.ts +1 -1
  305. package/dist/components/toggle-button/index.d.vue.ts +5 -5
  306. package/dist/components/toggle-button/index.vue +120 -84
  307. package/dist/components/toggle-button/types.d.ts +6 -4
  308. package/dist/components/toggle-button-group/index.d.vue.ts +7 -6
  309. package/dist/components/toggle-button-group/index.vue +63 -43
  310. package/dist/components/tool-call/index.d.vue.ts +6 -0
  311. package/dist/components/tool-call/index.vue +209 -0
  312. package/dist/components/tool-call/types.d.ts +8 -0
  313. package/dist/components/tooltip/index.d.vue.ts +5 -2
  314. package/dist/components/tooltip/index.vue +105 -50
  315. package/dist/components/tooltip/types.d.ts +1 -0
  316. package/dist/components/tree/index.d.vue.ts +108 -0
  317. package/dist/components/tree/index.vue +684 -0
  318. package/dist/components/tree/types.d.ts +126 -0
  319. package/dist/components/virtual-list/index.d.vue.ts +7 -9
  320. package/dist/components/virtual-list/index.vue +120 -54
  321. package/dist/components/virtual-list/types.d.ts +0 -1
  322. package/dist/composables/_internal/use-collapse-motion.d.ts +6 -0
  323. package/dist/composables/_internal/use-collapse-motion.js +85 -0
  324. package/dist/composables/{use-focus-trap.d.ts → _internal/use-focus-trap.d.ts} +2 -2
  325. package/dist/composables/_internal/use-focus-trap.js +64 -0
  326. package/dist/composables/{use-forward-ref-expose.js → _internal/use-forward-ref-expose.js} +1 -1
  327. package/dist/composables/_internal/use-list-filter.d.ts +15 -0
  328. package/dist/composables/_internal/use-list-filter.js +48 -0
  329. package/dist/composables/_internal/use-list-keyboard-controller.d.ts +21 -0
  330. package/dist/composables/_internal/use-list-keyboard-controller.js +27 -0
  331. package/dist/composables/_internal/use-list-navigation.d.ts +25 -0
  332. package/dist/composables/_internal/use-list-navigation.js +141 -0
  333. package/dist/composables/_internal/use-list-rows.d.ts +29 -0
  334. package/dist/composables/_internal/use-list-rows.js +58 -0
  335. package/dist/composables/_internal/use-list-selection.d.ts +23 -0
  336. package/dist/composables/_internal/use-list-selection.js +41 -0
  337. package/dist/composables/_internal/use-lock-scroll.js +57 -0
  338. package/dist/composables/_internal/use-mention-editor.d.ts +35 -0
  339. package/dist/composables/_internal/use-mention-editor.js +508 -0
  340. package/dist/composables/_internal/use-mention-suggest.d.ts +23 -0
  341. package/dist/composables/_internal/use-mention-suggest.js +113 -0
  342. package/dist/composables/{use-model-value.d.ts → _internal/use-model-value.d.ts} +1 -1
  343. package/dist/composables/_internal/use-model-value.js +13 -0
  344. package/dist/composables/_internal/use-motion-reduce.d.ts +6 -0
  345. package/dist/composables/_internal/use-motion-reduce.js +40 -0
  346. package/dist/composables/_internal/use-overlay-dialog.d.ts +25 -0
  347. package/dist/composables/_internal/use-overlay-dialog.js +25 -0
  348. package/dist/composables/{use-overlay-manager.js → _internal/use-overlay-manager.js} +2 -2
  349. package/dist/composables/{use-popover-responsive.js → _internal/use-popover-responsive.js} +1 -1
  350. package/dist/composables/_internal/use-selected-list-item.d.ts +6 -0
  351. package/dist/composables/_internal/use-selected-list-item.js +36 -0
  352. package/dist/composables/_internal/use-swipe-gesture.d.ts +88 -0
  353. package/dist/composables/_internal/use-swipe-gesture.js +345 -0
  354. package/dist/composables/_internal/use-tailwind-variant.d.ts +31 -0
  355. package/dist/composables/_internal/use-tailwind-variant.js +62 -0
  356. package/dist/composables/_internal/use-tree-drag.d.ts +23 -0
  357. package/dist/composables/_internal/use-tree-drag.js +196 -0
  358. package/dist/composables/_internal/use-tree-move.d.ts +20 -0
  359. package/dist/composables/_internal/use-tree-move.js +96 -0
  360. package/dist/composables/_internal/use-tree-rows.d.ts +46 -0
  361. package/dist/composables/_internal/use-tree-rows.js +101 -0
  362. package/dist/composables/_internal/use-tree-selection.d.ts +22 -0
  363. package/dist/composables/_internal/use-tree-selection.js +87 -0
  364. package/dist/composables/_internal/use-word-limit.d.ts +24 -0
  365. package/dist/composables/_internal/use-word-limit.js +36 -0
  366. package/dist/composables/index.d.ts +7 -10
  367. package/dist/composables/index.js +7 -10
  368. package/dist/composables/use-backoff-retry.d.ts +51 -0
  369. package/dist/composables/use-backoff-retry.js +116 -0
  370. package/dist/composables/use-color-scheme.js +28 -25
  371. package/dist/composables/use-copy-click.d.ts +2 -1
  372. package/dist/composables/use-copy-click.js +21 -18
  373. package/dist/composables/use-countdown.d.ts +0 -9
  374. package/dist/composables/use-countdown.js +12 -4
  375. package/dist/composables/use-deferred-value.js +1 -1
  376. package/dist/composables/use-delay-change.js +6 -2
  377. package/dist/composables/use-delay-destroy.d.ts +1 -1
  378. package/dist/composables/use-delay-destroy.js +16 -9
  379. package/dist/composables/use-intersection-observer.d.ts +6 -0
  380. package/dist/composables/use-intersection-observer.js +38 -0
  381. package/dist/composables/use-media-query.d.ts +0 -3
  382. package/dist/composables/use-media-query.js +19 -19
  383. package/dist/composables/use-mutation-observer.d.ts +6 -0
  384. package/dist/composables/use-mutation-observer.js +42 -0
  385. package/dist/composables/use-outside-click.d.ts +6 -4
  386. package/dist/composables/use-outside-click.js +18 -10
  387. package/dist/composables/use-repeat-action.js +31 -20
  388. package/dist/composables/use-resize-observer.d.ts +6 -0
  389. package/dist/composables/use-resize-observer.js +22 -0
  390. package/dist/composables/use-scrollspy.d.ts +15 -0
  391. package/dist/composables/use-scrollspy.js +98 -0
  392. package/dist/composables/use-stick-to-bottom.d.ts +32 -0
  393. package/dist/composables/use-stick-to-bottom.js +106 -0
  394. package/dist/composables/use-view-transition.d.ts +20 -0
  395. package/dist/composables/use-view-transition.js +79 -0
  396. package/dist/composables/use-virtual-list.d.ts +8 -5
  397. package/dist/composables/use-virtual-list.js +86 -19
  398. package/dist/contexts/breadcrumb.d.ts +2 -0
  399. package/dist/contexts/breadcrumb.js +2 -0
  400. package/dist/contexts/choicebox.d.ts +1 -0
  401. package/dist/contexts/config-provider.d.ts +3 -2
  402. package/dist/contexts/config-provider.js +4 -3
  403. package/dist/contexts/list.d.ts +4 -25
  404. package/dist/contexts/list.js +0 -8
  405. package/dist/locales/en-us.d.ts +56 -28
  406. package/dist/locales/en-us.js +56 -28
  407. package/dist/locales/index.d.ts +1 -0
  408. package/dist/locales/zh-cn.d.ts +55 -28
  409. package/dist/locales/zh-cn.js +69 -28
  410. package/dist/plugins/dayjs-millisecond-token.d.ts +2 -4
  411. package/dist/plugins/dayjs-millisecond-token.js +1 -2
  412. package/dist/styles/source.css +55 -20
  413. package/dist/styles/styles.css +2 -2
  414. package/dist/styles/tw.css +54 -20
  415. package/dist/types/shared/props.d.ts +5 -3
  416. package/dist/types/shared/utils.d.ts +7 -0
  417. package/dist/utils/context.js +2 -1
  418. package/dist/utils/date.d.ts +1 -15
  419. package/dist/utils/date.js +2 -11
  420. package/dist/utils/dom.d.ts +19 -21
  421. package/dist/utils/dom.js +57 -28
  422. package/dist/utils/event.d.ts +14 -2
  423. package/dist/utils/event.js +65 -27
  424. package/dist/utils/format.d.ts +5 -4
  425. package/dist/utils/format.js +33 -13
  426. package/dist/utils/fuzzy-match.d.ts +2 -0
  427. package/dist/utils/fuzzy-match.js +182 -0
  428. package/dist/utils/helper.d.ts +17 -0
  429. package/dist/utils/helper.js +57 -0
  430. package/dist/utils/is.d.ts +5 -1
  431. package/dist/utils/is.js +10 -2
  432. package/dist/utils/mention-html.d.ts +33 -0
  433. package/dist/utils/mention-html.js +146 -0
  434. package/dist/utils/merge.d.ts +1 -0
  435. package/dist/utils/merge.js +19 -0
  436. package/dist/utils/observer.d.ts +42 -0
  437. package/dist/utils/observer.js +173 -0
  438. package/dist/utils/timing.d.ts +19 -6
  439. package/dist/utils/timing.js +74 -16
  440. package/package.json +48 -37
  441. package/volar.d.ts +40 -5
  442. package/dist/components/carousel-item/index.d.vue.ts +0 -13
  443. package/dist/components/carousel-item/index.vue +0 -54
  444. package/dist/components/command-menu-group/index.d.vue.ts +0 -14
  445. package/dist/components/command-menu-group/index.vue +0 -31
  446. package/dist/components/command-menu-group/types.d.ts +0 -5
  447. package/dist/components/resizable-handle/index.d.vue.ts +0 -6
  448. package/dist/components/resizable-handle/index.vue +0 -116
  449. package/dist/components/resizable-panel/index.vue +0 -57
  450. package/dist/components/resizable-panel/types.d.ts +0 -4
  451. package/dist/components/tabs-item/index.d.vue.ts +0 -4
  452. package/dist/components/tabs-item/index.vue +0 -16
  453. package/dist/components/tabs-item/types.d.ts +0 -10
  454. package/dist/composables/use-browser-observer.d.ts +0 -12
  455. package/dist/composables/use-browser-observer.js +0 -74
  456. package/dist/composables/use-focus-trap.js +0 -54
  457. package/dist/composables/use-list-filter.d.ts +0 -11
  458. package/dist/composables/use-list-filter.js +0 -56
  459. package/dist/composables/use-list-navigation.d.ts +0 -27
  460. package/dist/composables/use-list-navigation.js +0 -159
  461. package/dist/composables/use-lock-scroll.js +0 -37
  462. package/dist/composables/use-model-value.js +0 -13
  463. package/dist/composables/use-swipe-gesture.d.ts +0 -65
  464. package/dist/composables/use-swipe-gesture.js +0 -98
  465. package/dist/contexts/carousel.d.ts +0 -14
  466. package/dist/contexts/carousel.js +0 -2
  467. package/dist/contexts/resizable.d.ts +0 -27
  468. package/dist/contexts/resizable.js +0 -2
  469. package/dist/contexts/tabs.d.ts +0 -15
  470. package/dist/contexts/tabs.js +0 -2
  471. package/dist/plugins/any-touch.d.ts +0 -213
  472. package/dist/plugins/any-touch.js +0 -592
  473. package/dist/utils/fuzzy-search.d.ts +0 -7
  474. package/dist/utils/fuzzy-search.js +0 -61
  475. package/dist/utils/get.d.ts +0 -9
  476. package/dist/utils/get.js +0 -55
  477. package/dist/utils/index.d.ts +0 -10
  478. package/dist/utils/index.js +0 -10
  479. package/dist/utils/ref.d.ts +0 -5
  480. package/dist/utils/ref.js +0 -8
  481. package/dist/utils/uid.d.ts +0 -1
  482. package/dist/utils/uid.js +0 -4
  483. /package/dist/composables/{use-forward-ref-expose.d.ts → _internal/use-forward-ref-expose.d.ts} +0 -0
  484. /package/dist/composables/{use-lock-scroll.d.ts → _internal/use-lock-scroll.d.ts} +0 -0
  485. /package/dist/composables/{use-overlay-manager.d.ts → _internal/use-overlay-manager.d.ts} +0 -0
  486. /package/dist/composables/{use-popover-responsive.d.ts → _internal/use-popover-responsive.d.ts} +0 -0
@@ -0,0 +1,126 @@
1
+ import type { ComponentClass, ComponentLabel, ComponentValue } from '../../types/shared'
2
+
3
+ export interface TreeOption {
4
+ value: ComponentValue
5
+ label?: ComponentLabel
6
+ disabled?: boolean
7
+ children?: TreeOption[]
8
+ keywords?: string[]
9
+ [key: string]: any
10
+ }
11
+
12
+ export type TreeOptions = TreeOption[]
13
+
14
+ export type TreeModelValue = ComponentValue | ComponentValue[] | null
15
+
16
+ export type TreeFilterFn = (node: TreeOption, query: string) => boolean
17
+
18
+ export interface TreeNodeDetail {
19
+ value: ComponentValue
20
+ node: TreeOption
21
+ }
22
+
23
+ export interface TreeChangeDetail extends TreeNodeDetail {
24
+ checked: boolean
25
+ checkedValues: ComponentValue[]
26
+ /** Partially checked parents of the new selection, empty without the cascade. */
27
+ halfCheckedValues: ComponentValue[]
28
+ }
29
+
30
+ export interface TreeHighlightPart {
31
+ text: string
32
+ matched: boolean
33
+ }
34
+
35
+ export type TreeDropPosition = 'before' | 'inside' | 'after'
36
+
37
+ export interface TreeDropTarget {
38
+ targetValue: ComponentValue
39
+ position: TreeDropPosition
40
+ }
41
+
42
+ export interface TreeMoveLocation {
43
+ /** The parent the node sat in, `undefined` at the root level. */
44
+ parentValue?: ComponentValue
45
+ /** Position inside that parent's children. */
46
+ index: number
47
+ }
48
+
49
+ export interface TreeDropInfo {
50
+ dragValue: ComponentValue
51
+ dragNode: TreeOption
52
+ /** The row the drop is aimed at. */
53
+ targetValue: ComponentValue
54
+ targetNode: TreeOption
55
+ position: TreeDropPosition
56
+ }
57
+
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
+ */
62
+ export type TreeAllowDropFn = (info: TreeDropInfo) => boolean
63
+
64
+ export interface TreeMoveDetail {
65
+ value: ComponentValue
66
+ node: TreeOption
67
+ from: TreeMoveLocation
68
+ to: TreeMoveLocation & {
69
+ /** The row the drop was aimed at. */
70
+ targetValue: ComponentValue
71
+ position: TreeDropPosition
72
+ }
73
+ }
74
+
75
+ export interface TreeFlatNode {
76
+ key: ComponentValue
77
+ node: TreeOption
78
+ depth: number
79
+ index: number
80
+ parentValue?: ComponentValue
81
+ hasChildren: boolean
82
+ expanded: boolean
83
+ matched: boolean
84
+ }
85
+
86
+ export interface TreeProps {
87
+ data?: TreeOptions
88
+ modelValue?: TreeModelValue
89
+ multiple?: boolean
90
+ checkStrictly?: boolean
91
+ disabled?: boolean
92
+ expandOnClick?: boolean
93
+ draggable?: boolean
94
+ allowDrop?: TreeAllowDropFn
95
+ showIcon?: boolean
96
+ virtual?: boolean
97
+ itemSize?: number
98
+ overScan?: number
99
+ height?: number | string
100
+ indent?: number
101
+ expandedKeys?: ComponentValue[]
102
+ defaultExpandedKeys?: ComponentValue[]
103
+ childrenField?: string
104
+ filterable?: boolean
105
+ filter?: TreeFilterFn
106
+ /** Render only the nodes the filter matched, instead of the hits plus their ancestors. */
107
+ searchMatchesOnly?: boolean
108
+ /** Highlights the query inside a label. Only a contiguous run of characters is marked: a
109
+ * fuzzy hit that is not one still shows its row, just without the highlight. */
110
+ highlightMatch?: boolean
111
+ searchPlaceholder?: string
112
+ searchValue?: string
113
+ defaultSearchValue?: string
114
+ itemClass?: ComponentClass
115
+ }
116
+
117
+ export interface TreeEmits {
118
+ 'update:modelValue': [TreeModelValue]
119
+ 'update:data': [TreeOptions]
120
+ move: [TreeMoveDetail]
121
+ change: [TreeChangeDetail]
122
+ 'update:expandedKeys': [ComponentValue[]]
123
+ expand: [TreeNodeDetail]
124
+ collapse: [TreeNodeDetail]
125
+ 'update:searchValue': [string]
126
+ }
@@ -1,5 +1,5 @@
1
1
  import type { VirtualListProps } from './types';
2
- import { type VirtualListItem } from '../../composables/use-virtual-list';
2
+ import { type VirtualListItem } from '../../composables/use-virtual-list.js';
3
3
  declare var __VLS_1: {
4
4
  item: any;
5
5
  virtualItem: VirtualListItem;
@@ -13,21 +13,19 @@ declare const __VLS_base: import("vue").DefineComponent<VirtualListProps, {
13
13
  totalSize: import("vue").ComputedRef<number>;
14
14
  virtualItems: import("vue").ComputedRef<VirtualListItem[]>;
15
15
  getVirtualizer: () => import("@tanstack/virtual-core").Virtualizer<HTMLElement, HTMLElement>;
16
- scrollToIndex: (index: number, { align: initialAlign, behavior, }?: import("@tanstack/virtual-core").ScrollToOptions) => void;
17
- scrollToOffset: (toOffset: number, { align, behavior }?: import("@tanstack/virtual-core").ScrollToOptions) => void;
18
- scrollBy: (delta: number, { behavior }?: import("@tanstack/virtual-core").ScrollToOptions) => void;
16
+ scrollToIndex: (index: number, args_1?: import("@tanstack/virtual-core").ScrollToOptions | undefined) => void;
17
+ scrollToOffset: (toOffset: number, args_1?: import("@tanstack/virtual-core").ScrollToOptions | undefined) => void;
18
+ scrollBy: (delta: number, args_1?: import("@tanstack/virtual-core").ScrollToOptions | undefined) => void;
19
19
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
- bottom: () => any;
21
20
  retry: () => any;
22
21
  }, string, import("vue").PublicProps, Readonly<VirtualListProps> & Readonly<{
23
- onBottom?: (() => any) | undefined;
24
22
  onRetry?: (() => any) | undefined;
25
23
  }>, {
26
- listData: any[];
27
- errorText: string;
24
+ items: any[];
25
+ dataKey: string;
28
26
  loadingText: string;
27
+ errorText: string;
29
28
  finishedText: string;
30
- dataKey: string;
31
29
  columnGap: number;
32
30
  columnCount: number;
33
31
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,72 +1,138 @@
1
1
  <script setup>
2
2
  import LoaderCircleIcon from "@gdsicon/vue/loader-circle";
3
3
  import { shallowRef } from "vue";
4
- import { useVirtualList } from "../../composables/use-virtual-list";
4
+ import { useVirtualList } from "../../composables/use-virtual-list.js";
5
5
  defineOptions({
6
- name: "PVirtualList",
7
- inheritAttrs: false
6
+ name: "PVirtualList",
7
+ inheritAttrs: false
8
8
  });
9
9
  const props = defineProps({
10
- listClass: { type: [String, Array, Object], required: false },
11
- itemClass: { type: [String, Array, Object], required: false },
12
- errorText: { type: String, required: false, default: "Request failed. Click to reload" },
13
- loadingText: { type: String, required: false, default: "Loading..." },
14
- finishedText: { type: String, required: false, default: "Finished" },
15
- status: { type: String, required: false },
16
- dataKey: { type: String, required: false, default: "id" },
17
- listData: { type: Array, required: false, default: () => [] },
18
- itemSize: { type: Number, required: false },
19
- overScan: { type: Number, required: false },
20
- columnGap: { type: Number, required: false, default: 0 },
21
- columnCount: { type: Number, required: false, default: 1 },
22
- onBottom: { type: Function, required: false },
23
- bottomThreshold: { type: Number, required: false }
10
+ listClass: {
11
+ type: [
12
+ String,
13
+ Array,
14
+ Object
15
+ ],
16
+ required: false
17
+ },
18
+ itemClass: {
19
+ type: [
20
+ String,
21
+ Array,
22
+ Object
23
+ ],
24
+ required: false
25
+ },
26
+ errorText: {
27
+ type: String,
28
+ required: false,
29
+ default: "Request failed. Click to reload"
30
+ },
31
+ loadingText: {
32
+ type: String,
33
+ required: false,
34
+ default: "Loading..."
35
+ },
36
+ finishedText: {
37
+ type: String,
38
+ required: false,
39
+ default: "Finished"
40
+ },
41
+ enabled: {
42
+ type: null,
43
+ required: false
44
+ },
45
+ status: {
46
+ type: String,
47
+ required: false
48
+ },
49
+ dataKey: {
50
+ type: String,
51
+ required: false,
52
+ default: "id"
53
+ },
54
+ items: {
55
+ type: Array,
56
+ required: false,
57
+ default: () => []
58
+ },
59
+ itemSize: {
60
+ type: Number,
61
+ required: false
62
+ },
63
+ overScan: {
64
+ type: Number,
65
+ required: false
66
+ },
67
+ columnGap: {
68
+ type: Number,
69
+ required: false,
70
+ default: 0
71
+ },
72
+ columnCount: {
73
+ type: Number,
74
+ required: false,
75
+ default: 1
76
+ },
77
+ scrollPaddingStart: {
78
+ type: Number,
79
+ required: false
80
+ },
81
+ scrollPaddingEnd: {
82
+ type: Number,
83
+ required: false
84
+ },
85
+ onBottom: {
86
+ type: Function,
87
+ required: false
88
+ },
89
+ bottomThreshold: {
90
+ type: Number,
91
+ required: false
92
+ }
24
93
  });
25
- const emits = defineEmits(["retry", "bottom"]);
94
+ const emits = defineEmits(["retry"]);
26
95
  const containerRef = shallowRef();
27
- const {
28
- totalSize,
29
- virtualItems,
30
- measureElement,
31
- getVirtualizer,
32
- scrollToIndex,
33
- scrollToOffset,
34
- scrollBy
35
- } = useVirtualList(containerRef, props);
96
+ const { totalSize, virtualItems, measureElement, getVirtualizer, scrollToIndex, scrollToOffset, scrollBy } = useVirtualList(containerRef, props);
36
97
  function getItemStyle(virtualItem) {
37
- const lanes = Math.max(1, Math.floor(props.columnCount));
38
- const gap = props.columnGap;
39
- const y = `translateY(${virtualItem.start}px)`;
40
- if (lanes <= 1) {
41
- return { transform: y };
42
- }
43
- const lane = virtualItem.lane;
44
- const width = `calc((100% - ${(lanes - 1) * gap}px) / ${lanes})`;
45
- const left = `calc(${lane} * ((100% - ${(lanes - 1) * gap}px) / ${lanes} + ${gap}px))`;
46
- return {
47
- width,
48
- left,
49
- transform: y
50
- };
98
+ const lanes = Math.max(1, Math.floor(props.columnCount));
99
+ const gap = props.columnGap;
100
+ const y = `translateY(${virtualItem.start}px)`;
101
+ if (lanes <= 1) {
102
+ return { transform: y };
103
+ }
104
+ const lane = virtualItem.lane;
105
+ const width = `calc((100% - ${(lanes - 1) * gap}px) / ${lanes})`;
106
+ const left = `calc(${lane} * ((100% - ${(lanes - 1) * gap}px) / ${lanes} + ${gap}px))`;
107
+ return {
108
+ width,
109
+ left,
110
+ transform: y
111
+ };
51
112
  }
52
113
  function onRetryClick() {
53
- if (props.status !== "error") {
54
- return;
55
- }
56
- emits("retry");
114
+ if (props.status !== "error") {
115
+ return;
116
+ }
117
+ emits("retry");
57
118
  }
58
119
  defineExpose({
59
- totalSize,
60
- virtualItems,
61
- getVirtualizer,
62
- scrollToIndex,
63
- scrollToOffset,
64
- scrollBy
120
+ totalSize,
121
+ virtualItems,
122
+ getVirtualizer,
123
+ scrollToIndex,
124
+ scrollToOffset,
125
+ scrollBy
65
126
  });
66
127
  </script>
67
128
 
68
129
  <template>
69
- <div ref="containerRef" class="pxd-virtual-list relative overflow-auto" v-bind="$attrs">
130
+ <div
131
+ data-virtual-list
132
+ ref="containerRef"
133
+ class="pxd-virtual-list relative overflow-auto"
134
+ v-bind="$attrs"
135
+ >
70
136
  <div
71
137
  class="pxd-virtual-list--content relative w-full content-visibility-auto"
72
138
  :class="listClass"
@@ -81,7 +147,7 @@ defineExpose({
81
147
  :class="itemClass"
82
148
  :style="getItemStyle(virtualItem)"
83
149
  >
84
- <slot name="item" :item="listData[virtualItem.index]" :virtual-item="virtualItem" />
150
+ <slot name="item" :item="items[virtualItem.index]" :virtual-item="virtualItem" />
85
151
  </div>
86
152
  </div>
87
153
 
@@ -95,7 +161,7 @@ defineExpose({
95
161
  <span v-if="status === 'error'">{{ errorText }}</span>
96
162
  <span v-else-if="status === 'finished'">{{ finishedText }}</span>
97
163
  <template v-else-if="status === 'loading'">
98
- <LoaderCircleIcon class="mr-1.5 motion-safe:animate-spin" />
164
+ <LoaderCircleIcon class="me-1.5 motion-safe:animate-spin" />
99
165
  <span>{{ loadingText }}</span>
100
166
  </template>
101
167
  </slot>
@@ -9,5 +9,4 @@ export interface VirtualListProps extends VirtualListOptions {
9
9
  }
10
10
  export interface VirtualListEmits {
11
11
  retry: [];
12
- bottom: [];
13
12
  }
@@ -0,0 +1,6 @@
1
+ import type { MaybeRefOrGetter, Ref } from 'vue';
2
+ export declare function useCollapseMotion(contentRef: Ref<HTMLElement | undefined>, expanded: MaybeRefOrGetter<boolean>): {
3
+ detailsOpen: import("vue").ShallowRef<boolean, boolean>;
4
+ isLeaving: import("vue").ComputedRef<boolean>;
5
+ skipEnterMotion: () => void;
6
+ };
@@ -0,0 +1,85 @@
1
+ import { computed, onMounted, onScopeDispose, shallowRef, watch } from "vue";
2
+ import { getStyle } from "../../utils/dom.js";
3
+ import { toValue } from "../../utils/helper.js";
4
+ export function useCollapseMotion(contentRef, expanded) {
5
+ const detailsOpen = shallowRef(false);
6
+ let ready = false;
7
+ let skipEnter = false;
8
+ let stopWait;
9
+ const isLeaving = computed(() => detailsOpen.value && !toValue(expanded));
10
+ function skipEnterMotion() {
11
+ skipEnter = true;
12
+ }
13
+ function clearWait() {
14
+ stopWait?.();
15
+ stopWait = void 0;
16
+ }
17
+ function finish() {
18
+ clearWait();
19
+ const el = contentRef.value;
20
+ if (el) {
21
+ el.style.height = "";
22
+ el.style.overflow = "";
23
+ }
24
+ if (!toValue(expanded)) {
25
+ detailsOpen.value = false;
26
+ }
27
+ }
28
+ function animate(isExpanded) {
29
+ const el = contentRef.value;
30
+ if (!el) {
31
+ return;
32
+ }
33
+ clearWait();
34
+ el.style.overflow = "hidden";
35
+ el.style.height = isExpanded ? "0" : `${el.scrollHeight}px`;
36
+ void el.offsetHeight;
37
+ el.style.height = isExpanded ? `${el.scrollHeight}px` : "0";
38
+ const done = (event) => {
39
+ if (event && (event.propertyName !== "height" || event.target !== el)) {
40
+ return;
41
+ }
42
+ finish();
43
+ };
44
+ const ms = (Number.parseFloat(getStyle(el).transitionDuration) || 0) * 1e3;
45
+ if (!ms) {
46
+ done();
47
+ return;
48
+ }
49
+ el.addEventListener("transitionend", done);
50
+ const timer = window.setTimeout(done, ms + 50);
51
+ stopWait = () => {
52
+ el.removeEventListener("transitionend", done);
53
+ window.clearTimeout(timer);
54
+ };
55
+ }
56
+ watch(
57
+ () => toValue(expanded),
58
+ (isExpanded) => {
59
+ if (isExpanded) {
60
+ detailsOpen.value = true;
61
+ }
62
+ if (!ready) {
63
+ detailsOpen.value = isExpanded;
64
+ return;
65
+ }
66
+ if (isExpanded && skipEnter) {
67
+ skipEnter = false;
68
+ return;
69
+ }
70
+ animate(isExpanded);
71
+ },
72
+ { immediate: true, flush: "post" }
73
+ );
74
+ onMounted(() => {
75
+ ready = true;
76
+ });
77
+ onScopeDispose(() => {
78
+ clearWait();
79
+ });
80
+ return {
81
+ detailsOpen,
82
+ isLeaving,
83
+ skipEnterMotion
84
+ };
85
+ }
@@ -1,4 +1,4 @@
1
- import type { MaybeElementRef } from '../types/shared/utils';
1
+ import type { MaybeElementRef } from '../../types/shared/utils';
2
2
  import type { Options as FocusTrapOptions } from 'focus-trap';
3
3
  import { type MaybeRefOrGetter } from 'vue';
4
4
  export interface UseFocusTrapOptions extends FocusTrapOptions {
@@ -12,5 +12,5 @@ export interface UseFocusTrapOptions extends FocusTrapOptions {
12
12
  * - Share a trap stack among PXD traps so nested dialogs coordinate pause/unpause.
13
13
  */
14
14
  export declare function useFocusTrap(container: MaybeElementRef<HTMLElement>, userOptions?: MaybeRefOrGetter<UseFocusTrapOptions>): {
15
- stop: import("vue").WatchHandle;
15
+ stop: () => void;
16
16
  };
@@ -0,0 +1,64 @@
1
+ import { createFocusTrap } from "focus-trap";
2
+ import { onScopeDispose, watch } from "vue";
3
+ import { isTruthyProp } from "../../utils/format.js";
4
+ import { toValue } from "../../utils/helper.js";
5
+ const focusTrapStack = [];
6
+ const AUTO_FOCUS_FIRST_SELECTOR = [
7
+ 'input:not([type="hidden"]):not(:disabled)',
8
+ "button:not(:disabled)",
9
+ "select:not(:disabled)",
10
+ "textarea:not(:disabled)",
11
+ '[tabindex]:not([tabindex="-1"])'
12
+ ].join(",");
13
+ export function useFocusTrap(container, userOptions = {}) {
14
+ let trapper = null;
15
+ function deactivate() {
16
+ trapper?.deactivate();
17
+ trapper = null;
18
+ }
19
+ function activate(target) {
20
+ const { autoFocusElement, ...restOptions } = toValue(userOptions);
21
+ const defaultOptions = {
22
+ allowOutsideClick: true,
23
+ escapeDeactivates: false,
24
+ clickOutsideDeactivates: false,
25
+ // A11y + robustness
26
+ // If set and is or returns true, a click outside the focus trap will not be prevented
27
+ returnFocusOnDeactivate: true,
28
+ preventScroll: true,
29
+ fallbackFocus: () => target,
30
+ initialFocus: () => {
31
+ if (isTruthyProp(autoFocusElement)) {
32
+ const elSelector = typeof autoFocusElement === "string" && autoFocusElement ? autoFocusElement : AUTO_FOCUS_FIRST_SELECTOR;
33
+ return target.querySelector(elSelector) ?? target;
34
+ }
35
+ return target;
36
+ },
37
+ // Coordinate nested PXD dialogs
38
+ trapStack: focusTrapStack
39
+ };
40
+ trapper = createFocusTrap(target, { ...defaultOptions, ...restOptions });
41
+ trapper.activate();
42
+ }
43
+ const unwatch = watch(
44
+ () => toValue(container),
45
+ (target) => {
46
+ deactivate();
47
+ if (!target) {
48
+ return;
49
+ }
50
+ activate(target);
51
+ },
52
+ { flush: "post" }
53
+ );
54
+ function stop() {
55
+ unwatch();
56
+ deactivate();
57
+ }
58
+ onScopeDispose(() => {
59
+ stop();
60
+ });
61
+ return {
62
+ stop
63
+ };
64
+ }
@@ -1,4 +1,4 @@
1
- import { toValue } from "../utils/ref.js";
1
+ import { toValue } from "../../utils/helper.js";
2
2
  export function useForwardRefExpose(refEl) {
3
3
  return new Proxy({}, {
4
4
  get(_, prop) {
@@ -0,0 +1,15 @@
1
+ import type { ListOptions } from '../../components/list/types';
2
+ import type { MaybeRefOrGetter, ComputedRef } from 'vue';
3
+ export type ListFilterFn = (text: string, search: string, keywords: string[]) => boolean;
4
+ export interface UseListFilterOptions {
5
+ filter?: ListFilterFn;
6
+ }
7
+ export interface UseListFilterReturn {
8
+ filteredOptions: ComputedRef<ListOptions>;
9
+ visibleCount: ComputedRef<number>;
10
+ }
11
+ /**
12
+ * Pure filter over list options. Groups with no matching children are dropped.
13
+ */
14
+ export declare function filterListOptions(options: ListOptions, query: string, filter?: ListFilterFn): ListOptions;
15
+ export declare function useListFilter(options: MaybeRefOrGetter<ListOptions>, keyword: MaybeRefOrGetter<string>, { filter }?: UseListFilterOptions): UseListFilterReturn;
@@ -0,0 +1,48 @@
1
+ import { computed } from "vue";
2
+ import { isFuzzyMatch } from "../../utils/fuzzy-match.js";
3
+ import { toValue } from "../../utils/helper.js";
4
+ import { isListOptionGroup } from "./use-selected-list-item.js";
5
+ function getOptionText(option) {
6
+ return `${String(option.label ?? "")}${String(option.description ?? "")}`.trim();
7
+ }
8
+ function countListOptions(options) {
9
+ let count = 0;
10
+ for (const entry of options) {
11
+ if (isListOptionGroup(entry)) {
12
+ count += entry.options.length;
13
+ } else {
14
+ count += 1;
15
+ }
16
+ }
17
+ return count;
18
+ }
19
+ export function filterListOptions(options, query, filter = isFuzzyMatch) {
20
+ const needle = query.trim();
21
+ if (!needle) {
22
+ return options;
23
+ }
24
+ const result = [];
25
+ for (const entry of options) {
26
+ if (isListOptionGroup(entry)) {
27
+ const matched = entry.options.filter(
28
+ (item) => filter(getOptionText(item), needle, item.keywords ?? [])
29
+ );
30
+ if (matched.length) {
31
+ result.push({ ...entry, options: matched });
32
+ }
33
+ } else if (filter(getOptionText(entry), needle, entry.keywords ?? [])) {
34
+ result.push(entry);
35
+ }
36
+ }
37
+ return result;
38
+ }
39
+ export function useListFilter(options, keyword, { filter = isFuzzyMatch } = {}) {
40
+ const filteredOptions = computed(
41
+ () => filterListOptions(toValue(options) ?? [], toValue(keyword) ?? "", filter)
42
+ );
43
+ const visibleCount = computed(() => countListOptions(filteredOptions.value));
44
+ return {
45
+ filteredOptions,
46
+ visibleCount
47
+ };
48
+ }
@@ -0,0 +1,21 @@
1
+ import type { ListNavigationCommand } from './use-list-navigation';
2
+ import type { MaybeRefOrGetter } from 'vue';
3
+ export type ListKeyboardMap = Readonly<Record<string, ListNavigationCommand>>;
4
+ export interface UseListKeyboardControllerOptions {
5
+ keymap: MaybeRefOrGetter<ListKeyboardMap>;
6
+ enabled?: MaybeRefOrGetter<boolean>;
7
+ preventDefaultKeys?: MaybeRefOrGetter<readonly string[]>;
8
+ onCommand: (command: ListNavigationCommand, ev: KeyboardEvent) => boolean;
9
+ }
10
+ /**
11
+ * Creates a keyboard event handler for list navigation.
12
+ *
13
+ * The handler maps enabled keyboard events to semantic navigation commands
14
+ * while ignoring IME composition events.
15
+ *
16
+ * @param options - Configuration for the list target, enabled state, and keys.
17
+ * @returns A keyboard event handler for list navigation.
18
+ */
19
+ export declare function useListKeyboardController(options: UseListKeyboardControllerOptions): {
20
+ onKeydown: (ev: KeyboardEvent) => void;
21
+ };
@@ -0,0 +1,27 @@
1
+ import { toValue } from "../../utils/helper.js";
2
+ const DEFAULT_PREVENT_DEFAULT_KEYS = ["PageDown", "PageUp"];
3
+ export function useListKeyboardController(options) {
4
+ function onKeydown(ev) {
5
+ if (toValue(options.enabled) === false || ev.isComposing || ev.key === "Process") {
6
+ return;
7
+ }
8
+ const preventDefaultKeys = toValue(options.preventDefaultKeys) ?? DEFAULT_PREVENT_DEFAULT_KEYS;
9
+ if (preventDefaultKeys.includes(ev.key)) {
10
+ ev.preventDefault();
11
+ return;
12
+ }
13
+ if (ev.ctrlKey || ev.metaKey || ev.altKey || ev.shiftKey) {
14
+ return;
15
+ }
16
+ const command = toValue(options.keymap)[ev.key];
17
+ if (!command) {
18
+ return;
19
+ }
20
+ if (!options.onCommand(command, ev)) {
21
+ return;
22
+ }
23
+ ev.preventDefault();
24
+ ev.stopPropagation();
25
+ }
26
+ return { onKeydown };
27
+ }