pxd 0.0.61 → 0.0.62

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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/dist/components/_internal/dismiss-container.d.vue.ts +28 -0
  3. package/dist/components/_internal/dismiss-container.vue +162 -0
  4. package/dist/components/_internal/popover-arrow.d.vue.ts +9 -0
  5. package/dist/components/_internal/popover-arrow.vue +38 -0
  6. package/dist/components/active-graph/index.vue +4 -4
  7. package/dist/components/avatar/index.vue +5 -7
  8. package/dist/components/avatar-group/index.d.vue.ts +0 -1
  9. package/dist/components/avatar-group/index.vue +1 -1
  10. package/dist/components/backtop/index.vue +1 -1
  11. package/dist/components/badge/index.d.vue.ts +6 -2
  12. package/dist/components/badge/index.vue +18 -4
  13. package/dist/components/badge/types.d.ts +5 -0
  14. package/dist/components/book/index.vue +1 -1
  15. package/dist/components/browser/index.vue +1 -1
  16. package/dist/components/bubble/index.d.vue.ts +22 -0
  17. package/dist/components/bubble/index.vue +59 -0
  18. package/dist/components/bubble/types.d.ts +6 -0
  19. package/dist/components/button/index.d.vue.ts +0 -2
  20. package/dist/components/button/index.vue +30 -21
  21. package/dist/components/button/types.d.ts +3 -2
  22. package/dist/components/button-group/index.d.vue.ts +14 -0
  23. package/dist/components/button-group/index.vue +26 -0
  24. package/dist/components/button-group/types.d.ts +9 -0
  25. package/dist/components/carousel/index.d.vue.ts +3 -3
  26. package/dist/components/carousel/index.vue +146 -113
  27. package/dist/components/carousel/types.d.ts +1 -1
  28. package/dist/components/carousel-item/index.vue +22 -17
  29. package/dist/components/checkbox/index.vue +6 -6
  30. package/dist/components/checkbox-group/index.d.vue.ts +1 -1
  31. package/dist/components/chip/index.d.vue.ts +1 -5
  32. package/dist/components/chip/index.vue +4 -4
  33. package/dist/components/color-selector/index.d.vue.ts +12 -0
  34. package/dist/components/color-selector/index.vue +64 -0
  35. package/dist/components/color-selector/types.d.ts +12 -0
  36. package/dist/components/command-menu/index.d.vue.ts +6 -6
  37. package/dist/components/command-menu/index.vue +23 -32
  38. package/dist/components/command-menu/types.d.ts +1 -1
  39. package/dist/components/command-menu-group/index.vue +15 -6
  40. package/dist/components/command-menu-group/types.d.ts +1 -1
  41. package/dist/components/countdown/index.d.vue.ts +11 -11
  42. package/dist/components/drawer/index.d.vue.ts +8 -8
  43. package/dist/components/drawer/index.vue +13 -10
  44. package/dist/components/drawer/types.d.ts +4 -3
  45. package/dist/components/ellipsis-text/index.d.vue.ts +4 -1
  46. package/dist/components/ellipsis-text/index.vue +84 -107
  47. package/dist/components/ellipsis-text/types.d.ts +2 -1
  48. package/dist/components/error/index.vue +1 -1
  49. package/dist/components/fader/index.vue +5 -9
  50. package/dist/components/gauge/index.vue +34 -29
  51. package/dist/components/grid/index.vue +1 -1
  52. package/dist/components/grid-item/index.vue +1 -1
  53. package/dist/components/hold-button/index.d.vue.ts +8 -10
  54. package/dist/components/hold-button/index.vue +20 -29
  55. package/dist/components/hold-button/types.d.ts +5 -6
  56. package/dist/components/index.d.ts +7 -0
  57. package/dist/components/index.js +7 -0
  58. package/dist/components/input/index.d.vue.ts +8 -8
  59. package/dist/components/input/index.vue +5 -4
  60. package/dist/components/intersection-observer/index.vue +4 -4
  61. package/dist/components/kbd/index.vue +1 -1
  62. package/dist/components/link-button/index.d.vue.ts +4 -4
  63. package/dist/components/link-button/index.vue +9 -8
  64. package/dist/components/link-button/types.d.ts +0 -3
  65. package/dist/components/list/index.d.vue.ts +10 -15
  66. package/dist/components/list/index.vue +58 -131
  67. package/dist/components/list/types.d.ts +4 -4
  68. package/dist/components/list-item/index.d.vue.ts +2 -2
  69. package/dist/components/list-item/index.vue +44 -39
  70. package/dist/components/loading-bar/index.vue +8 -7
  71. package/dist/components/material/index.vue +24 -46
  72. package/dist/components/menu/index.d.vue.ts +6 -8
  73. package/dist/components/menu/index.vue +18 -24
  74. package/dist/components/menu/types.d.ts +1 -2
  75. package/dist/components/message/composables/use-group-expand.d.ts +13 -0
  76. package/dist/components/message/composables/use-group-expand.js +50 -0
  77. package/dist/components/message/composables/use-message-timer.d.ts +9 -0
  78. package/dist/components/message/composables/use-message-timer.js +61 -0
  79. package/dist/components/message/composables/use-promise-message.d.ts +4 -0
  80. package/dist/components/message/composables/use-promise-message.js +49 -0
  81. package/dist/components/message/index.d.vue.ts +6 -33
  82. package/dist/components/message/index.vue +33 -185
  83. package/dist/components/message/types.d.ts +2 -2
  84. package/dist/components/message-item/index.vue +26 -2
  85. package/dist/components/modal/index.d.vue.ts +7 -7
  86. package/dist/components/modal/index.vue +7 -3
  87. package/dist/components/modal/types.d.ts +7 -3
  88. package/dist/components/note/index.vue +2 -2
  89. package/dist/components/number-input/index.d.vue.ts +5 -4
  90. package/dist/components/number-input/index.vue +3 -0
  91. package/dist/components/number-input/types.d.ts +1 -0
  92. package/dist/components/overlay/index.d.vue.ts +6 -3
  93. package/dist/components/overlay/index.vue +63 -68
  94. package/dist/components/overlay/types.d.ts +5 -4
  95. package/dist/components/pagination/index.vue +2 -2
  96. package/dist/components/pin-input/index.d.vue.ts +1 -1
  97. package/dist/components/pin-input/index.vue +7 -6
  98. package/dist/components/placeholder/index.vue +1 -1
  99. package/dist/components/popover/index.d.vue.ts +7 -8
  100. package/dist/components/popover/index.vue +149 -239
  101. package/dist/components/popover/types.d.ts +5 -5
  102. package/dist/components/progress/index.vue +1 -1
  103. package/dist/components/radio/index.vue +2 -2
  104. package/dist/components/resizable/index.vue +43 -51
  105. package/dist/components/resizable/types.d.ts +1 -1
  106. package/dist/components/resizable-handle/index.d.vue.ts +4 -1
  107. package/dist/components/resizable-handle/index.vue +29 -3
  108. package/dist/components/resizable-panel/index.vue +3 -7
  109. package/dist/components/scalable-text/index.d.vue.ts +9 -0
  110. package/dist/components/scalable-text/index.vue +147 -0
  111. package/dist/components/scalable-text/types.d.ts +12 -0
  112. package/dist/components/scrollable/index.d.vue.ts +2 -2
  113. package/dist/components/scrollable/index.vue +4 -3
  114. package/dist/components/separator/index.d.vue.ts +6 -0
  115. package/dist/components/separator/index.vue +18 -0
  116. package/dist/components/separator/types.d.ts +5 -0
  117. package/dist/components/skeleton/index.d.vue.ts +1 -1
  118. package/dist/components/slider/index.d.vue.ts +1 -1
  119. package/dist/components/slider/index.vue +39 -7
  120. package/dist/components/snippet/index.vue +16 -13
  121. package/dist/components/spinner/index.vue +3 -1
  122. package/dist/components/stack/index.d.vue.ts +1 -1
  123. package/dist/components/stack/index.vue +1 -1
  124. package/dist/components/switch/index.d.vue.ts +1 -1
  125. package/dist/components/switch/index.vue +4 -3
  126. package/dist/components/switch-item/index.vue +1 -1
  127. package/dist/components/tabs/index.d.vue.ts +12 -0
  128. package/dist/components/tabs/index.vue +270 -0
  129. package/dist/components/tabs/types.d.ts +12 -0
  130. package/dist/components/tabs-item/index.d.vue.ts +4 -0
  131. package/dist/components/tabs-item/index.vue +16 -0
  132. package/dist/components/tabs-item/types.d.ts +10 -0
  133. package/dist/components/text/index.vue +1 -1
  134. package/dist/components/textarea/index.d.vue.ts +2 -2
  135. package/dist/components/textarea/index.vue +1 -1
  136. package/dist/components/time-picker/index.d.vue.ts +3 -5
  137. package/dist/components/time-picker/index.vue +53 -45
  138. package/dist/components/time-picker/types.d.ts +1 -2
  139. package/dist/components/toggle/index.d.vue.ts +0 -2
  140. package/dist/components/toggle/index.vue +6 -6
  141. package/dist/components/toggle-button/index.vue +8 -6
  142. package/dist/components/tooltip/index.d.vue.ts +1 -1
  143. package/dist/components/tooltip/index.vue +19 -11
  144. package/dist/components/tooltip/types.d.ts +2 -2
  145. package/dist/components/virtual-list/index.d.vue.ts +8 -8
  146. package/dist/components/virtual-list/index.vue +27 -5
  147. package/dist/components/virtual-list/types.d.ts +3 -0
  148. package/dist/composables/index.d.ts +4 -1
  149. package/dist/composables/index.js +4 -1
  150. package/dist/composables/use-browser-observer.js +2 -2
  151. package/dist/composables/use-client-online.js +2 -2
  152. package/dist/composables/use-color-scheme.js +2 -2
  153. package/dist/composables/use-countdown.js +3 -2
  154. package/dist/composables/use-deferred-value.js +2 -2
  155. package/dist/composables/use-delay-destroy.js +11 -6
  156. package/dist/composables/use-document-hidden.js +2 -2
  157. package/dist/composables/use-focus-trap.js +2 -2
  158. package/dist/composables/use-list-filter.d.ts +11 -0
  159. package/dist/composables/use-list-filter.js +56 -0
  160. package/dist/composables/use-list-navigation.d.ts +27 -0
  161. package/dist/composables/use-list-navigation.js +159 -0
  162. package/dist/composables/use-lock-scroll.js +12 -12
  163. package/dist/composables/use-media-query.js +2 -2
  164. package/dist/composables/use-outside-click.d.ts +1 -1
  165. package/dist/composables/use-outside-click.js +8 -11
  166. package/dist/composables/use-overlay-manager.d.ts +18 -0
  167. package/dist/composables/use-overlay-manager.js +80 -0
  168. package/dist/composables/use-popover-responsive.d.ts +6 -8
  169. package/dist/composables/use-popover-responsive.js +9 -12
  170. package/dist/composables/use-repeat-action.js +2 -2
  171. package/dist/composables/use-swipe-gesture.d.ts +65 -0
  172. package/dist/composables/use-swipe-gesture.js +99 -0
  173. package/dist/composables/use-virtual-list.d.ts +5 -3
  174. package/dist/composables/use-virtual-list.js +25 -14
  175. package/dist/composables/use-window-size.js +2 -2
  176. package/dist/constants/size.d.ts +12 -0
  177. package/dist/constants/size.js +12 -0
  178. package/dist/contexts/button.d.ts +5 -0
  179. package/dist/contexts/button.js +5 -0
  180. package/dist/contexts/carousel.d.ts +2 -1
  181. package/dist/contexts/list.d.ts +23 -3
  182. package/dist/contexts/list.js +6 -2
  183. package/dist/contexts/resizable.d.ts +3 -11
  184. package/dist/contexts/tabs.d.ts +15 -0
  185. package/dist/contexts/tabs.js +2 -0
  186. package/dist/locales/en-us.d.ts +4 -4
  187. package/dist/locales/en-us.js +4 -4
  188. package/dist/locales/zh-cn.d.ts +4 -4
  189. package/dist/locales/zh-cn.js +4 -4
  190. package/dist/plugins/dayjs-millisecond-token.js +1 -1
  191. package/dist/styles/source.css +133 -128
  192. package/dist/styles/styles.css +2 -2
  193. package/dist/styles/tw.css +133 -128
  194. package/dist/types/shared/props.d.ts +1 -0
  195. package/dist/types/shared/utils.d.ts +1 -4
  196. package/dist/utils/date.d.ts +3 -3
  197. package/dist/utils/dom.d.ts +1 -0
  198. package/dist/utils/dom.js +4 -0
  199. package/dist/utils/event.d.ts +2 -1
  200. package/dist/utils/event.js +7 -1
  201. package/dist/utils/format.d.ts +3 -3
  202. package/dist/utils/format.js +5 -4
  203. package/dist/utils/fuzzy-search.d.ts +7 -0
  204. package/dist/utils/fuzzy-search.js +61 -0
  205. package/dist/utils/get.d.ts +2 -0
  206. package/dist/utils/get.js +15 -1
  207. package/dist/utils/index.d.ts +10 -11
  208. package/dist/utils/index.js +2 -3
  209. package/dist/utils/ref.d.ts +2 -2
  210. package/dist/utils/{throttle.d.ts → timing.d.ts} +1 -0
  211. package/dist/utils/{throttle.js → timing.js} +4 -2
  212. package/package.json +67 -63
  213. package/volar.d.ts +7 -0
  214. package/dist/components/overlay/overlay-stack.d.ts +0 -3
  215. package/dist/components/overlay/overlay-stack.js +0 -17
  216. package/dist/composables/use-pointer-gesture.d.ts +0 -180
  217. package/dist/composables/use-pointer-gesture.js +0 -406
  218. package/dist/utils/debounce.d.ts +0 -1
  219. package/dist/utils/debounce.js +0 -1
  220. package/dist/utils/regexp.d.ts +0 -8
  221. package/dist/utils/regexp.js +0 -8
  222. package/dist/utils/responsive.d.ts +0 -3
  223. package/dist/utils/responsive.js +0 -14
