pxd 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/dist/components/_internal/calendar-day.vue +19 -19
  2. package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
  3. package/dist/components/_internal/dismiss-container.vue +19 -19
  4. package/dist/components/_internal/loading-mask.vue +9 -1
  5. package/dist/components/_internal/mention-editor.d.vue.ts +1 -1
  6. package/dist/components/_internal/mention-editor.vue +1 -1
  7. package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
  8. package/dist/components/_internal/popover-arrow.vue +1 -1
  9. package/dist/components/{steps → _internal}/step-item.d.vue.ts +1 -1
  10. package/dist/components/{steps → _internal}/step-item.vue +1 -1
  11. package/dist/components/_internal/tree-node.d.vue.ts +20 -20
  12. package/dist/components/_internal/tree-node.vue +53 -45
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/approval-card/index.d.vue.ts +1 -1
  15. package/dist/components/approval-card/index.vue +34 -17
  16. package/dist/components/approval-card/types.d.ts +1 -1
  17. package/dist/components/avatar/index.d.vue.ts +2 -2
  18. package/dist/components/avatar/index.vue +1 -1
  19. package/dist/components/backtop/index.d.vue.ts +3 -3
  20. package/dist/components/backtop/index.vue +17 -17
  21. package/dist/components/backtop/types.d.ts +1 -1
  22. package/dist/components/badge/index.d.vue.ts +3 -3
  23. package/dist/components/badge/index.vue +43 -43
  24. package/dist/components/badge/types.d.ts +1 -1
  25. package/dist/components/book/types.d.ts +1 -1
  26. package/dist/components/border-beam/index.vue +1 -1
  27. package/dist/components/border-beam/types.d.ts +1 -1
  28. package/dist/components/bubble/index.vue +1 -1
  29. package/dist/components/bubble-group/index.d.vue.ts +4 -4
  30. package/dist/components/button/index.d.vue.ts +5 -5
  31. package/dist/components/button/index.vue +13 -13
  32. package/dist/components/button/types.d.ts +1 -1
  33. package/dist/components/button-group/types.d.ts +1 -1
  34. package/dist/components/calendar/index.d.vue.ts +2 -2
  35. package/dist/components/calendar/index.vue +5 -5
  36. package/dist/components/calendar/types.d.ts +1 -1
  37. package/dist/components/card/types.d.ts +1 -1
  38. package/dist/components/carousel/index.d.vue.ts +7 -7
  39. package/dist/components/carousel/index.vue +1 -1
  40. package/dist/components/carousel/types.d.ts +1 -1
  41. package/dist/components/checkbox/index.vue +1 -1
  42. package/dist/components/checkbox/types.d.ts +1 -1
  43. package/dist/components/checkbox-group/index.d.vue.ts +2 -2
  44. package/dist/components/checkbox-group/types.d.ts +1 -1
  45. package/dist/components/chip/index.d.vue.ts +1 -1
  46. package/dist/components/chip/types.d.ts +1 -1
  47. package/dist/components/choicebox/index.d.vue.ts +3 -3
  48. package/dist/components/choicebox/types.d.ts +1 -1
  49. package/dist/components/choicebox-item/index.vue +8 -8
  50. package/dist/components/choicebox-item/types.d.ts +1 -1
  51. package/dist/components/collapse/index.vue +2 -2
  52. package/dist/components/collapse-group/index.vue +1 -1
  53. package/dist/components/collapse-group/types.d.ts +1 -1
  54. package/dist/components/command-menu/index.d.vue.ts +5 -5
  55. package/dist/components/command-menu/index.vue +10 -3
  56. package/dist/components/config-provider/index.d.vue.ts +40 -5
  57. package/dist/components/config-provider/types.d.ts +2 -1
  58. package/dist/components/confirm-popover/index.d.vue.ts +39 -0
  59. package/dist/components/confirm-popover/index.vue +177 -0
  60. package/dist/components/confirm-popover/types.d.ts +23 -0
  61. package/dist/components/copy-button/index.d.vue.ts +2 -6
  62. package/dist/components/copy-button/index.vue +4 -6
  63. package/dist/components/dash-line/index.d.vue.ts +1 -1
  64. package/dist/components/dash-line/index.vue +8 -8
  65. package/dist/components/dash-line/types.d.ts +1 -1
  66. package/dist/components/date-picker/index.d.vue.ts +1 -1
  67. package/dist/components/date-picker/index.vue +3 -3
  68. package/dist/components/date-picker/types.d.ts +1 -1
  69. package/dist/components/drawer/index.d.vue.ts +7 -7
  70. package/dist/components/drawer/index.vue +30 -15
  71. package/dist/components/drawer/types.d.ts +2 -2
  72. package/dist/components/effort-slider/index.vue +12 -18
  73. package/dist/components/effort-slider/types.d.ts +1 -1
  74. package/dist/components/ellipsis-text/index.d.vue.ts +2 -2
  75. package/dist/components/ellipsis-text/index.vue +75 -75
  76. package/dist/components/error/types.d.ts +1 -1
  77. package/dist/components/fader/index.vue +2 -2
  78. package/dist/components/fader/types.d.ts +1 -1
  79. package/dist/components/gauge/index.vue +2 -2
  80. package/dist/components/gauge/types.d.ts +1 -1
  81. package/dist/components/grid/types.d.ts +1 -1
  82. package/dist/components/grid-item/types.d.ts +1 -1
  83. package/dist/components/hint/index.d.vue.ts +32 -0
  84. package/dist/components/hint/index.vue +239 -0
  85. package/dist/components/hint/types.d.ts +17 -0
  86. package/dist/components/hold-button/index.d.vue.ts +4 -4
  87. package/dist/components/hold-button/index.vue +10 -10
  88. package/dist/components/index.d.ts +4 -0
  89. package/dist/components/index.js +4 -0
  90. package/dist/components/input/index.d.vue.ts +1 -1
  91. package/dist/components/input/index.vue +14 -7
  92. package/dist/components/input/types.d.ts +1 -1
  93. package/dist/components/intersection-observer/index.vue +3 -3
  94. package/dist/components/kbd/index.vue +2 -2
  95. package/dist/components/kbd/types.d.ts +1 -1
  96. package/dist/components/link-button/index.d.vue.ts +5 -5
  97. package/dist/components/list/index.d.vue.ts +4 -4
  98. package/dist/components/list/index.vue +126 -47
  99. package/dist/components/list/types.d.ts +1 -1
  100. package/dist/components/list-group/types.d.ts +1 -1
  101. package/dist/components/list-item/index.d.vue.ts +2 -2
  102. package/dist/components/list-item/index.vue +26 -8
  103. package/dist/components/loading-bar/index.vue +5 -5
  104. package/dist/components/marching-ants/index.d.vue.ts +2 -2
  105. package/dist/components/marching-ants/index.vue +56 -56
  106. package/dist/components/marching-ants/types.d.ts +1 -1
  107. package/dist/components/marquee/index.d.vue.ts +6 -6
  108. package/dist/components/marquee/index.vue +16 -16
  109. package/dist/components/marquee/types.d.ts +1 -1
  110. package/dist/components/material/index.d.vue.ts +3 -3
  111. package/dist/components/mention/index.d.vue.ts +5 -5
  112. package/dist/components/mention/index.vue +68 -68
  113. package/dist/components/menu/index.d.vue.ts +4 -4
  114. package/dist/components/menu/index.vue +10 -10
  115. package/dist/components/menu/types.d.ts +1 -1
  116. package/dist/components/message/index.d.vue.ts +1 -1
  117. package/dist/components/message/index.vue +19 -25
  118. package/dist/components/message/types.d.ts +1 -1
  119. package/dist/components/message-item/index.vue +2 -6
  120. package/dist/components/modal/index.d.vue.ts +7 -7
  121. package/dist/components/modal/index.vue +26 -11
  122. package/dist/components/modal/types.d.ts +2 -2
  123. package/dist/components/noise-background/types.d.ts +1 -1
  124. package/dist/components/note/index.vue +6 -2
  125. package/dist/components/note/types.d.ts +2 -1
  126. package/dist/components/number-input/index.d.vue.ts +11 -6
  127. package/dist/components/number-input/index.vue +57 -16
  128. package/dist/components/number-input/types.d.ts +2 -1
  129. package/dist/components/overlay/index.d.vue.ts +2 -3
  130. package/dist/components/overlay/index.vue +10 -62
  131. package/dist/components/overlay/types.d.ts +0 -2
  132. package/dist/components/page-number/index.vue +30 -29
  133. package/dist/components/page-number/types.d.ts +1 -1
  134. package/dist/components/pin-input/index.d.vue.ts +1 -1
  135. package/dist/components/pin-input/index.vue +6 -6
  136. package/dist/components/pin-input/types.d.ts +1 -1
  137. package/dist/components/popover/index.vue +49 -21
  138. package/dist/components/popover/types.d.ts +3 -1
  139. package/dist/components/progress/index.d.vue.ts +2 -2
  140. package/dist/components/progress/index.vue +12 -12
  141. package/dist/components/progress/types.d.ts +1 -1
  142. package/dist/components/project-banner/types.d.ts +1 -1
  143. package/dist/components/questionnaire/index.vue +14 -14
  144. package/dist/components/radio/index.vue +1 -1
  145. package/dist/components/radio/types.d.ts +1 -1
  146. package/dist/components/radio-group/index.d.vue.ts +2 -2
  147. package/dist/components/radio-group/types.d.ts +1 -1
  148. package/dist/components/rating/index.vue +28 -28
  149. package/dist/components/rating/types.d.ts +1 -1
  150. package/dist/components/resizable/index.d.vue.ts +1 -0
  151. package/dist/components/resizable/index.vue +130 -195
  152. package/dist/components/resizable/types.d.ts +2 -10
  153. package/dist/components/reveal/index.d.vue.ts +3 -3
  154. package/dist/components/reveal/index.vue +4 -4
  155. package/dist/components/reveal/types.d.ts +1 -1
  156. package/dist/components/rolling-number/index.d.vue.ts +2 -2
  157. package/dist/components/rolling-number/index.vue +15 -15
  158. package/dist/components/scalable-text/index.vue +9 -9
  159. package/dist/components/scroll-text/index.d.vue.ts +3 -3
  160. package/dist/components/scroll-text/index.vue +6 -6
  161. package/dist/components/scroll-text/types.d.ts +1 -1
  162. package/dist/components/scrollable/types.d.ts +2 -1
  163. package/dist/components/search-input/index.d.vue.ts +5 -5
  164. package/dist/components/search-input/index.vue +2 -1
  165. package/dist/components/select/index.d.vue.ts +12 -9
  166. package/dist/components/select/index.vue +165 -42
  167. package/dist/components/select/types.d.ts +3 -1
  168. package/dist/components/separator/index.d.vue.ts +1 -1
  169. package/dist/components/separator/types.d.ts +1 -1
  170. package/dist/components/skeleton/index.d.vue.ts +1 -1
  171. package/dist/components/skeleton/index.vue +11 -11
  172. package/dist/components/skeleton/types.d.ts +1 -1
  173. package/dist/components/slider/index.d.vue.ts +1 -1
  174. package/dist/components/slider/index.vue +1 -1
  175. package/dist/components/slider/types.d.ts +1 -1
  176. package/dist/components/snippet/index.d.vue.ts +3 -3
  177. package/dist/components/snippet/index.vue +7 -5
  178. package/dist/components/snippet/types.d.ts +1 -1
  179. package/dist/components/spinner/index.vue +5 -1
  180. package/dist/components/spinner-dots/index.d.vue.ts +1 -1
  181. package/dist/components/split-button/index.d.vue.ts +5 -5
  182. package/dist/components/split-button/types.d.ts +1 -1
  183. package/dist/components/stack/index.d.vue.ts +3 -3
  184. package/dist/components/stack/index.vue +28 -29
  185. package/dist/components/stack/types.d.ts +1 -1
  186. package/dist/components/status-dot/types.d.ts +1 -1
  187. package/dist/components/steps/index.d.vue.ts +2 -2
  188. package/dist/components/steps/index.vue +6 -6
  189. package/dist/components/steps/types.d.ts +1 -1
  190. package/dist/components/stick-to-bottom/types.d.ts +1 -1
  191. package/dist/components/swipe-cell/index.d.vue.ts +6 -6
  192. package/dist/components/swipe-cell/index.vue +64 -64
  193. package/dist/components/swipe-cell/types.d.ts +2 -1
  194. package/dist/components/switch/index.vue +1 -1
  195. package/dist/components/switch/types.d.ts +1 -1
  196. package/dist/components/switch-item/index.vue +1 -1
  197. package/dist/components/switch-item/types.d.ts +1 -1
  198. package/dist/components/tabs/index.d.vue.ts +1 -1
  199. package/dist/components/tabs/index.vue +48 -51
  200. package/dist/components/tabs/types.d.ts +1 -1
  201. package/dist/components/teleport/index.vue +2 -2
  202. package/dist/components/text/index.d.vue.ts +3 -3
  203. package/dist/components/text/index.vue +11 -11
  204. package/dist/components/text/types.d.ts +1 -1
  205. package/dist/components/textarea/index.vue +1 -1
  206. package/dist/components/textarea/types.d.ts +1 -1
  207. package/dist/components/theme-switcher/index.d.vue.ts +3 -2
  208. package/dist/components/theme-switcher/index.vue +15 -7
  209. package/dist/components/theme-switcher/types.d.ts +2 -2
  210. package/dist/components/time-ago/index.d.vue.ts +6 -0
  211. package/dist/components/time-ago/index.vue +143 -0
  212. package/dist/components/time-ago/types.d.ts +4 -0
  213. package/dist/components/time-picker/index.d.vue.ts +1 -1
  214. package/dist/components/time-picker/index.vue +7 -7
  215. package/dist/components/time-picker/types.d.ts +1 -1
  216. package/dist/components/toc/index.d.vue.ts +2 -2
  217. package/dist/components/toc/index.vue +1 -1
  218. package/dist/components/todo-list/index.d.vue.ts +4 -4
  219. package/dist/components/todo-list/index.vue +15 -15
  220. package/dist/components/todo-list/types.d.ts +1 -1
  221. package/dist/components/toggle/index.vue +3 -3
  222. package/dist/components/toggle/types.d.ts +1 -1
  223. package/dist/components/toggle-button/index.vue +14 -11
  224. package/dist/components/toggle-button/types.d.ts +2 -2
  225. package/dist/components/toggle-button-group/index.d.vue.ts +3 -3
  226. package/dist/components/toggle-button-group/index.vue +2 -2
  227. package/dist/components/toggle-button-group/types.d.ts +2 -2
  228. package/dist/components/tool-call/index.vue +5 -5
  229. package/dist/components/tooltip/index.d.vue.ts +4 -5
  230. package/dist/components/tooltip/index.vue +4 -49
  231. package/dist/components/tooltip/types.d.ts +3 -7
  232. package/dist/components/tour/index.d.vue.ts +33 -0
  233. package/dist/components/tour/index.vue +302 -0
  234. package/dist/components/tour/types.d.ts +29 -0
  235. package/dist/components/tree/index.d.vue.ts +24 -28
  236. package/dist/components/tree/index.vue +290 -223
  237. package/dist/components/tree/types.d.ts +38 -13
  238. package/dist/components/virtual-list/index.d.vue.ts +4 -4
  239. package/dist/composables/_internal/use-list-keyboard-controller.js +9 -10
  240. package/dist/composables/_internal/use-list-rows.d.ts +4 -0
  241. package/dist/composables/_internal/use-list-rows.js +12 -4
  242. package/dist/composables/_internal/use-list-selection.d.ts +1 -1
  243. package/dist/composables/_internal/use-lock-scroll.d.ts +8 -1
  244. package/dist/composables/_internal/use-lock-scroll.js +57 -36
  245. package/dist/composables/_internal/use-mention-editor.js +1 -1
  246. package/dist/composables/_internal/use-message-group.d.ts +22 -0
  247. package/dist/composables/_internal/use-message-group.js +143 -0
  248. package/dist/composables/_internal/use-overlay-dialog.js +1 -3
  249. package/dist/composables/_internal/use-overlay-manager.d.ts +4 -1
  250. package/dist/composables/_internal/use-overlay-manager.js +67 -8
  251. package/dist/composables/_internal/use-swipe-gesture.d.ts +1 -1
  252. package/dist/composables/_internal/use-tour-target.d.ts +29 -0
  253. package/dist/composables/_internal/use-tour-target.js +201 -0
  254. package/dist/composables/_internal/use-tree.d.ts +103 -0
  255. package/dist/composables/_internal/use-tree.js +676 -0
  256. package/dist/composables/_internal/use-word-limit.d.ts +1 -1
  257. package/dist/composables/index.d.ts +1 -0
  258. package/dist/composables/index.js +1 -0
  259. package/dist/composables/use-color-scheme.d.ts +1 -1
  260. package/dist/composables/use-color-scheme.js +7 -6
  261. package/dist/composables/use-delay-destroy.d.ts +1 -1
  262. package/dist/composables/use-document-hidden.d.ts +1 -1
  263. package/dist/composables/use-intersection-observer.d.ts +1 -1
  264. package/dist/composables/use-intersection-observer.js +1 -1
  265. package/dist/composables/{_internal/use-motion-reduce.js → use-motion-reduce.js} +2 -2
  266. package/dist/composables/use-mutation-observer.d.ts +1 -1
  267. package/dist/composables/use-mutation-observer.js +1 -1
  268. package/dist/composables/use-resize-observer.d.ts +1 -1
  269. package/dist/composables/use-resize-observer.js +1 -1
  270. package/dist/composables/use-view-transition.js +1 -0
  271. package/dist/composables/use-virtual-list.d.ts +1 -1
  272. package/dist/constants/tooltip-variants.d.ts +28 -0
  273. package/dist/constants/tooltip-variants.js +27 -0
  274. package/dist/contexts/avatar.js +1 -1
  275. package/dist/contexts/breadcrumb.js +1 -1
  276. package/dist/contexts/button.js +1 -1
  277. package/dist/contexts/checkbox.js +1 -1
  278. package/dist/contexts/choicebox.js +1 -1
  279. package/dist/contexts/collapse.js +1 -1
  280. package/dist/contexts/config-provider.js +1 -1
  281. package/dist/contexts/list.js +1 -1
  282. package/dist/contexts/radio.js +1 -1
  283. package/dist/contexts/switch.js +1 -1
  284. package/dist/contexts/toggle-button.js +1 -1
  285. package/dist/index.d.ts +2 -1
  286. package/dist/locales/en-us.d.ts +35 -0
  287. package/dist/locales/en-us.js +20 -0
  288. package/dist/locales/zh-cn.d.ts +35 -0
  289. package/dist/locales/zh-cn.js +20 -0
  290. package/dist/styles/styles.css +1 -1
  291. package/dist/styles/tw.css +43 -30
  292. package/dist/utils/{context.js → _internal/context.js} +1 -1
  293. package/dist/utils/{observer.d.ts → _internal/observer.d.ts} +1 -1
  294. package/dist/utils/{observer.js → _internal/observer.js} +4 -4
  295. package/dist/{components/swipe-cell/instances.d.ts → utils/_internal/swipe-cell-instances.d.ts} +1 -1
  296. package/dist/utils/event.d.ts +2 -1
  297. package/dist/utils/event.js +3 -0
  298. package/package.json +26 -50
  299. package/volar.d.ts +4 -0
  300. package/dist/components/message/composables/use-group-expand.d.ts +0 -13
  301. package/dist/components/message/composables/use-group-expand.js +0 -50
  302. package/dist/components/message/composables/use-message-timer.d.ts +0 -9
  303. package/dist/components/message/composables/use-message-timer.js +0 -62
  304. package/dist/components/message/composables/use-promise-message.d.ts +0 -4
  305. package/dist/components/message/composables/use-promise-message.js +0 -49
  306. package/dist/components/resizable/utils.d.ts +0 -4
  307. package/dist/components/resizable/utils.js +0 -10
  308. package/dist/composables/_internal/use-tree-drag.d.ts +0 -23
  309. package/dist/composables/_internal/use-tree-drag.js +0 -196
  310. package/dist/composables/_internal/use-tree-move.d.ts +0 -20
  311. package/dist/composables/_internal/use-tree-move.js +0 -96
  312. package/dist/composables/_internal/use-tree-rows.d.ts +0 -46
  313. package/dist/composables/_internal/use-tree-rows.js +0 -101
  314. package/dist/composables/_internal/use-tree-selection.d.ts +0 -22
  315. package/dist/composables/_internal/use-tree-selection.js +0 -87
  316. package/dist/styles/source.css +0 -675
  317. package/dist/types/shared/index.d.ts +0 -2
  318. /package/dist/composables/{_internal/use-motion-reduce.d.ts → use-motion-reduce.d.ts} +0 -0
  319. /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
  320. /package/dist/utils/{mention-html.d.ts → _internal/mention-html.d.ts} +0 -0
  321. /package/dist/utils/{mention-html.js → _internal/mention-html.js} +0 -0
  322. /package/dist/{components/swipe-cell/instances.js → utils/_internal/swipe-cell-instances.js} +0 -0
