ropav 0.0.10 → 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 (227) 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 +86 -17
  27. package/dist/color-picker.css +309 -303
  28. package/dist/color-picker.js +147 -54
  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 +13 -1
  34. package/dist/components/accordion/index.d.ts +2 -1
  35. package/dist/components/accordion/index.js +2 -2
  36. package/dist/components/accordion/types.d.ts +9 -4
  37. package/dist/components/alert/alert.d.ts +2 -2
  38. package/dist/components/alert/index.d.ts +2 -2
  39. package/dist/components/alert/index.js +2 -2
  40. package/dist/components/alert/types.d.ts +4 -1
  41. package/dist/components/aspect-ratio/index.d.ts +2 -1
  42. package/dist/components/aspect-ratio/index.js +2 -2
  43. package/dist/components/aspect-ratio/types.d.ts +4 -1
  44. package/dist/components/avatar/index.d.ts +2 -2
  45. package/dist/components/avatar/index.js +2 -2
  46. package/dist/components/avatar/types.d.ts +4 -1
  47. package/dist/components/badge/index.d.ts +2 -2
  48. package/dist/components/badge/index.js +2 -2
  49. package/dist/components/badge/types.d.ts +4 -1
  50. package/dist/components/button/index.d.ts +2 -1
  51. package/dist/components/button/index.js +2 -2
  52. package/dist/components/button/types.d.ts +4 -1
  53. package/dist/components/button-group/index.d.ts +2 -1
  54. package/dist/components/button-group/index.js +2 -2
  55. package/dist/components/button-group/types.d.ts +4 -1
  56. package/dist/components/button-link/index.d.ts +2 -1
  57. package/dist/components/button-link/index.js +2 -2
  58. package/dist/components/button-link/types.d.ts +4 -1
  59. package/dist/components/card/index.d.ts +2 -1
  60. package/dist/components/card/index.js +2 -2
  61. package/dist/components/card/types.d.ts +5 -1
  62. package/dist/components/checkbox/checkbox.d.ts +4 -1
  63. package/dist/components/checkbox/index.d.ts +2 -1
  64. package/dist/components/checkbox/index.js +2 -2
  65. package/dist/components/checkbox/types.d.ts +6 -1
  66. package/dist/components/checkbox/useCheckbox.d.ts +2 -0
  67. package/dist/components/collapse/collapse.d.ts +2 -2
  68. package/dist/components/collapse/index.d.ts +2 -1
  69. package/dist/components/collapse/index.js +2 -2
  70. package/dist/components/collapse/types.d.ts +9 -2
  71. package/dist/components/color-input/index.d.ts +2 -1
  72. package/dist/components/color-input/index.js +2 -2
  73. package/dist/components/color-input/types.d.ts +4 -1
  74. package/dist/components/color-picker/index.d.ts +2 -2
  75. package/dist/components/color-picker/index.js +2 -2
  76. package/dist/components/color-picker/types.d.ts +13 -1
  77. package/dist/components/color-swatch/index.d.ts +2 -1
  78. package/dist/components/color-swatch/index.js +2 -1
  79. package/dist/components/color-swatch/types.d.ts +4 -1
  80. package/dist/components/dropdown-menu/dropdown-menu-primitives.d.ts +724 -0
  81. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -3
  82. package/dist/components/dropdown-menu/index.d.ts +53 -1
  83. package/dist/components/dropdown-menu/index.js +2 -2
  84. package/dist/components/dropdown-menu/types.d.ts +142 -6
  85. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -3
  86. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +5 -3
  87. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +2 -1
  88. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +4 -4
  89. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +19 -0
  90. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +14 -2
  91. package/dist/components/field/index.d.ts +2 -1
  92. package/dist/components/field/index.js +2 -2
  93. package/dist/components/field/types.d.ts +4 -1
  94. package/dist/components/floating/index.d.ts +1 -0
  95. package/dist/components/floating/index.js +0 -0
  96. package/dist/components/floating/types.d.ts +31 -0
  97. package/dist/components/floating/useFloatingPosition.d.ts +38 -0
  98. package/dist/components/focus-trap/focus-trap.d.ts +31 -0
  99. package/dist/components/focus-trap/index.d.ts +4 -0
  100. package/dist/components/focus-trap/index.js +3 -0
  101. package/dist/components/focus-trap/types.d.ts +41 -0
  102. package/dist/components/focus-trap/useFocusTrap.d.ts +2 -0
  103. package/dist/components/icon-button/index.d.ts +2 -1
  104. package/dist/components/icon-button/index.js +2 -1
  105. package/dist/components/icon-button/types.d.ts +4 -1
  106. package/dist/components/input/index.d.ts +2 -1
  107. package/dist/components/input/index.js +2 -1
  108. package/dist/components/input/types.d.ts +4 -1
  109. package/dist/components/modal/index.d.ts +2 -1
  110. package/dist/components/modal/index.js +2 -2
  111. package/dist/components/modal/types.d.ts +8 -1
  112. package/dist/components/number-input/index.d.ts +2 -1
  113. package/dist/components/number-input/index.js +2 -2
  114. package/dist/components/number-input/types.d.ts +4 -1
  115. package/dist/components/overlay/index.d.ts +2 -1
  116. package/dist/components/overlay/index.js +2 -1
  117. package/dist/components/overlay/types.d.ts +4 -1
  118. package/dist/components/popover/index.d.ts +2 -2
  119. package/dist/components/popover/index.js +2 -2
  120. package/dist/components/popover/popover.d.ts +2 -2
  121. package/dist/components/popover/types.d.ts +20 -11
  122. package/dist/components/popover/usePopover.d.ts +9 -1
  123. package/dist/components/progress/index.d.ts +2 -2
  124. package/dist/components/progress/index.js +2 -2
  125. package/dist/components/progress/types.d.ts +4 -1
  126. package/dist/components/radio/index.d.ts +2 -1
  127. package/dist/components/radio/index.js +2 -2
  128. package/dist/components/radio/radio.d.ts +8 -3
  129. package/dist/components/radio/types.d.ts +20 -3
  130. package/dist/components/radio/useRadio.d.ts +9 -4
  131. package/dist/components/select/index.d.ts +2 -1
  132. package/dist/components/select/index.js +2 -2
  133. package/dist/components/select/types.d.ts +4 -1
  134. package/dist/components/select/useSelect.d.ts +2 -1
  135. package/dist/components/slider/index.d.ts +2 -2
  136. package/dist/components/slider/index.js +2 -2
  137. package/dist/components/slider/range-slider-tooltip.d.ts +3 -0
  138. package/dist/components/slider/range-slider.d.ts +4 -1
  139. package/dist/components/slider/slider.d.ts +4 -1
  140. package/dist/components/slider/sliderCore.d.ts +4 -4
  141. package/dist/components/slider/types.d.ts +12 -2
  142. package/dist/components/slider/useRangeSlider.d.ts +1 -1
  143. package/dist/components/slider/useSlider.d.ts +1 -1
  144. package/dist/components/switch/index.d.ts +2 -1
  145. package/dist/components/switch/index.js +2 -2
  146. package/dist/components/switch/switch.d.ts +4 -1
  147. package/dist/components/switch/types.d.ts +6 -1
  148. package/dist/components/switch/useSwitch.d.ts +2 -0
  149. package/dist/components/tabs/index.d.ts +2 -1
  150. package/dist/components/tabs/index.js +2 -2
  151. package/dist/components/tabs/types.d.ts +13 -4
  152. package/dist/components/teleport-provider/index.d.ts +2 -0
  153. package/dist/components/teleport-provider/index.js +2 -0
  154. package/dist/components/teleport-provider/teleport-provider.d.ts +21 -0
  155. package/dist/components/teleport-provider/types.d.ts +4 -0
  156. package/dist/components/teleport-provider/useTeleportTarget.d.ts +5 -0
  157. package/dist/components/textarea/index.d.ts +2 -1
  158. package/dist/components/textarea/index.js +2 -2
  159. package/dist/components/textarea/textarea.d.ts +4 -1
  160. package/dist/components/textarea/types.d.ts +6 -1
  161. package/dist/components/textarea/useTextarea.d.ts +1 -0
  162. package/dist/components/toast/index.d.ts +2 -2
  163. package/dist/components/toast/index.js +2 -2
  164. package/dist/components/toast/toast.d.ts +2 -2
  165. package/dist/components/toast/types.d.ts +10 -6
  166. package/dist/components/tooltip/index.d.ts +2 -1
  167. package/dist/components/tooltip/index.js +2 -1
  168. package/dist/components/tooltip/tooltip.d.ts +2 -2
  169. package/dist/components/tooltip/types.d.ts +13 -12
  170. package/dist/components/tooltip/useTooltip.d.ts +13 -3
  171. package/dist/dropdown-menu.css +191 -107
  172. package/dist/dropdown-menu.js +1582 -81
  173. package/dist/field.css +41 -39
  174. package/dist/field.js +40 -16
  175. package/dist/focus-trap.js +80 -0
  176. package/dist/icon-button.css +193 -189
  177. package/dist/icon-button.js +23 -18
  178. package/dist/icon-button2.js +8 -0
  179. package/dist/index.d.ts +4 -0
  180. package/dist/index.js +36 -32
  181. package/dist/input.css +122 -120
  182. package/dist/input.js +47 -34
  183. package/dist/input2.js +9 -0
  184. package/dist/legacy-unlayered.css +5461 -0
  185. package/dist/modal.css +129 -127
  186. package/dist/modal.js +160 -200
  187. package/dist/number-input.css +87 -85
  188. package/dist/number-input.js +61 -17
  189. package/dist/overlay.css +26 -24
  190. package/dist/overlay.js +17 -9
  191. package/dist/overlay2.js +4 -0
  192. package/dist/popover.css +140 -107
  193. package/dist/popover.js +288 -193
  194. package/dist/popover2.js +6 -1
  195. package/dist/progress.css +101 -99
  196. package/dist/progress.js +50 -28
  197. package/dist/radio.css +114 -105
  198. package/dist/radio.js +154 -56
  199. package/dist/select.css +244 -242
  200. package/dist/select.js +92 -47
  201. package/dist/slider.css +1109 -1031
  202. package/dist/slider.js +330 -163
  203. package/dist/styles-api.d.ts +22 -0
  204. package/dist/styles-api.js +49 -0
  205. package/dist/switch.css +120 -108
  206. package/dist/switch.js +89 -33
  207. package/dist/tabs.css +286 -278
  208. package/dist/tabs.js +60 -21
  209. package/dist/teleport-provider.js +15 -0
  210. package/dist/textarea.css +132 -130
  211. package/dist/textarea.js +69 -27
  212. package/dist/toast.css +229 -225
  213. package/dist/toast.js +102 -42
  214. package/dist/tooltip.css +137 -107
  215. package/dist/tooltip.js +180 -228
  216. package/dist/tooltip2.js +8 -0
  217. package/dist/useClickOutside.js +1 -1
  218. package/dist/useFloatingPosition.js +1284 -0
  219. package/dist/useFocusTrap.js +130 -0
  220. package/dist/useTeleportTarget.js +29 -0
  221. package/docs/public-styles-api.md +133 -0
  222. package/docs/public-tokens.md +545 -0
  223. package/package.json +29 -5
  224. package/src/styles/_tokens.scss +33 -28
  225. package/src/styles/_utilities.scss +11 -9
  226. package/src/styles/styles-manifest.json +4125 -0
  227. package/dist/rafScheduler.js +0 -34
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
  }