ropav 0.0.9 → 0.0.11

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 (289) hide show
  1. package/README.md +6 -0
  2. package/dist/accordion.css +115 -111
  3. package/dist/accordion.js +60 -16
  4. package/dist/alert.css +110 -108
  5. package/dist/alert.js +48 -26
  6. package/dist/aspect-ratio.css +17 -15
  7. package/dist/aspect-ratio.js +20 -6
  8. package/dist/avatar.css +98 -96
  9. package/dist/avatar.js +27 -16
  10. package/dist/badge.css +95 -93
  11. package/dist/badge.js +29 -16
  12. package/dist/base.css +672 -671
  13. package/dist/button-group.css +39 -37
  14. package/dist/button-group.js +23 -12
  15. package/dist/button-link.css +160 -158
  16. package/dist/button-link.js +43 -24
  17. package/dist/button.css +160 -158
  18. package/dist/button.js +37 -19
  19. package/dist/card.css +109 -107
  20. package/dist/card.js +42 -17
  21. package/dist/checkbox.css +139 -137
  22. package/dist/checkbox.js +79 -28
  23. package/dist/collapse.css +29 -27
  24. package/dist/collapse.js +44 -10
  25. package/dist/color-input.css +137 -107
  26. package/dist/color-input.js +91 -17
  27. package/dist/color-picker.css +309 -303
  28. package/dist/color-picker.js +250 -77
  29. package/dist/color-picker2.js +9 -1
  30. package/dist/color-swatch.css +48 -46
  31. package/dist/color-swatch.js +15 -11
  32. package/dist/color-swatch2.js +4 -0
  33. package/dist/components/accordion/accordion-item.d.ts +16 -4
  34. package/dist/components/accordion/accordion.d.ts +1 -1
  35. package/dist/components/accordion/index.d.ts +5 -4
  36. package/dist/components/accordion/index.js +2 -2
  37. package/dist/components/accordion/types.d.ts +10 -5
  38. package/dist/components/accordion/useAccordion.d.ts +1 -1
  39. package/dist/components/alert/alert.d.ts +3 -3
  40. package/dist/components/alert/index.d.ts +3 -3
  41. package/dist/components/alert/index.js +2 -2
  42. package/dist/components/alert/types.d.ts +5 -2
  43. package/dist/components/alert/useAlertColor.d.ts +1 -1
  44. package/dist/components/aspect-ratio/aspect-ratio.d.ts +1 -1
  45. package/dist/components/aspect-ratio/index.d.ts +3 -2
  46. package/dist/components/aspect-ratio/index.js +2 -2
  47. package/dist/components/aspect-ratio/types.d.ts +4 -1
  48. package/dist/components/avatar/avatar.d.ts +1 -1
  49. package/dist/components/avatar/index.d.ts +3 -3
  50. package/dist/components/avatar/index.js +2 -2
  51. package/dist/components/avatar/types.d.ts +5 -2
  52. package/dist/components/avatar/useAvatarColor.d.ts +1 -1
  53. package/dist/components/badge/badge.d.ts +1 -1
  54. package/dist/components/badge/index.d.ts +3 -3
  55. package/dist/components/badge/index.js +2 -2
  56. package/dist/components/badge/types.d.ts +5 -2
  57. package/dist/components/badge/useBadgeColor.d.ts +1 -1
  58. package/dist/components/button/button.d.ts +1 -1
  59. package/dist/components/button/index.d.ts +3 -2
  60. package/dist/components/button/index.js +2 -2
  61. package/dist/components/button/types.d.ts +5 -2
  62. package/dist/components/button/useButtonColor.d.ts +1 -1
  63. package/dist/components/button-group/button-group.d.ts +1 -1
  64. package/dist/components/button-group/index.d.ts +3 -2
  65. package/dist/components/button-group/index.js +2 -2
  66. package/dist/components/button-group/types.d.ts +4 -1
  67. package/dist/components/button-link/button-link.d.ts +1 -1
  68. package/dist/components/button-link/index.d.ts +3 -2
  69. package/dist/components/button-link/index.js +2 -2
  70. package/dist/components/button-link/types.d.ts +5 -2
  71. package/dist/components/card/card.d.ts +1 -1
  72. package/dist/components/card/index.d.ts +3 -2
  73. package/dist/components/card/index.js +2 -2
  74. package/dist/components/card/types.d.ts +5 -1
  75. package/dist/components/checkbox/checkbox.d.ts +5 -2
  76. package/dist/components/checkbox/index.d.ts +3 -2
  77. package/dist/components/checkbox/index.js +2 -2
  78. package/dist/components/checkbox/types.d.ts +7 -2
  79. package/dist/components/checkbox/useCheckbox.d.ts +4 -2
  80. package/dist/components/collapse/collapse.d.ts +2 -2
  81. package/dist/components/collapse/index.d.ts +4 -3
  82. package/dist/components/collapse/index.js +2 -2
  83. package/dist/components/collapse/types.d.ts +9 -2
  84. package/dist/components/collapse/useCollapse.d.ts +1 -1
  85. package/dist/components/color-input/color-input.d.ts +1 -1
  86. package/dist/components/color-input/index.d.ts +3 -2
  87. package/dist/components/color-input/index.js +2 -2
  88. package/dist/components/color-input/types.d.ts +8 -4
  89. package/dist/components/color-input/useColorInput.d.ts +5 -5
  90. package/dist/components/color-input/useColorInputEyeDropper.d.ts +1 -1
  91. package/dist/components/color-input/useColorInputPopover.d.ts +2 -2
  92. package/dist/components/color-input/useColorInputValue.d.ts +1 -1
  93. package/dist/components/color-picker/color-picker-saturation.d.ts +1 -1
  94. package/dist/components/color-picker/color-picker-slider.d.ts +1 -1
  95. package/dist/components/color-picker/color-picker-utils.d.ts +1 -1
  96. package/dist/components/color-picker/color-picker.d.ts +1 -1
  97. package/dist/components/color-picker/index.d.ts +3 -3
  98. package/dist/components/color-picker/index.js +2 -2
  99. package/dist/components/color-picker/types.d.ts +13 -1
  100. package/dist/components/color-picker/useColorPickerDrag.d.ts +7 -2
  101. package/dist/components/color-picker/useColorPickerSwatches.d.ts +1 -1
  102. package/dist/components/color-picker/useColorPickerValue.d.ts +2 -2
  103. package/dist/components/color-swatch/color-swatch.d.ts +1 -1
  104. package/dist/components/color-swatch/index.d.ts +3 -2
  105. package/dist/components/color-swatch/index.js +2 -1
  106. package/dist/components/color-swatch/types.d.ts +4 -1
  107. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +15 -6
  108. package/dist/components/dropdown-menu/dropdown-menu-primitives.d.ts +724 -0
  109. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +1 -1
  110. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -3
  111. package/dist/components/dropdown-menu/index.d.ts +55 -3
  112. package/dist/components/dropdown-menu/index.js +2 -2
  113. package/dist/components/dropdown-menu/types.d.ts +142 -6
  114. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +21 -12
  115. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +6 -4
  116. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +4 -3
  117. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +2 -2
  118. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +5 -5
  119. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +3 -3
  120. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +19 -0
  121. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +25 -5
  122. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +3 -3
  123. package/dist/components/field/field.d.ts +2 -2
  124. package/dist/components/field/index.d.ts +3 -2
  125. package/dist/components/field/index.js +2 -2
  126. package/dist/components/field/types.d.ts +4 -1
  127. package/dist/components/field/useField.d.ts +1 -1
  128. package/dist/components/floating/index.d.ts +1 -0
  129. package/dist/components/floating/index.js +0 -0
  130. package/dist/components/floating/types.d.ts +31 -0
  131. package/dist/components/floating/useFloatingPosition.d.ts +38 -0
  132. package/dist/components/focus-trap/focus-trap.d.ts +31 -0
  133. package/dist/components/focus-trap/index.d.ts +4 -0
  134. package/dist/components/focus-trap/index.js +3 -0
  135. package/dist/components/focus-trap/types.d.ts +41 -0
  136. package/dist/components/focus-trap/useFocusTrap.d.ts +2 -0
  137. package/dist/components/icon-button/icon-button.d.ts +1 -1
  138. package/dist/components/icon-button/index.d.ts +3 -2
  139. package/dist/components/icon-button/index.js +2 -1
  140. package/dist/components/icon-button/types.d.ts +5 -2
  141. package/dist/components/input/index.d.ts +3 -2
  142. package/dist/components/input/index.js +2 -1
  143. package/dist/components/input/input.d.ts +1 -1
  144. package/dist/components/input/types.d.ts +4 -1
  145. package/dist/components/input/useInput.d.ts +2 -2
  146. package/dist/components/modal/index.d.ts +3 -2
  147. package/dist/components/modal/index.js +2 -2
  148. package/dist/components/modal/modal.d.ts +1 -1
  149. package/dist/components/modal/types.d.ts +9 -2
  150. package/dist/components/modal/useModal.d.ts +1 -1
  151. package/dist/components/number-input/index.d.ts +3 -2
  152. package/dist/components/number-input/index.js +2 -2
  153. package/dist/components/number-input/number-input.d.ts +1 -1
  154. package/dist/components/number-input/types.d.ts +5 -2
  155. package/dist/components/number-input/useNumberInput.d.ts +2 -2
  156. package/dist/components/overlay/index.d.ts +3 -2
  157. package/dist/components/overlay/index.js +2 -1
  158. package/dist/components/overlay/overlay.d.ts +1 -1
  159. package/dist/components/overlay/types.d.ts +4 -1
  160. package/dist/components/overlay/useOverlay.d.ts +1 -1
  161. package/dist/components/popover/index.d.ts +3 -3
  162. package/dist/components/popover/index.js +2 -2
  163. package/dist/components/popover/popover.d.ts +2 -2
  164. package/dist/components/popover/types.d.ts +21 -11
  165. package/dist/components/popover/usePopover.d.ts +11 -2
  166. package/dist/components/progress/index.d.ts +3 -3
  167. package/dist/components/progress/index.js +2 -2
  168. package/dist/components/progress/progress.d.ts +1 -1
  169. package/dist/components/progress/types.d.ts +5 -2
  170. package/dist/components/progress/useProgress.d.ts +2 -2
  171. package/dist/components/radio/index.d.ts +4 -3
  172. package/dist/components/radio/index.js +2 -2
  173. package/dist/components/radio/radio-group.d.ts +1 -1
  174. package/dist/components/radio/radio.d.ts +9 -4
  175. package/dist/components/radio/types.d.ts +21 -4
  176. package/dist/components/radio/useRadio.d.ts +10 -5
  177. package/dist/components/select/index.d.ts +3 -2
  178. package/dist/components/select/index.js +2 -2
  179. package/dist/components/select/select.d.ts +1 -1
  180. package/dist/components/select/types.d.ts +4 -1
  181. package/dist/components/select/useSelect.d.ts +4 -3
  182. package/dist/components/slider/index.d.ts +4 -4
  183. package/dist/components/slider/index.js +2 -2
  184. package/dist/components/slider/range-slider-tooltip.d.ts +37 -0
  185. package/dist/components/slider/range-slider.d.ts +8 -13
  186. package/dist/components/slider/slider.d.ts +5 -2
  187. package/dist/components/slider/sliderCore.d.ts +35 -0
  188. package/dist/components/slider/types.d.ts +14 -7
  189. package/dist/components/slider/useRangeSlider.d.ts +5 -7
  190. package/dist/components/slider/useRangeSliderPointer.d.ts +19 -0
  191. package/dist/components/slider/useRangeSliderTooltipCollision.d.ts +31 -2
  192. package/dist/components/slider/useRangeSliderTooltipState.d.ts +23 -0
  193. package/dist/components/slider/useSlider.d.ts +11 -15
  194. package/dist/components/switch/index.d.ts +3 -2
  195. package/dist/components/switch/index.js +2 -2
  196. package/dist/components/switch/switch.d.ts +5 -2
  197. package/dist/components/switch/types.d.ts +7 -2
  198. package/dist/components/switch/useSwitch.d.ts +4 -2
  199. package/dist/components/tabs/index.d.ts +7 -6
  200. package/dist/components/tabs/index.js +2 -2
  201. package/dist/components/tabs/tabs-content.d.ts +2 -2
  202. package/dist/components/tabs/tabs-list.d.ts +4 -4
  203. package/dist/components/tabs/tabs-trigger.d.ts +5 -5
  204. package/dist/components/tabs/tabs.d.ts +5 -5
  205. package/dist/components/tabs/types.d.ts +13 -4
  206. package/dist/components/tabs/useTabs.d.ts +1 -1
  207. package/dist/components/teleport-provider/index.d.ts +2 -0
  208. package/dist/components/teleport-provider/index.js +2 -0
  209. package/dist/components/teleport-provider/teleport-provider.d.ts +21 -0
  210. package/dist/components/teleport-provider/types.d.ts +4 -0
  211. package/dist/components/teleport-provider/useTeleportTarget.d.ts +5 -0
  212. package/dist/components/textarea/index.d.ts +3 -2
  213. package/dist/components/textarea/index.js +2 -2
  214. package/dist/components/textarea/textarea.d.ts +5 -2
  215. package/dist/components/textarea/types.d.ts +6 -1
  216. package/dist/components/textarea/useTextarea.d.ts +3 -2
  217. package/dist/components/toast/defaults.d.ts +7 -0
  218. package/dist/components/toast/index.d.ts +7 -0
  219. package/dist/components/toast/index.js +2 -0
  220. package/dist/components/toast/toast-provider.d.ts +21 -0
  221. package/dist/components/toast/toast-viewport.d.ts +34 -0
  222. package/dist/components/toast/toast.d.ts +31 -0
  223. package/dist/components/toast/types.d.ts +110 -0
  224. package/dist/components/toast/useToast.d.ts +4 -0
  225. package/dist/components/toast/useToastColor.d.ts +3 -0
  226. package/dist/components/toast/useToastState.d.ts +2 -0
  227. package/dist/components/tooltip/index.d.ts +3 -2
  228. package/dist/components/tooltip/index.js +2 -1
  229. package/dist/components/tooltip/tooltip.d.ts +2 -2
  230. package/dist/components/tooltip/types.d.ts +14 -13
  231. package/dist/components/tooltip/useTooltip.d.ts +15 -3
  232. package/dist/dropdown-menu.css +191 -107
  233. package/dist/dropdown-menu.js +1729 -107
  234. package/dist/field.css +41 -39
  235. package/dist/field.js +40 -16
  236. package/dist/focus-trap.js +80 -0
  237. package/dist/icon-button.css +193 -189
  238. package/dist/icon-button.js +23 -18
  239. package/dist/icon-button2.js +8 -0
  240. package/dist/index.d.ts +35 -30
  241. package/dist/index.js +36 -31
  242. package/dist/input.css +122 -120
  243. package/dist/input.js +47 -34
  244. package/dist/input2.js +9 -0
  245. package/dist/legacy-unlayered.css +5461 -0
  246. package/dist/modal.css +129 -127
  247. package/dist/modal.js +160 -200
  248. package/dist/number-input.css +87 -85
  249. package/dist/number-input.js +61 -17
  250. package/dist/overlay.css +26 -24
  251. package/dist/overlay.js +17 -9
  252. package/dist/overlay2.js +4 -0
  253. package/dist/popover.css +140 -107
  254. package/dist/popover.js +295 -189
  255. package/dist/popover2.js +6 -1
  256. package/dist/progress.css +101 -99
  257. package/dist/progress.js +50 -28
  258. package/dist/radio.css +114 -105
  259. package/dist/radio.js +154 -56
  260. package/dist/select.css +244 -242
  261. package/dist/select.js +92 -47
  262. package/dist/slider.css +1109 -904
  263. package/dist/slider.js +1118 -923
  264. package/dist/styles-api.d.ts +22 -0
  265. package/dist/styles-api.js +49 -0
  266. package/dist/switch.css +120 -108
  267. package/dist/switch.js +89 -33
  268. package/dist/tabs.css +286 -278
  269. package/dist/tabs.js +60 -21
  270. package/dist/teleport-provider.js +15 -0
  271. package/dist/textarea.css +132 -130
  272. package/dist/textarea.js +77 -29
  273. package/dist/toast.css +236 -0
  274. package/dist/toast.js +739 -0
  275. package/dist/tooltip.css +137 -107
  276. package/dist/tooltip.js +182 -223
  277. package/dist/tooltip2.js +8 -0
  278. package/dist/useClickOutside.js +1 -1
  279. package/dist/useFloatingPosition.js +1284 -0
  280. package/dist/useFocusTrap.js +130 -0
  281. package/dist/useTeleportTarget.js +29 -0
  282. package/dist/utils/componentColors.d.ts +60 -0
  283. package/docs/public-styles-api.md +133 -0
  284. package/docs/public-tokens.md +545 -0
  285. package/package.json +44 -12
  286. package/src/styles/_tokens.scss +33 -28
  287. package/src/styles/_utilities.scss +11 -9
  288. package/src/styles/styles-manifest.json +4125 -0
  289. package/dist/components/slider/useRangeSliderTooltipTransition.d.ts +0 -4