@@ -1,12 +1,14 @@
1
1
  <script setup>
2
- import { computed, reactive, shallowRef } from "vue";
2
+ import { computed, nextTick, onMounted, reactive, shallowRef, watch } from "vue";
3
3
  import { useListNavigation } from "../../composables/_internal/use-list-navigation.js";
4
- import { flattenListOptions, resolveNavigableOption, resolveRowIndexByNavIndex } from "../../composables/_internal/use-list-rows.js";
4
+ import { flattenListOptions } from "../../composables/_internal/use-list-rows.js";
5
5
  import { resolveNextListValue } from "../../composables/_internal/use-list-selection.js";
6
6
  import { resolveOptionByValue } from "../../composables/_internal/use-selected-list-item.js";
7
7
  import { useVirtualList } from "../../composables/use-virtual-list.js";
8
8
  import { provideListContext } from "../../contexts/list.js";
9
9
  import { getElement } from "../../utils/dom.js";
10
+ import { toArray } from "../../utils/format.js";
11
+ import { isNil } from "../../utils/is.js";
10
12
  import PLoadingMask from "../_internal/loading-mask.vue";
11
13
  import PListGroup from "../list-group/index.vue";
12
14
  import PListItem from "../list-item/index.vue";
@@ -79,15 +81,13 @@ const emits = defineEmits(["change", "update:modelValue"]);
79
81
  const containerRef = shallowRef();
