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
@@ -1,52 +1,100 @@
1
1
  <script setup>
2
2
  import { computed, onBeforeUnmount } from "vue";
3
- import { useCountdown } from "../../composables/use-countdown";
4
- import { dayjs, dayjsDurationPlugin, dayjsMillisecondTokenPlugin } from "../../utils/date";
3
+ import { useCountdown } from "../../composables/use-countdown.js";
4
+ import { dayjs, dayjsDurationPlugin, dayjsMillisecondTokenPlugin } from "../../utils/date.js";
5
5
  defineOptions({
6
- name: "PCountDown",
7
- inheritAttrs: false
6
+ name: "PCountDown",
7
+ inheritAttrs: false
8
8
  });
9
9
  const props = defineProps({
10
- format: { type: String, required: false, default: "HH:mm:ss" },
11
- invert: { type: Boolean, required: false },
12
- active: { type: Boolean, required: false, default: false },
13
- startAt: { type: Number, required: false },
14
- endTime: { type: Number, required: false, default: 0 },
15
- autoReset: { type: Boolean, required: false, default: true },
16
- durations: { type: Number, required: false, default: 0 },
17
- precision: { type: Number, required: false, default: 0 },
18
- millisecond: { type: Boolean, required: false, default: true },
19
- intuitive: { type: Boolean, required: false }
10
+ format: {
11
+ type: String,
12
+ required: false,
13
+ default: "HH:mm:ss"
14
+ },
15
+ invert: {
16
+ type: Boolean,
17
+ required: false
18
+ },
19
+ active: {
20
+ type: Boolean,
21
+ required: false,
22
+ default: false
23
+ },
24
+ startAt: {
25
+ type: Number,
26
+ required: false
27
+ },
28
+ endTime: {
29
+ type: Number,
30
+ required: false,
31
+ default: 0
32
+ },
33
+ autoReset: {
34
+ type: Boolean,
35
+ required: false,
36
+ default: true
37
+ },
38
+ durations: {
39
+ type: Number,
40
+ required: false,
41
+ default: 0
42
+ },
43
+ precision: {
44
+ type: Number,
45
+ required: false,
46
+ default: 0
47
+ },
48
+ millisecond: {
49
+ type: Boolean,
50
+ required: false,
51
+ default: true
52
+ },
53
+ intuitive: {
54
+ type: Boolean,
55
+ required: false
56
+ }
20
57
  });
21
- const emits = defineEmits(["change", "reset", "finish"]);
58
+ const emits = defineEmits([
59
+ "change",
60
+ "reset",
61
+ "finish"
62
+ ]);
22
63
  dayjs.extend(dayjsDurationPlugin);
23
64
  dayjs.extend(dayjsMillisecondTokenPlugin);
24
65
  const { stop, reset, timestamp } = useCountdown(props, emits);
66
+ const timestampDuration = computed(() => {
67
+ return dayjs.duration(timestamp.value);
68
+ });
25
69
  const times = computed(() => {
26
- const t = dayjs.duration(timestamp.value);
27
- return {
28
- dd: t.format("DD"),
29
- hh: t.format("HH"),
30
- mm: t.format("mm"),
31
- ss: t.format("ss"),
32
- ms: t.format("SSS")
33
- };
70
+ const t = timestampDuration.value;
71
+ return {
72
+ dd: t.format("DD"),
73
+ hh: t.format("HH"),
74
+ mm: t.format("mm"),
75
+ ss: t.format("ss"),
76
+ ms: t.format("SSS")
77
+ };
34
78
  });
35
79
  const displayTimes = computed(() => {
36
- const time = dayjs.duration(timestamp.value).format(props.format);
37
- return time;
80
+ const time = timestampDuration.value.format(props.format);
81
+ return time;
38
82
  });
39
83
  onBeforeUnmount(() => {
40
- stop();
84
+ stop();
41
85
  });
42
86
  defineExpose({
43
- reset,
44
- times
87
+ reset,
88
+ times
45
89
  });
46
90
  </script>
