ropav 0.0.10 → 0.0.12

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 (276) hide show
  1. package/README.md +9 -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 +103 -33
  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 +117 -30
  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 +11 -2
  66. package/dist/components/checkbox/useCheckbox.d.ts +3 -1
  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 +8 -2
  74. package/dist/components/color-input/useColorInput.d.ts +1 -1
  75. package/dist/components/color-input/useColorInputValue.d.ts +1 -1
  76. package/dist/components/color-picker/index.d.ts +2 -2
  77. package/dist/components/color-picker/index.js +2 -2
  78. package/dist/components/color-picker/types.d.ts +13 -1
  79. package/dist/components/color-swatch/index.d.ts +2 -1
  80. package/dist/components/color-swatch/index.js +2 -1
  81. package/dist/components/color-swatch/types.d.ts +4 -1
  82. package/dist/components/dialog/dialog-close.d.ts +21 -0
  83. package/dist/components/dialog/dialog-content.d.ts +32 -0
  84. package/dist/components/dialog/dialog-core.d.ts +27 -0
  85. package/dist/components/dialog/dialog-description.d.ts +21 -0
  86. package/dist/components/dialog/dialog-overlay.d.ts +21 -0
  87. package/dist/components/dialog/dialog-portal.d.ts +21 -0
  88. package/dist/components/dialog/dialog-root.d.ts +28 -0
  89. package/dist/components/dialog/dialog-title.d.ts +21 -0
  90. package/dist/components/dialog/dialog-trigger.d.ts +23 -0
  91. package/dist/components/dialog/index.d.ts +9 -0
  92. package/dist/components/dialog/index.js +2 -0
  93. package/dist/components/dialog/types.d.ts +61 -0
  94. package/dist/components/dropdown-menu/dropdown-menu-checkbox-item.d.ts +24 -0
  95. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +34 -0
  96. package/dist/components/dropdown-menu/dropdown-menu-context-trigger.d.ts +23 -0
  97. package/dist/components/dropdown-menu/dropdown-menu-item-indicator.d.ts +24 -0
  98. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +28 -0
  99. package/dist/components/dropdown-menu/dropdown-menu-item.d.ts +23 -0
  100. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +24 -22
  101. package/dist/components/dropdown-menu/dropdown-menu-label.d.ts +21 -0
  102. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +3 -0
  103. package/dist/components/dropdown-menu/dropdown-menu-portal.d.ts +21 -0
  104. package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +110 -0
  105. package/dist/components/dropdown-menu/dropdown-menu-primitives.d.ts +15 -0
  106. package/dist/components/dropdown-menu/dropdown-menu-radio-group.d.ts +25 -0
  107. package/dist/components/dropdown-menu/dropdown-menu-radio-item.d.ts +23 -0
  108. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +30 -0
  109. package/dist/components/dropdown-menu/dropdown-menu-separator.d.ts +19 -0
  110. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +34 -0
  111. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +28 -0
  112. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +28 -0
  113. package/dist/components/dropdown-menu/dropdown-menu-trigger.d.ts +23 -0
  114. package/dist/components/dropdown-menu/dropdown-menu.d.ts +6 -3
  115. package/dist/components/dropdown-menu/index.d.ts +32 -1
  116. package/dist/components/dropdown-menu/index.js +2 -2
  117. package/dist/components/dropdown-menu/types.d.ts +145 -6
  118. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +15 -3
  119. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +10 -3
  120. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +2 -1
  121. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +4 -4
  122. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +19 -0
  123. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +27 -0
  124. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +14 -2
  125. package/dist/components/field/index.d.ts +2 -1
  126. package/dist/components/field/index.js +2 -2
  127. package/dist/components/field/types.d.ts +4 -1
  128. package/dist/components/floating/index.d.ts +3 -0
  129. package/dist/components/floating/index.js +3 -0
  130. package/dist/components/floating/types.d.ts +105 -0
  131. package/dist/components/floating/useFloatingPosition.d.ts +15 -0
  132. package/dist/components/floating/useHoverDisclosure.d.ts +2 -0
  133. package/dist/components/focus-trap/focus-trap.d.ts +31 -0
  134. package/dist/components/focus-trap/index.d.ts +4 -0
  135. package/dist/components/focus-trap/index.js +3 -0
  136. package/dist/components/focus-trap/types.d.ts +41 -0
  137. package/dist/components/focus-trap/useFocusTrap.d.ts +2 -0
  138. package/dist/components/icon-button/index.d.ts +2 -1
  139. package/dist/components/icon-button/index.js +2 -1
  140. package/dist/components/icon-button/types.d.ts +4 -1
  141. package/dist/components/input/index.d.ts +2 -1
  142. package/dist/components/input/index.js +2 -1
  143. package/dist/components/input/input.d.ts +4 -1
  144. package/dist/components/input/types.d.ts +7 -2
  145. package/dist/components/modal/index.d.ts +2 -1
  146. package/dist/components/modal/index.js +2 -2
  147. package/dist/components/modal/modal.d.ts +3 -1
  148. package/dist/components/modal/types.d.ts +11 -1
  149. package/dist/components/modal/useModal.d.ts +7 -4
  150. package/dist/components/number-input/index.d.ts +2 -1
  151. package/dist/components/number-input/index.js +2 -2
  152. package/dist/components/number-input/types.d.ts +7 -2
  153. package/dist/components/number-input/useNumberInput.d.ts +2 -1
  154. package/dist/components/overlay/index.d.ts +2 -1
  155. package/dist/components/overlay/index.js +2 -1
  156. package/dist/components/overlay/types.d.ts +4 -1
  157. package/dist/components/popover/index.d.ts +2 -2
  158. package/dist/components/popover/index.js +2 -2
  159. package/dist/components/popover/popover.d.ts +2 -2
  160. package/dist/components/popover/types.d.ts +20 -11
  161. package/dist/components/popover/usePopover.d.ts +9 -1
  162. package/dist/components/progress/index.d.ts +2 -2
  163. package/dist/components/progress/index.js +2 -2
  164. package/dist/components/progress/types.d.ts +4 -1
  165. package/dist/components/radio/index.d.ts +2 -1
  166. package/dist/components/radio/index.js +2 -2
  167. package/dist/components/radio/radio.d.ts +8 -3
  168. package/dist/components/radio/types.d.ts +37 -4
  169. package/dist/components/radio/useRadio.d.ts +12 -4
  170. package/dist/components/select/index.d.ts +2 -1
  171. package/dist/components/select/index.js +2 -2
  172. package/dist/components/select/select.d.ts +4 -1
  173. package/dist/components/select/types.d.ts +10 -2
  174. package/dist/components/select/useSelect.d.ts +3 -1
  175. package/dist/components/slider/index.d.ts +2 -2
  176. package/dist/components/slider/index.js +2 -2
  177. package/dist/components/slider/range-slider-tooltip.d.ts +3 -0
  178. package/dist/components/slider/range-slider.d.ts +7 -4
  179. package/dist/components/slider/slider.d.ts +4 -1
  180. package/dist/components/slider/sliderCore.d.ts +4 -4
  181. package/dist/components/slider/types.d.ts +22 -4
  182. package/dist/components/slider/useRangeSlider.d.ts +2 -2
  183. package/dist/components/slider/useSlider.d.ts +2 -2
  184. package/dist/components/switch/index.d.ts +2 -1
  185. package/dist/components/switch/index.js +2 -2
  186. package/dist/components/switch/switch.d.ts +4 -1
  187. package/dist/components/switch/types.d.ts +11 -2
  188. package/dist/components/switch/useSwitch.d.ts +3 -1
  189. package/dist/components/tabs/index.d.ts +2 -1
  190. package/dist/components/tabs/index.js +2 -2
  191. package/dist/components/tabs/types.d.ts +13 -4
  192. package/dist/components/teleport-provider/index.d.ts +3 -0
  193. package/dist/components/teleport-provider/index.js +3 -0
  194. package/dist/components/teleport-provider/teleport-provider.d.ts +21 -0
  195. package/dist/components/teleport-provider/types.d.ts +4 -0
  196. package/dist/components/teleport-provider/useTeleportTarget.d.ts +6 -0
  197. package/dist/components/textarea/index.d.ts +2 -1
  198. package/dist/components/textarea/index.js +2 -2
  199. package/dist/components/textarea/textarea.d.ts +4 -1
  200. package/dist/components/textarea/types.d.ts +10 -2
  201. package/dist/components/textarea/useTextarea.d.ts +2 -1
  202. package/dist/components/toast/index.d.ts +3 -2
  203. package/dist/components/toast/index.js +2 -2
  204. package/dist/components/toast/toast-store.d.ts +2 -0
  205. package/dist/components/toast/toast.d.ts +2 -2
  206. package/dist/components/toast/types.d.ts +20 -10
  207. package/dist/components/toast/useToast.d.ts +2 -2
  208. package/dist/components/tooltip/index.d.ts +2 -1
  209. package/dist/components/tooltip/index.js +2 -1
  210. package/dist/components/tooltip/tooltip.d.ts +2 -2
  211. package/dist/components/tooltip/types.d.ts +13 -12
  212. package/dist/components/tooltip/useTooltip.d.ts +12 -2
  213. package/dist/composables/useOverlayLayer.d.ts +32 -0
  214. package/dist/dialog.js +510 -0
  215. package/dist/dropdown-menu.css +191 -108
  216. package/dist/dropdown-menu.js +1954 -198
  217. package/dist/field.css +41 -39
  218. package/dist/field.js +40 -16
  219. package/dist/floating.js +403 -0
  220. package/dist/focus-trap.js +80 -0
  221. package/dist/icon-button.css +193 -189
  222. package/dist/icon-button.js +23 -18
  223. package/dist/icon-button2.js +8 -0
  224. package/dist/index.d.ts +5 -0
  225. package/dist/index.js +39 -32
  226. package/dist/input.css +122 -120
  227. package/dist/input.js +63 -40
  228. package/dist/input2.js +9 -0
  229. package/dist/legacy-unlayered.css +5382 -0
  230. package/dist/modal.css +129 -127
  231. package/dist/modal.js +182 -281
  232. package/dist/number-input.css +87 -85
  233. package/dist/number-input.js +98 -26
  234. package/dist/overlay.css +26 -24
  235. package/dist/overlay.js +17 -9
  236. package/dist/overlay2.js +4 -0
  237. package/dist/popover.css +140 -107
  238. package/dist/popover.js +276 -196
  239. package/dist/popover2.js +6 -1
  240. package/dist/progress.css +101 -99
  241. package/dist/progress.js +50 -28
  242. package/dist/radio.css +114 -105
  243. package/dist/radio.js +237 -61
  244. package/dist/select.css +255 -242
  245. package/dist/select.js +257 -94
  246. package/dist/slider.css +1090 -1031
  247. package/dist/slider.js +443 -175
  248. package/dist/styles-api.d.ts +22 -0
  249. package/dist/styles-api.js +49 -0
  250. package/dist/switch.css +120 -108
  251. package/dist/switch.js +112 -38
  252. package/dist/tabs.css +286 -278
  253. package/dist/tabs.js +60 -21
  254. package/dist/teleport-provider.js +15 -0
  255. package/dist/textarea.css +132 -130
  256. package/dist/textarea.js +83 -31
  257. package/dist/toast.css +229 -225
  258. package/dist/toast.js +189 -118
  259. package/dist/tooltip.css +61 -106
  260. package/dist/tooltip.js +184 -228
  261. package/dist/tooltip2.js +8 -0
  262. package/dist/useControlState.js +4 -0
  263. package/dist/useFloatingPosition.js +1317 -0
  264. package/dist/useFocusTrap.js +130 -0
  265. package/dist/useFormControl.js +107 -0
  266. package/dist/useOverlayLayer.js +262 -0
  267. package/dist/useTeleportTarget.js +40 -0
  268. package/docs/public-floating-api.md +148 -0
  269. package/docs/public-styles-api.md +134 -0
  270. package/docs/public-tokens.md +545 -0
  271. package/package.json +37 -9
  272. package/src/styles/_tokens.scss +33 -28
  273. package/src/styles/_utilities.scss +11 -9
  274. package/src/styles/styles-manifest.json +4125 -0
  275. package/dist/rafScheduler.js +0 -34
  276. package/dist/useClickOutside.js +0 -24