package/dist/modal.js CHANGED
@@ -1,24 +1,18 @@
1
1
  import './modal.css';
2
2
  import { t as x_default } from "./x.js";
3
3
  import { t as bem } from "./bem.js";
4
+ import { n as useStylesApi } from "./styles-api.js";
4
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { t as useFocusTrap } from "./useFocusTrap.js";
7
+ import { n as useTeleportTarget } from "./useTeleportTarget.js";
5
8
  import { t as icon_button_default } from "./icon-button.js";
6
9
  import { t as overlay_default } from "./overlay.js";
7
- import { VaporTransition, applyVShow, child, computed, createComponent, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, isRef, nextTick, onBeforeUnmount, onMounted, ref, renderEffect, setAttr, setClass, setInsertionState, setProp, setStyle, setText, template, toDisplayString, txt, unref, useId, useSlots, watch } from "vue";
10
+ import { VaporTeleport, VaporTransition, applyVShow, child, computed, createComponent, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, isRef, onBeforeUnmount, onMounted, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, txt, unref, useId, useSlots, watch } from "vue";
8
11
  //#region src/components/modal/useModal.ts
9
12
  var bodyScrollLockCount = 0;
10
13
  var previousBodyOverflow = "";
11
- var activeModalStack = [];
12
14
  var DEFAULT_ROLE = "dialog";
