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/select.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import './select.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, t as presence } from "./styles-api.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
- import { t as useClickOutside } from "./useClickOutside.js";
7
- import { VaporTransition, child, computed, createComponent, createFor, createIf, createInvoker, createSelector, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, extend, markRaw, next, nextTick, on, ref, renderEffect, setAttr, setClass, setClassName, setInsertionState, setProp, setText, setValue, template, toDisplayString, txt, unref, useId, withModifiers, withVaporModifiers } from "vue";
8
+ import { VaporTransition, child, computed, createComponent, createFor, createIf, createInvoker, createSlot, createTemplateRefSetter, defineVaporComponent, delegateEvents, extend, markRaw, next, nextTick, on, onBeforeUnmount, onMounted, ref, renderEffect, setDynamicProps, setInsertionState, setProp, setText, setValue, template, toDisplayString, txt, unref, useId, watch, watchEffect, withModifiers, withVaporModifiers } from "vue";
8
9
  //#region ~icons/lucide/chevrons-up-down
9
10
  var t0$1 = template("<svg viewBox=\"0 0 24 24\"width=1.2em height=1.2em><path fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 d=\"m7 15l5 5l5-5M7 9l5-5l5 5\">", 3, 1);
10
11
  function render(_ctx) {
@@ -15,6 +16,28 @@ var chevrons_up_down_default = markRaw(defineVaporComponent({
15
16
  render
16
17
  }));
17
18
  //#endregion
19
+ //#region src/composables/useClickOutside.ts
20
+ function useClickOutside(target, active, callback) {
21
+ let isListening = false;
22
+ let stopWatch;
23
+ function handler(e) {
24
+ if (!(Array.isArray(target) ? target : [target]).some((current) => current.value?.contains(e.target))) callback(e);
25
+ }
26
+ function setListening(value) {
27
+ if (typeof document === "undefined" || value === isListening) return;
28
+ isListening = value;
29
+ if (value) document.addEventListener("click", handler, true);
30
+ else document.removeEventListener("click", handler, true);
31
+ }
32
+ onMounted(() => {
33
+ stopWatch = watch(active, setListening, { immediate: true });
34
+ });
35
+ onBeforeUnmount(() => {
36
+ stopWatch?.();
37
+ setListening(false);
38
+ });
39
+ }
40
+ //#endregion
18
41
  //#region src/composables/useListNavigation.ts
19
42
  function useListNavigation(options) {
20
43
  const localFocusedIndex = ref(-1);
@@ -88,7 +111,7 @@ function getSelectDisplayLabel(options, value) {
88
111
  function getSelectActiveDescendantId(baseId, focusedIndex) {
89
112
  return focusedIndex < 0 ? void 0 : `${baseId}-option-${focusedIndex}`;
90
113
  }
91
- function useSelect(props, emitUpdate) {
114
+ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null) {
92
115
  const selectRef = ref(null);
93
116
  const triggerRef = ref(null);
94
117
  const isOpen = ref(false);
@@ -96,9 +119,10 @@ function useSelect(props, emitUpdate) {
96
119
  const listboxId = `${selectId}-listbox`;
97
120
  const control = useControlState(props);
98
121
  const visibleOptions = computed(() => props.options ?? []);
122
+ const value = computed(getValue);
99
123
  const navigation = useListNavigation({
100
124
  items: () => visibleOptions.value,
101
- isSelected: (item) => item.value === props.modelValue
125
+ isSelected: (item) => item.value === value.value
102
126
  });
103
127
  const focusedIndex = navigation.focusedIndex;
104
128
  const activeDescendantId = computed(() => getSelectActiveDescendantId(selectId, focusedIndex.value));
@@ -109,8 +133,8 @@ function useSelect(props, emitUpdate) {
109
133
  disabled: control.disabled,
110
134
  invalid: control.invalid
111
135
  }));
112
- const hasValue = computed(() => hasSelectValue(props.modelValue));
113
- const displayLabel = computed(() => getSelectDisplayLabel(props.options, props.modelValue));
136
+ const hasValue = computed(() => hasSelectValue(value.value));
137
+ const displayLabel = computed(() => getSelectDisplayLabel(props.options, value.value));
114
138
  const canClear = computed(() => Boolean(props.clearable && hasValue.value && !control.disabled));
115
139
  function focusTrigger() {
116
140
  nextTick(() => triggerRef.value?.focus());
@@ -215,6 +239,7 @@ function useSelect(props, emitUpdate) {
215
239
  rootClass,
216
240
  hasValue,
217
241
  displayLabel,
242
+ value,
218
243
  canClear,
219
244
  toggle,
220
245
  selectOption,
@@ -225,23 +250,25 @@ function useSelect(props, emitUpdate) {
225
250
  }
226
251
  //#endregion
227
252
  //#region src/components/select/select.vue?vue&type=script&setup=true&vapor=true&lang.ts
228
- var t0 = template("<input data-v-abf4b97a type=hidden>");
229
- var t1 = template("<button data-v-abf4b97a type=button class=rp-select__clear tabindex=-1></button>");
253
+ var t0 = template("<option data-v-5c4e4e6a> ");
254
+ var t1 = template("<button data-v-5c4e4e6a></button>");
230
255
  var t2 = template("No options", 2);
231
- var t3 = template("<div data-v-abf4b97a class=rp-select__empty>");
232
- var t4 = template("<div data-v-abf4b97a role=option> ");
233
- var t5 = template("<div data-v-abf4b97a class=rp-select__dropdown role=listbox>");
234
- var t6 = template("<div data-v-abf4b97a><div data-v-abf4b97a class=rp-select__trigger role=combobox aria-haspopup=listbox><span data-v-abf4b97a> </span><span data-v-abf4b97a class=rp-select__indicator><span data-v-abf4b97a class=rp-select__arrow aria-hidden=true>", 1);
256
+ var t3 = template("<div data-v-5c4e4e6a>");
257
+ var t4 = template("<div data-v-5c4e4e6a> ");
258
+ var t5 = template("<div data-v-5c4e4e6a><select data-v-5c4e4e6a><option data-v-5c4e4e6a value></option></select><div data-v-5c4e4e6a><span data-v-5c4e4e6a> </span><span data-v-5c4e4e6a><span data-v-5c4e4e6a class=rp-select__arrow aria-hidden=true>", 1);
235
259
  delegateEvents("mousedown", "click", "keydown");
236
260
  //#endregion
237
261
  //#region src/components/select/select.vue
238
262
  var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
239
263
  name: "RpSelect",
264
+ inheritAttrs: false,
240
265
  __name: "select",
241
266
  props: {
242
267
  id: {},
243
268
  name: {},
244
- modelValue: {},
269
+ form: {},
270
+ modelValue: { default: void 0 },
271
+ defaultValue: { default: null },
245
272
  options: { default: () => [] },
246
273
  size: {},
247
274
  radius: {},
@@ -265,118 +292,254 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
265
292
  },
266
293
  ariaLabel: {},
267
294
  describedby: {},
268
- labelledby: {}
295
+ labelledby: {},
296
+ inputAttrs: {},
297
+ validationMessage: {},
298
+ classNames: {},
299
+ styles: {}
269
300
  },
270
301
  emits: ["update:modelValue"],
271
- setup(__props, { emit: __emit }) {
302
+ setup(__props, { expose: __expose, emit: __emit }) {
272
303
  const props = __props;
273
304
  const emit = __emit;
274
- const { selectRef, triggerRef, isOpen, selectId, listboxId, control, visibleOptions, focusedIndex, activeDescendantId, rootClass, hasValue, displayLabel, canClear, toggle, selectOption, clearSelection, onOptionMouseenter, onTriggerKeydown } = useSelect(props, (value) => {
275
- emit("update:modelValue", value);
305
+ const nativeSelectRef = ref(null);
306
+ const controllable = useControllableValue({
307
+ modelValue: () => props.modelValue,
308
+ defaultValue: () => props.defaultValue,
309
+ onChange: (value) => emit("update:modelValue", value)
310
+ });
311
+ function getNativeValue(select) {
312
+ if (select.selectedIndex <= 0) return null;
313
+ return props.options?.[select.selectedIndex - 1]?.value ?? null;
314
+ }
315
+ function syncNativeSelection(value) {
316
+ const select = nativeSelectRef.value;
317
+ if (!select) return;
318
+ select.selectedIndex = (props.options?.findIndex((option) => option.value === value) ?? -1) + 1;
319
+ }
320
+ function syncNativeDefaultSelection() {
321
+ const select = nativeSelectRef.value;
322
+ if (!select) return;
323
+ const optionIndex = props.options?.findIndex((option) => option.value === controllable.initialValue) ?? -1;
324
+ for (const [index, option] of [...select.options].entries()) option.defaultSelected = index === optionIndex + 1;
325
+ }
326
+ function requestValueUpdate(value) {
327
+ const select = nativeSelectRef.value;
328
+ if (!select) {
329
+ controllable.setValue(value);
330
+ return;
331
+ }
332
+ syncNativeSelection(value);
333
+ select.dispatchEvent(new Event("input", {
334
+ bubbles: true,
335
+ cancelable: true
336
+ }));
337
+ select.dispatchEvent(new Event("change", {
338
+ bubbles: true,
339
+ cancelable: true
340
+ }));
341
+ if (controllable.isControlled.value) queueMicrotask(() => syncNativeSelection(controllable.value.value));
342
+ }
343
+ const { selectRef, triggerRef, isOpen, selectId, listboxId, control, visibleOptions, focusedIndex, activeDescendantId, rootClass, hasValue, displayLabel, canClear, toggle, selectOption, clearSelection, onOptionMouseenter, onTriggerKeydown } = useSelect(props, requestValueUpdate, () => controllable.value.value);
344
+ useFormControl({
345
+ elements: () => [nativeSelectRef.value],
346
+ isControlled: () => controllable.isControlled.value,
347
+ validationMessage: () => props.validationMessage,
348
+ readResetValue(elements) {
349
+ controllable.resetValue(getNativeValue(elements[0]));
350
+ },
351
+ syncControlledValue() {
352
+ syncNativeSelection(controllable.value.value);
353
+ }
354
+ });
355
+ watchEffect(syncNativeDefaultSelection, { flush: "post" });
356
+ watchEffect(() => syncNativeSelection(controllable.value.value), { flush: "post" });
357
+ const nativeInputAttrs = computed(() => {
358
+ const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, onChange: compatibilityOnChange, onInvalid: compatibilityOnInvalid, ...attrs } = props.inputAttrs ?? {};
359
+ return {
360
+ ...attrs,
361
+ class: ["rp-select__native", compatibilityClass],
362
+ style: compatibilityStyle,
363
+ onInput(event) {
364
+ controllable.setValue(getNativeValue(event.currentTarget));
365
+ compatibilityOnInput?.(event);
366
+ },
367
+ onChange(event) {
368
+ compatibilityOnChange?.(event);
369
+ },
370
+ onInvalid(event) {
371
+ event.preventDefault();
372
+ triggerRef.value?.focus();
373
+ compatibilityOnInvalid?.(event);
374
+ }
375
+ };
376
+ });
377
+ const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
378
+ const rootAttrs = computed(() => getRootAttrs({
379
+ class: rootClass.value,
380
+ "data-state": isOpen.value ? "open" : "closed",
381
+ "data-disabled": presence(control.disabled),
382
+ "data-invalid": presence(control.invalid)
383
+ }));
384
+ __expose({
385
+ nativeElement: nativeSelectRef,
386
+ focus: () => triggerRef.value?.focus()
276
387
  });
277
388
  const _setTemplateRef = createTemplateRefSetter();
278
- const n25 = t6();
279
- const n11 = child(n25, 1);
280
- const n3 = child(n11);
281
- const n10 = next(n3, 1);
282
- const n9 = child(n10, 1);
283
- renderEffect(() => setClass(n25, unref(rootClass)));
284
- setInsertionState(n25, 0, 0);
285
- createIf(() => __props.name, () => {
389
+ const n26 = t5();
390
+ const n3 = child(n26);
391
+ const n12 = next(n3, 1);
392
+ const n4 = child(n12);
393
+ const n11 = next(n4, 1);
394
+ const n10 = child(n11, 1);
395
+ renderEffect(() => {
396
+ const _nativeInputAttrs = nativeInputAttrs.value;
397
+ const _control = unref(control);
398
+ setDynamicProps(n26, [rootAttrs.value]);
399
+ setDynamicProps(n3, [_nativeInputAttrs, {
400
+ name: __props.name,
401
+ form: _control.form ?? _nativeInputAttrs.form,
402
+ disabled: _control.disabled || void 0,
403
+ required: _control.required || void 0,
404
+ tabindex: "-1",
405
+ "aria-hidden": "true"
406
+ }]);
407
+ });
408
+ setInsertionState(n3, null, 1);
409
+ createFor(() => unref(visibleOptions), (_for_item0) => {
286
410
  const n2 = t0();
411
+ const x2 = txt(n2);
287
412
  renderEffect(() => {
288
- setProp(n2, "name", __props.name);
289
- setValue(n2, __props.modelValue ?? "");
290
- setProp(n2, "disabled", unref(control).disabled || void 0);
413
+ const _option = _for_item0.value;
414
+ setValue(n2, String(_option.value));
415
+ setProp(n2, "disabled", _option.disabled || void 0);
416
+ setText(x2, toDisplayString(_option.label));
291
417
  });
292
418
  return n2;
293
- });
294
- const x3 = txt(n3);
419
+ }, (option) => option.value, 8);
420
+ _setTemplateRef(n3, nativeSelectRef, null, "nativeSelectRef");
421
+ const x4 = txt(n4);
295
422
  renderEffect(() => {
296
423
  const _control = unref(control);
424
+ const _getPartAttrs = unref(getPartAttrs);
297
425
  const _isOpen = unref(isOpen);
298
426
  const _control_disabled = _control.disabled;
299
- setProp(n11, "id", _control.id);
300
- setAttr(n11, "aria-expanded", _isOpen);
301
- setAttr(n11, "aria-activedescendant", unref(activeDescendantId));
302
- setAttr(n11, "aria-controls", unref(listboxId));
303
- setAttr(n11, "aria-disabled", _control_disabled || void 0);
304
- setAttr(n11, "aria-invalid", _control.invalid || void 0);
305
- setAttr(n11, "aria-required", _control.required || void 0);
306
- setAttr(n11, "aria-label", __props.ariaLabel || void 0);
307
- setAttr(n11, "aria-labelledby", _control.ariaLabelledby);
308
- setAttr(n11, "aria-describedby", _control.ariaDescribedby);
309
- setAttr(n11, "data-state", _isOpen ? "open" : "closed");
310
- setAttr(n11, "data-disabled", _control_disabled || void 0);
311
- setProp(n11, "tabindex", _control_disabled ? -1 : 0);
312
- setClassName(n3, !unref(hasValue) ? 1 : 0, " rp-select__placeholder", "rp-select__value");
313
- setText(x3, toDisplayString(unref(displayLabel) || __props.placeholder));
427
+ setDynamicProps(n12, [
428
+ { id: _control.id },
429
+ _getPartAttrs("trigger", { class: "rp-select__trigger" }),
430
+ {
431
+ role: "combobox",
432
+ "aria-expanded": _isOpen,
433
+ "aria-haspopup": "listbox",
434
+ "aria-activedescendant": unref(activeDescendantId),
435
+ "aria-controls": unref(listboxId),
436
+ "aria-disabled": _control_disabled || void 0,
437
+ "aria-invalid": _control.invalid || void 0,
438
+ "aria-required": _control.required || void 0,
439
+ "aria-label": __props.ariaLabel || void 0,
440
+ "aria-labelledby": _control.ariaLabelledby,
441
+ "aria-describedby": _control.ariaDescribedby,
442
+ "data-state": _isOpen ? "open" : "closed",
443
+ "data-disabled": unref(presence)(_control.disabled),
444
+ "data-invalid": unref(presence)(_control.invalid),
445
+ tabindex: _control_disabled ? -1 : 0
446
+ }
447
+ ]);
448
+ setDynamicProps(n4, [_getPartAttrs("value", { class: ["rp-select__value", { "rp-select__placeholder": !unref(hasValue) }] })]);
449
+ setText(x4, toDisplayString(unref(displayLabel) || __props.placeholder));
450
+ setDynamicProps(n11, [_getPartAttrs("indicator", { class: "rp-select__indicator" })]);
314
451
  });
315
- setInsertionState(n10, 0, 0);
452
+ setInsertionState(n11, 0, 0);
316
453
  createIf(() => unref(canClear), () => {
317
- const n7 = t1();
318
- renderEffect(() => setAttr(n7, "aria-label", __props.clearLabel));
319
- setInsertionState(n7, null, 0);
454
+ const n8 = t1();
455
+ renderEffect(() => setDynamicProps(n8, [
456
+ { type: "button" },
457
+ unref(getPartAttrs)("clear", { class: "rp-select__clear" }),
458
+ {
459
+ "aria-label": __props.clearLabel,
460
+ tabindex: "-1"
461
+ }
462
+ ]));
463
+ setInsertionState(n8, null, 0);
320
464
  createComponent(unref(x_default));
321
- n7.$evtmousedown = withVaporModifiers(() => {}, ["prevent"]);
322
- on(n7, "click", withModifiers((e) => unref(clearSelection)(e), ["stop"]));
323
- return n7;
465
+ n8.$evtmousedown = withVaporModifiers(() => {}, ["prevent"]);
466
+ on(n8, "click", withModifiers((e) => unref(clearSelection)(e), ["stop"]));
467
+ return n8;
324
468
  });
325
- setInsertionState(n9, null, 0);
469
+ setInsertionState(n10, null, 0);
326
470
  createComponent(unref(chevrons_up_down_default));
327
- n11.$evtclick = createInvoker((e) => unref(toggle)(e));
328
- n11.$evtkeydown = createInvoker((e) => unref(onTriggerKeydown)(e));
329
- _setTemplateRef(n11, triggerRef, null, "triggerRef");
330
- setInsertionState(n25, null, 2);
471
+ n12.$evtclick = createInvoker((e) => unref(toggle)(e));
472
+ n12.$evtkeydown = createInvoker((e) => unref(onTriggerKeydown)(e));
473
+ _setTemplateRef(n12, triggerRef, null, "triggerRef");
474
+ setInsertionState(n26, null, 2);
331
475
  createComponent(VaporTransition, { name: "rp-select-dropdown" }, extend(() => {
332
476
  return createIf(() => unref(isOpen), () => {
333
- const n23 = t5();
334
- renderEffect(() => setProp(n23, "id", unref(listboxId)));
335
- setInsertionState(n23, null, 0);
477
+ const n24 = t3();
478
+ renderEffect(() => setDynamicProps(n24, [unref(getPartAttrs)("content", { class: "rp-select__dropdown" }), {
479
+ role: "listbox",
480
+ id: unref(listboxId),
481
+ "data-state": unref(isOpen) ? "open" : "closed"
482
+ }]));
483
+ setInsertionState(n24, null, 0);
336
484
  createIf(() => unref(visibleOptions).length === 0, () => {
337
- const n19 = t3();
338
- setInsertionState(n19, null, 0);
485
+ const n20 = t3();
486
+ renderEffect(() => setDynamicProps(n20, [unref(getPartAttrs)("empty", { class: "rp-select__empty" })]));
487
+ setInsertionState(n20, null, 0);
339
488
  createSlot("empty", null, () => {
340
489
  return t2();
341
490
  }, 1);
342
- return n19;
491
+ return n20;
343
492
  });
344
- setInsertionState(n23, null, 1);
345
- const _selector20 = createSelector(() => __props.modelValue);
493
+ setInsertionState(n24, null, 1);
346
494
  createFor(() => unref(visibleOptions), (_for_item0, _for_key0) => {
347
- const n22 = t4();
348
- const x22 = txt(n22);
349
- n22.$evtclick = createInvoker(() => unref(selectOption)(_for_item0.value));
350
- on(n22, "mouseenter", () => unref(onOptionMouseenter)(_for_item0.value, _for_key0.value));
351
- let _index, _option, _modelValue, _option_disabled, _option_value;
495
+ const n23 = t4();
496
+ const x23 = txt(n23);
497
+ n23.$evtclick = createInvoker(() => unref(selectOption)(_for_item0.value));
498
+ on(n23, "mouseenter", () => unref(onOptionMouseenter)(_for_item0.value, _for_key0.value));
352
499
  renderEffect(() => {
353
- _index = _for_key0.value;
354
- _option = _for_item0.value;
355
- _modelValue = __props.modelValue;
356
- _option_disabled = _option.disabled;
357
- _option_value = _option.value;
358
- setProp(n22, "id", `${unref(selectId)}-option-${_index}`);
359
- setAttr(n22, "aria-disabled", _option_disabled || void 0);
360
- setAttr(n22, "data-selected", _option_value === _modelValue || void 0);
361
- setAttr(n22, "data-disabled", _option_disabled || void 0);
362
- setClass(n22, ["rp-select__option", {
363
- "rp-select__option--selected": _option_value === _modelValue,
364
- "rp-select__option--focused": _index === unref(focusedIndex),
500
+ const _index = _for_key0.value;
501
+ const _option = _for_item0.value;
502
+ const _controllable = unref(controllable);
503
+ const _presence = unref(presence);
504
+ const _focusedIndex = unref(focusedIndex);
505
+ const _option_value = _option.value;
506
+ const _controllable_value = _controllable.value;
507
+ const _option_disabled = _option.disabled;
508
+ setDynamicProps(n23, [{
509
+ role: "option",
510
+ id: `${unref(selectId)}-option-${_index}`,
511
+ "aria-selected": _option_value === _controllable_value.value,
512
+ "aria-disabled": _option_disabled || void 0,
513
+ "data-selected": _presence(_option_value === _controllable_value.value),
514
+ "data-highlighted": _presence(_index === _focusedIndex),
515
+ "data-disabled": _presence(_option.disabled)
516
+ }, unref(getPartAttrs)("option", { class: ["rp-select__option", {
517
+ "rp-select__option--selected": _option_value === _controllable_value.value,
518
+ "rp-select__option--focused": _index === _focusedIndex,
365
519
  "rp-select__option--disabled": _option_disabled
366
- }]);
367
- setText(x22, toDisplayString(_option.label));
368
- });
369
- _selector20(_option.value, () => {
370
- setAttr(n22, "aria-selected", _option.value === _modelValue);
520
+ }] })]);
521
+ setText(x23, toDisplayString(_option.label));
371
522
  });
372
- return n22;
373
- }, (option, index) => option.value, 8).onReset(_selector20.reset);
374
- return n23;
523
+ return n23;
524
+ }, (option, index) => option.value, 8);
525
+ return n24;
375
526
  }, null, 129);
376
527
  }, { _: 8 }));
377
- _setTemplateRef(n25, selectRef, null, "selectRef");
378
- return n25;
528
+ _setTemplateRef(n26, selectRef, null, "selectRef");
529
+ return n26;
379
530
  }
380
- }), [["__scopeId", "data-v-abf4b97a"]]);
531
+ }), [["__scopeId", "data-v-5c4e4e6a"]]);
532
+ //#endregion
533
+ //#region src/components/select/types.ts
534
+ var selectParts = [
535
+ "root",
536
+ "trigger",
537
+ "value",
538
+ "indicator",
539
+ "clear",
540
+ "content",
541
+ "option",
542
+ "empty"
543
+ ];
381
544
  //#endregion
382
- export { select_default as t };
545
+ export { select_default as n, selectParts as t };