package/dist/slider.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import './slider.css';
2
2
  import { t as bem } from "./bem.js";
3
+ import { n as useStylesApi, t as presence } from "./styles-api.js";
3
4
  import { n as getComponentColorValue, t as componentColors } from "./componentColors.js";
4
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { i as useFormControl, o as useControllableValue } from "./useFormControl.js";
5
7
  import { t as useControlState } from "./useControlState.js";
6
8
  import { i as useDelayedOpen, n as resolveTooltipColorStyleWithContrast, r as resolveTooltipOffsetStyle, t as tooltip_default } from "./tooltip.js";
7
- import { applyVShow, child, computed, createComponent, createFor, createIf, createInvoker, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, next, on, onBeforeUnmount, onMounted, ref, renderEffect, setAttr, setClass, setClassName, setInsertionState, setProp, setStyle, setText, setValue, template, toDisplayString, toRef, txt, unref, useId, useSlots, watch } from "vue";
9
+ import { applyVShow, child, computed, createComponent, createFor, createIf, createInvoker, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, next, nextTick, on, onBeforeUnmount, onMounted, ref, renderEffect, setClass, setDynamicProps, setInsertionState, setProp, setStyle, setText, template, toDisplayString, toRef, txt, unref, useId, useSlots, watch } from "vue";
8
10
  //#region src/components/slider/sliderCore.ts
9
11
  function normalizeSliderBounds(min, max) {
10
12
  const safeMin = Number.isFinite(min) ? min : 0;
@@ -104,18 +106,18 @@ function getSliderTrackStyle(props, valuePercent) {
104
106
  };
105
107
  setSliderStyleValue(style, "--_rp-slider-color", getSliderColorValue(props.color));
106
108
  applySliderThumbStyle(style, props.thumbStyle, {
107
- size: "--_rp-slider-thumb-size",
109
+ size: "--rp-slider-thumb-size",
108
110
  border: "--_rp-slider-thumb-border-style",
109
- padding: "--_rp-slider-thumb-padding",
111
+ padding: "--rp-slider-thumb-padding",
110
112
  borderColor: "--_rp-slider-thumb-border"
111
113
  });
112
114
  return style;
113
115
  }
114
- function useSlider(props, emitUpdate) {
116
+ function useSlider(props, emitUpdate, getValue = () => props.modelValue ?? props.min) {
115
117
  const control = useControlState(props);
116
118
  const bounds = computed(() => normalizeSliderBounds(props.min, props.max));
117
119
  const nativeStep = computed(() => normalizeSliderStep(props.step));
118
- const normalizedValue = computed(() => normalizeSliderValue(props.modelValue, bounds.value.min, bounds.value.max, nativeStep.value));
120
+ const normalizedValue = computed(() => normalizeSliderValue(getValue(), bounds.value.min, bounds.value.max, nativeStep.value));
119
121
  const valuePercent = computed(() => getSliderValuePercent(normalizedValue.value, bounds.value.min, bounds.value.max));
120
122
  const formattedValue = computed(() => getFormattedSliderValue(normalizedValue.value, props.formatValue));
121
123
  const ariaValueText = computed(() => getSliderAriaValueText(normalizedValue.value, props.ariaValueText, props.formatValue));
@@ -157,7 +159,8 @@ function useSlider(props, emitUpdate) {
157
159
  marked: markItems.value.length > 0,
158
160
  "marks-with-labels": hasMarkLabels.value,
159
161
  "tooltip-always-visible": tooltipAlwaysVisible.value,
160
- disabled: control.disabled
162
+ disabled: control.disabled,
163
+ invalid: control.invalid
161
164
  }));
162
165
  const trackStyle = computed(() => getSliderTrackStyle(props, valuePercent.value));
