ropav 0.1.5 → 0.1.7

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 (235) hide show
  1. package/README.md +10 -0
  2. package/dist/accordion.css +17 -17
  3. package/dist/accordion.js +125 -154
  4. package/dist/alert.css +18 -18
  5. package/dist/alert.js +20 -20
  6. package/dist/aria.js +14 -0
  7. package/dist/aspect-ratio.js +1 -1
  8. package/dist/attributes.js +9 -0
  9. package/dist/attributes2.js +29 -0
  10. package/dist/avatar.css +19 -19
  11. package/dist/avatar.js +10 -18
  12. package/dist/badge.css +16 -16
  13. package/dist/badge.js +6 -6
  14. package/dist/base.css +18 -13
  15. package/dist/button-group.js +1 -1
  16. package/dist/button-link.js +13 -14
  17. package/dist/button.css +32 -27
  18. package/dist/button.js +13 -14
  19. package/dist/{useButtonColor.js → button.scss_vue_type_style_index_0_src_true_lang.js} +3 -2
  20. package/dist/card.js +1 -1
  21. package/dist/checkbox.css +32 -32
  22. package/dist/checkbox.js +23 -29
  23. package/dist/collapse.css +6 -6
  24. package/dist/collapse.js +8 -7
  25. package/dist/collectionNavigation.js +2 -99
  26. package/dist/color-input.css +19 -19
  27. package/dist/color-input.js +15 -14
  28. package/dist/color-picker.css +40 -40
  29. package/dist/color-picker.js +222 -202
  30. package/dist/color-picker2.js +1 -9
  31. package/dist/color-swatch.css +4 -4
  32. package/dist/color-swatch.js +7 -9
  33. package/dist/color.js +5 -10
  34. package/dist/componentColors.js +165 -84
  35. package/dist/componentRef.js +26 -0
  36. package/dist/components/accordion/accordionContext.d.ts +3 -0
  37. package/dist/components/accordion/accordionModel.d.ts +14 -0
  38. package/dist/components/accordion/index.d.ts +2 -1
  39. package/dist/components/accordion/index.js +1 -1
  40. package/dist/components/accordion/types.d.ts +1 -2
  41. package/dist/components/accordion/useAccordion.d.ts +2 -2
  42. package/dist/components/accordion/useAccordionItem.d.ts +2 -0
  43. package/dist/components/checkbox/useCheckbox.d.ts +2 -3
  44. package/dist/components/color-input/color-input.d.ts +2 -2
  45. package/dist/components/color-input/useColorInput.d.ts +1 -1
  46. package/dist/components/color-picker/index.js +2 -2
  47. package/dist/components/color-picker/types.d.ts +2 -2
  48. package/dist/components/color-picker/useColorPickerSaturation.d.ts +22 -0
  49. package/dist/components/color-picker/useColorPickerSlider.d.ts +20 -0
  50. package/dist/components/color-picker/useColorPickerValue.d.ts +1 -1
  51. package/dist/components/dialog/{dialog-core.d.ts → dialogContext.d.ts} +2 -6
  52. package/dist/components/dialog/useDialogContentInteractions.d.ts +18 -0
  53. package/dist/components/dialog/useDialogRootState.d.ts +19 -0
  54. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  55. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +1 -1
  56. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +1 -1
  57. package/dist/components/dropdown-menu/dropdown-menu-model.d.ts +8 -0
  58. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +2 -2
  59. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  60. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
  61. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
  62. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -3
  63. package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +17 -19
  64. package/dist/components/dropdown-menu/dropdownMenuDataModel.d.ts +20 -0
  65. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -0
  66. package/dist/components/dropdown-menu/dropdownMenuInteractionNavigation.d.ts +24 -0
  67. package/dist/components/dropdown-menu/dropdownMenuInteractionRegistry.d.ts +42 -0
  68. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +85 -0
  69. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -11
  70. package/dist/components/dropdown-menu/useDropdownMenuContextTrigger.d.ts +9 -0
  71. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +34 -0
  72. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +22 -0
  73. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +6 -5
  74. package/dist/components/dropdown-menu/useDropdownMenuInteractionDismissal.d.ts +17 -0
  75. package/dist/components/dropdown-menu/useDropdownMenuInteractionKeyboard.d.ts +19 -0
  76. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +0 -1
  77. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +29 -0
  78. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +2 -2
  79. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +1 -1
  80. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +19 -0
  81. package/dist/components/floating/hoverDisclosureInteractionModel.d.ts +42 -0
  82. package/dist/components/floating/index.js +1 -1
  83. package/dist/components/floating/useFloatingPosition.d.ts +0 -1
  84. package/dist/components/floating/useHoverDisclosureInteractions.d.ts +32 -0
  85. package/dist/components/floating/useHoverDisclosureOpenState.d.ts +25 -0
  86. package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +27 -0
  87. package/dist/components/input/useInput.d.ts +1 -1
  88. package/dist/components/number-input/numberInputModel.d.ts +15 -0
  89. package/dist/components/number-input/useNumberInput.d.ts +4 -18
  90. package/dist/components/pagination/index.d.ts +1 -1
  91. package/dist/components/pagination/index.js +1 -1
  92. package/dist/components/pagination/paginationModel.d.ts +4 -0
  93. package/dist/components/pagination/types.d.ts +15 -0
  94. package/dist/components/pagination/usePagination.d.ts +3 -19
  95. package/dist/components/popover/usePopoverBindings.d.ts +16 -0
  96. package/dist/components/progress/progressModel.d.ts +8 -0
  97. package/dist/components/progress/useProgress.d.ts +1 -7
  98. package/dist/components/radio/useRadio.d.ts +3 -4
  99. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  100. package/dist/components/scroll-area/scrollAreaModel.d.ts +64 -0
  101. package/dist/components/scroll-area/types.d.ts +4 -0
  102. package/dist/components/scroll-area/useScrollArea.d.ts +70 -52
  103. package/dist/components/scroll-area/{useScrollAreaPresentation.d.ts → useScrollAreaAttributes.d.ts} +37 -14
  104. package/dist/components/scroll-area/useScrollAreaDerivedState.d.ts +8 -0
  105. package/dist/components/scroll-area/useScrollAreaMeasurement.d.ts +35 -0
  106. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +10 -8
  107. package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
  108. package/dist/components/select/useSelect.d.ts +2 -1
  109. package/dist/components/select/useSelectNativeValue.d.ts +1 -7
  110. package/dist/components/slider/rangeSliderModel.d.ts +41 -0
  111. package/dist/components/slider/{sliderCore.d.ts → sliderModel.d.ts} +2 -2
  112. package/dist/components/slider/useRangeSlider.d.ts +9 -17
  113. package/dist/components/slider/useRangeSliderValueState.d.ts +40 -0
  114. package/dist/components/slider/useSlider.d.ts +8 -14
  115. package/dist/components/slider/useSliderPointerPreview.d.ts +22 -0
  116. package/dist/components/slider/useSliderTooltipState.d.ts +40 -0
  117. package/dist/components/slider/useSliderValueState.d.ts +33 -0
  118. package/dist/components/switch/useSwitch.d.ts +1 -1
  119. package/dist/components/teleport-provider/index.js +1 -1
  120. package/dist/components/teleport-provider/useTeleportTarget.d.ts +1 -2
  121. package/dist/components/textarea/useTextarea.d.ts +1 -1
  122. package/dist/components/toast/useToastLifecycle.d.ts +19 -0
  123. package/dist/components/tooltip/useTooltip.d.ts +1 -2
  124. package/dist/composables/index.d.ts +2 -0
  125. package/dist/composables/index.js +2 -0
  126. package/dist/composables/useControllableValue.d.ts +14 -0
  127. package/dist/css.js +12 -0
  128. package/dist/dialog.js +227 -216
  129. package/dist/dropdown-menu.js +1493 -1118
  130. package/dist/events.js +59 -0
  131. package/dist/field.css +8 -8
  132. package/dist/field.js +13 -25
  133. package/dist/floating.js +553 -312
  134. package/dist/floatingOffset.js +11 -0
  135. package/dist/focus-trap.js +7 -5
  136. package/dist/focusNavigation.js +37 -0
  137. package/dist/icon-button.css +12 -173
  138. package/dist/icon-button.js +8 -7
  139. package/dist/index.d.ts +5 -4
  140. package/dist/index.js +13 -11
  141. package/dist/input.css +24 -24
  142. package/dist/input.js +20 -32
  143. package/dist/interactive.js +18 -0
  144. package/dist/modal.js +11 -7
  145. package/dist/number-input.css +18 -18
  146. package/dist/number-input.js +15 -13
  147. package/dist/number.js +22 -0
  148. package/dist/overlay.js +3 -2
  149. package/dist/pagination.css +28 -28
  150. package/dist/pagination.js +67 -65
  151. package/dist/pointer.js +9 -0
  152. package/dist/popover.css +34 -34
  153. package/dist/popover.js +93 -91
  154. package/dist/progress.css +29 -21
  155. package/dist/progress.js +25 -21
  156. package/dist/query.js +40 -0
  157. package/dist/radio.css +18 -18
  158. package/dist/radio.js +31 -37
  159. package/dist/rafScheduler.js +34 -0
  160. package/dist/scroll-area.css +35 -26
  161. package/dist/scroll-area.js +553 -500
  162. package/dist/select.css +45 -45
  163. package/dist/select.js +70 -56
  164. package/dist/slider.css +191 -191
  165. package/dist/slider.js +695 -628
  166. package/dist/styles-api.d.ts +0 -1
  167. package/dist/styles-api.js +1 -4
  168. package/dist/switch.css +17 -17
  169. package/dist/switch.js +15 -16
  170. package/dist/tabs.css +46 -46
  171. package/dist/tabs.js +51 -68
  172. package/dist/text.js +17 -0
  173. package/dist/textarea.css +26 -26
  174. package/dist/textarea.js +22 -33
  175. package/dist/toast.css +26 -26
  176. package/dist/toast.js +157 -129
  177. package/dist/tooltip.css +12 -12
  178. package/dist/tooltip.js +46 -47
  179. package/dist/useCollapse.js +19 -17
  180. package/dist/useControlState.js +4 -7
  181. package/dist/useControllableValue.js +8 -2
  182. package/dist/useFloatingPosition.js +122 -1128
  183. package/dist/useFormControl.js +3 -2
  184. package/dist/useOverlayZIndex.js +2 -6
  185. package/dist/useRequiredInject.js +1 -1
  186. package/dist/useTeleportTarget.js +3 -14
  187. package/dist/useTypeahead.js +94 -0
  188. package/dist/utils/aria.d.ts +3 -0
  189. package/dist/utils/attributes.d.ts +2 -0
  190. package/dist/utils/bem.d.ts +3 -0
  191. package/dist/utils/collectionNavigation.d.ts +2 -0
  192. package/dist/utils/color.d.ts +7 -0
  193. package/dist/{components/color-picker/color-picker-utils.d.ts → utils/colorPicker.d.ts} +5 -4
  194. package/dist/utils/componentColors.d.ts +7 -0
  195. package/dist/utils/css.d.ts +3 -0
  196. package/dist/utils/dom/ancestry.d.ts +7 -0
  197. package/dist/utils/dom/attributes.d.ts +16 -0
  198. package/dist/utils/dom/componentRef.d.ts +4 -0
  199. package/dist/utils/dom/events.d.ts +5 -0
  200. package/dist/utils/dom/focusNavigation.d.ts +7 -0
  201. package/dist/utils/dom/interactive.d.ts +2 -0
  202. package/dist/utils/dom/pointer.d.ts +2 -0
  203. package/dist/utils/dom/query.d.ts +4 -0
  204. package/dist/utils/dom/scroll.d.ts +23 -0
  205. package/dist/utils/floatingOffset.d.ts +10 -0
  206. package/dist/utils/geometry.d.ts +14 -0
  207. package/dist/utils/indexPath.d.ts +6 -0
  208. package/dist/utils/number.d.ts +4 -0
  209. package/dist/utils/rafScheduler.d.ts +4 -0
  210. package/dist/utils/text.d.ts +2 -0
  211. package/docs/code-architecture.md +118 -0
  212. package/docs/public-composables-api.md +52 -0
  213. package/docs/public-floating-api.md +6 -5
  214. package/package.json +54 -46
  215. package/src/styles/_mixins.scss +4 -0
  216. package/src/styles/_tokens.scss +12 -12
  217. package/src/styles/_variables.scss +1 -1
  218. package/dist/button-link.css +0 -167
  219. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +0 -3
  220. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -21
  221. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +0 -37
  222. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +0 -29
  223. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +0 -52
  224. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +0 -17
  225. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +0 -18
  226. package/dist/components/scroll-area/scrollAreaCore.d.ts +0 -25
  227. package/dist/components/scroll-area/useScrollAreaControls.d.ts +0 -25
  228. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +0 -35
  229. /package/dist/components/alert/{useAlertColor.d.ts → alertColor.d.ts} +0 -0
  230. /package/dist/components/avatar/{useAvatarColor.d.ts → avatarColor.d.ts} +0 -0
  231. /package/dist/components/badge/{useBadgeColor.d.ts → badgeColor.d.ts} +0 -0
  232. /package/dist/components/button/{useButtonColor.d.ts → buttonColor.d.ts} +0 -0
  233. /package/dist/components/color-swatch/{useColorSwatchColor.d.ts → colorSwatchColor.d.ts} +0 -0
  234. /package/dist/components/toast/{useToastColor.d.ts → toastColor.d.ts} +0 -0
  235. /package/dist/{composables → internal/composables}/useOverlayLayer.d.ts +0 -0