80
82
  const flattened = computed(() => flattenListOptions(props.options));
81
83
  const rows = computed(() => flattened.value.rows);
84
+ const itemRows = computed(() => flattened.value.itemRows);
82
85
  const navigableCount = computed(() => flattened.value.navigableCount);
83
- function isNavDisabled(index) {
84
- return resolveNavigableOption(rows.value, index)?.option.disabled === true;
85
- }
86
86
  const virtualOptions = reactive({
87
87
  dataKey: "key",
88
88
  enabled: () => props.virtual,
89
- scrollPaddingStart: 16,
90
- scrollPaddingEnd: 16,
89
+ scrollPaddingStart: props.itemSize / 2,
90
+ scrollPaddingEnd: props.itemSize / 2,
91
91
  get items() {
92
92
  return rows.value;
93
93
  },
@@ -98,14 +98,51 @@ const virtualOptions = reactive({
98
98
  return props.overScan;
99
99
  }
100
100
  });
101
+ const { activeIndex, dispatch, setActiveIndex, onPointerOver, setFirstAsActive } = useListNavigation({
102
+ loop: () => props.loop,
103
+ count: () => navigableCount.value,
104
+ defaultActiveIndex: () => props.defaultActiveIndex,
105
+ isDisabled: isNavDisabled,
106
+ onActivateItem,
107
+ scrollToIndex: scrollNavIndexIntoView
108
+ });
101
109
  const { totalSize, virtualItems, scrollToIndex } = useVirtualList(containerRef, virtualOptions);
110
+ const renderEntries = computed(() => {
111
+ if (props.virtual) {
112
+ return virtualItems.value.map((virtualItem) => {
113
+ const row = rows.value[virtualItem.index];
114
+ return {
115
+ key: virtualItem.key,
116
+ start: virtualItem.start,
117
+ row,
118
+ itemRow: row?.type === "item" ? row : undefined,
119
+ headerLabel: row?.type === "header" ? row.label : undefined
120
+ };
121
+ });
122
+ }
123
+ return rows.value.map((row) => ({
124
+ key: row.key,
125
+ row,
126
+ itemRow: row.type === "item" ? row : undefined,
127
+ headerLabel: row.type === "header" ? row.label : undefined
128
+ }));
129
+ });
130
+ const contentStyle = computed(() => {
131
+ if (!props.virtual) {
132
+ return undefined;
133
+ }
134
+ return { height: `${totalSize.value}px` };
135
+ });
136
+ function isNavDisabled(index) {
137
+ return itemRows.value[index]?.option.disabled === true;
138
+ }
102
139
  function scrollNavIndexIntoView(navIndex) {
103
- const rowIndex = resolveRowIndexByNavIndex(rows.value, navIndex);
104
- if (rowIndex < 0) {
140
+ const row = itemRows.value[navIndex];
141
+ if (!row) {
105
142
  return;
106
143
  }
107
144
  if (props.virtual) {
108
- scrollToIndex(rowIndex, {
145
+ scrollToIndex(row.rowIndex, {
109
146
  align: "auto",
110
147
  behavior: "instant"
111
148
  });
@@ -126,7 +163,7 @@ function onItemSelect(value) {
126
163
  return;
127
164
  }
128
165
  const option = resolveOptionByValue(props.options, value);
129
- if (!option) {
166
+ if (!option || option.disabled) {
130
167
  return;
131
168
  }
132
169
  const nextValue = resolveNextListValue(props.modelValue, value, props.multiple);
@@ -139,59 +176,102 @@ function onActivateItem(navIndex) {
139
176
  el.click();
140
177
  return;
141
178
  }
142
- const row = resolveNavigableOption(rows.value, navIndex);
179
+ const row = itemRows.value[navIndex];
143
180
  if (!row) {
144
181
  return;
145
182
  }
146
183
  onItemSelect(row.option.value);
147
184
  }
148
- const { activeIndex, dispatch, setActiveIndex, onPointerOver, setFirstAsActive } = useListNavigation({
149
- loop: () => props.loop,
150
- count: () => navigableCount.value,
151
- defaultActiveIndex: () => props.defaultActiveIndex,
152
- isDisabled: isNavDisabled,
153
- onActivateItem,
154
- scrollToIndex: scrollNavIndexIntoView
155
- });
156
- function isItemActive(row) {
157
- return activeIndex.value === row.navIndex;
158
- }
159
185
  function dispatchCommand(command) {
160
186
  if (props.loading) {
161
187
  return false;
162
188
  }
163
189
  return dispatch(command);
164
190
  }
165
- const renderEntries = computed(() => {
191
+ function findItemElement(navIndex) {
192
+ return getElement(`[data-list-item][data-index="${navIndex}"]`, containerRef.value);
193
+ }
194
+ function syncActiveItem(next, previous) {
195
+ if (previous >= 0) {
196
+ findItemElement(previous)?.removeAttribute("data-active");
197
+ }
198
+ if (next >= 0) {
199
+ findItemElement(next)?.setAttribute("data-active", "true");
200
+ }
201
+ }
202
+ function refreshActiveItem() {
203
+ const container = containerRef.value;
204
+ if (!container) {
205
+ return;
206
+ }
207
+ container.querySelectorAll("[data-list-item][data-active]").forEach((el) => {
208
+ el.removeAttribute("data-active");
209
+ });
210
+ if (activeIndex.value >= 0) {
211
+ findItemElement(activeIndex.value)?.setAttribute("data-active", "true");
212
+ }
213
+ }
214
+ function scrollToFirstSelected() {
215
+ const firstValue = toArray(props.modelValue)[0];
216
+ if (isNil(firstValue)) {
217
+ return false;
218
+ }
219
+ const target = itemRows.value.find((row) => row.option.value === firstValue);
220
+ if (!target) {
221
+ return false;
222
+ }
166
223
  if (props.virtual) {
167
- return virtualItems.value.map((virtualItem) => {
168
- const row = rows.value[virtualItem.index];
169
- return {
170
- key: virtualItem.key,
171
- start: virtualItem.start,
172
- row,
173
- itemRow: row?.type === "item" ? row : undefined,
174
- headerLabel: row?.type === "header" ? row.label : undefined
175
- };
176
- });
224
+ nextTick(() => scrollNavIndexIntoView(target.navIndex));
225
+ return true;
177
226
  }
178
- return rows.value.map((row) => ({
179
- key: row.key,
180
- row,
181
- itemRow: row.type === "item" ? row : undefined,
182
- headerLabel: row.type === "header" ? row.label : undefined
183
- }));
184
- });
185
- const contentStyle = computed(() => {
186
- if (!props.virtual) {
187
- return undefined;
227
+ const container = containerRef.value;
228
+ const item = getElement(`[data-list-item][data-index="${target.navIndex}"]`, container);
229
+ if (!container || !item) {
230
+ return false;
188
231
  }
189
- return { height: `${totalSize.value}px` };
190
- });
232
+ const itemRect = item.getBoundingClientRect();
233
+ const containerRect = container.getBoundingClientRect();
234
+ if (itemRect.top < containerRect.top) {
235
+ // Keep one row between the selection and the top edge.
236
+ container.scrollTop -= containerRect.top - itemRect.top + itemRect.height;
237
+ } else if (itemRect.bottom > containerRect.bottom) {
238
+ // Keep one row between the selection and the bottom edge.
239
+ container.scrollTop += itemRect.bottom - containerRect.bottom + itemRect.height;
240
+ }
241
+ return true;
242
+ }
243
+ function scrollToFirstOption() {
244
+ if (props.virtual) {
245
+ if (rows.value.length > 0) {
246
+ scrollToIndex(0, {
247
+ align: "start",
248
+ behavior: "instant"
249
+ });
250
+ }
251
+ return;
252
+ }
253
+ if (containerRef.value) {
254
+ containerRef.value.scrollTop = 0;
255
+ }
256
+ }
257
+ watch(activeIndex, syncActiveItem, { flush: "post" });
258
+ watch(renderEntries, refreshActiveItem, { flush: "post" });
191
259
  provideListContext({
192
260
  value: computed(() => props.modelValue),
193
261
  onItemSelect
194
262
  });
263
+ watch(rows, async () => {
264
+ await nextTick();
265
+ if (!scrollToFirstSelected()) {
266
+ scrollToFirstOption();
267
+ }
268
+ }, { flush: "post" });
269
+ onMounted(() => {
270
+ refreshActiveItem();
271
+ if (!scrollToFirstSelected()) {
272
+ scrollToFirstOption();
273
+ }
274
+ });
195
275
  defineExpose({
196
276
  focus: () => containerRef.value?.focus(),
197
277
  dispatch: dispatchCommand,
@@ -234,7 +314,6 @@ defineExpose({
234
314
  v-else-if="entry.itemRow"
235
315
  v-bind="entry.itemRow.option"
236
316
  :index="entry.itemRow.navIndex"
237
- :active="isItemActive(entry.itemRow)"
238
317
  :class="itemClass"
239
318
  >
240
319
  <template v-if="$slots.item">
@@ -3,7 +3,7 @@ import type {
3
3
  ComponentClass,
4
4
  ComponentLabel,
5
5
  ComponentValue,
6
- } from '../../types/shared'
6
+ } from '../../types/shared/props'
7
7
 
8
8
  export interface ListOption {
9
9
  as?: ComponentAs
@@ -1,4 +1,4 @@
1
- import type { ComponentLabel } from '../../types/shared'
1
+ import type { ComponentLabel } from '../../types/shared/props'
2
2
 
3
3
  export interface ListGroupProps {
4
4
  label?: string
@@ -1,7 +1,7 @@
1
1
  import type { ListItemProps } from './types';
2
- declare var __VLS_10: {};
2
+ declare var __VLS_9: {};
3
3
  type __VLS_Slots = {} & {
4
- default?: (props: typeof __VLS_10) => any;
4
+ default?: (props: typeof __VLS_9) => any;
5
5
  };
6
6
  declare const __VLS_base: import("vue").DefineComponent<ListItemProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
7
  click: (args_0: import("../../types/shared/props.js").ComponentValue, args_1: MouseEvent) => any;
@@ -48,21 +48,36 @@ const props = defineProps({
48
48
  }
49
49
  });
50
50
  const emits = defineEmits(["click"]);
51
+ const NATIVE_DISABLED_TAGS = new Set([
52
+ "button",
53
+ "input",
54
+ "select",
55
+ "textarea",
56
+ "option",
57
+ "optgroup",
58
+ "fieldset"
59
+ ]);
60
+ const nativeDisabled = computed(() => {
61
+ if (!props.disabled || typeof props.as !== "string") {
62
+ return undefined;
63
+ }
64
+ return NATIVE_DISABLED_TAGS.has(props.as.toLowerCase()) ? true : undefined;
65
+ });
51
66
  const { value: selectedValue, onItemSelect } = useListContext();
67
+ const isChecked = computed(() => {
68
+ return !isNil(props.value) && toArray(selectedValue.value).includes(props.value);
69
+ });
52
70
  const { attrs, classes } = useTailwindVariant({
53
71
  base: "pxd-list-item min-h-9 p-2 text-sm pe-8 gap-2 flex w-full max-w-full cursor-pointer items-center rounded-md outline-none content-visibility-auto data-[disabled=true]:pointer-events-none data-[disabled=true]:text-gray-700",
54
72
  variants: { variant: {
55
- error: "text-red-900 active:bg-red-100 pointer-fine:aria-selected:bg-red-100",
56
- warning: "text-amber-900 active:bg-amber-100 pointer-fine:aria-selected:bg-amber-100",
57
- default: "text-foreground active:bg-gray-alpha-100 pointer-fine:aria-selected:bg-gray-alpha-100"
73
+ error: "text-red-900 active:bg-red-100 pointer-fine:data-[active=true]:bg-red-100",
74
+ warning: "text-amber-900 active:bg-amber-100 pointer-fine:data-[active=true]:bg-amber-100",
75
+ default: "text-foreground active:bg-gray-alpha-100 pointer-fine:data-[active=true]:bg-gray-alpha-100"
58
76
  } }
59
77
  }, { selection: () => ({ variant: props.variant }) });
60
- const isChecked = computed(() => {
61
- return !isNil(props.value) && toArray(selectedValue.value).includes(props.value);
62
- });
63
78
  function onItemClick(ev) {
64
79
  const value = props.value;
65
- if (isNil(value)) {
80
+ if (props.disabled || isNil(value)) {
66
81
  return;
67
82
  }
68
83
  emits("click", value, ev);
@@ -80,7 +95,10 @@ function onItemClick(ev) {
80
95
  :data-variant="variant"
81
96
  :data-checked="isChecked"
82
97
  :data-disabled="disabled"
83
- :aria-selected="active"
98
+ :data-active="active"
99
+ :aria-selected="isChecked"
100
+ :aria-disabled="disabled"
101
+ :disabled="nativeDisabled"
84
102
  :class="classes"
85
103
  v-bind="attrs"
86
104
  @click.stop="onItemClick"
@@ -42,6 +42,11 @@ const props = defineProps({
42
42
  default: 300
43
43
  }
44
44
  });
45
+ let prevTimestamp = 0;
46
+ let prevAnimationKey = 0;
47
+ let hiddenBarTimeout;
48
+ let enableTransitionTimeout;
49
+ const ENABLE_TRANSITION_DELAY = 0;
45
50
  const status = shallowRef("finish");
46
51
  const hiddenBar = shallowRef(false);
47
52
  const progressValue = shallowRef(0);
@@ -64,11 +69,6 @@ const { classes: innerClasses } = useTailwindVariant({
64
69
  mergeAttrsClass: false,
65
70
  selection: () => ({ status: status.value })
66
71
  });
67
- let prevTimestamp = 0;
68
- let prevAnimationKey = 0;
69
- let hiddenBarTimeout;
70
- let enableTransitionTimeout;
71
- const ENABLE_TRANSITION_DELAY = 0;
72
72
  function getIncreaseDelta(n) {
73
73
  if (n >= 0 && n < .2) {
74
74
  return .1;
@@ -1,9 +1,9 @@
1
1
  import type { MarchingAntsProps } from './types';
2
2
  declare function select(): void;
3
3
  declare function deselect(): void;
4
- declare var __VLS_11: {};
4
+ declare var __VLS_9: {};
5
5
  type __VLS_Slots = {} & {
6
- default?: (props: typeof __VLS_11) => any;
6
+ default?: (props: typeof __VLS_9) => any;
7
7
  };
8
8
  declare const __VLS_base: import("vue").DefineComponent<MarchingAntsProps, {
9
9
  select: typeof select;
@@ -2,6 +2,62 @@
2
2
  import { computed, shallowRef } from "vue";
3
3
  import { getElement } from "../../utils/dom.js";
4
4
  import { getCssUnitValue } from "../../utils/format.js";
5
+ defineOptions({
6
+ name: "PMarchingAnts",
7
+ inheritAttrs: false
8
+ });
9
+ const props = defineProps({
10
+ as: {
11
+ type: [String, Object],
12
+ required: false,
13
+ default: "div"
14
+ },
15
+ color: {
16
+ type: String,
17
+ required: false,
18
+ default: "#00ff88"
19
+ },
20
+ lineSize: {
21
+ type: [String, Number],
22
+ required: false,
23
+ default: 2
24
+ },
25
+ dashSize: {
26
+ type: [String, Number],
27
+ required: false,
28
+ default: 8
29
+ },
30
+ gap: {
31
+ type: [String, Number],
32
+ required: false,
33
+ default: 4
34
+ }
35
+ });
36
+ const targetRef = shallowRef();
37
+ const outline = shallowRef();
38
+ const dashArray = computed(() => {
39
+ const dash = parseFloat(getCssUnitValue(props.dashSize, "8") || "8");
40
+ const gap = parseFloat(getCssUnitValue(props.gap, "4") || "4");
41
+ return {
42
+ value: `${dash} ${gap}`,
43
+ offset: `-${dash + gap}`
44
+ };
45
+ });
46
+ const strokeStyle = computed(() => ({
47
+ "--marching-ants-color": props.color,
48
+ "--marching-ants-stroke-width": getCssUnitValue(props.lineSize, "2px"),
49
+ "--marching-ants-dash-array": dashArray.value.value,
50
+ "--marching-ants-dash-offset": dashArray.value.offset
51
+ }));
52
+ const circleOutline = computed(() => {
53
+ const value = outline.value;
54
+ return value?.type === "ellipse" && Math.abs(value.rx - value.ry) < .5 ? value : undefined;
55
+ });
56
+ const ellipseOutline = computed(() => {
57
+ const value = outline.value;
58
+ return value?.type === "ellipse" && !circleOutline.value ? value : undefined;
59
+ });
60
+ const pathOutline = computed(() => outline.value?.type === "path" ? outline.value : undefined);
5
61
  const resolveLength = (value, reference) => value.endsWith("%") ? parseFloat(value) / 100 * reference : parseFloat(value);
6
62
  const getElementRect = (element) => ({
7
63
  style: getComputedStyle(element),
@@ -364,62 +420,6 @@ function getOutline(element) {
364
420
  }
365
421
  return createRectangleOutline(elementRect.width, elementRect.height);
366
422
  }
367
- defineOptions({
368
- name: "PMarchingAnts",
369
- inheritAttrs: false
370
- });
371
- const props = defineProps({
372
- as: {
373
- type: [String, Object],
374
- required: false,
375
- default: "div"
376
- },
377
- color: {
378
- type: String,
379
- required: false,
380
- default: "#00ff88"
381
- },
382
- lineSize: {
383
- type: [String, Number],
384
- required: false,
385
- default: 2
386
- },
387
- dashSize: {
388
- type: [String, Number],
389
- required: false,
390
- default: 8
391
- },
392
- gap: {
393
- type: [String, Number],
394
- required: false,
395
- default: 4
396
- }
397
- });
398
- const targetRef = shallowRef();
399
- const outline = shallowRef();
400
- const dashArray = computed(() => {
401
- const dash = parseFloat(getCssUnitValue(props.dashSize, "8") || "8");
402
- const gap = parseFloat(getCssUnitValue(props.gap, "4") || "4");
403
- return {
404
- value: `${dash} ${gap}`,
405
- offset: `-${dash + gap}`
406
- };
407
- });
408
- const strokeStyle = computed(() => ({
409
- "--marching-ants-color": props.color,
410
- "--marching-ants-stroke-width": getCssUnitValue(props.lineSize, "2px"),
411
- "--marching-ants-dash-array": dashArray.value.value,
412
- "--marching-ants-dash-offset": dashArray.value.offset
413
- }));
414
- const circleOutline = computed(() => {
415
- const value = outline.value;
416
- return value?.type === "ellipse" && Math.abs(value.rx - value.ry) < .5 ? value : undefined;
417
- });
418
- const ellipseOutline = computed(() => {
419
- const value = outline.value;
420
- return value?.type === "ellipse" && !circleOutline.value ? value : undefined;
421
- });
422
- const pathOutline = computed(() => outline.value?.type === "path" ? outline.value : undefined);
423
423
  function select() {
424
424
  const target = getElement(targetRef.value);
425
425
  if (!target) {
@@ -1,4 +1,4 @@
1
- import type { ComponentAs } from '../../types/shared'
1
+ import type { ComponentAs } from '../../types/shared/props'
2
2
 
3
3
  export interface MarchingAntsProps {
4
4
  as?: ComponentAs
@@ -1,12 +1,12 @@
1
1
  import type { MarqueeProps } from './types';
2
2
  declare function reset(): void;
3
- declare var __VLS_10: {}, __VLS_12: {}, __VLS_14: {};
3
+ declare var __VLS_9: {}, __VLS_11: {}, __VLS_13: {};
4
4
  type __VLS_Slots = {} & {
5
- prefix?: (props: typeof __VLS_10) => any;
5
+ prefix?: (props: typeof __VLS_9) => any;
6
6
  } & {
7
- default?: (props: typeof __VLS_12) => any;
7
+ default?: (props: typeof __VLS_11) => any;
8
8
  } & {
9
- suffix?: (props: typeof __VLS_14) => any;
9
+ suffix?: (props: typeof __VLS_13) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<MarqueeProps, {
12
12
  reset: typeof reset;
@@ -17,13 +17,13 @@ declare const __VLS_base: import("vue").DefineComponent<MarqueeProps, {
17
17
  onClick?: ((args_0: MouseEvent) => any) | undefined;
18
18
  onReplay?: (() => any) | undefined;
19
19
  }>, {
20
- delay: number | string;
20
+ delay: string | number;
21
21
  text: string;
22
22
  background: string;
23
23
  color: string;
24
24
  as: import("../../types/shared/props.js").ComponentAs;
25
25
  pauseOnHover: boolean;
26
- speed: number | string;
26
+ speed: string | number;
27
27
  scrollable: boolean;
28
28
  wrapable: boolean;
29
29
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -55,23 +55,18 @@ const props = defineProps({
55
55
  }
56
56
  });
57
57
  const emits = defineEmits(["click", "replay"]);
58
- const wrapRef = shallowRef();
59
- const contentRef = shallowRef();
60
- const phase = shallowRef("idle");
61
- const contentStyle = shallowRef();
62
58
  let wrapWidth = 0;
63
59
  let contentWidth = 0;
64
60
  let appliedSpeed = 0;
65
61
  let appliedDelay = 0;
66
62
  let restartRafId = 0;
67
- function toDelay(value) {
68
- const n = Number(value);
69
- return Number.isFinite(n) && n >= 0 ? n : 1;
70
- }
71
- function toSpeed(value) {
72
- const n = Number(value);
73
- return Number.isFinite(n) && n > 0 ? n : 60;
74
- }
63
+ const scheduleSync = throttleByRaf(() => {
64
+ syncScroll(false);
65
+ });
66
+ const wrapRef = shallowRef();
67
+ const contentRef = shallowRef();
68
+ const phase = shallowRef("idle");
69
+ const contentStyle = shallowRef();
75
70
  const delaySec = computed(() => toDelay(props.delay));
76
71
  const speed = computed(() => toSpeed(props.speed));
77
72
  const isWrapMode = computed(() => props.wrapable && props.scrollable === false);
@@ -89,6 +84,15 @@ const contentClass = computed(() => {
89
84
  }
90
85
  return "block max-w-full truncate";
91
86
  });
87
+ useResizeObserver(wrapRef, scheduleSync);
88
+ function toDelay(value) {
89
+ const n = Number(value);
90
+ return Number.isFinite(n) && n >= 0 ? n : 1;
91
+ }
92
+ function toSpeed(value) {
93
+ const n = Number(value);
94
+ return Number.isFinite(n) && n > 0 ? n : 60;
95
+ }
92
96
  function clearRestart() {
93
97
  if (restartRafId) {
94
98
  caf(restartRafId);
@@ -162,9 +166,6 @@ function syncScroll(force = false) {
162
166
  }
163
167
  armFirst();
164
168
  }
165
- const scheduleSync = throttleByRaf(() => {
166
- syncScroll(false);
167
- });
168
169
  function reset() {
169
170
  if (isServer()) {
170
171
  return;
@@ -193,7 +194,6 @@ watch(() => [
193
194
  delaySec.value,
194
195
  speed.value
195
196
  ], reset);
196
- useResizeObserver(wrapRef, scheduleSync);
197
197
  onMounted(reset);
198
198
  onBeforeUnmount(() => {
199
199
  scheduleSync.cancel();
@@ -1,4 +1,4 @@
1
- import type { ComponentAs } from '../../types/shared'
1
+ import type { ComponentAs } from '../../types/shared/props'
2
2
 
3
3
  export interface MarqueeProps {
4
4
  as?: ComponentAs
@@ -1,10 +1,10 @@
1
1
  import type { MaterialProps } from './types';
2
- declare var __VLS_8: {};
2
+ declare var __VLS_7: {};
3
3
  type __VLS_Slots = {} & {
4
- default?: (props: typeof __VLS_8) => any;
4
+ default?: (props: typeof __VLS_7) => any;
5
5
  };
6
6
  declare const __VLS_base: import("vue").DefineComponent<MaterialProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MaterialProps> & Readonly<{}>, {
7
- variant: "default" | "small" | "medium" | "large" | "tooltip" | "menu" | "modal" | "fullscreen";
7
+ variant: "default" | "menu" | "small" | "tooltip" | "medium" | "large" | "modal" | "fullscreen";
8
8
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
9
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
10
10
  declare const _default: typeof __VLS_export;
@@ -1,15 +1,15 @@
1
1
  import type { ListOptions } from '../list/types';
2
2
  import type { MentionClickPayload, MentionProps } from './types';
3
- declare var __VLS_33: {
3
+ declare var __VLS_28: {
4
4
  item: import("../list/types").ListOption;
5
5
  index: number;
6
6
  group: import("../list/types").ListOptionGroup | undefined;
7
7
  groupIndex: number | undefined;
8
- }, __VLS_36: {};
8
+ }, __VLS_31: {};
9
9
  type __VLS_Slots = {} & {
10
- item?: (props: typeof __VLS_33) => any;
10
+ item?: (props: typeof __VLS_28) => any;
11
11
  } & {
12
- empty?: (props: typeof __VLS_36) => any;
12
+ empty?: (props: typeof __VLS_31) => any;
13
13
  };
14
14
  declare const __VLS_base: import("vue").DefineComponent<MentionProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
15
  change: (args_0: string) => any;
@@ -20,11 +20,11 @@ declare const __VLS_base: import("vue").DefineComponent<MentionProps, {}, {}, {}
20
20
  "onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
21
21
  "onMention-click"?: ((args_0: MentionClickPayload) => any) | undefined;
22
22
  }>, {
23
- placeholder: string;
24
23
  disabled: boolean;
25
24
  modelValue: string;
26
25
  options: ListOptions | import("./types").MentionOptionsResolver;
27
26
  closeOnPressEscape: boolean;
27
+ placeholder: string;
28
28
  triggers: string[];
29
29
  searchPlaceholder: string;
30
30
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;