163
166
  function onInput(e) {
@@ -255,25 +258,27 @@ function useSlider(props, emitUpdate) {
255
258
  }
256
259
  //#endregion
257
260
  //#region src/components/slider/slider.vue?vue&type=script&setup=true&vapor=true&lang.ts
258
- var t0$2 = template("<span data-v-b852f835 class=rp-slider__label>");
259
- var t1$2 = template("<span data-v-b852f835 class=rp-slider__value aria-hidden=true>");
260
- var t2$2 = template("<span data-v-b852f835 class=rp-slider__header>");
261
- var t3$2 = template("<span data-v-b852f835 class=rp-slider__mark-label> ");
262
- var t4$2 = template("<span data-v-b852f835><span data-v-b852f835 class=rp-slider__mark-dot></span>");
263
- var t5$1 = template("<span data-v-b852f835 class=rp-slider__marks aria-hidden=true>");
264
- var t6$1 = template("<span data-v-b852f835 class=rp-slider__thumb aria-hidden=true><span data-v-b852f835 class=rp-slider__thumb-content>");
265
- var t7$1 = template("<span data-v-b852f835 class=rp-slider__tooltip-anchor aria-hidden=true>", 2);
266
- var t8$1 = template("<label data-v-b852f835><span data-v-b852f835 class=rp-slider__track><span data-v-b852f835 class=rp-slider__bar aria-hidden=true></span><input data-v-b852f835 class=rp-slider__native type=range>", 1);
267
- delegateEvents("input", "pointerdown", "focusin", "focusout", "keydown");
261
+ var t0$2 = template("<span data-v-a837ba72>");
262
+ var t1$2 = template("<span data-v-a837ba72 class=rp-slider__header>");
263
+ var t2$2 = template("<span data-v-a837ba72> ");
264
+ var t3$2 = template("<span data-v-a837ba72><span data-v-a837ba72 class=rp-slider__mark-dot></span>");
265
+ var t4$2 = template("<span data-v-a837ba72 class=rp-slider__marks aria-hidden=true>");
266
+ var t5$1 = template("<span data-v-a837ba72><span data-v-a837ba72 class=rp-slider__thumb-content>");
267
+ var t6$1 = template("<span data-v-a837ba72 class=rp-slider__tooltip-anchor aria-hidden=true>", 2);
268
+ var t7$1 = template("<label data-v-a837ba72><span data-v-a837ba72><span data-v-a837ba72></span><input data-v-a837ba72>", 1);
269
+ delegateEvents("pointerdown", "focusin", "focusout", "keydown");
268
270
  //#endregion
269
271
  //#region src/components/slider/slider.vue
270
272
  var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
271
273
  name: "RpSlider",
274
+ inheritAttrs: false,
272
275
  __name: "slider",
273
276
  props: {
274
277
  id: {},
275
278
  name: {},
276
- modelValue: {},
279
+ form: {},
280
+ modelValue: { default: void 0 },
281
+ defaultValue: { default: void 0 },
277
282
  min: { default: 0 },
278
283
  max: { default: 100 },
279
284
  step: { default: 1 },
@@ -295,39 +300,105 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
295
300
  type: Boolean,
296
301
  default: void 0
297
302
  },
303
+ required: {
304
+ type: Boolean,
305
+ default: void 0
306
+ },
307
+ invalid: {
308
+ type: Boolean,
309
+ default: void 0
310
+ },
298
311
  ariaLabel: {},
299
312
  ariaValueText: {},
300
313
  describedby: {},
301
- labelledby: {}
314
+ labelledby: {},
315
+ inputAttrs: {},
316
+ validationMessage: {},
317
+ classNames: {},
318
+ styles: {}
302
319
  },
303
320
  emits: ["update:modelValue"],