@@ -3,6 +3,7 @@ import { tv } from "tailwind-variants";
3
3
  import { computed, onBeforeUnmount, onMounted, shallowRef } from "vue";
4
4
  import { UPDATE_LOADING_BAR_EVENT_NAME } from "../../composables/use-loading-bar";
5
5
  import { cachedOff, cachedOn } from "../../utils/event";
6
+ import { caf, raf } from "../../utils/event";
6
7
  import { clampValue, isTruthyProp } from "../../utils/format";
7
8
  import { isServer } from "../../utils/is";
8
9
  import PTeleport from "../teleport/index.vue";
@@ -21,7 +22,7 @@ const props = defineProps({
21
22
  const loadingBarVariant = tv({
22
23
  slots: {
23
24
  wrapper: "pxd-loading-bar top-0 left-0 right-0 pointer-events-none z-10 max-w-full overflow-hidden",
24
- inner: "pxd-loading-bar--inner h-0.5 data-[hidden=true]:h-0 origin-left data-[transition=false]:transition-none! motion-safe:transition-all"
25
+ inner: "pxd-loading-bar--inner h-0.5 data-[hidden=true]:h-0 origin-left data-[transition=false]:transition-none! motion-safe:transition-appearance"
25
26
  },
26
27
  variants: {
27
28
  status: {
@@ -79,14 +80,14 @@ function getIncreaseDelta(n) {
79
80
  }
80
81
  function increaseProgress(n) {
81
82
  if (progressValue.value >= 1) {
82
- cancelAnimationFrame(prevAnimationKey);
83
+ caf(prevAnimationKey);
83
84
  return;
84
85
  }
85
86
  const now = performance.now();
86
87
  const delta = now - prevTimestamp;
87
88
  const threshold = props.trickleThreshold || 200;
88
89
  if (delta < threshold && props.trickle) {
89
- prevAnimationKey = requestAnimationFrame(() => increaseProgress());
90
+ prevAnimationKey = raf(increaseProgress);
90
91
  return;
91
92
  }
92
93
  prevTimestamp = now;
@@ -95,7 +96,7 @@ function increaseProgress(n) {
95
96
  if (amount === 0 || !props.trickle) {
96
97
  return;
97
98
  }
98
- prevAnimationKey = requestAnimationFrame(() => increaseProgress());
99
+ prevAnimationKey = raf(increaseProgress);
99
100
  }
100
101
  async function hideAndResetProgress() {
101
102
  hiddenBarTimeout = setTimeout(() => {
@@ -119,13 +120,13 @@ function handleStartProgress() {
119
120
  return;
120
121
  }
121
122
  prevTimestamp = 0;
122
- requestAnimationFrame(() => increaseProgress());
123
+ raf(() => increaseProgress());
123
124
  }
124
125
  async function handleErrorProgress() {
125
126
  if (status.value !== "running") {
126
127
  return;
127
128
  }
128
- cancelAnimationFrame(prevAnimationKey);
129
+ caf(prevAnimationKey);
129
130
  status.value = "error";
130
131
  hiddenBar.value = false;
131
132
  progressValue.value = 1;
@@ -135,7 +136,7 @@ function handleFinishProgress() {
135
136
  if (status.value !== "running") {
136
137
  return;
137
138
  }
138
- cancelAnimationFrame(prevAnimationKey);
139
+ caf(prevAnimationKey);
139
140
  status.value = "finish";
140
141
  hiddenBar.value = false;
141
142
  progressValue.value = 1;
@@ -1,60 +1,38 @@
1
1
  <script setup>
2
+ import { tv } from "tailwind-variants";
3
+ import { computed } from "vue";
2
4
  import PStack from "../stack/index.vue";
3
5
  defineOptions({
4
6
  name: "PMaterial",
5
7
  inheritAttrs: false
6
8
  });
7
- defineProps({
9
+ const props = defineProps({
8
10
  variant: { type: String, required: false, default: "default" }
9
11
  });
12
+ const materialVariants = tv({
13
+ base: "pxd-material w-full bg-background-100",
14
+ variants: {
15
+ variant: {
16
+ default: "rounded-md shadow-border-base",
17
+ small: "rounded-md shadow-border-small",
18
+ medium: "rounded-xl shadow-border-medium",
19
+ large: "rounded-xl shadow-border-large",
20
+ tooltip: "rounded-md shadow-border-tooltip",
21
+ menu: "rounded-xl shadow-border-menu",
22
+ modal: "rounded-xl shadow-border-modal",
23
+ fullscreen: "rounded-2xl shadow-border-fullscreen"
24
+ }
25
+ }
26
+ });
27
+ const computedClasses = computed(() => {
28
+ return materialVariants({
29
+ variant: props.variant
30
+ });
31
+ });
10
32
  </script>
11
33
 
12
34
  <template>
13
- <PStack class="pxd-material w-full bg-background-100" :class="variant" v-bind="$attrs">
35
+ <PStack :class="computedClasses" v-bind="$attrs">
14
36
  <slot />
15
37
  </PStack>
16
38
  </template>
17
-
18
- <style lang="postcss">
19
- .pxd-material {
20
- &.default {
21
- border-radius: calc(var(--radius) - 2px);
22
- box-shadow: var(--shadow-border-default);
23
- }
24
-
25
- &.small {
26
- border-radius: calc(var(--radius) - 2px);
27
- box-shadow: var(--shadow-border-small);
28
- }
29
-
30
- &.medium {
31
- border-radius: calc(var(--radius) + 6px);
32
- box-shadow: var(--shadow-border-medium);
33
- }
34
-
35
- &.large {
36
- border-radius: calc(var(--radius) + 6px);
37
- box-shadow: var(--shadow-border-large);
38
- }
39
-
40
- &.tooltip {
41
- border-radius: calc(var(--radius) - 2px);
42
- box-shadow: var(--shadow-border-tooltip);
43
- }
44
-
45
- &.menu {
46
- border-radius: calc(var(--radius) + 6px);
47
- box-shadow: var(--shadow-border-menu);
48
- }
49
-
50
- &.modal {
51
- border-radius: calc(var(--radius) + 6px);
52
- box-shadow: var(--shadow-border-modal);
53
- }
54
-
55
- &.fullscreen {
56
- border-radius: calc(var(--radius) + 8px);
57
- box-shadow: var(--shadow-border-fullscreen);
58
- }
59
- }
60
- </style>
@@ -1,23 +1,21 @@
1
1
  import type { ListOptionSelected } from '../list/types';
2
2
  import type { MenuProps } from './types';
3
- declare var __VLS_12: {}, __VLS_23: {};
3
+ declare var __VLS_8: {}, __VLS_19: {};
4
4
  type __VLS_Slots = {} & {
5
- default?: (props: typeof __VLS_12) => any;
5
+ default?: (props: typeof __VLS_8) => any;
6
6
  } & {
7
- items?: (props: typeof __VLS_23) => any;
7
+ items?: (props: typeof __VLS_19) => any;
8
8
  };
9
9
  declare const __VLS_base: import("vue").DefineComponent<MenuProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
- select: (args_0: ListOptionSelected, args_1: MouseEvent) => any;
11
10
  change: (visible: boolean) => any;
11
+ select: (args_0: ListOptionSelected, args_1: MouseEvent) => any;
12
12
  }, string, import("vue").PublicProps, Readonly<MenuProps> & Readonly<{
13
- onSelect?: ((args_0: ListOptionSelected, args_1: MouseEvent) => any) | undefined;
14
13
  onChange?: ((visible: boolean) => any) | undefined;
14
+ onSelect?: ((args_0: ListOptionSelected, args_1: MouseEvent) => any) | undefined;
15
15
  }>, {
16
+ position: import("../../types/shared").ComponentPosition;
16
17
  options: import("../list/types").ListOption[];
17
18
  closeOnPressEscape: boolean;
18
- position: import("../../types/shared").ComponentPosition;
19
- showDelay: number;
20
- hideDelay: number;
21
19
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
20
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
21
  declare const _default: typeof __VLS_export;
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { shallowRef } from "vue";
2
+ import { computed, shallowRef } from "vue";
3
3
  import { usePopoverResponsive } from "../../composables/use-popover-responsive";
4
4
  import { getCssUnitValue } from "../../utils/format";
5
5
  import PList from "../list/index.vue";
@@ -8,47 +8,41 @@ defineOptions({
8
8
  name: "PMenu",
9
9
  inheritAttrs: false
10
10
  });
11
- defineProps({
11
+ const props = defineProps({
12
12
  width: { type: [String, Number], required: false },
13
13
  options: { type: Array, required: false, default: () => [] },
14
+ disabled: { type: Boolean, required: false },
14
15
  position: { type: null, required: false, default: "bottom-start" },
15
- showDelay: { type: Number, required: false, default: 0 },
16
- hideDelay: { type: Number, required: false, default: 100 },
17
16
  closeOnPressEscape: { type: Boolean, required: false, default: true }
18
17
  });
19
18
  const emits = defineEmits(["change", "select"]);
20
- const { isXs, attrs } = usePopoverResponsive();
19
+ const { isAdaptive, responsiveClasses } = usePopoverResponsive();
21
20
  const popoverVisible = shallowRef(false);
22
- function onVisibleChange(visible) {
21
+ const listStyles = computed(() => ({
22
+ "--list-width": getCssUnitValue(props.width)
23
+ }));
24
+ function togglePopoverVisible(visible) {
23
25
  popoverVisible.value = visible;
24
26
  }
25
- function hidePopover() {
26
- onVisibleChange(false);
27
- }
28
- function onOptionClick(ev, item) {
27
+ function onOptionClick(item, ev) {
29
28
  emits("select", item, ev);
30
- hidePopover();
29
+ togglePopoverVisible(false);
31
30
  }
32
31
  </script>
33
32
 
34
33
  <template>
35
34
  <PPopover
35
+ v-model="popoverVisible"
36
36
  class="pxd-menu"
37
37
  trigger="click"
38
- :show-delay="isXs ? 0 : showDelay"
39
- :hide-delay="isXs ? 0 : hideDelay"
38
+ :disabled="disabled"
40
39
  :position="position"
41
- :visible="popoverVisible"
42
- :unset-position="isXs"
43
- :wrapper-class="attrs.wrapperClass"
44
- :content-class="attrs.contentClass"
45
- :transition-type="attrs.transitionType"
46
- :lock-scroll-on-visible="isXs"
40
+ :adaptive="isAdaptive"
41
+ :wrapper-class="responsiveClasses.wrapper"
42
+ :content-class="responsiveClasses.content"
43
+ :lock-scroll-on-visible="isAdaptive"
47
44
  :close-on-press-escape="closeOnPressEscape"
48
45
  v-bind="$attrs"
49
- @escape="hidePopover"
50
- @outside-click="hidePopover"
51
- @visible-change="onVisibleChange"
52
46
  >
53
47
  <slot />
54
48
 
@@ -56,8 +50,8 @@ function onOptionClick(ev, item) {
56
50
  <PList
57
51
  :width="width"
58
52
  :options="options"
59
- :key-listener="popoverVisible"
60
- :style="{ '--list-width': getCssUnitValue(width) }"
53
+ :style="listStyles"
54
+ :visible="popoverVisible"
61
55
  class="max-h-68 sm:w-(--list-width) rounded-inherit"
62
56
  @select="onOptionClick"
63
57
  >
@@ -4,9 +4,8 @@ import type { ListOption, ListOptionSelected } from '../list/types'
4
4
  export interface MenuProps {
5
5
  width?: string | number
6
6
  options?: ListOption[]
7
+ disabled?: boolean
7
8
  position?: ComponentPosition
8
- showDelay?: number
9
- hideDelay?: number
10
9
  closeOnPressEscape?: boolean
11
10
  }
12
11
 
@@ -0,0 +1,13 @@
1
+ import type { MaybeRefOrGetter } from 'vue';
2
+ interface UseGroupExpandOptions {
3
+ expand: MaybeRefOrGetter<boolean | undefined>;
4
+ onPauseAll: () => void;
5
+ onResumeAll: () => void;
6
+ }
7
+ export declare function useGroupExpand({ expand, onPauseAll, onResumeAll }: UseGroupExpandOptions): {
8
+ groupExpand: import("vue").ShallowRef<boolean | undefined, boolean | undefined>;
9
+ collapse: () => void;
10
+ onPointerEnter: () => void;
11
+ onPointerLeave: () => void;
12
+ };
13
+ export {};
@@ -0,0 +1,50 @@
1
+ import { shallowRef, watchEffect } from "vue";
2
+ import { toValue } from "../../../utils/ref.js";
3
+ const TRANSITION_LOCK_MS = 250;
4
+ const LEAVE_DEBOUNCE_MS = 200;
5
+ export function useGroupExpand({ expand, onPauseAll, onResumeAll }) {
6
+ const groupExpand = shallowRef(toValue(expand));
7
+ let leaveTimeoutId;
8
+ let isTransitioning = false;
9
+ function onPointerEnter() {
10
+ clearTimeout(leaveTimeoutId);
11
+ if (groupExpand.value || isTransitioning) {
12
+ return;
13
+ }
14
+ isTransitioning = true;
15
+ groupExpand.value = true;
16
+ onPauseAll();
17
+ setTimeout(() => {
18
+ isTransitioning = false;
19
+ }, TRANSITION_LOCK_MS);
20
+ }
21
+ function onPointerLeave() {
22
+ clearTimeout(leaveTimeoutId);
23
+ if (isTransitioning) {
24
+ return;
25
+ }
26
+ leaveTimeoutId = setTimeout(() => {
27
+ onResumeAll();
28
+ if (toValue(expand)) {
29
+ return;
30
+ }
31
+ isTransitioning = true;
32
+ groupExpand.value = false;
33
+ setTimeout(() => {
34
+ isTransitioning = false;
35
+ }, TRANSITION_LOCK_MS);
36
+ }, LEAVE_DEBOUNCE_MS);
37
+ }
38
+ function collapse() {
39
+ groupExpand.value = false;
40
+ }
41
+ watchEffect(() => {
42
+ groupExpand.value = toValue(expand);
43
+ });
44
+ return {
45
+ groupExpand,
46
+ collapse,
47
+ onPointerEnter,
48
+ onPointerLeave
49
+ };
50
+ }
@@ -0,0 +1,9 @@
1
+ import type { MessageItemConfig } from '../../../composables/use-message';
2
+ export declare function useMessageTimer(onTimeout: (id: MessageItemConfig['id']) => void): {
3
+ setAutoCloseTimer: (message: MessageItemConfig) => void;
4
+ pauseMessage: (message: MessageItemConfig) => void;
5
+ resumeMessage: (message: MessageItemConfig) => void;
6
+ clearTimers: (messages: MessageItemConfig[]) => void;
7
+ pauseAll: (messages: MessageItemConfig[]) => void;
8
+ resumeAll: (messages: MessageItemConfig[]) => void;
9
+ };
@@ -0,0 +1,61 @@
1
+ export function useMessageTimer(onTimeout) {
2
+ function setAutoCloseTimer(message) {
3
+ message._startedAtMs = Date.now();
4
+ if (message._remainingMs == null) {
5
+ message._remainingMs = message.durations;
6
+ }
7
+ if (message._timerId) {
8
+ clearTimeout(message._timerId);
9
+ }
10
+ message._timerId = setTimeout(() => {
11
+ onTimeout(message.id);
12
+ }, message._remainingMs);
13
+ }
14
+ function pauseMessage(message) {
15
+ if (!message.durations || message.durations <= 0) {
16
+ return;
17
+ }
18
+ if (message._timerId) {
19
+ clearTimeout(message._timerId);
20
+ message._timerId = void 0;
21
+ }
22
+ if (message._startedAtMs != null) {
23
+ const elapsed = Date.now() - message._startedAtMs;
24
+ const previousRemaining = message._remainingMs ?? message.durations;
25
+ message._remainingMs = Math.max(0, previousRemaining - elapsed);
26
+ }
27
+ }
28
+ function resumeMessage(message) {
29
+ if (!message.durations || message.durations <= 0) {
30
+ return;
31
+ }
32
+ const remaining = message._remainingMs ?? 0;
33
+ if (remaining <= 100) {
34
+ onTimeout(message.id);
35
+ return;
36
+ }
37
+ setAutoCloseTimer(message);
38
+ }
39
+ function clearTimers(messages) {
40
+ messages.forEach((m) => {
41
+ if (m._timerId) {
42
+ clearTimeout(m._timerId);
43
+ m._timerId = void 0;
44
+ }
45
+ });
46
+ }
47
+ function pauseAll(messages) {
48
+ messages.forEach(pauseMessage);
49
+ }
50
+ function resumeAll(messages) {
51
+ messages.forEach(resumeMessage);
52
+ }
53
+ return {
54
+ setAutoCloseTimer,
55
+ pauseMessage,
56
+ resumeMessage,
57
+ clearTimers,
58
+ pauseAll,
59
+ resumeAll
60
+ };
61
+ }
@@ -0,0 +1,4 @@
1
+ import type { MessageItemConfig } from '../../../composables/use-message';
2
+ export declare function usePromiseMessage(setAutoCloseTimer: (message: MessageItemConfig) => void): {
3
+ handlePromiseMessage: (message: MessageItemConfig) => void;
4
+ };
@@ -0,0 +1,49 @@
1
+ export function usePromiseMessage(setAutoCloseTimer) {
2
+ function resolvePromiseMessage(handler, data) {
3
+ if (!handler) {
4
+ return void 0;
5
+ }
6
+ if (typeof handler === "function") {
7
+ const result = handler(data);
8
+ return typeof result === "string" ? result : void 0;
9
+ }
10
+ return typeof handler === "string" ? handler : void 0;
11
+ }
12
+ function handlePromiseMessage(message) {
13
+ if (!message.promise) {
14
+ return;
15
+ }
16
+ let promiseResult;
17
+ message.promise.then((data) => {
18
+ promiseResult = data;
19
+ message.type = "success";
20
+ const successMessage = resolvePromiseMessage(message.success, data);
21
+ if (successMessage) {
22
+ message.message = successMessage;
23
+ }
24
+ }).catch((err) => {
25
+ promiseResult = err;
26
+ message.type = "error";
27
+ const errorMessage = resolvePromiseMessage(message.error, err);
28
+ if (errorMessage) {
29
+ message.message = errorMessage;
30
+ }
31
+ }).finally(() => {
32
+ const finallyMessage = resolvePromiseMessage(message.finally, promiseResult);
33
+ if (finallyMessage) {
34
+ message.message = finallyMessage;
35
+ }
36
+ message.promise = void 0;
37
+ message.success = void 0;
38
+ message.error = void 0;
39
+ message.finally = void 0;
40
+ if (message.durations && message.durations > 0) {
41
+ message._remainingMs = message.durations;
42
+ setAutoCloseTimer(message);
43
+ }
44
+ });
45
+ }
46
+ return {
47
+ handlePromiseMessage
48
+ };
49
+ }
@@ -7,16 +7,7 @@ declare function getMessageById(id: MessageItemConfig['id']): {
7
7
  index: number;
8
8
  message: {
9
9
  height?: number | undefined;
10
- _timerId?: {
11
- close: () => NodeJS.Timeout;
12
- hasRef: () => boolean;
13
- ref: () => NodeJS.Timeout;
14
- refresh: () => NodeJS.Timeout;
15
- unref: () => NodeJS.Timeout;
16
- _onTimeout: (...args: any[]) => void;
17
- [Symbol.toPrimitive]: () => number;
18
- [Symbol.dispose]: () => void;
19
- } | undefined;
10
+ _timerId?: ReturnType<typeof setTimeout> | undefined;
20
11
  _remainingMs?: number | undefined;
21
12
  _startedAtMs?: number | undefined;
22
13
  id?: string | number | undefined;
@@ -61,16 +52,7 @@ declare function clearMessage(): void;
61
52
  declare const __VLS_export: import("vue").DefineComponent<MessageProps, {
62
53
  messages: import("vue").Ref<{
63
54
  height?: number | undefined;
64
- _timerId?: {
65
- close: () => NodeJS.Timeout;
66
- hasRef: () => boolean;
67
- ref: () => NodeJS.Timeout;
68
- refresh: () => NodeJS.Timeout;
69
- unref: () => NodeJS.Timeout;
70
- _onTimeout: (...args: any[]) => void;
71
- [Symbol.toPrimitive]: () => number;
72
- [Symbol.dispose]: () => void;
73
- } | undefined;
55
+ _timerId?: ReturnType<typeof setTimeout> | undefined;
74
56
  _remainingMs?: number | undefined;
75
57
  _startedAtMs?: number | undefined;
76
58
  id?: string | number | undefined;
@@ -108,16 +90,7 @@ declare const __VLS_export: import("vue").DefineComponent<MessageProps, {
108
90
  }>)) | undefined;
109
91
  }[], MessageItemConfig[] | {
110
92
  height?: number | undefined;
111
- _timerId?: {
112
- close: () => NodeJS.Timeout;
113
- hasRef: () => boolean;
114
- ref: () => NodeJS.Timeout;
115
- refresh: () => NodeJS.Timeout;
116
- unref: () => NodeJS.Timeout;
117
- _onTimeout: (...args: any[]) => void;
118
- [Symbol.toPrimitive]: () => number;
119
- [Symbol.dispose]: () => void;
120
- } | undefined;
93
+ _timerId?: ReturnType<typeof setTimeout> | undefined;
121
94
  _remainingMs?: number | undefined;
122
95
  _startedAtMs?: number | undefined;
123
96
  id?: string | number | undefined;
@@ -160,13 +133,13 @@ declare const __VLS_export: import("vue").DefineComponent<MessageProps, {
160
133
  close: typeof closeMessageById;
161
134
  clear: typeof clearMessage;
162
135
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
163
- close: (id: MessageItemType) => any;
136
+ close: (id: string | number | undefined) => any;
164
137
  }, string, import("vue").PublicProps, Readonly<MessageProps> & Readonly<{
165
- onClose?: ((id: MessageItemType) => any) | undefined;
138
+ onClose?: ((id: string | number | undefined) => any) | undefined;
166
139
  }>, {
140
+ position: import("../../types/shared").ComponentPosition<"top" | "bottom">;
167
141
  max: number;
168
142
  group: string;
169
- position: import("../../types/shared").ComponentPosition<"top" | "bottom">;
170
143
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
171
144
  declare const _default: typeof __VLS_export;
172
145
  export default _default;