47
91
 
48
92
  <template>
49
- <div class="pxd-countdown relative w-max max-w-full leading-none tabular-nums" v-bind="$attrs">
93
+ <div
94
+ data-countdown
95
+ class="pxd-countdown relative w-max max-w-full leading-none tabular-nums text-trim-both"
96
+ v-bind="$attrs"
97
+ >
50
98
  <slot :active="active" :times="times">
51
99
  {{ displayTimes }}
52
100
  </slot>
@@ -1,6 +1,7 @@
1
+ import type { BasePosition } from '../../types/shared';
1
2
  import type { DashLineProps } from './types';
2
3
  declare const __VLS_export: import("vue").DefineComponent<DashLineProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashLineProps> & Readonly<{}>, {
3
- position: import("../../types/shared").BasePosition | import("../../types/shared").BasePosition[];
4
+ position: BasePosition | BasePosition[];
4
5
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
6
  declare const _default: typeof __VLS_export;
6
7
  export default _default;
@@ -1,86 +1,88 @@
1
1
  <script setup>
2
2
  import { computed } from "vue";
3
- import { getCssUnitValue } from "../../utils/format";
3
+ import { getCssUnitValue } from "../../utils/format.js";
4
4
  defineOptions({
5
- name: "PDashLine",
6
- inheritAttrs: false
5
+ name: "PDashLine",
6
+ inheritAttrs: false
7
7
  });
8
8
  const props = defineProps({
9
- position: { type: [String, Array], required: false, default: () => ["top"] },
10
- lineSize: { type: [String, Number], required: false },
11
- dashSize: { type: [String, Number], required: false },
12
- color: { type: String, required: false },
13
- gap: { type: [String, Number], required: false }
9
+ position: {
10
+ type: [String, Array],
11
+ required: false,
12
+ default: () => ["top"]
13
+ },
14
+ lineSize: {
15
+ type: [String, Number],
16
+ required: false
17
+ },
18
+ dashSize: {
19
+ type: [String, Number],
20
+ required: false
21
+ },
22
+ color: {
23
+ type: String,
24
+ required: false
25
+ },
26
+ gap: {
27
+ type: [String, Number],
28
+ required: false
29
+ }
14
30
  });
15
- const computedStyle = computed(() => ({
16
- "--dash-line-color": props.color,
17
- "--dash-line-dash": getCssUnitValue(props.dashSize),
18
- "--dash-line-size": getCssUnitValue(props.lineSize),
19
- "--dash-line-gap": getCssUnitValue(props.gap)
20
- }));
31
+ const positions = computed(() => Array.isArray(props.position) ? props.position : [props.position]);
32
+ const strokeColor = computed(() => props.color ?? "var(--color-gray-600)");
33
+ const strokeWidth = computed(() => getCssUnitValue(props.lineSize, "1px"));
34
+ const dashArray = computed(() => {
35
+ const dash = parseFloat(getCssUnitValue(props.dashSize) ?? "8");
36
+ const gap = parseFloat(getCssUnitValue(props.gap) ?? "8");
37
+ return `${dash},${gap}`;
38
+ });
39
+ const lineMap = {
40
+ top: {
41
+ x1: "0",
42
+ y1: "0",
43
+ x2: "100%",
44
+ y2: "0"
45
+ },
46
+ bottom: {
47
+ x1: "0",
48
+ y1: "100%",
49
+ x2: "100%",
50
+ y2: "100%"
51
+ },
52
+ left: {
53
+ x1: "0",
54
+ y1: "0",
55
+ x2: "0",
56
+ y2: "100%"
57
+ },
58
+ right: {
59
+ x1: "100%",
60
+ y1: "0",
61
+ x2: "100%",
62
+ y2: "100%"
63
+ }
64
+ };
65
+ const lines = computed(() => positions.value.map((pos) => lineMap[pos]));
21
66
  </script>
22
67
 
23
68
  <template>
24
- <div
25
- class="pxd-dash-line relative max-w-full min-w-full"
26
- v-bind="$attrs"
27
- :data-position="position"
28
- :style="computedStyle"
29
- />
69
+ <div data-dash-line class="pxd-dash-line relative max-w-full min-w-full" v-bind="$attrs">
70
+ <svg
71
+ class="inset-0 pointer-events-none absolute size-full overflow-visible"
72
+ preserveAspectRatio="none"
73
+ >
74
+ <line
75
+ v-for="(line, index) in lines"
76
+ :key="index"
77
+ :x1="line.x1"
78
+ :y1="line.y1"
79
+ :x2="line.x2"
80
+ :y2="line.y2"
81
+ :stroke="strokeColor"
82
+ :stroke-width="strokeWidth"
83
+ :stroke-dasharray="dashArray"
84
+ vector-effect="non-scaling-stroke"
85
+ />
86
+ </svg>
87
+ </div>
30
88
  </template>
31
-
32
- <style lang="postcss">
33
- .pxd-dash-line {
34
- --g: var(--dash-line-gap, 8px);
35
- --d: var(--dash-line-dash, 8px);
36
- --s: var(--dash-line-size, 1px);
37
- --c: var(--dash-line-color, var(--color-gray-600));
38
-
39
- &[data-position*='top']::before,
40
- &[data-position*='bottom']::after,
41
- &[data-position*='left']::before,
42
- &[data-position*='right']::after {
43
- content: '';
44
- position: absolute;
45
- pointer-events: none;
46
- background-image: repeating-linear-gradient(
47
- to var(--p),
48
- var(--c) 0 var(--d),
49
- transparent var(--d) calc(var(--d) + var(--g))
50
- );
51
- }
52
-
53
- &[data-position*='top']::before {
54
- top: 0;
55
- }
56
-
57
- &[data-position*='bottom']::after {
58
- bottom: 0;
59
- }
60
-
61
- &[data-position*='left']::before {
62
- left: 0;
63
- }
64
-
65
- &[data-position*='right']::after {
66
- right: 0;
67
- }
68
-
69
- &[data-position*='top']::before,
70
- &[data-position*='bottom']::after {
71
- --p: right;
72
- left: 0;
73
- right: 0;
74
- width: 100%;
75
- height: var(--s);
76
- }
77
-
78
- &[data-position*='left']::before,
79
- &[data-position*='right']::after {
80
- --p: bottom;
81
- top: 0;
82
- bottom: 0;
83
- width: var(--s);
84
- }
85
- }
86
- </style>
@@ -0,0 +1,16 @@
1
+ import type { ComponentDateTimeValue } from '../../types/shared';
2
+ import type { DatePickerProps } from './types';
3
+ declare const __VLS_export: import("vue").DefineComponent<DatePickerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
4
+ change: (args_0: ComponentDateTimeValue) => any;
5
+ "update:modelValue": (args_0: ComponentDateTimeValue) => any;
6
+ }, string, import("vue").PublicProps, Readonly<DatePickerProps> & Readonly<{
7
+ onChange?: ((args_0: ComponentDateTimeValue) => any) | undefined;
8
+ "onUpdate:modelValue"?: ((args_0: ComponentDateTimeValue) => any) | undefined;
9
+ }>, {
10
+ closeOnPressEscape: boolean;
11
+ valueFormat: string;
12
+ suffixIcon: boolean;
13
+ labelFormat: string;
14
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
@@ -0,0 +1,295 @@
1
+ <script setup>
2
+ import CalendarIcon from "@gdsicon/vue/calendar";
3
+ import { computed, shallowRef, watch } from "vue";
4
+ import { useModelValue } from "../../composables/_internal/use-model-value.js";
5
+ import { usePopoverResponsive } from "../../composables/_internal/use-popover-responsive.js";
6
+ import { dayjs } from "../../utils/date.js";
7
+ import { isNil } from "../../utils/is.js";
8
+ import PCalendar from "../calendar/index.vue";
9
+ import PInput from "../input/index.vue";
10
+ import PPopover from "../popover/index.vue";
11
+ defineOptions({
12
+ name: "PDatePicker",
13
+ inheritAttrs: false,
14
+ model: {
15
+ prop: "modelValue",
16
+ event: "update:modelValue"
17
+ }
18
+ });
19
+ const DATE_FORMAT_TOKEN_RE = /(YYYY|YY|MM|DD|M|D)/;
20
+ const YEAR_FORMAT_TOKEN_RE = /YYYY|YY/;
21
+ const props = defineProps({
22
+ size: {
23
+ type: String,
24
+ required: false
25
+ },
26
+ error: {
27
+ type: [Boolean, String],
28
+ required: false
29
+ },
30
+ disabled: {
31
+ type: Boolean,
32
+ required: false
33
+ },
34
+ clearable: {
35
+ type: Boolean,
36
+ required: false
37
+ },
38
+ modelValue: {
39
+ type: [
40
+ Number,
41
+ String,
42
+ Date,
43
+ null
44
+ ],
45
+ required: false
46
+ },
47
+ suffixIcon: {
48
+ type: Boolean,
49
+ required: false,
50
+ default: true
51
+ },
52
+ placeholder: {
53
+ type: String,
54
+ required: false
55
+ },
56
+ labelFormat: {
57
+ type: String,
58
+ required: false,
59
+ default: "YYYY-MM-DD"
60
+ },
61
+ valueFormat: {
62
+ type: String,
63
+ required: false,
64
+ default: "YYYY-MM-DD"
65
+ },
66
+ isDateDisabled: {
67
+ type: Function,
68
+ required: false
69
+ },
70
+ closeOnPressEscape: {
71
+ type: Boolean,
72
+ required: false,
73
+ default: true
74
+ }
75
+ });
76
+ const emits = defineEmits(["change", "update:modelValue"]);
77
+ const { isAdaptive, responsiveClasses } = usePopoverResponsive();
78
+ const popoverVisible = shallowRef(false);
79
+ const draftInput = shallowRef(null);
80
+ const dayjsDateTime = shallowRef(null);
81
+ const calendarModelValue = computed(() => dayjsDateTime.value?.valueOf() ?? null);
82
+ const modelValue = useModelValue(props, emits, { get() {
83
+ if (draftInput.value !== null) {
84
+ return draftInput.value;
85
+ }
86
+ return dayjsDateTime.value ? dayjsDateTime.value.format(props.labelFormat) : "";
87
+ } });
88
+ function togglePopoverVisible(visible) {
89
+ popoverVisible.value = visible;
90
+ }
91
+ function formatEmittedValue(date) {
92
+ if (props.valueFormat === "timestamp") {
93
+ return date.valueOf();
94
+ }
95
+ return date.format(props.valueFormat);
96
+ }
97
+ function isSameCommittedDate(date) {
98
+ if (date === null || dayjsDateTime.value === null) {
99
+ return date === dayjsDateTime.value;
100
+ }
101
+ return date.isSame(dayjsDateTime.value, "day");
102
+ }
103
+ function commitDate(date) {
104
+ const shouldEmit = !isSameCommittedDate(date);
105
+ dayjsDateTime.value = date;
106
+ draftInput.value = null;
107
+ if (!shouldEmit) {
108
+ return;
109
+ }
110
+ modelValue.value = date ? formatEmittedValue(date) : null;
111
+ }
112
+ function parseIncomingValue(value) {
113
+ if (isNil(value) || value === "") {
114
+ return null;
115
+ }
116
+ if (typeof value === "number" || value instanceof Date) {
117
+ const date = dayjs(value);
118
+ return date.isValid() ? date : null;
119
+ }
120
+ if (props.valueFormat === "timestamp") {
121
+ const date = dayjs(Number(value));
122
+ return date.isValid() ? date : null;
123
+ }
124
+ return parseDateString(value, props.valueFormat) ?? parseDateString(value, props.labelFormat);
125
+ }
126
+ function parseDateString(input, format) {
127
+ const restInput = input.trim();
128
+ if (!restInput) {
129
+ return null;
130
+ }
131
+ const tokens = format.split(DATE_FORMAT_TOKEN_RE).filter(Boolean);
132
+ const parsed = {};
133
+ let rest = restInput;
134
+ for (const token of tokens) {
135
+ if (!rest) {
136
+ break;
137
+ }
138
+ if (!DATE_FORMAT_TOKEN_RE.test(token)) {
139
+ if (rest.startsWith(token)) {
140
+ rest = rest.slice(token.length);
141
+ continue;
142
+ }
143
+ break;
144
+ }
145
+ const matched = consumeDateToken(token, rest);
146
+ if (!matched) {
147
+ break;
148
+ }
149
+ if (token === "YYYY" || token === "YY") {
150
+ parsed.year = matched.value;
151
+ } else if (token === "MM" || token === "M") {
152
+ parsed.month = matched.value;
153
+ } else {
154
+ parsed.date = matched.value;
155
+ }
156
+ rest = rest.slice(matched.length);
157
+ }
158
+ if (rest) {
159
+ return null;
160
+ }
161
+ if (YEAR_FORMAT_TOKEN_RE.test(format) && parsed.year == null) {
162
+ return null;
163
+ }
164
+ if (parsed.year == null && parsed.month == null && parsed.date == null) {
165
+ return null;
166
+ }
167
+ const year = parsed.year ?? dayjs().year();
168
+ const month = parsed.month ?? 1;
169
+ const date = parsed.date ?? 1;
170
+ const result = dayjs(new Date(year, month - 1, date));
171
+ if (result.year() !== year || result.month() !== month - 1 || result.date() !== date) {
172
+ return null;
173
+ }
174
+ return result;
175
+ }
176
+ function consumeDateToken(token, input) {
177
+ if (token === "YYYY") {
178
+ const match = input.match(/^\d{4}/);
179
+ return match ? {
180
+ value: Number(match[0]),
181
+ length: match[0].length
182
+ } : null;
183
+ }
184
+ if (token === "YY") {
185
+ const match = input.match(/^\d{2}/);
186
+ if (!match) {
187
+ return null;
188
+ }
189
+ const year = Number(match[0]);
190
+ return {
191
+ value: year + (year > 68 ? 1900 : 2e3),
192
+ length: match[0].length
193
+ };
194
+ }
195
+ if (token === "MM" || token === "M" || token === "DD" || token === "D") {
196
+ const match = input.match(/^\d{1,2}/);
197
+ return match ? {
198
+ value: Number(match[0]),
199
+ length: match[0].length
200
+ } : null;
201
+ }
202
+ return null;
203
+ }
204
+ function tryCommitInput(value) {
205
+ if (value === "") {
206
+ commitDate(null);
207
+ return true;
208
+ }
209
+ const parsed = parseDateString(value, props.labelFormat);
210
+ if (!parsed) {
211
+ return false;
212
+ }
213
+ commitDate(parsed);
214
+ return true;
215
+ }
216
+ function onDraftInput(value) {
217
+ draftInput.value = value;
218
+ }
219
+ function onInputValueChange(value) {
220
+ if (tryCommitInput(value)) {
221
+ togglePopoverVisible(false);
222
+ }
223
+ }
224
+ function onCalendarChange(value) {
225
+ const date = dayjs(value);
226
+ if (!date.isValid()) {
227
+ return;
228
+ }
229
+ commitDate(date);
230
+ togglePopoverVisible(false);
231
+ }
232
+ function onOutsideClick() {
233
+ if (draftInput.value === null) {
234
+ return;
235
+ }
236
+ if (!tryCommitInput(draftInput.value)) {
237
+ draftInput.value = null;
238
+ }
239
+ }
240
+ function updateDayjsDateTime(value) {
241
+ dayjsDateTime.value = parseIncomingValue(value);
242
+ }
243
+ watch(() => props.modelValue, updateDayjsDateTime, { immediate: true });
244
+ </script>
245
+
246
+ <template>
247
+ <PPopover
248
+ data-date-picker
249
+ v-model="popoverVisible"
250
+ class="pxd-date-picker w-full"
251
+ trigger="click"
252
+ :disabled="disabled"
253
+ :class="$attrs.class"
254
+ :style="$attrs.style"
255
+ :adaptive="isAdaptive"
256
+ :toggle-on-trigger="false"
257
+ :fill-trigger-width="false"
258
+ :wrapper-class="responsiveClasses.wrapper"
259
+ :content-class="responsiveClasses.content"
260
+ :lock-scroll-on-visible="isAdaptive"
261
+ :close-on-press-escape="closeOnPressEscape"
262
+ @outside-click="onOutsideClick"
263
+ >
264
+ <PInput
265
+ :size="size"
266
+ :error="error"
267
+ :disabled="disabled"
268
+ :readonly="isAdaptive"
269
+ :clearable="clearable"
270
+ :model-value="modelValue"
271
+ :placeholder="placeholder"
272
+ :default-suffix-style="false"
273
+ :data-focusing="popoverVisible"
274
+ v-bind="$attrs"
275
+ @update:model-value="onDraftInput"
276
+ @clear="onInputValueChange"
277
+ @change="onInputValueChange"
278
+ >
279
+ <template v-if="suffixIcon" #suffix>
280
+ <CalendarIcon class="me-3" />
281
+ </template>
282
+ </PInput>
283
+
284
+ <template #content>
285
+ <PCalendar
286
+ class="sm:p-2 p-4"
287
+ compact
288
+ :value-format="valueFormat"
289
+ :model-value="calendarModelValue"
290
+ :is-date-disabled="isDateDisabled"
291
+ @change="onCalendarChange"
292
+ />
293
+ </template>
294
+ </PPopover>
295
+ </template>
@@ -0,0 +1,20 @@
1
+ import type { ComponentDateTimeValue, ComponentSize } from '../../types/shared'
2
+
3
+ export interface DatePickerProps {
4
+ size?: ComponentSize
5
+ error?: boolean | string
6
+ disabled?: boolean
7
+ clearable?: boolean
8
+ modelValue?: ComponentDateTimeValue
9
+ suffixIcon?: boolean
10
+ placeholder?: string
11
+ labelFormat?: string
12
+ valueFormat?: string
13
+ isDateDisabled?: (timestamp: number) => boolean
14
+ closeOnPressEscape?: boolean
15
+ }
16
+
17
+ export interface DatePickerEmits {
18
+ change: [ComponentDateTimeValue]
19
+ 'update:modelValue': [ComponentDateTimeValue]
20
+ }
@@ -2,20 +2,29 @@
2
2
  import InformationIcon from "@gdsicon/vue/information-fill-small";
3
3
  import PTooltip from "../tooltip/index.vue";
4
4
  defineOptions({
5
- name: "PDescription",
6
- inheritAttrs: false
5
+ name: "PDescription",
6
+ inheritAttrs: false
7
7
  });
8
8
  defineProps({
9
- title: { type: String, required: false },
10
- tooltip: { type: String, required: false },
11
- description: { type: String, required: false }
9
+ title: {
10
+ type: String,
11
+ required: false
12
+ },
13
+ tooltip: {
14
+ type: String,
15
+ required: false
16
+ },
17
+ description: {
18
+ type: String,
19
+ required: false
20
+ }
12
21
  });
13
22
  </script>
14
23
 
15
24
  <template>
16
- <dl class="pxd-description" v-bind="$attrs">
25
+ <dl data-description class="pxd-description" v-bind="$attrs">
17
26
  <dt
18
- class="pxd-description--title gap-1 text-sm mb-2 min-h-3.5 flex items-center leading-none text-nowrap text-foreground-secondary capitalize"
27
+ class="pxd-description--title gap-1 text-sm mbe-2 min-h-3.5 flex items-center leading-none text-nowrap text-foreground-secondary capitalize"
19
28
  >
20
29
  <slot name="title">
21
30
  {{ title }}