package/dist/toast.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-toast[data-v-a830edcc] {
2
+ .rp-toast[data-v-441adf44] {
3
3
  --_rp-toast-bg: var(--rp-color-default);
4
4
  --_rp-toast-fg: var(--rp-color-text);
5
5
  --_rp-toast-title-fg: var(--rp-color-text);
@@ -24,25 +24,25 @@
24
24
  box-shadow: var(--rp-shadow-md);
25
25
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast), border-color var(--rp-transition-fast);
26
26
  }
27
- .rp-toast--radius-none[data-v-a830edcc] {
27
+ .rp-toast--radius-none[data-v-441adf44] {
28
28
  --_rp-toast-radius: var(--rp-radius-none);
29
29
  }
30
- .rp-toast--radius-xs[data-v-a830edcc] {
30
+ .rp-toast--radius-xs[data-v-441adf44] {
31
31
  --_rp-toast-radius: var(--rp-radius-xs);
32
32
  }
33
- .rp-toast--radius-sm[data-v-a830edcc] {
33
+ .rp-toast--radius-sm[data-v-441adf44] {
34
34
  --_rp-toast-radius: var(--rp-radius-sm);
35
35
  }
36
- .rp-toast--radius-md[data-v-a830edcc] {
36
+ .rp-toast--radius-md[data-v-441adf44] {
37
37
  --_rp-toast-radius: var(--rp-radius-md);
38
38
  }
39
- .rp-toast--radius-lg[data-v-a830edcc] {
39
+ .rp-toast--radius-lg[data-v-441adf44] {
40
40
  --_rp-toast-radius: var(--rp-radius-lg);
41
41
  }
42
- .rp-toast--radius-xl[data-v-a830edcc] {
42
+ .rp-toast--radius-xl[data-v-441adf44] {
43
43
  --_rp-toast-radius: var(--rp-radius-xl);
44
44
  }
45
- .rp-toast__icon[data-v-a830edcc] {
45
+ .rp-toast__icon[data-v-441adf44] {
46
46
  display: inline-flex;
47
47
  flex: 0 0 auto;
48
48
  align-items: center;
@@ -51,37 +51,37 @@
51
51
  color: var(--_rp-toast-icon-fg);
52
52
  line-height: 0;
53
53
  }
54
- .rp-toast__icon[data-v-a830edcc] > svg {
54
+ .rp-toast__icon[data-v-441adf44] > svg {
55
55
  display: block;
56
56
  width: 1rem;
57
57
  height: 1rem;
58
58
  }
59
- .rp-toast__content[data-v-a830edcc] {
59
+ .rp-toast__content[data-v-441adf44] {
60
60
  display: grid;
61
61
  flex: 1 1 auto;
62
62
  min-width: 0;
63
63
  gap: var(--rp-spacing-1);
64
64
  }
65
- .rp-toast__title[data-v-a830edcc] {
65
+ .rp-toast__title[data-v-441adf44] {
66
66
  color: var(--_rp-toast-title-fg);
67
67
  font-size: var(--rp-font-size-md);
68
68
  font-weight: var(--rp-font-weight-semibold);
69
69
  line-height: var(--rp-line-height-xs);
70
70
  }
71
- .rp-toast__description[data-v-a830edcc] {
71
+ .rp-toast__description[data-v-441adf44] {
72
72
  margin: 0;
73
73
  }
74
- .rp-toast__body[data-v-a830edcc], .rp-toast__description[data-v-a830edcc] {
74
+ .rp-toast__body[data-v-441adf44], .rp-toast__description[data-v-441adf44] {
75
75
  min-width: 0;
76
76
  color: var(--_rp-toast-fg);
77
77
  }
78
- .rp-toast__action[data-v-a830edcc] {
78
+ .rp-toast__action[data-v-441adf44] {
79
79
  display: inline-flex;
80
80
  flex: 0 0 auto;
81
81
  align-items: center;
82
82
  margin-left: auto;
83
83
  }
84
- .rp-toast__close[data-v-a830edcc] {
84
+ .rp-toast__close[data-v-441adf44] {
85
85
  box-sizing: border-box;
86
86
  display: inline-flex;
87
87
  flex: 0 0 auto;
@@ -98,36 +98,36 @@
98
98
  cursor: pointer;
99
99
  transition: background-color var(--rp-transition-fast), color var(--rp-transition-fast);
100
100
  }
101
- .rp-toast__close[data-v-a830edcc]:hover {
101
+ .rp-toast__close[data-v-441adf44]:hover {
102
102
  background-color: color-mix(in srgb, var(--_rp-toast-icon-fg) 12%, transparent);
103
103
  }
104
- .rp-toast__close[data-v-a830edcc]:focus-visible {
104
+ .rp-toast__close[data-v-441adf44]:focus-visible {
105
105
  outline: var(--rp-border-width-medium) solid var(--rp-color-focus-ring);
106
106
  outline-offset: 2px;
107
107
  }
108
- .rp-toast__close[data-v-a830edcc] > svg {
108
+ .rp-toast__close[data-v-441adf44] > svg {
109
109
  display: block;
110
110
  width: 1rem;
111
111
  height: 1rem;
112
112
  }
113
- .rp-toast-enter-active[data-v-a830edcc],
114
- .rp-toast-leave-active[data-v-a830edcc] {
113
+ .rp-toast-enter-active[data-v-441adf44],
114
+ .rp-toast-leave-active[data-v-441adf44] {
115
115
  will-change: opacity, transform;
116
116
  }
117
- .rp-toast-enter-active[data-v-a830edcc] {
117
+ .rp-toast-enter-active[data-v-441adf44] {
118
118
  transition: opacity 180ms ease-out, transform 240ms cubic-bezier(0.16, 1, 0.3, 1);
119
119
  }
120
- .rp-toast-leave-active[data-v-a830edcc] {
120
+ .rp-toast-leave-active[data-v-441adf44] {
121
121
  transition: opacity 120ms ease-in, transform 180ms cubic-bezier(0.4, 0, 1, 1);
122
122
  }
123
- .rp-toast-enter-from[data-v-a830edcc],
124
- .rp-toast-leave-to[data-v-a830edcc] {
123
+ .rp-toast-enter-from[data-v-441adf44],
124
+ .rp-toast-leave-to[data-v-441adf44] {
125
125
  opacity: 0;
126
126
  transform: translate3d(0, calc(var(--rp-spacing-2) * -1), 0) scale(0.98);
127
127
  }
128
128
  @media (prefers-reduced-motion: reduce) {
129
- .rp-toast-enter-active[data-v-a830edcc],
130
- .rp-toast-leave-active[data-v-a830edcc] {
129
+ .rp-toast-enter-active[data-v-441adf44],
130
+ .rp-toast-leave-active[data-v-441adf44] {
131
131
  transition: none;
132
132
  }
133
133
  }
package/dist/toast.js CHANGED
@@ -1,18 +1,20 @@
1
1
  import './toast.css';
2
- import { t as x_default } from "./x.js";
2
+ import { t as useControllableValue } from "./useControllableValue.js";
3
+ import { t as useStylesApi } from "./styles-api.js";
3
4
  import { t as bem } from "./bem.js";
4
- import { n as useStylesApi } from "./styles-api.js";
5
- import { i as getComponentVariantColorRoles, t as componentColors } from "./componentColors.js";
6
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { t as x_default } from "./x.js";
7
+ import { a as getComponentVariantColorRoles, t as componentColors } from "./componentColors.js";
8
+ import { i as isNodeWithinElement } from "./events.js";
7
9
  import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
8
- import { r as useTeleportTarget } from "./useTeleportTarget.js";
9
- import { VaporTeleport, VaporTransition, VaporTransitionGroup, computed, createComponent, createFor, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, extend, inject, nextTick, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, toValue, txt, unref, useSlots, watch } from "vue";
10
+ import { n as useTeleportTarget } from "./useTeleportTarget.js";
11
+ import { VaporTeleport, VaporTransition, VaporTransitionGroup, computed, createComponent, createFor, createIf, createSlot, defineVaporComponent, extend, inject, nextTick, on, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, toValue, txt, unref, useSlots, watch } from "vue";
10
12
  //#region src/components/toast/defaults.ts
11
13
  var DEFAULT_TOAST_DURATION = 5e3;
12
14
  var DEFAULT_TOAST_ROLE = "status";
13
15
  var DEFAULT_TOAST_CLOSE_LABEL = "Close toast";
14
16
  //#endregion
15
- //#region src/components/toast/useToastColor.ts
17
+ //#region src/components/toast/toastColor.ts
16
18
  function getToastColorStyle(color, variant, autoContrast, contrastColor) {
17
19
  if (!color && !variant) return void 0;
18
20
  const resolvedVariant = variant ?? "surface";
@@ -33,13 +35,131 @@ function getToastColorStyle(color, variant, autoContrast, contrastColor) {
33
35
  };
34
36
  }
35
37
  //#endregion
38
+ //#region src/components/toast/useToastLifecycle.ts
39
+ function useToastLifecycle(options) {
40
+ const isOpen = computed(() => toValue(options.isOpen));
41
+ const duration = computed(() => toValue(options.duration));
42
+ const pauseOnHover = computed(() => toValue(options.pauseOnHover));
43
+ const pauseOnFocus = computed(() => toValue(options.pauseOnFocus));
44
+ let isMounted = false;
45
+ let closePending = false;
46
+ let pausedByHover = false;
47
+ let pausedByFocus = false;
48
+ let timer;
49
+ let timerStartedAt = 0;
50
+ let remainingDuration = 0;
51
+ function getDuration() {
52
+ return Number.isFinite(duration.value) && duration.value > 0 ? duration.value : 0;
53
+ }
54
+ function clearTimer() {
55
+ if (timer === void 0) return;
56
+ clearTimeout(timer);
57
+ timer = void 0;
58
+ }
59
+ function scheduleTimer() {
60
+ if (!isOpen.value || remainingDuration <= 0 || pausedByHover || pausedByFocus) return;
61
+ timerStartedAt = Date.now();
62
+ timer = setTimeout(() => {
63
+ timer = void 0;
64
+ remainingDuration = 0;
65
+ close("timeout");
66
+ }, remainingDuration);
67
+ }
68
+ function resetTimer() {
69
+ clearTimer();
70
+ remainingDuration = getDuration();
71
+ scheduleTimer();
72
+ }
73
+ function pauseTimer() {
74
+ if (timer === void 0) return;
75
+ remainingDuration = Math.max(0, remainingDuration - (Date.now() - timerStartedAt));
76
+ clearTimer();
77
+ if (remainingDuration === 0) close("timeout");
78
+ }
79
+ function resumeTimer() {
80
+ if (pausedByHover || pausedByFocus) return;
81
+ scheduleTimer();
82
+ }
83
+ function resetPauseState() {
84
+ pausedByHover = false;
85
+ pausedByFocus = false;
86
+ }
87
+ function onMouseenter() {
88
+ if (!pauseOnHover.value) return;
89
+ pausedByHover = true;
90
+ pauseTimer();
91
+ }
92
+ function onMouseleave() {
93
+ if (!pauseOnHover.value) return;
94
+ pausedByHover = false;
95
+ resumeTimer();
96
+ }
97
+ function onFocusin() {
98
+ if (!pauseOnFocus.value) return;
99
+ pausedByFocus = true;
100
+ pauseTimer();
101
+ }
102
+ function onFocusout(event) {
103
+ if (!pauseOnFocus.value) return;
104
+ if (isNodeWithinElement(event.relatedTarget, event.currentTarget)) return;
105
+ pausedByFocus = false;
106
+ resumeTimer();
107
+ }
108
+ function close(reason) {
109
+ if (closePending) return;
110
+ closePending = true;
111
+ clearTimer();
112
+ options.requestClose(reason);
113
+ if (isOpen.value) {
114
+ resetTimer();
115
+ nextTick(() => {
116
+ if (isOpen.value) closePending = false;
117
+ });
118
+ }
119
+ }
120
+ watch(isOpen, (open) => {
121
+ if (open) closePending = false;
122
+ });
123
+ watch(pauseOnHover, (enabled) => {
124
+ if (enabled || !pausedByHover) return;
125
+ pausedByHover = false;
126
+ resumeTimer();
127
+ });
128
+ watch(pauseOnFocus, (enabled) => {
129
+ if (enabled || !pausedByFocus) return;
130
+ pausedByFocus = false;
131
+ resumeTimer();
132
+ });
133
+ watch([isOpen, duration], ([open], [wasOpen]) => {
134
+ if (!isMounted) return;
135
+ if (!open || !wasOpen) resetPauseState();
136
+ resetTimer();
137
+ });
138
+ onMounted(() => {
139
+ isMounted = true;
140
+ resetTimer();
141
+ });
142
+ onBeforeUnmount(() => {
143
+ isMounted = false;
144
+ clearTimer();
145
+ });
146
+ return {
147
+ close,
148
+ rootEvents: {
149
+ onMouseenter,
150
+ onMouseleave,
151
+ onFocusin,
152
+ onFocusout
153
+ }
154
+ };
155
+ }
156
+ //#endregion
36
157
  //#region src/components/toast/toast.vue?vue&type=script&setup=true&vapor=true&lang.ts
37
- var t0$1 = template("<div data-v-a830edcc>");
158
+ var t0$1 = template("<div data-v-441adf44>");
38
159
  var t1 = template(" ");
39
- var t2 = template("<p data-v-a830edcc> ");
40
- var t3 = template("<div data-v-a830edcc class=rp-toast__content>");
41
- var t4 = template("<button data-v-a830edcc>");
42
- delegateEvents("click");
160
+ var t2 = template("<p data-v-441adf44> ");
161
+ var t3 = template("<div data-v-441adf44 class=rp-toast__content>");
162
+ var t4 = template("<button data-v-441adf44>");
43
163
  //#endregion
44
164
  //#region src/components/toast/toast.vue
45
165
  var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -88,29 +208,22 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
88
208
  const props = __props;
89
209
  const emit = __emit;
90
210
  const slots = useSlots();
91
- const localOpen = ref(props.open ?? true);
92
- const isMounted = ref(false);
93
- const pausedByHover = ref(false);
94
- const pausedByFocus = ref(false);
95
- let closePending = false;
96
- let timer;
97
- let timerStartedAt = 0;
98
- let remainingDuration = 0;
99
- watch(() => props.open, (open) => {
100
- if (open !== void 0) localOpen.value = open;
101
- if (open) closePending = false;
102
- });
103
- watch(() => props.pauseOnHover, (pauseOnHover) => {
104
- if (pauseOnHover || !pausedByHover.value) return;
105
- pausedByHover.value = false;
106
- resumeTimer();
211
+ const controllableOpen = useControllableValue({
212
+ modelValue: () => props.open,
213
+ defaultValue: () => true,
214
+ onChange: (open) => emit("update:open", open)
107
215
  });
108
- watch(() => props.pauseOnFocus, (pauseOnFocus) => {
109
- if (pauseOnFocus || !pausedByFocus.value) return;
110
- pausedByFocus.value = false;
111
- resumeTimer();
216
+ const isOpen = controllableOpen.value;
217
+ const { close: closeToast, rootEvents } = useToastLifecycle({
218
+ isOpen,
219
+ duration: () => props.duration,
220
+ pauseOnHover: () => props.pauseOnHover,
221
+ pauseOnFocus: () => props.pauseOnFocus,
222
+ requestClose(reason) {
223
+ controllableOpen.setValue(false);
224
+ emit("close", reason);
225
+ }
112
226
  });
113
- const isOpen = computed(() => props.open ?? localOpen.value);
114
227
  const hasTitle = computed(() => Boolean(props.title || slots.title));
115
228
  const hasDescription = computed(() => Boolean(props.description));
116
229
  const hasContent = computed(() => Boolean(hasTitle.value || hasDescription.value || slots.default));
@@ -126,98 +239,14 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
126
239
  class: rootClass.value,
127
240
  style: rootStyle.value,
128
241
  role: resolvedRole.value,
129
- onMouseenter,
130
- onMouseleave,
131
- onFocusin,
132
- onFocusout
242
+ ...rootEvents
133
243
  }));
134
- watch([isOpen, () => props.duration], ([open], [wasOpen]) => {
135
- if (!isMounted.value) return;
136
- if (!open || !wasOpen) {
137
- pausedByHover.value = false;
138
- pausedByFocus.value = false;
139
- }
140
- resetTimer();
141
- });
142
- onMounted(() => {
143
- isMounted.value = true;
144
- resetTimer();
145
- });
146
- onBeforeUnmount(clearTimer);
147
- function getDuration() {
148
- return Number.isFinite(props.duration) && props.duration > 0 ? props.duration : 0;
149
- }
150
- function resetTimer() {
151
- clearTimer();
152
- remainingDuration = getDuration();
153
- scheduleTimer();
154
- }
155
- function scheduleTimer() {
156
- if (!isOpen.value || remainingDuration <= 0 || pausedByHover.value || pausedByFocus.value) return;
157
- timerStartedAt = Date.now();
158
- timer = setTimeout(() => {
159
- timer = void 0;
160
- remainingDuration = 0;
161
- closeToast("timeout");
162
- }, remainingDuration);
163
- }
164
- function clearTimer() {
165
- if (timer === void 0) return;
166
- clearTimeout(timer);
167
- timer = void 0;
168
- }
169
- function pauseTimer() {
170
- if (timer === void 0) return;
171
- remainingDuration = Math.max(0, remainingDuration - (Date.now() - timerStartedAt));
172
- clearTimer();
173
- if (remainingDuration === 0) closeToast("timeout");
174
- }
175
- function resumeTimer() {
176
- if (pausedByHover.value || pausedByFocus.value) return;
177
- scheduleTimer();
178
- }
179
- function onMouseenter() {
180
- if (!props.pauseOnHover) return;
181
- pausedByHover.value = true;
182
- pauseTimer();
183
- }
184
- function onMouseleave() {
185
- if (!props.pauseOnHover) return;
186
- pausedByHover.value = false;
187
- resumeTimer();
188
- }
189
- function onFocusin() {
190
- if (!props.pauseOnFocus) return;
191
- pausedByFocus.value = true;
192
- pauseTimer();
193
- }
194
- function onFocusout(event) {
195
- if (!props.pauseOnFocus) return;
196
- const currentTarget = event.currentTarget;
197
- if (currentTarget instanceof HTMLElement && event.relatedTarget instanceof Node && currentTarget.contains(event.relatedTarget)) return;
198
- pausedByFocus.value = false;
199
- resumeTimer();
200
- }
201
- function closeToast(reason) {
202
- if (closePending) return;
203
- closePending = true;
204
- clearTimer();
205
- localOpen.value = false;
206
- emit("update:open", false);
207
- emit("close", reason);
208
- if (isOpen.value) {
209
- resetTimer();
210
- nextTick(() => {
211
- if (isOpen.value) closePending = false;
212
- });
213
- }
214
- }
215
244
  const _on_after_leave = () => emit("after-leave");
216
245
  return createComponent(VaporTransition, {
217
246
  name: "rp-toast",
218
247
  onAfterLeave: () => _on_after_leave
219
248
  }, extend(() => {
220
- return createIf(() => isOpen.value, () => {
249
+ return createIf(() => unref(isOpen), () => {
221
250
  const n30 = t0$1();
222
251
  renderEffect(() => setDynamicProps(n30, [rootAttrs.value]));
223
252
  setInsertionState(n30, null, 0);
@@ -280,14 +309,14 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
280
309
  }]));
281
310
  setInsertionState(n29, null, 0);
282
311
  createComponent(unref(x_default), { "aria-hidden": "true" });
283
- n29.$evtclick = createInvoker(() => closeToast("dismiss"));
312
+ on(n29, "click", () => unref(closeToast)("dismiss"));
284
313
  return n29;
285
314
  });
286
315
  return n30;
287
316
  }, null, 129);
288
317
  }, { _: 8 }), true);
289
318
  }
290
- }), [["__scopeId", "data-v-a830edcc"]]);
319
+ }), [["__scopeId", "data-v-441adf44"]]);
291
320
  //#endregion
292
321
  //#region src/components/toast/toast-store.ts
293
322
  var TYPE_DEFAULTS = {
@@ -707,18 +736,18 @@ var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
707
736
  }), [["__scopeId", "data-v-480d3e51"]]);
708
737
  //#endregion
709
738
  //#region src/components/toast/useToastState.ts
710
- function optionValue(value) {
711
- return toValue(value);
712
- }
713
739
  function useToastState(options = {}) {
714
- const uncontrolledOpen = ref(options.defaultOpen ?? false);
715
740
  const closeReason = ref(null);
716
- const controlledOpen = computed(() => optionValue(options.open));
717
- const isOpen = computed(() => controlledOpen.value ?? uncontrolledOpen.value);
741
+ const controlledOpen = computed(() => toValue(options.open));
742
+ const controllableOpen = useControllableValue({
743
+ modelValue: () => controlledOpen.value,
744
+ defaultValue: () => options.defaultOpen ?? false,
745
+ onChange: (nextOpen) => options.onOpenChange?.(nextOpen)
746
+ });
747
+ const isOpen = controllableOpen.value;
718
748
  const lastCloseReason = computed(() => closeReason.value);
719
749
  watch(controlledOpen, (nextOpen) => {
720
750
  if (nextOpen === void 0) return;
721
- uncontrolledOpen.value = nextOpen;
722
751
  if (nextOpen) closeReason.value = null;
723
752
  }, {
724
753
  flush: "sync",
@@ -731,9 +760,8 @@ function useToastState(options = {}) {
731
760
  }));
732
761
  function setOpen(nextOpen) {
733
762
  if (nextOpen === isOpen.value) return;
734
- if (controlledOpen.value === void 0) uncontrolledOpen.value = nextOpen;
735
763
  if (nextOpen) closeReason.value = null;
736
- options.onOpenChange?.(nextOpen);
764
+ controllableOpen.setValue(nextOpen);
737
765
  }
738
766
  function open() {
739
767
  setOpen(true);
package/dist/tooltip.css CHANGED
@@ -1,11 +1,11 @@
1
1
  @layer ropav.components {
2
- .rp-tooltip[data-v-9457a843] {
2
+ .rp-tooltip[data-v-19aad69c] {
3
3
  position: relative;
4
4
  display: inline-flex;
5
5
  font-family: var(--rp-font-family);
6
6
  vertical-align: middle;
7
7
  }
8
- .rp-tooltip__content[data-v-9457a843] {
8
+ .rp-tooltip__content[data-v-19aad69c] {
9
9
  --_rp-tooltip-main-axis-offset: var(--rp-spacing-2);
10
10
  --_rp-tooltip-cross-axis-offset: 0px;
11
11
  --_rp-tooltip-arrow-size: 0.4375rem;
@@ -29,10 +29,10 @@
29
29
  border-radius: var(--rp-radius-sm);
30
30
  box-shadow: var(--rp-shadow-md);
31
31
  }
32
- .rp-tooltip--target[data-v-9457a843] {
32
+ .rp-tooltip--target[data-v-19aad69c] {
33
33
  display: contents;
34
34
  }
35
- .rp-tooltip__arrow[data-v-9457a843] {
35
+ .rp-tooltip__arrow[data-v-19aad69c] {
36
36
  position: absolute;
37
37
  width: var(--_rp-tooltip-arrow-size);
38
38
  height: var(--_rp-tooltip-arrow-size);
@@ -40,24 +40,24 @@
40
40
  background-color: inherit;
41
41
  rotate: 45deg;
42
42
  }
43
- .rp-tooltip__arrow[data-side=top][data-v-9457a843] {
43
+ .rp-tooltip__arrow[data-side=top][data-v-19aad69c] {
44
44
  bottom: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
45
45
  }
46
- .rp-tooltip__arrow[data-side=right][data-v-9457a843] {
46
+ .rp-tooltip__arrow[data-side=right][data-v-19aad69c] {
47
47
  left: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
48
48
  }
49
- .rp-tooltip__arrow[data-side=bottom][data-v-9457a843] {
49
+ .rp-tooltip__arrow[data-side=bottom][data-v-19aad69c] {
50
50
  top: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
51
51
  }
52
- .rp-tooltip__arrow[data-side=left][data-v-9457a843] {
52
+ .rp-tooltip__arrow[data-side=left][data-v-19aad69c] {
53
53
  right: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
54
54
  }
55
- .rp-tooltip-content-enter-active[data-v-9457a843],
56
- .rp-tooltip-content-leave-active[data-v-9457a843] {
55
+ .rp-tooltip-content-enter-active[data-v-19aad69c],
56
+ .rp-tooltip-content-leave-active[data-v-19aad69c] {
57
57
  transition: opacity var(--rp-transition-fast);
58
58
  }
59
- .rp-tooltip-content-enter-from[data-v-9457a843],
60
- .rp-tooltip-content-leave-to[data-v-9457a843] {
59
+ .rp-tooltip-content-enter-from[data-v-19aad69c],
60
+ .rp-tooltip-content-leave-to[data-v-19aad69c] {
61
61
  opacity: 0;
62
62
  }
63
63
  }