304
- setup(__props, { emit: __emit, slots: $slots }) {
321
+ setup(__props, { expose: __expose, emit: __emit, slots: $slots }) {
305
322
  const props = __props;
306
323
  const emit = __emit;
307
- const { control, nativeMin, nativeMax, nativeStep, rootClass, normalizedValue, valuePercent, formattedValue, ariaValueText, markItems, trackStyle, tooltipVisible, tooltipOpen, tooltipPlacement, tooltipId, tooltipColor, tooltipOffset, tooltipOpenDelay, tooltipArrow, tooltipContent, onInput, onTooltipPointerDown, onTooltipMouseEnter, onTooltipMouseLeave, onTooltipFocusIn, onTooltipFocusOut, onTooltipKeydown } = useSlider(props, (value) => {
308
- emit("update:modelValue", value);
324
+ const inputRef = ref(null);
325
+ const slots = useSlots();
326
+ const controllable = useControllableValue({
327
+ modelValue: () => props.modelValue,
328
+ defaultValue: () => props.defaultValue ?? props.min,
329
+ onChange: (value) => emit("update:modelValue", value)
309
330
  });
310
- const n31 = t8$1();
311
- const n30 = child(n31, 1);
312
- const n11 = next(child(n30), 1);
313
- renderEffect(() => {
314
- setClass(n31, [unref(rootClass), { "rp-slider--custom-thumb": $slots.thumb }]);
315
- setAttr(n31, "data-disabled", unref(control).disabled || void 0);
316
- setStyle(n31, unref(trackStyle));
331
+ const { control, nativeMin, nativeMax, nativeStep, rootClass, normalizedValue, valuePercent, formattedValue, ariaValueText, markItems, trackStyle, tooltipVisible, tooltipOpen, tooltipPlacement, tooltipId, tooltipColor, tooltipOffset, tooltipOpenDelay, tooltipArrow, tooltipContent, onInput, onTooltipPointerDown, onTooltipMouseEnter, onTooltipMouseLeave, onTooltipFocusIn, onTooltipFocusOut, onTooltipKeydown } = useSlider(props, (value) => controllable.setValue(value), () => controllable.value.value);
332
+ useFormControl({
333
+ elements: () => [inputRef.value],
334
+ isControlled: () => controllable.isControlled.value,
335
+ initializeDefault(element) {
336
+ element.defaultValue = String(normalizeSliderValue(controllable.initialValue, nativeMin.value, nativeMax.value, nativeStep.value));
337
+ },
338
+ validationMessage: () => props.validationMessage,
339
+ readResetValue(elements) {
340
+ controllable.resetValue(elements[0].valueAsNumber);
341
+ },
342
+ syncControlledValue(elements) {
343
+ elements[0].value = String(normalizedValue.value);
344
+ }
317
345
  });
318
- setInsertionState(n31, 0, 0);
346
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
347
+ const rootAttrs = computed(() => getRootAttrs({
348
+ class: [rootClass.value, { "rp-slider--custom-thumb": Boolean(slots.thumb) }],
349
+ style: trackStyle.value,
350
+ "data-disabled": presence(control.disabled),
351
+ "data-invalid": presence(control.invalid),
352
+ "data-orientation": props.orientation
353
+ }));
354
+ const tooltipClassNames = computed(() => ({
355
+ root: ["rp-slider__tooltip", props.classNames?.tooltip],
356
+ content: "rp-slider__tooltip-content"
357
+ }));
358
+ const tooltipStyles = computed(() => ({ root: props.styles?.tooltip }));
359
+ const nativeInputAttrs = computed(() => {
360
+ const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, ...attrs } = props.inputAttrs ?? {};
361
+ return {
362
+ ...attrs,
363
+ ...getPartAttrs("input", {
364
+ class: "rp-slider__native",
365
+ compatibilityClass,
366
+ compatibilityStyle
367
+ }),
368
+ onInput(event) {
369
+ onInput(event);
370
+ compatibilityOnInput?.(event);
371
+ }
372
+ };
373
+ });
374
+ function focus(options) {
375
+ inputRef.value?.focus(options);
376
+ }
377
+ __expose({
378
+ nativeElement: inputRef,
379
+ focus
380
+ });
381
+ const _setTemplateRef = createTemplateRefSetter();
382
+ const n32 = t7$1();
383
+ const n31 = child(n32, 1);
384
+ const n11 = child(n31);
385
+ const n12 = next(n11, 1);
386
+ renderEffect(() => setDynamicProps(n32, [rootAttrs.value]));
387
+ setInsertionState(n32, 0, 0);
319
388
  createIf(() => $slots.default || $slots.value, () => {
320
- const n10 = t2$2();
389
+ const n10 = t1$2();
321
390
  setInsertionState(n10, null, 0);
322
391
  createIf(() => $slots.default, () => {
323
392
  const n5 = t0$2();
393
+ renderEffect(() => setDynamicProps(n5, [unref(getPartAttrs)("label", { class: "rp-slider__label" })]));
324
394
  setInsertionState(n5, null, 0);
325
395
  createSlot("default", null, null, 1);
326
396
  return n5;
327
397
  });
328
398
  setInsertionState(n10, null, 1);
329
399
  createIf(() => $slots.value, () => {
330
- const n9 = t1$2();
400
+ const n9 = t0$2();
401
+ renderEffect(() => setDynamicProps(n9, [unref(getPartAttrs)("value", { class: "rp-slider__value" }), { "aria-hidden": "true" }]));
331
402
  setInsertionState(n9, null, 0);
332
403
  createSlot("value", {
333
404
  value: () => unref(normalizedValue),
@@ -338,61 +409,84 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
338
409
  });
339
410
  return n10;
340
411
  });
341
- n11.$evtinput = createInvoker((e) => unref(onInput)(e));
412
+ _setTemplateRef(n12, inputRef, null, "inputRef");
342
413
  renderEffect(() => {
414
+ const _getPartAttrs = unref(getPartAttrs);
415
+ const _nativeInputAttrs = nativeInputAttrs.value;
343
416
  const _control = unref(control);
344
- setProp(n11, "id", _control.id);
345
- setProp(n11, "name", __props.name);
346
- setValue(n11, unref(normalizedValue));
347
- setProp(n11, "min", unref(nativeMin));
348
- setProp(n11, "max", unref(nativeMax));
349
- setProp(n11, "step", unref(nativeStep));
350
- setProp(n11, "orient", __props.orientation === "vertical" ? "vertical" : void 0);
351
- setProp(n11, "disabled", _control.disabled || void 0);
352
- setAttr(n11, "aria-label", __props.ariaLabel || void 0);
353
- setAttr(n11, "aria-labelledby", _control.ariaLabelledby);
354
- setAttr(n11, "aria-describedby", _control.ariaDescribedby);
355
- setAttr(n11, "aria-orientation", __props.orientation === "vertical" ? "vertical" : void 0);
356
- setAttr(n11, "aria-valuetext", unref(ariaValueText));
417
+ const _props = props;
418
+ const _props_required_nativeInputAttrs_required = _props.required ?? _nativeInputAttrs.required;
419
+ setDynamicProps(n31, [_getPartAttrs("track", { class: "rp-slider__track" })]);
420
+ setDynamicProps(n11, [_getPartAttrs("range", { class: "rp-slider__bar" }), { "aria-hidden": "true" }]);
421
+ setDynamicProps(n12, [_nativeInputAttrs, {
422
+ id: _control.id,
423
+ name: __props.name,
424
+ form: _control.form ?? _nativeInputAttrs.form,
425
+ type: "range",
426
+ value: unref(normalizedValue),
427
+ min: unref(nativeMin),
428
+ max: unref(nativeMax),
429
+ step: unref(nativeStep),
430
+ orient: __props.orientation === "vertical" ? "vertical" : void 0,
431
+ disabled: _control.disabled || void 0,
432
+ required: _props_required_nativeInputAttrs_required,
433
+ "aria-label": __props.ariaLabel || void 0,
434
+ "aria-labelledby": _control.ariaLabelledby,
435
+ "aria-describedby": _control.ariaDescribedby,
436
+ "aria-orientation": __props.orientation === "vertical" ? "vertical" : void 0,
437
+ "aria-valuetext": unref(ariaValueText),
438
+ "aria-invalid": _props.invalid === void 0 ? _nativeInputAttrs["aria-invalid"] : _control.invalid || void 0,
439
+ "aria-required": _props_required_nativeInputAttrs_required,
440
+ "data-disabled": unref(presence)(_control.disabled),
441
+ "data-invalid": unref(presence)(_control.invalid)
442
+ }]);
357
443
  });
358
- setInsertionState(n30, null, 2);
444
+ setInsertionState(n31, null, 2);
359
445
  createIf(() => unref(markItems).length, () => {
360
- const n20 = t5$1();
361
- setInsertionState(n20, null, 0);
446
+ const n21 = t4$2();
447
+ setInsertionState(n21, null, 0);
362
448
  createFor(() => unref(markItems), (_for_item0) => {
363
- const n19 = t4$2();
449
+ const n20 = t3$2();
364
450
  renderEffect(() => {
365
451
  const _mark = _for_item0.value;
366
- setClassName(n19, _mark.filled ? 1 : 0, " rp-slider__mark--filled", "rp-slider__mark");
367
- setStyle(n19, _mark.style);
452
+ setDynamicProps(n20, [unref(getPartAttrs)("mark", {
453
+ class: ["rp-slider__mark", { "rp-slider__mark--filled": _mark.filled }],
454
+ style: _mark.style
455
+ }), { "data-filled": unref(presence)(_mark.filled) }]);
368
456
  });
369
- setInsertionState(n19, null, 1);
457
+ setInsertionState(n20, null, 1);
370
458
  createIf(() => _for_item0.value.hasLabel, () => {
371
- const n18 = t3$2();
372
- const x18 = txt(n18);
373
- renderEffect(() => setText(x18, toDisplayString(_for_item0.value.label)));
374
- return n18;
459
+ const n19 = t2$2();
460
+ const x19 = txt(n19);
461
+ renderEffect(() => {
462
+ setDynamicProps(n19, [unref(getPartAttrs)("markLabel", { class: "rp-slider__mark-label" })]);
463
+ setText(x19, toDisplayString(_for_item0.value.label));
464
+ });
465
+ return n19;
375
466
  });
376
- return n19;
467
+ return n20;
377
468
  }, (mark) => mark.key, 9);
378
- return n20;
469
+ return n21;
379
470
  });
380
- setInsertionState(n30, null, 3);
471
+ setInsertionState(n31, null, 3);
381
472
  createIf(() => $slots.thumb, () => {
382
- const n25 = t6$1();
383
- setInsertionState(child(n25), null, 0);
473
+ const n26 = t5$1();
474
+ const n25 = child(n26);
475
+ renderEffect(() => setDynamicProps(n26, [unref(getPartAttrs)("thumb", { class: "rp-slider__thumb" }), { "aria-hidden": "true" }]));
476
+ setInsertionState(n25, null, 0);
384
477
  createSlot("thumb", {
385
478
  value: () => unref(normalizedValue),
386
479
  formattedValue: () => unref(formattedValue),
387
480
  percent: () => unref(valuePercent)
388
481
  }, null, 1);
389
- return n25;
482
+ return n26;
390
483
  });
391
- setInsertionState(n30, null, 4);
484
+ setInsertionState(n31, null, 4);
392
485
  createIf(() => unref(tooltipVisible), () => {
393
486
  return createComponent(tooltip_default, {
394
487
  id: () => unref(tooltipId),
395
- class: "rp-slider__tooltip",
488
+ "class-names": () => tooltipClassNames.value,
489
+ styles: () => tooltipStyles.value,
396
490
  content: () => unref(tooltipContent),
397
491
  placement: () => unref(tooltipPlacement),
398
492
  color: () => unref(tooltipColor),
@@ -402,18 +496,18 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
402
496
  arrow: () => unref(tooltipArrow),
403
497
  decorative: ""
404
498
  }, () => {
405
- return t7$1();
499
+ return t6$1();
406
500
  });
407
501
  });
408
- n30.$evtpointerdown = createInvoker((e) => unref(onTooltipPointerDown)(e));
409
- on(n30, "mouseenter", (e) => unref(onTooltipMouseEnter)(e));
410
- on(n30, "mouseleave", (e) => unref(onTooltipMouseLeave)(e));
411
- n30.$evtfocusin = createInvoker((e) => unref(onTooltipFocusIn)(e));
412
- n30.$evtfocusout = createInvoker((e) => unref(onTooltipFocusOut)(e));
413
- n30.$evtkeydown = createInvoker((e) => unref(onTooltipKeydown)(e));
414
- return n31;
502
+ n31.$evtpointerdown = createInvoker((e) => unref(onTooltipPointerDown)(e));
503
+ on(n31, "mouseenter", (e) => unref(onTooltipMouseEnter)(e));
504
+ on(n31, "mouseleave", (e) => unref(onTooltipMouseLeave)(e));
505
+ n31.$evtfocusin = createInvoker((e) => unref(onTooltipFocusIn)(e));
506
+ n31.$evtfocusout = createInvoker((e) => unref(onTooltipFocusOut)(e));
507
+ n31.$evtkeydown = createInvoker((e) => unref(onTooltipKeydown)(e));
508
+ return n32;
415
509
  }
416
- }), [["__scopeId", "data-v-b852f835"]]);
510
+ }), [["__scopeId", "data-v-a837ba72"]]);
417
511
  //#endregion
418
512
  //#region src/components/slider/useRangeSliderTooltipCollision.ts
419
513
  var TOOLTIP_COLLISION_GAP = 4;