13
15
  var DEFAULT_SIZE = "md";
14
- var FOCUSABLE_SELECTOR = [
15
- "a[href]",
16
- "button:not([disabled])",
17
- "textarea:not([disabled])",
18
- "input:not([disabled])",
19
- "select:not([disabled])",
20
- "[tabindex]:not([tabindex=\"-1\"])"
21
- ].join(",");
22
16
  var MODAL_PRESET_SIZES = /* @__PURE__ */ new Set([
23
17
  "sm",
24
18
  "md",
@@ -32,23 +26,6 @@ function isHTMLElement(value) {
32
26
  function isModalPresetSize(size) {
33
27
  return MODAL_PRESET_SIZES.has(size);
34
28
  }
35
- function isFocusable(element) {
36
- if (element.getAttribute("aria-hidden") === "true") return false;
37
- if (element.hasAttribute("disabled")) return false;
38
- return element.tabIndex >= 0;
39
- }
40
- function getFocusableElements(panel) {
41
- if (!panel) return [];
42
- return [...panel.querySelectorAll(FOCUSABLE_SELECTOR)].filter(isFocusable);
43
- }
44
- function focusElement(element) {
45
- if (!element) return;
46
- try {
47
- element.focus({ preventScroll: true });
48
- } catch {
49
- element.focus();
50
- }
51
- }
52
29
  function lockBodyScroll() {
53
30
  if (typeof document === "undefined") return void 0;
54
31
  if (bodyScrollLockCount === 0) {
@@ -77,11 +54,8 @@ function useModal(props, emitOpenChange) {
77
54
  const generatedId = useId();
78
55
  const panelRef = ref(null);
79
56
  const uncontrolledOpen = ref(false);
80
- const modalToken = Symbol("modal");
81
57
  let isMounted = false;
82
58
  let isActiveModal = false;
83
- let previousActiveElement = null;
84
- let removeDocumentListeners;
85
59
  let unlockScroll;
86
60
  const modalId = computed(() => props.id ?? `${generatedId}-modal`);
87
61
  const titleId = computed(() => `${modalId.value}-title`);
@@ -142,95 +116,34 @@ function useModal(props, emitOpenChange) {
142
116
  if (typeof initialFocus === "string") return queryPanelElement(panel, initialFocus);
143
117
  return panel.contains(initialFocus) ? initialFocus : null;
144
118
  }
145
- function focusInitialElement() {
146
- const firstFocusable = getFocusableElements(panelRef.value)[0];
147
- focusElement(resolveInitialFocus() ?? firstFocusable ?? panelRef.value);
148
- }
149
- function addToStack() {
150
- if (!activeModalStack.includes(modalToken)) activeModalStack.push(modalToken);
151
- }
152
- function removeFromStack() {
153
- const index = activeModalStack.indexOf(modalToken);
154
- if (index !== -1) activeModalStack.splice(index, 1);
155
- }
156
- function isTopModal() {
157
- return activeModalStack[activeModalStack.length - 1] === modalToken;
158
- }
159
- function trapFocus(event) {
160
- const panel = panelRef.value;
161
- if (!panel) return;
162
- const focusableElements = getFocusableElements(panel);
163
- if (focusableElements.length === 0) {
164
- event.preventDefault();
165
- focusElement(panel);
166
- return;
167
- }
168
- const firstElement = focusableElements[0];
169
- const lastElement = focusableElements[focusableElements.length - 1];
170
- const activeElement = document.activeElement;
171
- if (!(activeElement instanceof Node && panel.contains(activeElement))) {
172
- event.preventDefault();
173
- focusElement(firstElement);
174
- return;
175
- }
176
- if (event.shiftKey && activeElement === firstElement) {
177
- event.preventDefault();
178
- focusElement(lastElement);
179
- return;
180
- }
181
- if (!event.shiftKey && activeElement === lastElement) {
182
- event.preventDefault();
183
- focusElement(firstElement);
184
- }
185
- }
186
- function onDocumentKeydown(event) {
187
- if (!isOpen.value || !isTopModal()) return;
188
- if (event.key === "Escape") {
189
- if (props.closeOnEscape === false) return;
119
+ const focusTrap = useFocusTrap(panelRef, {
120
+ ...props.focusTrapOptions,
121
+ initialFocus: () => resolveInitialFocus() ?? void 0,
122
+ fallbackFocus: () => panelRef.value,
123
+ returnFocusOnDeactivate: props.returnFocus !== false,
124
+ escapeDeactivates: (event) => {
125
+ if (props.closeOnEscape === false) return false;
190
126
  event.preventDefault();
191
127
  closeModal();
192
- return;
193
- }
194
- if (event.key === "Tab") trapFocus(event);
195
- }
196
- function bindDocumentListeners() {
197
- if (typeof document === "undefined" || removeDocumentListeners) return;
198
- document.addEventListener("keydown", onDocumentKeydown);
199
- removeDocumentListeners = () => {
200
- document.removeEventListener("keydown", onDocumentKeydown);
201
- removeDocumentListeners = void 0;
202
- };
203
- }
204
- function restoreFocus() {
205
- if (props.returnFocus === false) {
206
- previousActiveElement = null;
207
- return;
208
- }
209
- if (previousActiveElement?.isConnected) focusElement(previousActiveElement);
210
- previousActiveElement = null;
211
- }
128
+ return false;
129
+ },
130
+ allowOutsideClick: true,
131
+ preventScroll: true,
132
+ delayInitialFocus: props.focusTrapOptions?.delayInitialFocus ?? false,
133
+ delayReturnFocus: props.focusTrapOptions?.delayReturnFocus ?? false
134
+ });
212
135
  function activateModal() {
213
136
  if (isActiveModal) return;
214
137
  isActiveModal = true;
215
- addToStack();
216
- if (typeof document !== "undefined") {
217
- const activeElement = document.activeElement;
218
- previousActiveElement = isHTMLElement(activeElement) ? activeElement : null;
219
- }
220
- bindDocumentListeners();
221
138
  if (props.preventScroll !== false) unlockScroll = lockBodyScroll();
222
- nextTick(() => {
223
- if (isActiveModal) focusInitialElement();
224
- });
139
+ focusTrap.activate();
225
140
  }
226
141
  function deactivateModal() {
227
142
  if (!isActiveModal) return;
228
143
  isActiveModal = false;
229
- removeFromStack();
230
- removeDocumentListeners?.();
144
+ focusTrap.deactivate({ returnFocus: props.returnFocus !== false });
231
145
  unlockScroll?.();
232
146
  unlockScroll = void 0;
233
- restoreFocus();
234
147
  }
235
148
  function onOverlayClick(event) {
236
149
  if (props.closeOnOverlayClick === false || event.target !== event.currentTarget) return;
@@ -275,17 +188,16 @@ function useModal(props, emitOpenChange) {
275
188
  }
276
189
  //#endregion
277
190
  //#region src/components/modal/modal.vue?vue&type=script&setup=true&vapor=true&lang.ts
278
- var t0 = template("<h2 data-v-657f313d class=rp-modal__title> ");
279
- var t1 = template("<p data-v-657f313d class=rp-modal__description> ");
280
- var t2 = template("<div data-v-657f313d class=rp-modal__heading>");
281
- var t3 = template("<div data-v-657f313d class=rp-modal__header>");
282
- var t4 = template("<div data-v-657f313d class=rp-modal__body>");
283
- var t5 = template("<div data-v-657f313d class=rp-modal__footer>");
284
- var t6 = template("<div data-v-657f313d><section data-v-657f313d class=rp-modal__panel aria-modal=true tabindex=-1>");
191
+ var t0 = template("<h2 data-v-3646bb42> ");
192
+ var t1 = template("<p data-v-3646bb42> ");
193
+ var t2 = template("<div data-v-3646bb42 class=rp-modal__heading>");
194
+ var t3 = template("<div data-v-3646bb42>");
195
+ var t4 = template("<div data-v-3646bb42><section data-v-3646bb42>");
285
196
  //#endregion
286
197
  //#region src/components/modal/modal.vue
287
198
  var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
288
199
  name: "RpModal",
200
+ inheritAttrs: false,
289
201
  __name: "modal",
290
202
  props: {
291
203
  id: {},
@@ -324,104 +236,152 @@ var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
324
236
  keepMounted: {
325
237
  type: Boolean,
326
238
  default: false
327
- }
239
+ },
240
+ focusTrapOptions: { default: () => ({}) },
241
+ teleport: {
242
+ type: Boolean,
243
+ default: true
244
+ },
245
+ teleportTo: {},
246
+ classNames: {},
247
+ styles: {}
328
248
  },
329
249
  emits: ["update:open"],
330
250
  setup(__props, { emit: __emit, slots: $slots }) {
331
251
  const props = __props;
252
+ const teleportTo = useTeleportTarget(() => props.teleportTo);
332
253
  const emit = __emit;
333
254
  const { panelRef, modalId, titleId, descriptionId, role, isOpen, shouldRender, hasHeader, hasFooter, showCloseButton, headerId, ariaLabelledby, ariaDescribedby, ariaLabel, rootClass, rootStyle, stateClass, slotProps, closeModal, onOverlayClick } = useModal(props, (open) => {
334
255
  emit("update:open", open);
335
256
  });
257
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
258
+ const state = computed(() => isOpen.value ? "open" : "closed");
259
+ const rootAttrs = computed(() => getRootAttrs({
260
+ class: [rootClass.value, stateClass.value],
261
+ style: rootStyle.value,
262
+ "data-state": state.value
263
+ }));
264
+ const overlayClassNames = computed(() => ({ root: ["rp-modal__overlay", props.classNames?.overlay] }));
265
+ const overlayStyles = computed(() => ({ root: props.styles?.overlay }));
266
+ const panelAttrs = computed(() => ({
267
+ ...getPartAttrs("panel", { class: "rp-modal__panel" }),
268
+ "data-state": state.value
269
+ }));
270
+ const closeClassNames = computed(() => ({ root: ["rp-modal__close", props.classNames?.close] }));
271
+ const closeStyles = computed(() => ({ root: props.styles?.close }));
336
272
  const _setTemplateRef = createTemplateRefSetter();
337
- return createComponent(VaporTransition, {
338
- name: "rp-modal",
339
- persisted: ""
340
- }, extend(() => {
341
- return createIf(() => unref(shouldRender), () => {
342
- const n28 = t6();
343
- const n27 = child(n28, 1);
344
- renderEffect(() => {
345
- setClass(n28, [unref(rootClass), unref(stateClass)]);
346
- setStyle(n28, unref(rootStyle));
347
- });
348
- setInsertionState(n28, 0, 0);
349
- createComponent(overlay_default, { $: [() => __props.overlayProps, {
350
- class: "rp-modal__overlay",
351
- "z-index": 0,
352
- interactive: "",
353
- onClick: () => unref(onOverlayClick)
354
- }] });
355
- renderEffect(() => {
356
- setProp(n27, "id", unref(modalId));
357
- setProp(n27, "role", unref(role));
358
- setAttr(n27, "aria-label", unref(ariaLabel));
359
- setAttr(n27, "aria-labelledby", unref(ariaLabelledby));
360
- setAttr(n27, "aria-describedby", unref(ariaDescribedby));
361
- });
362
- setInsertionState(n27, null, 0);
363
- createIf(() => unref(hasHeader), () => {
364
- const n14 = t3();
365
- renderEffect(() => setProp(n14, "id", unref(headerId)));
366
- setInsertionState(n14, null, 0);
367
- createSlot("header", { $: [() => unref(slotProps)] }, () => {
368
- const n13 = t2();
369
- setInsertionState(n13, null, 0);
370
- createIf(() => __props.title, () => {
371
- const n9 = t0();
372
- const x9 = txt(n9);
373
- renderEffect(() => {
374
- setProp(n9, "id", unref(titleId));
375
- setText(x9, toDisplayString(__props.title));
273
+ return createComponent(VaporTeleport, {
274
+ to: () => unref(teleportTo),
275
+ disabled: () => !__props.teleport
276
+ }, () => {
277
+ return createComponent(VaporTransition, {
278
+ name: "rp-modal",
279
+ persisted: ""
280
+ }, extend(() => {
281
+ return createIf(() => unref(shouldRender), () => {
282
+ const n28 = t4();
283
+ const n27 = child(n28, 1);
284
+ renderEffect(() => setDynamicProps(n28, [rootAttrs.value]));
285
+ setInsertionState(n28, 0, 0);
286
+ createComponent(overlay_default, { $: [() => __props.overlayProps, {
287
+ "class-names": () => overlayClassNames.value,
288
+ styles: () => overlayStyles.value,
289
+ "z-index": 0,
290
+ interactive: "",
291
+ onClick: () => unref(onOverlayClick)
292
+ }] });
293
+ renderEffect(() => setDynamicProps(n27, [
294
+ { id: unref(modalId) },
295
+ panelAttrs.value,
296
+ {
297
+ role: unref(role),
298
+ "aria-modal": "true",
299
+ "aria-label": unref(ariaLabel),
300
+ "aria-labelledby": unref(ariaLabelledby),
301
+ "aria-describedby": unref(ariaDescribedby),
302
+ tabindex: "-1"
303
+ }
304
+ ]));
305
+ setInsertionState(n27, null, 0);
306
+ createIf(() => unref(hasHeader), () => {
307
+ const n14 = t3();
308
+ renderEffect(() => setDynamicProps(n14, [{ id: unref(headerId) }, unref(getPartAttrs)("header", { class: "rp-modal__header" })]));
309
+ setInsertionState(n14, null, 0);
310
+ createSlot("header", { $: [() => unref(slotProps)] }, () => {
311
+ const n13 = t2();
312
+ setInsertionState(n13, null, 0);
313
+ createIf(() => __props.title, () => {
314
+ const n9 = t0();
315
+ const x9 = txt(n9);
316
+ renderEffect(() => {
317
+ setDynamicProps(n9, [{ id: unref(titleId) }, unref(getPartAttrs)("title", { class: "rp-modal__title" })]);
318
+ setText(x9, toDisplayString(__props.title));
319
+ });
320
+ return n9;
376
321
  });
377
- return n9;
378
- });
379
- setInsertionState(n13, null, 1);
380
- createIf(() => __props.description, () => {
381
- const n12 = t1();
382
- const x12 = txt(n12);
383
- renderEffect(() => {
384
- setProp(n12, "id", unref(descriptionId));
385
- setText(x12, toDisplayString(__props.description));
322
+ setInsertionState(n13, null, 1);
323
+ createIf(() => __props.description, () => {
324
+ const n12 = t1();
325
+ const x12 = txt(n12);
326
+ renderEffect(() => {
327
+ setDynamicProps(n12, [{ id: unref(descriptionId) }, unref(getPartAttrs)("description", { class: "rp-modal__description" })]);
328
+ setText(x12, toDisplayString(__props.description));
329
+ });
330
+ return n12;
386
331
  });
387
- return n12;
332
+ return n13;
333
+ }, 1);
334
+ return n14;
335
+ });
336
+ setInsertionState(n27, null, 1);
337
+ createIf(() => unref(showCloseButton), () => {
338
+ return createComponent(icon_button_default, {
339
+ "class-names": () => closeClassNames.value,
340
+ styles: () => closeStyles.value,
341
+ ariaLabel: () => __props.closeLabel,
342
+ variant: "ghost",
343
+ size: "sm",
344
+ onClick: () => unref(closeModal)
345
+ }, () => {
346
+ return createComponent(unref(x_default));
388
347
  });
389
- return n13;
390
- }, 1);
391
- return n14;
392
- });
393
- setInsertionState(n27, null, 1);
394
- createIf(() => unref(showCloseButton), () => {
395
- return createComponent(icon_button_default, {
396
- class: "rp-modal__close",
397
- ariaLabel: () => __props.closeLabel,
398
- variant: "ghost",
399
- size: "sm",
400
- onClick: () => unref(closeModal)
401
- }, () => {
402
- return createComponent(unref(x_default));
403
348
  });
404
- });
405
- setInsertionState(n27, null, 2);
406
- createIf(() => $slots.default, () => {
407
- const n22 = t4();
408
- setInsertionState(n22, null, 0);
409
- createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
410
- return n22;
411
- });
412
- setInsertionState(n27, null, 3);
413
- createIf(() => unref(hasFooter), () => {
414
- const n26 = t5();
415
- setInsertionState(n26, null, 0);
416
- createSlot("footer", { $: [() => unref(slotProps)] }, null, 1);
417
- return n26;
418
- });
419
- _setTemplateRef(n27, panelRef, null, "panelRef");
420
- applyVShow(n28, () => unref(isOpen));
421
- return n28;
422
- }, null, 129);
423
- }, { _: 8 }), true);
349
+ setInsertionState(n27, null, 2);
350
+ createIf(() => $slots.default, () => {
351
+ const n22 = t3();
352
+ renderEffect(() => setDynamicProps(n22, [unref(getPartAttrs)("body", { class: "rp-modal__body" })]));
353
+ setInsertionState(n22, null, 0);
354
+ createSlot("default", { $: [() => unref(slotProps)] }, null, 1);
355
+ return n22;
356
+ });
357
+ setInsertionState(n27, null, 3);
358
+ createIf(() => unref(hasFooter), () => {
359
+ const n26 = t3();
360
+ renderEffect(() => setDynamicProps(n26, [unref(getPartAttrs)("footer", { class: "rp-modal__footer" })]));
361
+ setInsertionState(n26, null, 0);
362
+ createSlot("footer", { $: [() => unref(slotProps)] }, null, 1);
363
+ return n26;
364
+ });
365
+ _setTemplateRef(n27, panelRef, null, "panelRef");
366
+ applyVShow(n28, () => unref(isOpen));
367
+ return n28;
368
+ }, null, 129);
369
+ }, { _: 8 }));
370
+ }, true);
424
371
  }
425
- }), [["__scopeId", "data-v-657f313d"]]);
372
+ }), [["__scopeId", "data-v-3646bb42"]]);
373
+ //#endregion
374
+ //#region src/components/modal/types.ts
375
+ var modalParts = [
376
+ "root",
377
+ "overlay",
378
+ "panel",
379
+ "header",
380
+ "title",
381
+ "description",
382
+ "body",
383
+ "footer",
384
+ "close"
385
+ ];
426
386
  //#endregion
427
- export { modal_default as t };
387
+ export { modal_default as n, modalParts as t };
@@ -1,86 +1,88 @@
1
- .rp-number-input[data-v-b5d8edf1] {
2
- --_rp-number-input-control-size: var(--_rp-input-height);
3
- --_rp-number-input-text-align: left;
4
- overflow: hidden;
5
- vertical-align: middle;
6
- }
7
- .rp-number-input[data-v-b5d8edf1] .rp-input__native {
8
- appearance: textfield;
9
- text-align: var(--_rp-number-input-text-align);
10
- }
11
- .rp-number-input--text-align-center[data-v-b5d8edf1] {
12
- --_rp-number-input-text-align: center;
13
- }
14
- .rp-number-input--text-align-right[data-v-b5d8edf1] {
15
- --_rp-number-input-text-align: right;
16
- }
17
- .rp-number-input[data-v-b5d8edf1] .rp-input__native::-webkit-inner-spin-button,
18
- .rp-number-input[data-v-b5d8edf1] .rp-input__native::-webkit-outer-spin-button {
19
- margin: 0;
20
- appearance: none;
21
- }
22
- .rp-number-input[data-v-b5d8edf1] .rp-input__left,
23
- .rp-number-input[data-v-b5d8edf1] .rp-input__right {
24
- align-self: stretch;
25
- margin-block: calc(-1 * var(--rp-border-width-thin));
26
- }
27
- .rp-number-input[data-v-b5d8edf1] .rp-input__left {
28
- margin-inline-start: calc(-1 * var(--_rp-input-padding-x));
29
- }
30
- .rp-number-input[data-v-b5d8edf1] .rp-input__right {
31
- margin-inline-end: calc(-1 * var(--_rp-input-padding-x));
32
- }
33
- .rp-number-input__controls[data-v-b5d8edf1] {
34
- display: inline-flex;
35
- height: var(--_rp-input-height);
36
- flex-shrink: 0;
37
- }
38
- .rp-number-input__controls--left[data-v-b5d8edf1] {
39
- border-inline-end: var(--rp-border-width-thin) solid var(--rp-color-control-border);
40
- }
41
- .rp-number-input__controls--right[data-v-b5d8edf1] {
42
- border-inline-start: var(--rp-border-width-thin) solid var(--rp-color-control-border);
43
- }
44
- .rp-number-input__control[data-v-b5d8edf1] {
45
- padding: 0;
46
- font: inherit;
47
- background: none;
48
- border: none;
49
- cursor: pointer;
50
- display: inline-flex;
51
- align-items: center;
52
- justify-content: center;
53
- width: var(--_rp-number-input-control-size);
54
- height: 100%;
55
- min-width: 0;
56
- min-height: 0;
57
- color: var(--rp-color-control-icon);
58
- transition: color var(--rp-transition-fast), background-color var(--rp-transition-fast), opacity var(--rp-transition-fast);
59
- }
60
- .rp-number-input__control + .rp-number-input__control[data-v-b5d8edf1] {
61
- border-inline-start: var(--rp-border-width-thin) solid var(--rp-color-control-border);
62
- }
63
- .rp-number-input__control[data-v-b5d8edf1]:hover:not(:disabled) {
64
- color: var(--rp-color-control-fg);
65
- background-color: var(--rp-color-default-hover);
66
- }
67
- .rp-number-input__control[data-v-b5d8edf1]:disabled {
68
- cursor: not-allowed;
69
- opacity: var(--rp-opacity-disabled);
70
- }
71
- .rp-number-input__control-icon[data-v-b5d8edf1] {
72
- display: inline-flex;
73
- align-items: center;
74
- width: 0.875em;
75
- height: 0.875em;
76
- flex-shrink: 0;
77
- }
78
- .rp-number-input__control-icon svg[data-v-b5d8edf1] {
79
- width: 100%;
80
- height: 100%;
81
- }
82
- .rp-number-input__control-icon[data-v-b5d8edf1] > svg {
83
- display: block;
84
- width: 100%;
85
- height: 100%;
1
+ @layer ropav.components {
2
+ .rp-number-input[data-v-3cef367f] {
3
+ --_rp-number-input-control-size: var(--_rp-input-height);
4
+ --_rp-number-input-text-align: left;
5
+ overflow: hidden;
6
+ vertical-align: middle;
7
+ }
8
+ .rp-number-input[data-v-3cef367f] .rp-input__native {
9
+ appearance: textfield;
10
+ text-align: var(--_rp-number-input-text-align);
11
+ }
12
+ .rp-number-input--text-align-center[data-v-3cef367f] {
13
+ --_rp-number-input-text-align: center;
14
+ }
15
+ .rp-number-input--text-align-right[data-v-3cef367f] {
16
+ --_rp-number-input-text-align: right;
17
+ }
18
+ .rp-number-input[data-v-3cef367f] .rp-input__native::-webkit-inner-spin-button,
19
+ .rp-number-input[data-v-3cef367f] .rp-input__native::-webkit-outer-spin-button {
20
+ margin: 0;
21
+ appearance: none;
22
+ }
23
+ .rp-number-input[data-v-3cef367f] .rp-input__left,
24
+ .rp-number-input[data-v-3cef367f] .rp-input__right {
25
+ align-self: stretch;
26
+ margin-block: calc(-1 * var(--rp-border-width-thin));
27
+ }
28
+ .rp-number-input[data-v-3cef367f] .rp-input__left {
29
+ margin-inline-start: calc(-1 * var(--_rp-input-padding-x));
30
+ }
31
+ .rp-number-input[data-v-3cef367f] .rp-input__right {
32
+ margin-inline-end: calc(-1 * var(--_rp-input-padding-x));
33
+ }
34
+ .rp-number-input__controls[data-v-3cef367f] {
35
+ display: inline-flex;
36
+ height: var(--_rp-input-height);
37
+ flex-shrink: 0;
38
+ }
39
+ .rp-number-input__controls--left[data-v-3cef367f] {
40
+ border-inline-end: var(--rp-border-width-thin) solid var(--rp-color-control-border);
41
+ }
42
+ .rp-number-input__controls--right[data-v-3cef367f] {
43
+ border-inline-start: var(--rp-border-width-thin) solid var(--rp-color-control-border);
44
+ }
45
+ .rp-number-input__control[data-v-3cef367f] {
46
+ padding: 0;
47
+ font: inherit;
48
+ background: none;
49
+ border: none;
50
+ cursor: pointer;
51
+ display: inline-flex;
52
+ align-items: center;
53
+ justify-content: center;
54
+ width: var(--_rp-number-input-control-size);
55
+ height: 100%;
56
+ min-width: 0;
57
+ min-height: 0;
58
+ color: var(--rp-color-control-icon);
59
+ transition: color var(--rp-transition-fast), background-color var(--rp-transition-fast), opacity var(--rp-transition-fast);
60
+ }
61
+ .rp-number-input__control + .rp-number-input__control[data-v-3cef367f] {
62
+ border-inline-start: var(--rp-border-width-thin) solid var(--rp-color-control-border);
63
+ }
64
+ .rp-number-input__control[data-v-3cef367f]:hover:not(:disabled) {
65
+ color: var(--rp-color-control-fg);
66
+ background-color: var(--rp-color-default-hover);
67
+ }
68
+ .rp-number-input__control[data-v-3cef367f]:disabled {
69
+ cursor: not-allowed;
70
+ opacity: var(--rp-opacity-disabled);
71
+ }
72
+ .rp-number-input__control-icon[data-v-3cef367f] {
73
+ display: inline-flex;
74
+ align-items: center;
75
+ width: 0.875em;
76
+ height: 0.875em;
77
+ flex-shrink: 0;
78
+ }
79
+ .rp-number-input__control-icon svg[data-v-3cef367f] {
80
+ width: 100%;
81
+ height: 100%;
82
+ }
83
+ .rp-number-input__control-icon[data-v-3cef367f] > svg {
84
+ display: block;
85
+ width: 100%;
86
+ height: 100%;
87
+ }
86
88
  }