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,5 +1,24 @@
1
1
  <script setup>
2
2
  import { createTailwindVariant } from "../../composables/_internal/use-tailwind-variant.js";
3
+ defineOptions({
4
+ name: "PCalendarDay",
5
+ inheritAttrs: false
6
+ });
7
+ const props = defineProps({
8
+ day: {
9
+ type: Object,
10
+ required: true
11
+ },
12
+ selected: {
13
+ type: Boolean,
14
+ required: true
15
+ },
16
+ compact: {
17
+ type: Boolean,
18
+ required: true
19
+ }
20
+ });
21
+ const emits = defineEmits(["change"]);
3
22
  const cellClasses = createTailwindVariant({
4
23
  base: "pxd-calendar--grid-cell shrink-0 self-focus-ring outline-none motion-safe:transition-colors",
5
24
  variants: {
@@ -25,25 +44,6 @@ const dateClasses = createTailwindVariant({
25
44
  disabled: { true: "opacity-35" }
26
45
  }
27
46
  });
28
- defineOptions({
29
- name: "PCalendarDay",
30
- inheritAttrs: false
31
- });
32
- const props = defineProps({
33
- day: {
34
- type: Object,
35
- required: true
36
- },
37
- selected: {
38
- type: Boolean,
39
- required: true
40
- },
41
- compact: {
42
- type: Boolean,
43
- required: true
44
- }
45
- });
46
- const emits = defineEmits(["change"]);
47
47
  function selectDate() {
48
48
  if (props.day.isDisabled) {
49
49
  return;
@@ -1,4 +1,4 @@
1
- import type { ComponentPosition } from '../../types/shared';
1
+ import type { ComponentPosition } from '../../types/shared/props';
2
2
  interface Props {
3
3
  disabled?: boolean;
4
4
  position?: ComponentPosition;
@@ -24,7 +24,10 @@ const props = defineProps({
24
24
  }
25
25
  });
26
26
  const emits = defineEmits(["change", "update:modelValue"]);
27
- const modelValue = useModelValue(props, emits);
27
+ const dampingFactor = 9;
28
+ let maxSwipedDamped = 0;
29
+ let hasDraggedInDismissDirection = false;
30
+ let releaseAnimationId = 0;
28
31
  const containerRef = shallowRef();
29
32
  const gestureMoveOffset = shallowRef(0);
30
33
  const isHorizontal = computed(() => ["left", "right"].find((d) => props.position.startsWith(d)));
@@ -32,24 +35,7 @@ const gestureAxis = computed(() => isHorizontal.value ? "horizontal" : "vertical
32
35
  const computedStyle = computed(() => {
33
36
  return { transform: gestureMoveOffset.value ? `translate${isHorizontal.value ? "X" : "Y"}(${gestureMoveOffset.value}px) !important` : "" };
34
37
  });
35
- const dampingFactor = 9;
36
- let maxSwipedDamped = 0;
37
- let hasDraggedInDismissDirection = false;
38
- let releaseAnimationId = 0;
39
- function animateRelease(from, decayRate = .88) {
40
- caf(releaseAnimationId);
41
- const step = () => {
42
- const next = from * decayRate;
43
- if (Math.abs(next) < .5) {
44
- gestureMoveOffset.value = 0;
45
- return;
46
- }
47
- from = next;
48
- gestureMoveOffset.value = from;
49
- releaseAnimationId = raf(step);
50
- };
51
- releaseAnimationId = raf(step);
52
- }
38
+ const modelValue = useModelValue(props, emits);
53
39
  useSwipeGesture(containerRef, {
54
40
  handleSelector: ".pxd-dismiss-container--handle",
55
41
  swipeThreshold: 0,
@@ -83,6 +69,20 @@ useSwipeGesture(containerRef, {
83
69
  animateRelease(gestureMoveOffset.value);
84
70
  }
85
71
  });
72
+ function animateRelease(from, decayRate = .88) {
73
+ caf(releaseAnimationId);
74
+ const step = () => {
75
+ const next = from * decayRate;
76
+ if (Math.abs(next) < .5) {
77
+ gestureMoveOffset.value = 0;
78
+ return;
79
+ }
80
+ from = next;
81
+ gestureMoveOffset.value = from;
82
+ releaseAnimationId = raf(step);
83
+ };
84
+ releaseAnimationId = raf(step);
85
+ }
86
86
  </script>
87
87
 
88
88
  <template>
@@ -1,4 +1,6 @@
1
1
  <script setup>
2
+ import { onBeforeUnmount, onMounted, shallowRef } from "vue";
3
+ import { useLockScroll } from "../../composables/_internal/use-lock-scroll.js";
2
4
  import PSpinner from "../spinner/index.vue";
3
5
  defineOptions({
4
6
  name: "PLoadingMask",
@@ -9,13 +11,19 @@ const props = defineProps({ text: {
9
11
  required: false,
10
12
  default: "Loading..."
11
13
  } });
14
+ const maskRef = shallowRef();
15
+ const { lockScroll, unlockScroll } = useLockScroll(() => maskRef.value?.parentElement);
16
+ onMounted(lockScroll);
17
+ onBeforeUnmount(unlockScroll);
12
18
  </script>
13
19
 
14
20
  <template>
15
21
  <Transition name="pxd-transition--fade" mode="out-in" appear>
16
22
  <div
23
+ ref="maskRef"
24
+ aria-hidden="true"
17
25
  data-loading-mask
18
- class="pxd-loading-mask inset-0 gap-2 backdrop-blur-sm absolute flex items-center justify-center text-foreground-secondary"
26
+ class="pxd-loading-mask inset-0 gap-2 backdrop-blur-md absolute flex items-center justify-center text-foreground-secondary"
19
27
  v-bind="$attrs"
20
28
  >
21
29
  <PSpinner class="text-base" />
@@ -33,9 +33,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
33
33
  }) => any) | undefined;
34
34
  }>, {
35
35
  size: ComponentSize;
36
- placeholder: string;
37
36
  disabled: boolean;
38
37
  modelValue: string;
38
+ placeholder: string;
39
39
  triggers: string[];
40
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
41
  declare const _default: typeof __VLS_export;
@@ -2,7 +2,7 @@
2
2
  import { computed, onMounted, shallowRef } from "vue";
3
3
  import { useMentionEditor } from "../../composables/_internal/use-mention-editor.js";
4
4
  import { BASIC_MIN_HEIGHTS } from "../../constants/size.js";
5
- import { DEFAULT_TRIGGER } from "../../utils/mention-html.js";
5
+ import { DEFAULT_TRIGGER } from "../../utils/_internal/mention-html.js";
6
6
  defineOptions({
7
7
  name: "PMentionEditor",
8
8
  inheritAttrs: false
@@ -1,4 +1,4 @@
1
- import type { ComponentPosition } from '../../types/shared';
1
+ import type { ComponentPosition } from '../../types/shared/props';
2
2
  interface Props {
3
3
  position?: ComponentPosition;
4
4
  }
@@ -17,7 +17,7 @@ defineProps({ position: {
17
17
  height="7"
18
18
  viewBox="0 0 14 7"
19
19
  xmlns="http://www.w3.org/2000/svg"
20
- class="pxd-popover-arrow"
20
+ class="pxd-popover-arrow motion-safe:transition-[fill]"
21
21
  :data-position="position"
22
22
  v-bind="$attrs"
23
23
  >
@@ -1,4 +1,4 @@
1
- import type { StepsOption, StepsStatus } from './types';
1
+ import type { StepsOption, StepsStatus } from '../steps/types';
2
2
  type __VLS_Props = {
3
3
  clickable?: boolean;
4
4
  index: number;
@@ -82,5 +82,5 @@ function onClick() {
82
82
  </template>
83
83
 
84
84
  <style>
85
- .pxd-steps[data-direction=horizontal] .pxd-steps-item:not(:last-child):after{background-color:var(--color-border);content:"";height:1px;left:calc(50% + var(--steps-indicator-size)/2 + var(--steps-gap));position:absolute;right:calc(-50% + var(--steps-indicator-size)/2 + var(--steps-gap));top:calc(var(--steps-indicator-size)/2)}.pxd-steps[data-direction=horizontal] .pxd-steps-item[data-status=finish]:after{background-color:var(--color-primary)}.pxd-steps[data-direction=vertical] .pxd-steps-item:not(:last-child){padding-bottom:var(--steps-gap)}.pxd-steps[data-direction=vertical] .pxd-steps-item:not(:last-child):after{background-color:var(--color-border);bottom:calc(var(--steps-gap)/2);content:"";left:calc(var(--steps-indicator-size)/2 + var(--spacing));position:absolute;top:calc(var(--steps-indicator-size) + var(--steps-gap)/2);width:1px}.pxd-steps[data-direction=vertical] .pxd-steps-item[data-status=finish]:after{background-color:var(--color-primary)}
85
+ .pxd-steps[data-direction=horizontal] .pxd-steps-item:not(:last-child):after{border-bottom:1px solid var(--color-border);content:"";left:calc(50% + var(--steps-indicator-size)/2 + var(--steps-gap));position:absolute;right:calc(-50% + var(--steps-indicator-size)/2 + var(--steps-gap));top:calc(var(--steps-indicator-size)/2)}.pxd-steps[data-direction=horizontal] .pxd-steps-item[data-status=finish]:after{background-color:var(--color-primary)}.pxd-steps[data-direction=vertical] .pxd-steps-item:not(:last-child){padding-bottom:var(--steps-gap)}.pxd-steps[data-direction=vertical] .pxd-steps-item:not(:last-child):after{border-left:1px solid var(--color-border);bottom:calc(var(--steps-gap)/2);content:"";left:calc(var(--steps-indicator-size)/2 + var(--spacing));position:absolute;top:calc(var(--steps-indicator-size) + var(--steps-gap)/2)}.pxd-steps[data-direction=vertical] .pxd-steps-item[data-status=finish]:after{background-color:var(--color-primary)}
86
86
  </style>
@@ -1,5 +1,5 @@
1
- import type { ComponentClass, ComponentValue } from '../../types/shared';
2
- import type { TreeDropPosition, TreeOption } from '../tree/types';
1
+ import type { ComponentClass, ComponentValue } from '../../types/shared/props';
2
+ import type { TreeDropPosition, TreeHighlightPart, TreeOption } from '../tree/types';
3
3
  type __VLS_Props = {
4
4
  node: TreeOption;
5
5
  value: ComponentValue;
@@ -7,18 +7,18 @@ type __VLS_Props = {
7
7
  index: number;
8
8
  hasChildren: boolean;
9
9
  expanded: boolean;
10
+ loading: boolean;
10
11
  checked: boolean;
11
12
  indeterminate: boolean;
12
13
  active: boolean;
13
14
  multiple: boolean;
14
15
  disabled: boolean;
16
+ selectable: boolean;
15
17
  setSize: number;
16
18
  indent: number;
17
19
  id: string;
18
20
  highlightQuery: string;
19
- showIcon: boolean;
20
21
  draggable: boolean;
21
- dragHandle: boolean;
22
22
  dragging: boolean;
23
23
  dropPosition?: TreeDropPosition;
24
24
  itemClass?: ComponentClass;
@@ -26,40 +26,40 @@ type __VLS_Props = {
26
26
  declare var __VLS_1: {
27
27
  node: TreeOption;
28
28
  depth: number;
29
- }, __VLS_8: {
30
- node: TreeOption;
31
- depth: number;
29
+ loading: boolean;
32
30
  expanded: boolean;
33
- }, __VLS_25: {
31
+ }, __VLS_23: {
34
32
  node: TreeOption;
35
33
  depth: number;
36
34
  expanded: boolean;
37
- }, __VLS_37: {
35
+ hasChildren: boolean;
36
+ }, __VLS_25: {
38
37
  node: TreeOption;
39
38
  depth: number;
40
- }, __VLS_39: {
39
+ parts: TreeHighlightPart[] | undefined;
40
+ hasChildren: boolean;
41
+ }, __VLS_28: {
41
42
  node: TreeOption;
43
+ hasChildren: boolean;
42
44
  };
43
45
  type __VLS_Slots = {} & {
44
- 'node-drag-handle'?: (props: typeof __VLS_1) => any;
45
- } & {
46
- 'node-switcher'?: (props: typeof __VLS_8) => any;
46
+ 'node-switcher'?: (props: typeof __VLS_1) => any;
47
47
  } & {
48
- 'node-icon'?: (props: typeof __VLS_25) => any;
48
+ 'node-icon'?: (props: typeof __VLS_23) => any;
49
49
  } & {
50
- 'node-content'?: (props: typeof __VLS_37) => any;
50
+ 'node-content'?: (props: typeof __VLS_25) => any;
51
51
  } & {
52
- 'node-suffix'?: (props: typeof __VLS_39) => any;
52
+ 'node-suffix'?: (props: typeof __VLS_28) => any;
53
53
  };
54
54
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
55
55
  toggle: (value: ComponentValue) => any;
56
- "row-click": (value: ComponentValue) => any;
57
- check: (value: ComponentValue) => any;
56
+ check: (value: ComponentValue, event: MouseEvent) => any;
57
+ "row-click": (value: ComponentValue, event: MouseEvent) => any;
58
58
  "drag-pointerdown": (value: ComponentValue, event: PointerEvent) => any;
59
59
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
60
60
  onToggle?: ((value: ComponentValue) => any) | undefined;
61
- "onRow-click"?: ((value: ComponentValue) => any) | undefined;
62
- onCheck?: ((value: ComponentValue) => any) | undefined;
61
+ onCheck?: ((value: ComponentValue, event: MouseEvent) => any) | undefined;
62
+ "onRow-click"?: ((value: ComponentValue, event: MouseEvent) => any) | undefined;
63
63
  "onDrag-pointerdown"?: ((value: ComponentValue, event: PointerEvent) => any) | undefined;
64
64
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
65
65
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,10 +1,8 @@
1
1
  <script setup>
2
2
  import CheckIcon from "@gdsicon/vue/check";
3
3
  import ChevronRightIcon from "@gdsicon/vue/chevron-right";
4
- import FolderClosedIcon from "@gdsicon/vue/folder-closed";
5
- import FolderOpenIcon from "@gdsicon/vue/folder-open";
4
+ import LoaderCircleIcon from "@gdsicon/vue/loader-circle";
6
5
  import MinusIcon from "@gdsicon/vue/minus";
7
- import MoreVerticalIcon from "@gdsicon/vue/more-vertical";
8
6
  import { computed } from "vue";
9
7
  defineOptions({
10
8
  name: "PTreeNode",
@@ -35,6 +33,10 @@ const props = defineProps({
35
33
  type: Boolean,
36
34
  required: true
37
35
  },
36
+ loading: {
37
+ type: Boolean,
38
+ required: true
39
+ },
38
40
  checked: {
39
41
  type: Boolean,
40
42
  required: true
@@ -55,6 +57,10 @@ const props = defineProps({
55
57
  type: Boolean,
56
58
  required: true
57
59
  },
60
+ selectable: {
61
+ type: Boolean,
62
+ required: true
63
+ },
58
64
  setSize: {
59
65
  type: Number,
60
66
  required: true
@@ -71,18 +77,10 @@ const props = defineProps({
71
77
  type: String,
72
78
  required: true
73
79
  },
74
- showIcon: {
75
- type: Boolean,
76
- required: true
77
- },
78
80
  draggable: {
79
81
  type: Boolean,
80
82
  required: true
81
83
  },
82
- dragHandle: {
83
- type: Boolean,
84
- required: true
85
- },
86
84
  dragging: {
87
85
  type: Boolean,
88
86
  required: true
@@ -101,25 +99,20 @@ const props = defineProps({
101
99
  }
102
100
  });
103
101
  const emits = defineEmits([
104
- "row-click",
105
102
  "check",
106
103
  "toggle",
104
+ "row-click",
107
105
  "drag-pointerdown"
108
106
  ]);
109
- function onPointerdown(event) {
110
- // A handle owns the gesture on touch, where a vertical drag is indistinguishable from a scroll.
111
- if (!props.draggable || props.dragHandle) {
112
- return;
113
- }
114
- emits("drag-pointerdown", props.value, event);
115
- }
116
107
  const disabled = computed(() => props.disabled || props.node.disabled === true);
108
+ const unavailable = computed(() => disabled.value || !props.selectable);
117
109
  const checkboxClass = computed(() => {
118
110
  if (props.checked) {
119
- return disabled.value ? "border-gray-500 bg-gray-500" : "border-primary bg-primary";
111
+ return unavailable.value ? "border-gray-500 bg-gray-500" : "border-primary bg-primary";
120
112
  }
121
- return disabled.value ? "border-gray-500 bg-gray-100" : "border-gray-alpha-400 bg-background-100";
113
+ return unavailable.value ? "border-gray-500 bg-gray-100 cursor-not-allowed" : "border-gray-alpha-400 bg-background-100";
122
114
  });
115
+ const indentSize = computed(() => props.depth * props.indent + 8);
123
116
  const parts = computed(() => {
124
117
  const query = props.highlightQuery;
125
118
  if (!query) {
@@ -145,6 +138,12 @@ const parts = computed(() => {
145
138
  }
146
139
  ].filter((part) => part.text);
147
140
  });
141
+ function onPointerdown(event) {
142
+ if (!props.draggable) {
143
+ return;
144
+ }
145
+ emits("drag-pointerdown", props.value, event);
146
+ }
148
147
  </script>
149
148
 
150
149
  <template>
@@ -163,12 +162,13 @@ const parts = computed(() => {
163
162
  :data-drop="dropPosition"
164
163
  :aria-level="depth + 1"
165
164
  :aria-expanded="hasChildren ? expanded : void 0"
165
+ :aria-busy="loading || void 0"
166
166
  :aria-selected="multiple ? void 0 : checked"
167
167
  :aria-checked="multiple ? indeterminate ? 'mixed' : checked : void 0"
168
168
  :aria-setsize="setSize"
169
169
  :aria-posinset="index + 1"
170
170
  :aria-disabled="disabled || void 0"
171
- :style="{ paddingInlineStart: depth * indent + 8 + 'px' }"
171
+ :style="{ paddingInlineStart: indentSize + 'px', '--node-indent': indentSize + 'px' }"
172
172
  class="pxd-tree--node group/row min-h-8 py-1 pe-2 gap-1.5 text-sm relative flex w-full max-w-full cursor-pointer items-center rounded-md text-foreground outline-none select-none pointer-fine:hover:bg-gray-100"
173
173
  :class="[
174
174
  itemClass,
@@ -177,35 +177,33 @@ const parts = computed(() => {
177
177
  'z-1 ring-primary data-[active=true]:ring-1': active,
178
178
  'data-[disabled=true]:cursor-not-allowed data-[disabled=true]:text-gray-500': disabled,
179
179
  'opacity-40': dragging,
180
- 'before:inset-x-0 before:h-0.5 before:absolute before:bg-primary': dropPosition === 'before' || dropPosition === 'after',
180
+ 'bg-gray-300 ring-1 ring-primary': dropPosition === 'inside',
181
+ 'before:end-0 before:absolute before:start-(--node-indent) before:border-t-2 before:bg-primary': dropPosition === 'before' || dropPosition === 'after',
181
182
  'before:-top-px': dropPosition === 'before',
182
- 'before:bottom-px': dropPosition === 'after'
183
+ 'before:bottom-0': dropPosition === 'after'
183
184
  }
184
185
  ]"
185
186
  v-bind="$attrs"
186
- @click="emits('row-click', value)"
187
+ @click="emits('row-click', value, $event)"
187
188
  @pointerdown="onPointerdown"
188
189
  @dragstart.prevent
189
190
  >
190
- <span
191
- v-if="dragHandle"
192
- data-tree-drag-handle
193
- class="pxd-tree--drag-handle size-4 me-0.5 inline-flex shrink-0 cursor-grab items-center justify-center opacity-0 group-hover/row:opacity-60 group-data-[dragging=true]/row:opacity-60 motion-safe:transition-opacity"
194
- @pointerdown.stop="emits('drag-pointerdown', value, $event)"
195
- >
196
- <slot name="node-drag-handle" :node="node" :depth="depth">
197
- <MoreVerticalIcon class="size-3" />
198
- </slot>
199
- </span>
200
-
201
191
  <span
202
192
  v-if="hasChildren"
203
193
  data-tree-switcher
204
194
  class="pxd-tree--switcher size-4 relative inline-flex shrink-0 items-center justify-center rounded-sm motion-safe:after:transition-colors"
205
195
  @click.stop="emits('toggle', value)"
206
196
  >
207
- <slot name="node-switcher" :node="node" :depth="depth" :expanded="expanded">
197
+ <slot
198
+ name="node-switcher"
199
+ :node="node"
200
+ :depth="depth"
201
+ :loading="loading"
202
+ :expanded="expanded"
203
+ >
204
+ <LoaderCircleIcon v-if="loading" class="size-3 motion-safe:animate-spin" />
208
205
  <ChevronRightIcon
206
+ v-else
209
207
  class="size-3 motion-safe:transition-transform"
210
208
  :class="{ 'rotate-90': expanded }"
211
209
  />
@@ -216,9 +214,10 @@ const parts = computed(() => {
216
214
  <span
217
215
  v-if="multiple"
218
216
  aria-hidden="true"
217
+ :data-selectable="selectable"
219
218
  class="pxd-tree--checkbox size-4 p-0.5 inline-flex shrink-0 items-center justify-center overflow-hidden rounded-sm border text-primary-foreground"
220
219
  :class="checkboxClass"
221
- @click.stop="emits('check', value)"
220
+ @click.stop="emits('check', value, $event)"
222
221
  >
223
222
  <CheckIcon v-if="checked" class="size-3" />
224
223
  <MinusIcon v-else-if="indeterminate" class="size-3" />
@@ -226,18 +225,27 @@ const parts = computed(() => {
226
225
  </span>
227
226
 
228
227
  <span
229
- v-if="showIcon && $slots['node-icon']"
228
+ v-if="$slots['node-icon']"
230
229
  aria-hidden="true"
231
230
  class="pxd-tree--icon size-4 inline-flex shrink-0 items-center justify-center"
232
231
  >
233
- <slot name="node-icon" :node="node" :depth="depth" :expanded="expanded">
234
- <FolderOpenIcon v-if="expanded" class="size-4" />
235
- <FolderClosedIcon v-else-if="hasChildren" class="size-4" />
236
- </slot>
232
+ <slot
233
+ name="node-icon"
234
+ :node="node"
235
+ :depth="depth"
236
+ :expanded="expanded"
237
+ :has-children="hasChildren"
238
+ />
237
239
  </span>
238
240
 
239
241
  <span class="pxd-tree--content min-w-0 flex-1 truncate">
240
- <slot name="node-content" :node="node" :depth="depth">
242
+ <slot
243
+ name="node-content"
244
+ :node="node"
245
+ :depth="depth"
246
+ :parts="parts"
247
+ :has-children="hasChildren"
248
+ >
241
249
  <template v-if="parts">
242
250
  <mark
243
251
  v-for="(part, partIndex) in parts"
@@ -251,7 +259,7 @@ const parts = computed(() => {
251
259
  </slot>
252
260
  </span>
253
261
 
254
- <slot name="node-suffix" :node="node" />
262
+ <slot name="node-suffix" :node="node" :has-children="hasChildren" />
255
263
  </div>
256
264
  </template>
257
265
 
@@ -1,9 +1,9 @@
1
1
  import type { ActiveGraphProps, ActiveGraphTooltipInfo } from './types';
2
- declare var __VLS_7: {
2
+ declare var __VLS_11: {
3
3
  data: ActiveGraphTooltipInfo;
4
4
  };
5
5
  type __VLS_Slots = {} & {
6
- tooltip?: (props: typeof __VLS_7) => any;
6
+ tooltip?: (props: typeof __VLS_11) => any;
7
7
  };
8
8
  declare const __VLS_base: import("vue").DefineComponent<ActiveGraphProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
9
  change: (args_0: string, args_1: MouseEvent) => any;
@@ -1,4 +1,4 @@
1
- import type { ComponentVariant } from '../../types/shared';
1
+ import type { ComponentVariant } from '../../types/shared/props';
2
2
  import type { ApprovalCardProps, ApprovalCause, ApprovalResult, ApprovalStatus } from './types';
3
3
  declare function approve(reason?: string): void;
4
4
  declare function reject(reason?: string): void;
@@ -5,6 +5,7 @@ import CrossCircleFillIcon from "@gdsicon/vue/cross-circle-fill";
5
5
  import TerminalIcon from "@gdsicon/vue/terminal";
6
6
  import { computed, onBeforeUnmount, shallowRef, watch } from "vue";
7
7
  import { useConfigProvider } from "../../contexts/config-provider.js";
8
+ import { isCompositionKeydown } from "../../utils/event.js";
8
9
  import { isTruthyProp, toArray } from "../../utils/format.js";
9
10
  import PBadge from "../badge/index.vue";
10
11
  import PButton from "../button/index.vue";
@@ -64,16 +65,7 @@ const emits = defineEmits([
64
65
  "approve",
65
66
  "reject"
66
67
  ]);
67
- const configProvider = useConfigProvider();
68
- const internalStatus = shallowRef("pending");
69
- const remembered = shallowRef(false);
70
68
  let timerId;
71
- const status = computed(() => props.modelValue ?? internalStatus.value);
72
- const isPending = computed(() => status.value === "pending");
73
- const isDisabled = computed(() => isTruthyProp(props.disabled) || isTruthyProp(props.loading));
74
- const computedTitle = computed(() => props.title || configProvider.locale.approval.title);
75
- const computedStatusLabel = computed(() => configProvider.locale.approval[status.value]);
76
- const commandList = computed(() => toArray(props.command).filter(Boolean));
77
69
  const STATUS_ICON = {
78
70
  pending: TerminalIcon,
79
71
  approved: CheckCircleFillIcon,
@@ -98,9 +90,19 @@ const VARIANT_CLASS = {
98
90
  warning: "border-amber-400 bg-amber-200 text-amber-900",
99
91
  success: "border-green-400 bg-green-200 text-green-900"
100
92
  };
93
+ const internalStatus = shallowRef("pending");
94
+ const remembered = shallowRef(false);
95
+ const timerKey = shallowRef(0);
96
+ const status = computed(() => props.modelValue ?? internalStatus.value);
97
+ const isPending = computed(() => status.value === "pending");
98
+ const isDisabled = computed(() => isTruthyProp(props.disabled) || isTruthyProp(props.loading));
99
+ const commandList = computed(() => toArray(props.command).filter(Boolean));
101
100
  const statusIcon = computed(() => STATUS_ICON[status.value]);
102
101
  const statusBadge = computed(() => STATUS_BADGE[status.value]);
103
102
  const iconClass = computed(() => isPending.value ? VARIANT_CLASS[props.variant] : STATUS_CLASS[status.value]);
103
+ const configProvider = useConfigProvider();
104
+ const computedTitle = computed(() => props.title || configProvider.locale.approval.title);
105
+ const computedStatusLabel = computed(() => configProvider.locale.approval[status.value]);
104
106
  function clearTimer() {
105
107
  if (timerId !== undefined) {
106
108
  clearTimeout(timerId);
@@ -113,6 +115,7 @@ function startTimer() {
113
115
  if (!isPending.value || !timeout) {
114
116
  return;
115
117
  }
118
+ timerKey.value++;
116
119
  timerId = setTimeout(() => {
117
120
  dismiss("timeout");
118
121
  }, timeout);
@@ -154,10 +157,11 @@ function reset() {
154
157
  emits("update:modelValue", "pending");
155
158
  startTimer();
156
159
  }
157
- function onEscape() {
158
- if (!props.closeOnPressEscape) {
160
+ function onEscape(ev) {
161
+ if (!props.closeOnPressEscape || !isPending.value || isCompositionKeydown(ev)) {
159
162
  return;
160
163
  }
164
+ ev.preventDefault();
161
165
  dismiss("escape");
162
166
  }
163
167
  watch(() => [status.value, props.timeout], startTimer, { immediate: true });
@@ -174,25 +178,38 @@ defineExpose({
174
178
  <template>
175
179
  <div
176
180
  data-approval-card
177
- class="pxd-approval-card bg-background p-3 gap-2 flex w-full max-w-full flex-col rounded-xl border"
181
+ class="pxd-approval-card bg-background p-3 gap-2 relative flex w-full max-w-full flex-col overflow-hidden rounded-xl border"
178
182
  :data-status="status"
179
183
  :data-variant="variant"
180
184
  v-bind="$attrs"
181
185
  @keydown.esc="onEscape"
182
186
  >
187
+ <div
188
+ v-if="isPending && timeout"
189
+ :key="timerKey"
190
+ aria-hidden="true"
191
+ class="pxd-approval-card--progress pxd-countdown-progress inset-x-0 top-0 h-0.5 absolute rounded-full bg-current"
192
+ :style="{ animationDuration: `${timeout}ms` }"
193
+ />
194
+
183
195
  <div class="pxd-approval-card--header gap-2 flex items-center">
184
- <div class="pxd-approval-card--icon p-1.5 shrink-0 rounded-md border" :class="iconClass">
196
+ <div
197
+ class="pxd-approval-card--icon size-8 flex shrink-0 items-center justify-center rounded-md border"
198
+ :class="iconClass"
199
+ >
185
200
  <Component :is="statusIcon" class="size-4" />
186
201
  </div>
187
202
 
188
203
  <div class="min-w-0 flex-1">
189
- <div class="pxd-approval-card--title font-medium text-sm truncate text-foreground">
204
+ <div
205
+ class="pxd-approval-card--title font-medium text-sm leading-tight truncate text-foreground"
206
+ >
190
207
  {{ computedTitle }}
191
208
  </div>
192
209
 
193
210
  <div
194
211
  v-if="description"
195
- class="pxd-approval-card--description text-sm truncate text-foreground-secondary"
212
+ class="pxd-approval-card--description text-sm truncate leading-none text-foreground-secondary"
196
213
  >
197
214
  {{ description }}
198
215
  </div>
@@ -222,11 +239,11 @@ defineExpose({
222
239
  </div>
223
240
 
224
241
  <div class="gap-2 ms-auto flex items-center">
225
- <PButton :disabled="isDisabled" @click="reject()">
242
+ <PButton size="sm" :disabled="isDisabled" @click="reject()">
226
243
  {{ configProvider.locale.approval.reject }}
227
244
  </PButton>
228
245
 
229
- <PButton variant="primary" :loading="loading" @click="approve()">
246
+ <PButton size="sm" variant="primary" :loading="loading" @click="approve()">
230
247
  {{ configProvider.locale.approval.approve }}
231
248
  </PButton>
232
249
  </div>
@@ -1,4 +1,4 @@
1
- import type { ComponentLabel, ComponentVariant } from '../../types/shared'
1
+ import type { ComponentLabel, ComponentVariant } from '../../types/shared/props'
2
2
 
3
3
  export type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'dismissed'
4
4
 
@@ -9,12 +9,12 @@ type __VLS_Slots = {} & {
9
9
  declare const __VLS_base: import("vue").DefineComponent<AvatarProps, {
10
10
  getLoadingStatus: typeof getLoadingStatus;
11
11
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
- load: (args_0: Event) => any;
13
12
  error: (args_0: Event) => any;
13
+ load: (args_0: Event) => any;
14
14
  loadstart: (args_0: Event) => any;
15
15
  }, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{
16
- onLoad?: ((args_0: Event) => any) | undefined;
17
16
  onError?: ((args_0: Event) => any) | undefined;
17
+ onLoad?: ((args_0: Event) => any) | undefined;
18
18
  onLoadstart?: ((args_0: Event) => any) | undefined;
19
19
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;