@@ -605,11 +699,11 @@ function useRangeSliderTooltipCollision({ enabled, lower, orientation, placement
605
699
  }
606
700
  //#endregion
607
701
  //#region src/components/slider/range-slider-tooltip.vue?vue&type=script&setup=true&vapor=true&lang.ts
608
- var t0$1 = template("<span data-v-d17966e5 class=rp-range-slider__tooltip-merged-value> </span>");
609
- var t1$1 = template("<span data-v-d17966e5 class=rp-range-slider__tooltip-merged-value> ");
610
- var t2$1 = template("<span data-v-d17966e5 class=rp-range-slider__tooltip-merged-separator>–</span>", 2);
702
+ var t0$1 = template("<span data-v-ce70c540 class=rp-range-slider__tooltip-merged-value> </span>");
703
+ var t1$1 = template("<span data-v-ce70c540 class=rp-range-slider__tooltip-merged-value> ");
704
+ var t2$1 = template("<span data-v-ce70c540 class=rp-range-slider__tooltip-merged-separator>–</span>", 2);
611
705
  var t3$1 = template(" ");
612
- var t4$1 = template("<span data-v-d17966e5 aria-hidden=true><span data-v-d17966e5><span data-v-d17966e5 class=rp-range-slider__tooltip-anchor></span><span data-v-d17966e5 class=rp-tooltip__content aria-hidden=true> </span></span><span data-v-d17966e5><span data-v-d17966e5 class=rp-range-slider__tooltip-anchor></span><span data-v-d17966e5 class=rp-tooltip__content aria-hidden=true> </span></span><span data-v-d17966e5><span data-v-d17966e5 class=rp-range-slider__tooltip-anchor></span><span data-v-d17966e5 class=rp-tooltip__content aria-hidden=true>", 1);
706
+ var t4$1 = template("<span data-v-ce70c540 aria-hidden=true><span data-v-ce70c540 data-thumb=lower><span data-v-ce70c540 class=rp-range-slider__tooltip-anchor></span><span data-v-ce70c540 class=rp-tooltip__content aria-hidden=true> </span></span><span data-v-ce70c540 data-thumb=upper><span data-v-ce70c540 class=rp-range-slider__tooltip-anchor></span><span data-v-ce70c540 class=rp-tooltip__content aria-hidden=true> </span></span><span data-v-ce70c540 data-thumb=merged><span data-v-ce70c540 class=rp-range-slider__tooltip-anchor></span><span data-v-ce70c540 class=rp-tooltip__content aria-hidden=true>", 1);
613
707
  //#endregion
614
708
  //#region src/components/slider/range-slider-tooltip.vue
615
709
  var range_slider_tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -629,7 +723,21 @@ var range_slider_tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
629
723
  open: { type: Boolean },
630
724
  orientation: {},
631
725
  placement: {},
632
- valuePercent: {}
726
+ valuePercent: {},
727
+ tooltipClass: { type: [
728
+ Boolean,
729
+ null,
730
+ String,
731
+ Object,
732
+ Array
733
+ ] },
734
+ tooltipStyle: { type: [
735
+ Boolean,
736
+ null,
737
+ String,
738
+ Object,
739
+ Array
740
+ ] }
633
741
  },
634
742
  emits: ["update:overlapping"],
635
743
  setup(__props, { emit: __emit }) {
@@ -685,7 +793,7 @@ var range_slider_tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
685
793
  applyVShow(n2, () => __props.open);
686
794
  _setTemplateRef(n2, upperContentRef, null, "upperContentRef");
687
795
  renderEffect(() => {
688
- const _tooltipRootClass = tooltipRootClass.value;
796
+ const _tooltipStyle = __props.tooltipStyle;
689
797
  const _resolvedIds = resolvedIds.value;
690
798
  const _contentStyle = contentStyle.value;
691
799
  const _content = __props.content;
@@ -699,26 +807,32 @@ var range_slider_tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
699
807
  ]);
700
808
  setStyle(n16, layerStyle.value);
701
809
  setClass(n1, [
702
- _tooltipRootClass,
810
+ tooltipRootClass.value,
703
811
  "rp-range-slider__tooltip",
704
- "rp-range-slider__tooltip--lower"
812
+ "rp-range-slider__tooltip--lower",
813
+ __props.tooltipClass
705
814
  ]);
815
+ setStyle(n1, _tooltipStyle);
706
816
  setProp(n0, "id", _resolvedIds[0]);
707
817
  setStyle(n0, _contentStyle);
708
818
  setText(x0, toDisplayString(_content[0]));
709
819
  setClass(n3, [
710
- _tooltipRootClass,
820
+ tooltipRootClass.value,
711
821
  "rp-range-slider__tooltip",
712
- "rp-range-slider__tooltip--upper"
822
+ "rp-range-slider__tooltip--upper",
823
+ __props.tooltipClass
713
824
  ]);
825
+ setStyle(n3, _tooltipStyle);
714
826
  setProp(n2, "id", _resolvedIds[1]);
715
827
  setStyle(n2, _contentStyle);
716
828
  setText(x2, toDisplayString(_content[1]));
717
829
  setClass(n15, [
718
- _tooltipRootClass,
830
+ tooltipRootClass.value,
719
831
  "rp-range-slider__tooltip",
720
- "rp-range-slider__tooltip--merged"
832
+ "rp-range-slider__tooltip--merged",
833
+ __props.tooltipClass
721
834
  ]);
835
+ setStyle(n15, _tooltipStyle);
722
836
  setProp(n14, "id", resolvedMergedId.value);
723
837
  setStyle(n14, _contentStyle);
724
838
  });
@@ -759,7 +873,7 @@ var range_slider_tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
759
873
  _setTemplateRef(n16, tooltipLayerRef, null, "tooltipLayerRef");
760
874
  return n16;
761
875
  }
762
- }), [["__scopeId", "data-v-d17966e5"]]);
876
+ }), [["__scopeId", "data-v-ce70c540"]]);
763
877
  //#endregion
764
878
  //#region src/components/slider/useRangeSliderPointer.ts
765
879
  function useRangeSliderPointer(options) {
@@ -1049,9 +1163,9 @@ function getRangeSliderTrackStyle(props, valuePercent) {
1049
1163
  };
1050
1164
  setSliderStyleValue(style, "--_rp-range-slider-color", getComponentColorValue(props.color));
1051
1165
  applySliderThumbStyle(style, props.thumbStyle, {
1052
- size: "--_rp-range-slider-thumb-size",
1166
+ size: "--rp-slider-thumb-size",
1053
1167
  border: "--_rp-range-slider-thumb-border-style",
1054
- padding: "--_rp-range-slider-thumb-padding",
1168
+ padding: "--rp-slider-thumb-padding",
1055
1169
  borderColor: "--_rp-range-slider-thumb-border"
1056
1170
  });
1057
1171
  return style;
@@ -1079,7 +1193,7 @@ function getThumbInput(track, thumb) {
1079
1193
  function focusThumb(track, thumb) {
1080
1194
  getThumbInput(track, thumb)?.focus({ preventScroll: true });
1081
1195
  }
1082
- function useRangeSlider(props, emitUpdate) {
1196
+ function useRangeSlider(props, emitUpdate, getValue = () => props.modelValue ?? [props.min, props.max]) {
1083
1197
  const control = useControlState(props);
1084
1198
  const activeThumb = ref();
1085
1199
  const bounds = computed(() => normalizeSliderBounds(props.min, props.max));
@@ -1091,7 +1205,7 @@ function useRangeSlider(props, emitUpdate) {
1091
1205
  });
1092
1206
  const hasManualNativeKeyboard = computed(() => valueStep.value !== "any" && nativeStep.value === "any");
1093
1207
  const normalizedMinRange = computed(() => normalizeRangeSliderMinRange(props.minRange, bounds.value.min, bounds.value.max));
1094
- const normalizedValue = computed(() => normalizeRangeSliderValue(props.modelValue, bounds.value.min, bounds.value.max, valueStep.value, normalizedMinRange.value));
1208
+ const normalizedValue = computed(() => normalizeRangeSliderValue(getValue(), bounds.value.min, bounds.value.max, valueStep.value, normalizedMinRange.value));
1095
1209
  const valuePercent = computed(() => [getSliderValuePercent(normalizedValue.value[0], bounds.value.min, bounds.value.max), getSliderValuePercent(normalizedValue.value[1], bounds.value.min, bounds.value.max)]);
1096
1210
  const formattedValue = computed(() => getFormattedRangeSliderValue(normalizedValue.value, props.formatValue));
1097
1211
  const ariaLabels = computed(() => props.ariaLabel ?? ["Minimum", "Maximum"]);
@@ -1154,7 +1268,8 @@ function useRangeSlider(props, emitUpdate) {
1154
1268
  marked: markItems.value.length > 0,
1155
1269
  "marks-with-labels": hasMarkLabels.value,
1156
1270
  "tooltip-always-visible": tooltipAlwaysVisible.value,
1157
- disabled: control.disabled
1271
+ disabled: control.disabled,
1272
+ invalid: control.invalid
1158
1273
  }));
1159
1274
  function getThumbUpdate(thumb, value, anchorValue = normalizedValue.value[getThumbIndex(getOppositeThumb(thumb))]) {
1160
1275
  const safeValue = normalizeSliderValue(value, bounds.value.min, bounds.value.max, valueStep.value);
@@ -1307,28 +1422,32 @@ function useRangeSlider(props, emitUpdate) {
1307
1422
  }
1308
1423
  //#endregion
1309
1424
  //#region src/components/slider/range-slider.vue?vue&type=script&setup=true&vapor=true&lang.ts
1310
- var t0 = template("<span data-v-8dd81f55 class=rp-range-slider__label>");
1311
- var t1 = template("<span data-v-8dd81f55 class=rp-range-slider__value aria-hidden=true>");
1312
- var t2 = template("<span data-v-8dd81f55 class=rp-range-slider__header>");
1313
- var t3 = template("<input data-v-8dd81f55 type=range>");
1314
- var t4 = template("<span data-v-8dd81f55 class=rp-range-slider__mark-label> ");
1315
- var t5 = template("<span data-v-8dd81f55><span data-v-8dd81f55 class=rp-range-slider__mark-dot></span>");
1316
- var t6 = template("<span data-v-8dd81f55 class=rp-range-slider__marks aria-hidden=true>");
1317
- var t7 = template("<span data-v-8dd81f55><span data-v-8dd81f55 class=rp-range-slider__thumb-content>");
1318
- var t8 = template("<div data-v-8dd81f55 role=group><span data-v-8dd81f55 class=rp-range-slider__track><span data-v-8dd81f55 class=rp-range-slider__bar aria-hidden=true></span><!><span data-v-8dd81f55 class=rp-range-slider__thumbs aria-hidden=true>", 1);
1319
- delegateEvents("input", "keydown", "pointerdown");
1425
+ var t0 = template("<span data-v-b0e2c3da>");
1426
+ var t1 = template("<span data-v-b0e2c3da class=rp-range-slider__header>");
1427
+ var t2 = template("<input data-v-b0e2c3da>");
1428
+ var t3 = template("<span data-v-b0e2c3da> ");
1429
+ var t4 = template("<span data-v-b0e2c3da><span data-v-b0e2c3da class=rp-range-slider__mark-dot></span>");
1430
+ var t5 = template("<span data-v-b0e2c3da class=rp-range-slider__marks aria-hidden=true>");
1431
+ var t6 = template("<span data-v-b0e2c3da><span data-v-b0e2c3da class=rp-range-slider__thumb-content>");
1432
+ var t7 = template("<div data-v-b0e2c3da><span data-v-b0e2c3da><span data-v-b0e2c3da></span><!><span data-v-b0e2c3da class=rp-range-slider__thumbs aria-hidden=true>", 1);
1433
+ delegateEvents("pointerdown");
1320
1434
  //#endregion
1321
1435
  //#region src/components/slider/range-slider.vue
1322
1436
  var range_slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
1323
1437
  name: "RpRangeSlider",
1438
+ inheritAttrs: false,
1324
1439
  __name: "range-slider",
1325
1440
  props: {
1326
- modelValue: {},
1441
+ modelValue: { default: void 0 },
1442
+ defaultValue: { default: void 0 },
1327
1443
  minRange: { default: 0 },
1328
1444
  name: {},
1329
1445
  ariaLabel: { default: () => ["Minimum", "Maximum"] },
1330
1446
  ariaValueText: {},
1447
+ inputAttrs: {},
1448
+ validationMessage: {},
1331
1449
  id: {},
1450
+ form: {},
1332
1451
  min: { default: 0 },
1333
1452
  max: { default: 100 },
1334
1453
  step: { default: 1 },
@@ -1350,55 +1469,154 @@ var range_slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
1350
1469
  type: Boolean,
1351
1470
  default: void 0
1352
1471
  },
1472
+ required: {
1473
+ type: Boolean,
1474
+ default: void 0
1475
+ },
1476
+ invalid: {
1477
+ type: Boolean,
1478
+ default: void 0
1479
+ },
1353
1480
  describedby: {},
1354
- labelledby: {}
1481
+ labelledby: {},
1482
+ classNames: {},
1483
+ styles: {}
1355
1484
  },
1356
1485
  emits: ["update:modelValue"],
1357
- setup(__props, { emit: __emit, slots: $slots }) {
1486
+ setup(__props, { expose: __expose, emit: __emit, slots: $slots }) {
1358
1487
  const props = __props;
1359
1488
  const emit = __emit;
1360
1489
  const slots = useSlots();
1361
1490
  const generatedId = useId();
1362
1491
  const tooltipsOverlapping = ref(false);
1363
1492
  const rangeSliderThumbs = ["lower", "upper"];
1493
+ const lowerInputRef = ref(null);
1494
+ const upperInputRef = ref(null);
1364
1495
  const labelId = computed(() => `${props.id ?? generatedId}-label`);
1365
- const { control, nativeMin, nativeMax, nativeStep, nativeNames, nativeIds, rootClass, normalizedValue, valuePercent, formattedValue, ariaLabels, ariaValueText, markItems, trackStyle, activeThumb, tooltipVisible, tooltipOpen, tooltipPlacement, tooltipIds, mergedTooltipId, tooltipColor, tooltipOffset, tooltipArrow, tooltipContent, mergedTooltipContent, onInput, onTrackPointerDown, onTooltipFocus, onTooltipBlur, onTooltipTrackMouseEnter, onTooltipTrackMouseLeave, onTooltipKeydown } = useRangeSlider(props, (value) => {
1366
- emit("update:modelValue", value);
1496
+ const controllable = useControllableValue({
1497
+ modelValue: () => props.modelValue,
1498
+ defaultValue: () => props.defaultValue ?? [props.min, props.max],
1499
+ onChange: (value) => emit("update:modelValue", value)
1367
1500
  });
1501
+ const { control, nativeMin, nativeMax, nativeStep, nativeNames, nativeIds, rootClass, normalizedValue, valuePercent, formattedValue, ariaLabels, ariaValueText, markItems, trackStyle, activeThumb, tooltipVisible, tooltipOpen, tooltipPlacement, tooltipIds, mergedTooltipId, tooltipColor, tooltipOffset, tooltipArrow, tooltipContent, mergedTooltipContent, onInput, onTrackPointerDown, onTooltipFocus, onTooltipBlur, onTooltipTrackMouseEnter, onTooltipTrackMouseLeave, onTooltipKeydown } = useRangeSlider(props, (value) => controllable.setValue(value), () => controllable.value.value);
1502
+ const validationMessages = computed(() => Array.isArray(props.validationMessage) ? props.validationMessage : [props.validationMessage, props.validationMessage]);
1503
+ function normalizeInitialValue(value = controllable.initialValue) {
1504
+ return normalizeRangeSliderValue(value, props.min, props.max, props.step, props.minRange);
1505
+ }
1506
+ useFormControl({
1507
+ elements: () => [lowerInputRef.value, upperInputRef.value],
1508
+ isControlled: () => controllable.isControlled.value,
1509
+ initializeDefault(element, index) {
1510
+ const initialValue = normalizeInitialValue();
1511
+ element.defaultValue = String(initialValue[index]);
1512
+ },
1513
+ validationMessage: (_element, index) => validationMessages.value[index],
1514
+ readResetValue(elements) {
1515
+ const resetValue = [normalizedValue.value[0], normalizedValue.value[1]];
1516
+ for (const element of elements) {
1517
+ const index = element === upperInputRef.value ? 1 : 0;
1518
+ resetValue[index] = Number(element.defaultValue);
1519
+ }
1520
+ const nextValue = normalizeInitialValue(resetValue);
1521
+ controllable.resetValue(nextValue);
1522
+ nextTick(() => {
1523
+ if (lowerInputRef.value) lowerInputRef.value.value = String(nextValue[0]);
1524
+ if (upperInputRef.value) upperInputRef.value.value = String(nextValue[1]);
1525
+ });
1526
+ },
1527
+ syncControlledValue(elements) {
1528
+ for (const element of elements) {
1529
+ const index = element === upperInputRef.value ? 1 : 0;
1530
+ element.value = String(normalizedValue.value[index]);
1531
+ }
1532
+ }
1533
+ });
1534
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
1535
+ const rootAttrs = computed(() => getRootAttrs({
1536
+ class: [rootClass.value, {
1537
+ "rp-range-slider--custom-thumb": Boolean(slots.thumb),
1538
+ "rp-range-slider--tooltips-overlapping": tooltipsOverlapping.value
1539
+ }],
1540
+ style: trackStyle.value,
1541
+ role: "group",
1542
+ "data-active-thumb": activeThumb.value || void 0,
1543
+ "data-disabled": presence(control.disabled),
1544
+ "data-invalid": presence(control.invalid),
1545
+ "data-orientation": props.orientation,
1546
+ "aria-labelledby": groupLabelledby.value,
1547
+ "aria-describedby": control.ariaDescribedby,
1548
+ "aria-invalid": control.invalid || void 0,
1549
+ "aria-required": control.required || void 0
1550
+ }));
1551
+ const inputAttrsByThumb = computed(() => {
1552
+ if (Array.isArray(props.inputAttrs)) return props.inputAttrs;
1553
+ return [props.inputAttrs, props.inputAttrs];
1554
+ });
1555
+ const nativeInputAttrs = computed(() => rangeSliderThumbs.map((thumb, index) => {
1556
+ const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, onFocus: compatibilityOnFocus, onBlur: compatibilityOnBlur, onKeydown: compatibilityOnKeydown, ...attrs } = inputAttrsByThumb.value[index] ?? {};
1557
+ return Object.assign({}, attrs, {
1558
+ ...getPartAttrs("input", {
1559
+ class: ["rp-range-slider__native", `rp-range-slider__native--${thumb}`],
1560
+ compatibilityClass,
1561
+ compatibilityStyle
1562
+ }),
1563
+ onInput(event) {
1564
+ onInput(thumb, event);
1565
+ compatibilityOnInput?.(event);
1566
+ },
1567
+ onFocus(event) {
1568
+ onTooltipFocus(thumb);
1569
+ compatibilityOnFocus?.(event);
1570
+ },
1571
+ onBlur(event) {
1572
+ onTooltipBlur(thumb);
1573
+ compatibilityOnBlur?.(event);
1574
+ },
1575
+ onKeydown(event) {
1576
+ onTooltipKeydown(thumb, event);
1577
+ compatibilityOnKeydown?.(event);
1578
+ }
1579
+ });
1580
+ }));
1581
+ const nativeElements = computed(() => [lowerInputRef.value, upperInputRef.value]);
1582
+ function setInputRef(index, element) {
1583
+ const input = element instanceof HTMLInputElement ? element : null;
1584
+ if (index === 0) lowerInputRef.value = input;
1585
+ else upperInputRef.value = input;
1586
+ }
1587
+ function focus(options) {
1588
+ lowerInputRef.value?.focus(options);
1589
+ }
1368
1590
  const groupLabelledby = computed(() => {
1369
1591
  const values = [control.ariaLabelledby, slots.default ? labelId.value : void 0].flatMap((value) => value?.split(/\s+/) ?? []).filter(Boolean);
1370
1592
  return values.length ? Array.from(new Set(values)).join(" ") : void 0;
1371
1593
  });
1372
- const n34 = t8();
1373
- const n33 = child(n34, 1);
1374
- const n32 = next(child(n33), 1);
1375
- const n31 = next(n32, 3);
1376
- renderEffect(() => {
1377
- const _control = unref(control);
1378
- setClass(n34, [unref(rootClass), {
1379
- "rp-range-slider--custom-thumb": $slots.thumb,
1380
- "rp-range-slider--tooltips-overlapping": tooltipsOverlapping.value
1381
- }]);
1382
- setAttr(n34, "data-active-thumb", unref(activeThumb));
1383
- setAttr(n34, "data-disabled", _control.disabled || void 0);
1384
- setStyle(n34, unref(trackStyle));
1385
- setAttr(n34, "aria-labelledby", groupLabelledby.value);
1386
- setAttr(n34, "aria-describedby", _control.ariaDescribedby);
1594
+ __expose({
1595
+ nativeElements,
1596
+ focus
1387
1597
  });
1388
- setInsertionState(n34, 0, 0);
1598
+ const _setTemplateRef = createTemplateRefSetter();
1599
+ const n35 = t7();
1600
+ const n34 = child(n35, 1);
1601
+ const n11 = child(n34);
1602
+ const n33 = next(n11, 1);
1603
+ const n32 = next(n33, 3);
1604
+ renderEffect(() => setDynamicProps(n35, [rootAttrs.value]));
1605
+ setInsertionState(n35, 0, 0);
1389
1606
  createIf(() => $slots.default || $slots.value, () => {
1390
- const n10 = t2();
1607
+ const n10 = t1();
1391
1608
  setInsertionState(n10, null, 0);
1392
1609
  createIf(() => $slots.default, () => {
1393
1610
  const n5 = t0();
1394
- renderEffect(() => setProp(n5, "id", labelId.value));
1611
+ renderEffect(() => setDynamicProps(n5, [{ id: labelId.value }, unref(getPartAttrs)("label", { class: "rp-range-slider__label" })]));
1395
1612
  setInsertionState(n5, null, 0);
1396
1613
  createSlot("default", null, null, 1);
1397
1614
  return n5;
1398
1615
  });
1399
1616
  setInsertionState(n10, null, 1);
1400
1617
  createIf(() => $slots.value, () => {
1401
- const n9 = t1();
1618
+ const n9 = t0();
1619
+ renderEffect(() => setDynamicProps(n9, [unref(getPartAttrs)("value", { class: "rp-range-slider__value" }), { "aria-hidden": "true" }]));
1402
1620
  setInsertionState(n9, null, 0);
1403
1621
  createSlot("value", {
1404
1622
  value: () => unref(normalizedValue),
@@ -1409,61 +1627,86 @@ var range_slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
1409
1627
  });
1410
1628
  return n10;
1411
1629
  });
1412
- setInsertionState(n33, n32, 1);
1630
+ renderEffect(() => {
1631
+ const _getPartAttrs = unref(getPartAttrs);
1632
+ setDynamicProps(n34, [_getPartAttrs("track", { class: "rp-range-slider__track" })]);
1633
+ setDynamicProps(n11, [_getPartAttrs("range", { class: "rp-range-slider__bar" }), { "aria-hidden": "true" }]);
1634
+ });
1635
+ setInsertionState(n34, n33, 1);
1413
1636
  createFor(() => rangeSliderThumbs, (_for_item0, _for_key0) => {
1414
- const n13 = t3();
1415
- n13.$evtinput = createInvoker(($event) => unref(onInput)(_for_item0.value, $event));
1416
- on(n13, "focus", () => unref(onTooltipFocus)(_for_item0.value));
1417
- on(n13, "blur", () => unref(onTooltipBlur)(_for_item0.value));
1418
- n13.$evtkeydown = createInvoker(($event) => unref(onTooltipKeydown)(_for_item0.value, $event));
1419
- let _index, _control;
1637
+ const n14 = t2();
1420
1638
  renderEffect(() => {
1421
- _index = _for_key0.value;
1422
- _control = unref(control);
1423
- setProp(n13, "id", unref(nativeIds)[_index]);
1424
- setProp(n13, "name", unref(nativeNames)[_index]);
1425
- setValue(n13, unref(normalizedValue)[_index]);
1426
- setProp(n13, "min", unref(nativeMin)[_index]);
1427
- setProp(n13, "max", unref(nativeMax)[_index]);
1428
- setProp(n13, "step", unref(nativeStep));
1429
- setProp(n13, "orient", __props.orientation === "vertical" ? "vertical" : void 0);
1430
- setProp(n13, "disabled", _control.disabled || void 0);
1431
- setAttr(n13, "aria-label", unref(ariaLabels)[_index]);
1432
- setAttr(n13, "aria-describedby", _control.ariaDescribedby);
1433
- setAttr(n13, "aria-orientation", __props.orientation === "vertical" ? "vertical" : void 0);
1434
- setAttr(n13, "aria-valuetext", unref(ariaValueText)[_index]);
1639
+ const _nativeInputAttrs = nativeInputAttrs.value;
1640
+ const _index = _for_key0.value;
1641
+ const _control = unref(control);
1642
+ const _props = props;
1643
+ const _nativeInputAttrs_index = _nativeInputAttrs[_index];
1644
+ const _props_required_nativeInputAttrs_index_required = _props.required ?? _nativeInputAttrs_index?.required;
1645
+ setDynamicProps(n14, [_nativeInputAttrs_index, {
1646
+ id: unref(nativeIds)[_index],
1647
+ name: unref(nativeNames)[_index],
1648
+ form: _control.form ?? _nativeInputAttrs_index?.form,
1649
+ type: "range",
1650
+ value: unref(normalizedValue)[_index],
1651
+ min: unref(nativeMin)[_index],
1652
+ max: unref(nativeMax)[_index],
1653
+ step: unref(nativeStep),
1654
+ orient: __props.orientation === "vertical" ? "vertical" : void 0,
1655
+ disabled: _control.disabled || void 0,
1656
+ required: _props_required_nativeInputAttrs_index_required,
1657
+ "aria-label": unref(ariaLabels)[_index],
1658
+ "aria-describedby": _control.ariaDescribedby,
1659
+ "aria-orientation": __props.orientation === "vertical" ? "vertical" : void 0,
1660
+ "aria-valuetext": unref(ariaValueText)[_index],
1661
+ "aria-invalid": _props.invalid === void 0 ? _nativeInputAttrs_index?.["aria-invalid"] : _control.invalid || void 0,
1662
+ "aria-required": _props_required_nativeInputAttrs_index_required,
1663
+ "data-thumb": _for_item0.value,
1664
+ "data-disabled": unref(presence)(_control.disabled),
1665
+ "data-invalid": unref(presence)(_control.invalid)
1666
+ }]);
1667
+ _setTemplateRef(n14, (element) => setInputRef(_index, element), true);
1435
1668
  });
1436
- setClass(n13, ["rp-range-slider__native", `rp-range-slider__native--${_for_item0.value}`]);
1437
- return n13;
1669
+ return n14;
1438
1670
  }, (thumb, index) => thumb, 8);
1439
- setInsertionState(n33, n32, 2);
1671
+ setInsertionState(n34, n33, 2);
1440
1672
  createIf(() => unref(markItems).length, () => {
1441
- const n22 = t6();
1442
- setInsertionState(n22, null, 0);
1673
+ const n23 = t5();
1674
+ setInsertionState(n23, null, 0);
1443
1675
  createFor(() => unref(markItems), (_for_item0) => {
1444
- const n21 = t5();
1676
+ const n22 = t4();
1445
1677
  renderEffect(() => {
1446
1678
  const _mark = _for_item0.value;
1447
- setClassName(n21, _mark.filled ? 1 : 0, " rp-range-slider__mark--filled", "rp-range-slider__mark");
1448
- setStyle(n21, _mark.style);
1679
+ setDynamicProps(n22, [unref(getPartAttrs)("mark", {
1680
+ class: ["rp-range-slider__mark", { "rp-range-slider__mark--filled": _mark.filled }],
1681
+ style: _mark.style
1682
+ }), { "data-filled": unref(presence)(_mark.filled) }]);
1449
1683
  });
1450
- setInsertionState(n21, null, 1);
1684
+ setInsertionState(n22, null, 1);
1451
1685
  createIf(() => _for_item0.value.hasLabel, () => {
1452
- const n20 = t4();
1453
- const x20 = txt(n20);
1454
- renderEffect(() => setText(x20, toDisplayString(_for_item0.value.label)));
1455
- return n20;
1686
+ const n21 = t3();
1687
+ const x21 = txt(n21);
1688
+ renderEffect(() => {
1689
+ setDynamicProps(n21, [unref(getPartAttrs)("markLabel", { class: "rp-range-slider__mark-label" })]);
1690
+ setText(x21, toDisplayString(_for_item0.value.label));
1691
+ });
1692
+ return n21;
1456
1693
  });
1457
- return n21;
1694
+ return n22;
1458
1695
  }, (mark) => mark.key, 9);
1459
- return n22;
1696
+ return n23;
1460
1697
  });
1461
- setInsertionState(n31, null, 0);
1698
+ setInsertionState(n32, null, 0);
1462
1699
  createFor(() => rangeSliderThumbs, (_for_item0, _for_key0) => {
1463
- const n27 = t7();
1464
- const n26 = child(n27);
1465
- renderEffect(() => setAttr(n27, "data-range-slider-thumb", _for_item0.value));
1466
- setInsertionState(n26, null, 0);
1700
+ const n28 = t6();
1701
+ const n27 = child(n28);
1702
+ renderEffect(() => {
1703
+ const _thumb = _for_item0.value;
1704
+ setDynamicProps(n28, [unref(getPartAttrs)("thumb", { class: ["rp-range-slider__thumb", `rp-range-slider__thumb--${_thumb}`] }), {
1705
+ "data-range-slider-thumb": _thumb,
1706
+ "data-thumb": _thumb
1707
+ }]);
1708
+ });
1709
+ setInsertionState(n27, null, 0);
1467
1710
  createSlot("thumb", {
1468
1711
  thumb: () => _for_item0.value,
1469
1712
  index: () => _for_key0.value,
@@ -1471,10 +1714,9 @@ var range_slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
1471
1714
  formattedValue: () => unref(formattedValue)[_for_key0.value],
1472
1715
  percent: () => unref(valuePercent)[_for_key0.value]
1473
1716
  }, null, 1);
1474
- setClass(n27, ["rp-range-slider__thumb", `rp-range-slider__thumb--${_for_item0.value}`]);
1475
- return n27;
1717
+ return n28;
1476
1718
  }, (thumb, index) => thumb, 8);
1477
- setInsertionState(n31, null, 1);
1719
+ setInsertionState(n32, null, 1);
1478
1720
  createIf(() => unref(tooltipVisible), () => {
1479
1721
  const _on_update_overlapping = ($event) => tooltipsOverlapping.value = $event;
1480
1722
  return createComponent(range_slider_tooltip_default, {
@@ -1489,17 +1731,43 @@ var range_slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
1489
1731
  orientation: () => __props.orientation,
1490
1732
  placement: () => unref(tooltipPlacement),
1491
1733
  "value-percent": () => unref(valuePercent),
1734
+ "tooltip-class": () => __props.classNames?.tooltip,
1735
+ "tooltip-style": () => __props.styles?.tooltip,
1492
1736
  "onUpdate:overlapping": () => _on_update_overlapping
1493
1737
  });
1494
1738
  });
1495
- n33.$evtpointerdown = createInvoker((e) => unref(onTrackPointerDown)(e));
1496
- on(n33, "mouseenter", (e) => unref(onTooltipTrackMouseEnter)(e));
1497
- on(n33, "mouseleave", (e) => unref(onTooltipTrackMouseLeave)(e));
1498
- return n34;
1739
+ n34.$evtpointerdown = createInvoker((e) => unref(onTrackPointerDown)(e));
1740
+ on(n34, "mouseenter", (e) => unref(onTooltipTrackMouseEnter)(e));
1741
+ on(n34, "mouseleave", (e) => unref(onTooltipTrackMouseLeave)(e));
1742
+ return n35;
1499
1743
  }
1500
- }), [["__scopeId", "data-v-8dd81f55"]]);
1744
+ }), [["__scopeId", "data-v-b0e2c3da"]]);
1501
1745
  //#endregion
1502
1746
  //#region src/components/slider/types.ts
1747
+ var sliderParts = [
1748
+ "root",
1749
+ "label",
1750
+ "value",
1751
+ "track",
1752
+ "range",
1753
+ "input",
1754
+ "thumb",
1755
+ "mark",
1756
+ "markLabel",
1757
+ "tooltip"
1758
+ ];
1759
+ var rangeSliderParts = [
1760
+ "root",
1761
+ "label",
1762
+ "value",
1763
+ "track",
1764
+ "range",
1765
+ "input",
1766
+ "thumb",
1767
+ "mark",
1768
+ "markLabel",
1769
+ "tooltip"
1770
+ ];
1503
1771
  var sliderColors = componentColors;
1504
1772
  var sliderSizes = [
1505
1773
  "xs",
@@ -1510,4 +1778,4 @@ var sliderSizes = [
1510
1778
  ];
1511
1779
  var sliderOrientations = ["horizontal", "vertical"];
1512
1780
  //#endregion
1513
- export { slider_default as a, range_slider_default as i, sliderOrientations as n, sliderSizes as r, sliderColors as t };
1781
+ export { sliderSizes as a, sliderParts as i, sliderColors as n, range_slider_default as o, sliderOrientations as r, slider_default as s, rangeSliderParts as t };