ropav 0.1.6 → 0.1.8

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 (310) hide show
  1. package/README.md +7 -1
  2. package/dist/accordion.css +17 -17
  3. package/dist/accordion.js +123 -155
  4. package/dist/alert.css +18 -18
  5. package/dist/alert.js +10 -11
  6. package/dist/ancestry.js +136 -0
  7. package/dist/aria.js +14 -0
  8. package/dist/aspect-ratio.js +1 -1
  9. package/dist/attributes.js +9 -0
  10. package/dist/attributes2.js +29 -0
  11. package/dist/avatar.css +19 -19
  12. package/dist/avatar.js +9 -17
  13. package/dist/badge.css +16 -16
  14. package/dist/badge.js +5 -5
  15. package/dist/button-group.js +1 -1
  16. package/dist/button-link.js +4 -3
  17. package/dist/button.js +4 -3
  18. package/dist/button.scss_vue_type_style_index_0_src_true_lang.js +1 -1
  19. package/dist/calendar.css +173 -0
  20. package/dist/calendar.js +714 -0
  21. package/dist/calendar2.js +37 -0
  22. package/dist/card.js +1 -1
  23. package/dist/checkbox.css +32 -32
  24. package/dist/checkbox.js +22 -28
  25. package/dist/chevron-left.js +12 -0
  26. package/dist/collapse.css +6 -6
  27. package/dist/collapse.js +7 -6
  28. package/dist/collectionNavigation.js +2 -99
  29. package/dist/color-input.css +19 -19
  30. package/dist/color-input.js +14 -13
  31. package/dist/color-picker.css +40 -40
  32. package/dist/color-picker.js +247 -276
  33. package/dist/color-picker2.js +1 -9
  34. package/dist/color-swatch.css +4 -4
  35. package/dist/color-swatch.js +6 -8
  36. package/dist/color.js +5 -10
  37. package/dist/combobox.css +251 -0
  38. package/dist/combobox.js +410 -0
  39. package/dist/componentColors.js +125 -84
  40. package/dist/componentRef.js +26 -0
  41. package/dist/components/accordion/accordionContext.d.ts +3 -0
  42. package/dist/components/accordion/accordionModel.d.ts +14 -0
  43. package/dist/components/accordion/index.d.ts +2 -1
  44. package/dist/components/accordion/index.js +1 -1
  45. package/dist/components/accordion/types.d.ts +1 -2
  46. package/dist/components/accordion/useAccordion.d.ts +2 -2
  47. package/dist/components/accordion/useAccordionItem.d.ts +2 -0
  48. package/dist/components/calendar/calendar.d.ts +30 -0
  49. package/dist/components/calendar/calendarBehavior.d.ts +49 -0
  50. package/dist/components/calendar/index.d.ts +3 -0
  51. package/dist/components/calendar/index.js +3 -0
  52. package/dist/components/calendar/types.d.ts +53 -0
  53. package/dist/components/calendar/useCalendar.d.ts +24 -0
  54. package/dist/components/checkbox/useCheckbox.d.ts +1 -2
  55. package/dist/components/color-picker/index.js +2 -2
  56. package/dist/components/color-picker/types.d.ts +2 -2
  57. package/dist/components/color-picker/useColorPickerDrag.d.ts +1 -1
  58. package/dist/components/color-picker/useColorPickerSaturation.d.ts +22 -0
  59. package/dist/components/color-picker/useColorPickerSlider.d.ts +20 -0
  60. package/dist/components/color-picker/useColorPickerValue.d.ts +1 -1
  61. package/dist/components/combobox/combobox.d.ts +29 -0
  62. package/dist/components/combobox/comboboxModel.d.ts +4 -0
  63. package/dist/components/combobox/index.d.ts +3 -0
  64. package/dist/components/combobox/index.js +2 -0
  65. package/dist/components/combobox/types.d.ts +43 -0
  66. package/dist/components/combobox/useCombobox.d.ts +45 -0
  67. package/dist/components/date-picker/date-picker.d.ts +33 -0
  68. package/dist/components/date-picker/datePickerModel.d.ts +10 -0
  69. package/dist/components/date-picker/index.d.ts +4 -0
  70. package/dist/components/date-picker/index.js +2 -0
  71. package/dist/components/date-picker/types.d.ts +57 -0
  72. package/dist/components/date-picker/useDatePicker.d.ts +29 -0
  73. package/dist/components/date-picker/useDatePickerValueState.d.ts +21 -0
  74. package/dist/components/dialog/{dialog-core.d.ts → dialogContext.d.ts} +1 -5
  75. package/dist/components/dialog/useDialogContentInteractions.d.ts +18 -0
  76. package/dist/components/dialog/useDialogRootState.d.ts +19 -0
  77. package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
  78. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +1 -1
  79. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +1 -1
  80. package/dist/components/dropdown-menu/dropdown-menu-model.d.ts +8 -0
  81. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +2 -2
  82. package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
  83. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
  84. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
  85. package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
  86. package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +17 -30
  87. package/dist/components/dropdown-menu/dropdownMenuDataModel.d.ts +20 -0
  88. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -0
  89. package/dist/components/dropdown-menu/dropdownMenuInteractionNavigation.d.ts +24 -0
  90. package/dist/components/dropdown-menu/dropdownMenuInteractionRegistry.d.ts +42 -0
  91. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +114 -0
  92. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -11
  93. package/dist/components/dropdown-menu/useDropdownMenuContextTrigger.d.ts +9 -0
  94. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +35 -0
  95. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +24 -0
  96. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +6 -5
  97. package/dist/components/dropdown-menu/useDropdownMenuInteractionDismissal.d.ts +17 -0
  98. package/dist/components/dropdown-menu/useDropdownMenuInteractionKeyboard.d.ts +19 -0
  99. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +0 -1
  100. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +28 -0
  101. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +2 -2
  102. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +1 -1
  103. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +19 -0
  104. package/dist/components/dropzone/dropzone.d.ts +31 -0
  105. package/dist/components/dropzone/dropzoneModel.d.ts +16 -0
  106. package/dist/components/dropzone/index.d.ts +3 -0
  107. package/dist/components/dropzone/index.js +2 -0
  108. package/dist/components/dropzone/types.d.ts +56 -0
  109. package/dist/components/dropzone/useDropzone.d.ts +25 -0
  110. package/dist/components/file-input/file-input.d.ts +29 -0
  111. package/dist/components/file-input/index.d.ts +3 -0
  112. package/dist/components/file-input/index.js +2 -0
  113. package/dist/components/file-input/types.d.ts +37 -0
  114. package/dist/components/file-input/useFileInput.d.ts +15 -0
  115. package/dist/components/floating/index.js +2 -2
  116. package/dist/components/floating/useFloatingPosition.d.ts +1 -14
  117. package/dist/components/floating/useFloatingTargetLifecycle.d.ts +32 -0
  118. package/dist/components/floating/useHoverDisclosure.d.ts +10 -0
  119. package/dist/components/hover-card/hover-card.d.ts +25 -0
  120. package/dist/components/hover-card/index.d.ts +3 -0
  121. package/dist/components/hover-card/index.js +2 -0
  122. package/dist/components/hover-card/types.d.ts +45 -0
  123. package/dist/components/hover-card/useHoverCard.d.ts +22 -0
  124. package/dist/components/hover-card/useHoverCardDisclosure.d.ts +19 -0
  125. package/dist/components/multi-select/index.d.ts +3 -0
  126. package/dist/components/multi-select/index.js +2 -0
  127. package/dist/components/multi-select/multi-select.d.ts +30 -0
  128. package/dist/components/multi-select/multiSelectModel.d.ts +3 -0
  129. package/dist/components/multi-select/types.d.ts +49 -0
  130. package/dist/components/multi-select/useMultiSelect.d.ts +46 -0
  131. package/dist/components/number-input/numberInputModel.d.ts +15 -0
  132. package/dist/components/number-input/useNumberInput.d.ts +3 -19
  133. package/dist/components/pagination/index.d.ts +1 -1
  134. package/dist/components/pagination/index.js +1 -1
  135. package/dist/components/pagination/paginationModel.d.ts +4 -0
  136. package/dist/components/pagination/types.d.ts +15 -0
  137. package/dist/components/pagination/usePagination.d.ts +3 -19
  138. package/dist/components/popover/usePopoverBindings.d.ts +13 -0
  139. package/dist/components/progress/progressModel.d.ts +8 -0
  140. package/dist/components/progress/useProgress.d.ts +0 -6
  141. package/dist/components/radio/useRadio.d.ts +1 -2
  142. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  143. package/dist/components/scroll-area/scrollAreaModel.d.ts +64 -0
  144. package/dist/components/scroll-area/useScrollArea.d.ts +70 -53
  145. package/dist/components/scroll-area/{useScrollAreaPresentation.d.ts → useScrollAreaAttributes.d.ts} +37 -17
  146. package/dist/components/scroll-area/useScrollAreaDerivedState.d.ts +8 -0
  147. package/dist/components/scroll-area/useScrollAreaMeasurement.d.ts +35 -0
  148. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +11 -9
  149. package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
  150. package/dist/components/segmented-control/index.d.ts +3 -0
  151. package/dist/components/segmented-control/index.js +2 -0
  152. package/dist/components/segmented-control/segmented-control.d.ts +26 -0
  153. package/dist/components/segmented-control/types.d.ts +47 -0
  154. package/dist/components/segmented-control/useSegmentedControl.d.ts +15 -0
  155. package/dist/components/select/useSelect.d.ts +31 -19
  156. package/dist/components/slider/rangeSliderModel.d.ts +41 -0
  157. package/dist/components/slider/{sliderCore.d.ts → sliderModel.d.ts} +0 -1
  158. package/dist/components/slider/useRangeSlider.d.ts +9 -17
  159. package/dist/components/slider/useRangeSliderPointer.d.ts +1 -1
  160. package/dist/components/slider/useRangeSliderValueState.d.ts +40 -0
  161. package/dist/components/slider/useSlider.d.ts +7 -13
  162. package/dist/components/slider/useSliderPointerPreview.d.ts +22 -0
  163. package/dist/components/slider/useSliderTooltipState.d.ts +40 -0
  164. package/dist/components/slider/useSliderValueState.d.ts +33 -0
  165. package/dist/components/tags-input/index.d.ts +3 -0
  166. package/dist/components/tags-input/index.js +2 -0
  167. package/dist/components/tags-input/tags-input.d.ts +27 -0
  168. package/dist/components/tags-input/tagsInputModel.d.ts +12 -0
  169. package/dist/components/tags-input/types.d.ts +37 -0
  170. package/dist/components/tags-input/useTagsInput.d.ts +23 -0
  171. package/dist/components/teleport-provider/index.js +1 -1
  172. package/dist/components/teleport-provider/useTeleportTarget.d.ts +1 -2
  173. package/dist/components/toast/useToastLifecycle.d.ts +19 -0
  174. package/dist/components/tooltip/useTooltip.d.ts +1 -2
  175. package/dist/components/tooltip/useTooltipTargetBindings.d.ts +12 -0
  176. package/dist/css.js +12 -0
  177. package/dist/date-picker.css +49 -0
  178. package/dist/date-picker.js +809 -0
  179. package/dist/dialog.js +215 -218
  180. package/dist/direction.js +6 -0
  181. package/dist/dropdown-menu.css +21 -3
  182. package/dist/dropdown-menu.js +1626 -1185
  183. package/dist/dropzone.css +135 -0
  184. package/dist/dropzone.js +431 -0
  185. package/dist/events.js +59 -0
  186. package/dist/field.css +8 -8
  187. package/dist/field.js +13 -25
  188. package/dist/file-input.css +135 -0
  189. package/dist/file-input.js +198 -0
  190. package/dist/floatingOffset.js +11 -0
  191. package/dist/focus-trap.js +7 -5
  192. package/dist/focusNavigation.js +37 -0
  193. package/dist/hover-card.css +80 -0
  194. package/dist/hover-card.js +402 -0
  195. package/dist/icon-button.css +8 -8
  196. package/dist/icon-button.js +7 -6
  197. package/dist/index.d.ts +9 -0
  198. package/dist/index.js +20 -9
  199. package/dist/input.css +24 -24
  200. package/dist/input.js +19 -31
  201. package/dist/interactive.js +18 -0
  202. package/dist/internal/composables/useOverlayLayer.d.ts +12 -0
  203. package/dist/modal.js +2 -2
  204. package/dist/multi-select.css +316 -0
  205. package/dist/multi-select.js +481 -0
  206. package/dist/nativeChoice.js +169 -0
  207. package/dist/number-input.css +18 -18
  208. package/dist/number-input.js +44 -44
  209. package/dist/number.js +22 -0
  210. package/dist/overlay.js +3 -2
  211. package/dist/pagination.css +28 -28
  212. package/dist/pagination.js +66 -73
  213. package/dist/pointerSession.js +130 -0
  214. package/dist/popover.css +55 -37
  215. package/dist/popover.js +75 -101
  216. package/dist/progress.js +10 -13
  217. package/dist/query.js +40 -0
  218. package/dist/radio.css +18 -18
  219. package/dist/radio.js +30 -36
  220. package/dist/rafScheduler.js +34 -0
  221. package/dist/scroll-area.css +28 -28
  222. package/dist/scroll-area.js +540 -554
  223. package/dist/segmented-control.css +176 -0
  224. package/dist/segmented-control.js +382 -0
  225. package/dist/select.css +50 -48
  226. package/dist/select.js +131 -289
  227. package/dist/slider.css +191 -191
  228. package/dist/slider.js +720 -706
  229. package/dist/styles-api.d.ts +0 -1
  230. package/dist/styles-api.js +1 -4
  231. package/dist/switch.css +17 -17
  232. package/dist/switch.js +14 -15
  233. package/dist/tabs.css +43 -43
  234. package/dist/tabs.js +29 -56
  235. package/dist/tags-input.css +197 -0
  236. package/dist/tags-input.js +380 -0
  237. package/dist/text.js +17 -0
  238. package/dist/textarea.css +26 -26
  239. package/dist/textarea.js +21 -32
  240. package/dist/toast.css +26 -26
  241. package/dist/toast.js +141 -118
  242. package/dist/tooltip.css +12 -12
  243. package/dist/tooltip.js +64 -63
  244. package/dist/useCollapse.js +8 -11
  245. package/dist/useControlState.js +3 -6
  246. package/dist/useEditableOptionList.js +216 -0
  247. package/dist/useFlatOptionCollection.js +134 -0
  248. package/dist/useFloatingPosition.js +14 -40
  249. package/dist/useFloatingTargetLifecycle.js +127 -0
  250. package/dist/useFormControl.js +1 -0
  251. package/dist/useHoverDisclosure.js +561 -0
  252. package/dist/useNativeChoiceTransaction.js +46 -0
  253. package/dist/useNativeFileSelection.js +86 -0
  254. package/dist/useOverlayZIndex.js +246 -19
  255. package/dist/useTeleportTarget.js +3 -14
  256. package/dist/useTypeahead.js +94 -0
  257. package/dist/utils/aria.d.ts +3 -0
  258. package/dist/utils/attributes.d.ts +2 -0
  259. package/dist/utils/bem.d.ts +3 -0
  260. package/dist/utils/collectionNavigation.d.ts +2 -0
  261. package/dist/utils/color.d.ts +7 -0
  262. package/dist/{components/color-picker/color-picker-utils.d.ts → utils/colorPicker.d.ts} +5 -4
  263. package/dist/utils/componentColors.d.ts +7 -0
  264. package/dist/utils/css.d.ts +3 -0
  265. package/dist/utils/date.d.ts +13 -0
  266. package/dist/utils/dateAvailability.d.ts +7 -0
  267. package/dist/utils/dom/ancestry.d.ts +8 -0
  268. package/dist/utils/dom/attributes.d.ts +16 -0
  269. package/dist/utils/dom/componentRef.d.ts +4 -0
  270. package/dist/utils/dom/direction.d.ts +2 -0
  271. package/dist/utils/dom/events.d.ts +5 -0
  272. package/dist/utils/dom/files.d.ts +3 -0
  273. package/dist/utils/dom/focusNavigation.d.ts +7 -0
  274. package/dist/utils/dom/interactive.d.ts +2 -0
  275. package/dist/utils/dom/nativeChoice.d.ts +17 -0
  276. package/dist/utils/dom/pointerSession.d.ts +20 -0
  277. package/dist/utils/dom/query.d.ts +4 -0
  278. package/dist/utils/dom/scroll.d.ts +24 -0
  279. package/dist/utils/floatingOffset.d.ts +10 -0
  280. package/dist/utils/geometry.d.ts +14 -0
  281. package/dist/utils/indexPath.d.ts +6 -0
  282. package/dist/utils/number.d.ts +4 -0
  283. package/dist/utils/optionFilter.d.ts +5 -0
  284. package/dist/utils/rafScheduler.d.ts +4 -0
  285. package/dist/utils/text.d.ts +2 -0
  286. package/docs/code-architecture.md +118 -0
  287. package/docs/public-floating-api.md +13 -9
  288. package/docs/public-styles-api.md +25 -12
  289. package/package.json +51 -14
  290. package/src/styles/_mixins.scss +26 -0
  291. package/src/styles/styles-manifest.json +1 -2
  292. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +0 -3
  293. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -21
  294. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +0 -36
  295. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +0 -29
  296. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +0 -52
  297. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +0 -17
  298. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +0 -18
  299. package/dist/components/scroll-area/scrollAreaCore.d.ts +0 -30
  300. package/dist/components/scroll-area/useScrollAreaControls.d.ts +0 -25
  301. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +0 -38
  302. package/dist/components/select/useSelectNativeControl.d.ts +0 -9
  303. package/dist/components/select/useSelectNativeValue.d.ts +0 -9
  304. package/dist/floating.js +0 -415
  305. /package/dist/components/alert/{useAlertColor.d.ts → alertColor.d.ts} +0 -0
  306. /package/dist/components/avatar/{useAvatarColor.d.ts → avatarColor.d.ts} +0 -0
  307. /package/dist/components/badge/{useBadgeColor.d.ts → badgeColor.d.ts} +0 -0
  308. /package/dist/components/button/{useButtonColor.d.ts → buttonColor.d.ts} +0 -0
  309. /package/dist/components/color-swatch/{useColorSwatchColor.d.ts → colorSwatchColor.d.ts} +0 -0
  310. /package/dist/components/toast/{useToastColor.d.ts → toastColor.d.ts} +0 -0
package/dist/select.js CHANGED
@@ -1,126 +1,18 @@
1
1
  import './select.css';
2
- import { t as useControllableValue } from "./useControllableValue.js";
3
- import { n as useStylesApi, t as presence } from "./styles-api.js";
2
+ import { t as useStylesApi } from "./styles-api.js";
3
+ import { n as toPresenceAttribute } from "./attributes.js";
4
4
  import { t as bem } from "./bem.js";
5
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
6
  import { t as x_default } from "./x.js";
7
- import { i as useFormControl } from "./useFormControl.js";
8
7
  import { t as useControlState } from "./useControlState.js";
9
- import { n as getNextEnabledIndex, r as useTypeahead, t as getEnabledIndexes } from "./collectionNavigation.js";
8
+ import { t as resolveHTMLElementRef } from "./componentRef.js";
9
+ import { i as isNodeWithinElement } from "./events.js";
10
+ import { t as useFloatingPosition } from "./useFloatingPosition.js";
11
+ import { n as useClickOutside, r as chevrons_up_down_default, t as useFlatOptionCollection } from "./useFlatOptionCollection.js";
10
12
  import { t as scroll_area_default } from "./scroll-area.js";
11
- 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, shallowRef, template, toDisplayString, txt, unref, useId, watch, watchEffect, withModifiers, withVaporModifiers } from "vue";
12
- //#region ~icons/lucide/chevrons-up-down
13
- 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);
14
- function render(_ctx) {
15
- return t0$1();
16
- }
17
- var chevrons_up_down_default = markRaw(defineVaporComponent({
18
- name: "lucide-chevrons-up-down",
19
- render
20
- }));
21
- //#endregion
22
- //#region src/internal/composables/useClickOutside.ts
23
- function isEventInside(event, element) {
24
- if (event.composedPath().includes(element)) return true;
25
- const eventTarget = event.target;
26
- const NodeConstructor = element.ownerDocument.defaultView?.Node;
27
- return Boolean(eventTarget && NodeConstructor && eventTarget instanceof NodeConstructor && element.contains(eventTarget));
28
- }
29
- function useClickOutside(target, active, callback) {
30
- const targets = Array.isArray(target) ? target : [target];
31
- const listeningDocuments = /* @__PURE__ */ new Set();
32
- let stopWatch;
33
- function handler(event) {
34
- if (!targets.some((current) => {
35
- const element = current.value;
36
- return element ? isEventInside(event, element) : false;
37
- })) callback(event);
38
- }
39
- function detachListeners() {
40
- for (const document of listeningDocuments) document.removeEventListener("click", handler, true);
41
- listeningDocuments.clear();
42
- }
43
- function syncListeners() {
44
- detachListeners();
45
- if (!active.value) return;
46
- for (const current of targets) {
47
- const document = current.value?.ownerDocument;
48
- if (!document || listeningDocuments.has(document)) continue;
49
- document.addEventListener("click", handler, true);
50
- listeningDocuments.add(document);
51
- }
52
- }
53
- onMounted(() => {
54
- stopWatch = watch([active, ...targets], syncListeners, { immediate: true });
55
- });
56
- onBeforeUnmount(() => {
57
- stopWatch?.();
58
- detachListeners();
59
- });
60
- }
61
- //#endregion
62
- //#region src/internal/composables/useCollectionNavigation.ts
63
- function useCollectionNavigation(options) {
64
- const activeKey = shallowRef(null);
65
- const isDisabled = options.isDisabled ?? (() => false);
66
- const loop = options.loop ?? true;
67
- const activeIndex = computed(() => {
68
- if (activeKey.value == null) return -1;
69
- return options.items().findIndex((item) => options.getKey(item) === activeKey.value && !isDisabled(item));
70
- });
71
- const enabledIndexes = computed(() => getEnabledIndexes(options.items(), isDisabled));
72
- function resetActive() {
73
- activeKey.value = null;
74
- }
75
- function setActiveIndex(index) {
76
- const item = options.items()[index];
77
- if (!item || isDisabled(item)) return false;
78
- activeKey.value = options.getKey(item);
79
- return true;
80
- }
81
- function focusSelected() {
82
- const items = options.items();
83
- const selectedIndex = options.isSelected ? items.findIndex((item) => options.isSelected(item) && !isDisabled(item)) : -1;
84
- if (selectedIndex >= 0) setActiveIndex(selectedIndex);
85
- else focusFirst();
86
- }
87
- function focusFirst() {
88
- const first = enabledIndexes.value[0];
89
- if (first === void 0) resetActive();
90
- else setActiveIndex(first);
91
- }
92
- function focusLast() {
93
- const indexes = enabledIndexes.value;
94
- const last = indexes[indexes.length - 1];
95
- if (last === void 0) resetActive();
96
- else setActiveIndex(last);
97
- }
98
- function moveFocus(direction) {
99
- if (activeIndex.value < 0) {
100
- if (direction === 1) focusFirst();
101
- else focusLast();
102
- return;
103
- }
104
- const nextIndex = getNextEnabledIndex(options.items(), activeIndex.value, direction, isDisabled, loop);
105
- if (nextIndex === void 0) resetActive();
106
- else setActiveIndex(nextIndex);
107
- }
108
- watch(activeIndex, (index) => {
109
- if (activeKey.value != null && index < 0) resetActive();
110
- }, { flush: "sync" });
111
- return {
112
- activeKey,
113
- activeIndex,
114
- enabledIndexes,
115
- resetActive,
116
- setActiveIndex,
117
- focusSelected,
118
- focusFirst,
119
- focusLast,
120
- moveFocus
121
- };
122
- }
123
- //#endregion
13
+ import { i as useHiddenSelectChoiceTransaction, n as createSingleNativeChoiceAdapter } from "./nativeChoice.js";
14
+ import { t as useTypeahead } from "./useTypeahead.js";
15
+ import { VaporTransition, child, computed, createComponent, createFor, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, next, nextTick, on, ref, renderEffect, setDynamicProps, setInsertionState, setProp, setTemplateRefBinding, setText, setValue, template, toDisplayString, txt, unref, useId, withModifiers } from "vue";
124
16
  //#region src/components/select/useSelect.ts
125
17
  function hasSelectValue(value) {
126
18
  return value != null && value !== "";
@@ -129,36 +21,72 @@ function getSelectDisplayLabel(options, value) {
129
21
  if (!hasSelectValue(value)) return "";
130
22
  return options?.find((option) => option.value === value)?.label ?? "";
131
23
  }
132
- function getSelectActiveDescendantId(baseId, focusedIndex, isOpen) {
133
- return !isOpen || focusedIndex < 0 ? void 0 : `${baseId}-option-${focusedIndex}`;
24
+ function useSelectTransaction(props, emitUpdate, triggerRef) {
25
+ const transaction = useHiddenSelectChoiceTransaction({
26
+ value: {
27
+ modelValue: () => props.modelValue,
28
+ defaultValue: () => props.defaultValue ?? null,
29
+ onChange: emitUpdate
30
+ },
31
+ native: {
32
+ adapter: createSingleNativeChoiceAdapter({
33
+ emptyValue: null,
34
+ options: () => props.options
35
+ }),
36
+ attributes: () => props.inputAttrs,
37
+ className: "rp-select__native",
38
+ focusVisible: () => triggerRef.value?.focus(),
39
+ validationMessage: () => props.validationMessage
40
+ }
41
+ });
42
+ return {
43
+ nativeSelectRef: transaction.nativeSelectRef,
44
+ nativeInputAttrs: transaction.nativeSelectAttrs,
45
+ requestValueUpdate: transaction.requestValueUpdate,
46
+ selectedValue: transaction.value
47
+ };
134
48
  }
135
- function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null, triggerRef = ref(null)) {
49
+ function useSelect(props, emitUpdate) {
136
50
  const selectRef = ref(null);
51
+ const triggerRef = ref(null);
52
+ const dropdownRef = ref(null);
137
53
  const isOpen = ref(false);
54
+ const transaction = useSelectTransaction(props, emitUpdate, triggerRef);
55
+ const value = transaction.selectedValue;
138
56
  const selectId = useId();
139
57
  const popupId = `${selectId}-popup`;
140
58
  const listboxId = `${popupId}-viewport`;
141
59
  const control = useControlState(props);
142
60
  const visibleOptions = computed(() => props.options ?? []);
143
- const value = computed(getValue);
144
- const navigation = useCollectionNavigation({
61
+ const optionCollection = useFlatOptionCollection({
145
62
  items: () => visibleOptions.value,
63
+ baseId: selectId,
64
+ isOpen: () => isOpen.value,
65
+ collectionRef: selectRef,
146
66
  getKey: (item) => item.value,
147
67
  isDisabled: (item) => Boolean(item.disabled),
148
68
  isSelected: (item) => item.value === value.value
149
69
  });
150
- const focusedIndex = navigation.activeIndex;
70
+ const renderedOptions = optionCollection.options;
71
+ const focusedIndex = optionCollection.activeIndex;
151
72
  const selectedIndex = computed(() => visibleOptions.value.findIndex((option) => option.value === value.value && !option.disabled));
152
- const activeDescendantId = computed(() => getSelectActiveDescendantId(selectId, focusedIndex.value, isOpen.value));
73
+ const activeDescendantId = optionCollection.activeDescendantId;
74
+ const floating = useFloatingPosition({
75
+ reference: triggerRef,
76
+ floating: dropdownRef,
77
+ open: isOpen,
78
+ placement: "bottom-start"
79
+ });
80
+ const placementSide = computed(() => floating.actualPlacement.value.split("-")[0]);
153
81
  const typeahead = useTypeahead({
154
82
  items: () => visibleOptions.value,
155
83
  activeIndex: () => isOpen.value ? focusedIndex.value : selectedIndex.value,
156
84
  getKey: (item) => item.value,
157
85
  getTextValue: (item) => item.label,
158
86
  isDisabled: (item) => Boolean(item.disabled),
159
- onMatch(item, index) {
160
- if (isOpen.value) navigation.setActiveIndex(index);
161
- else if (item.value !== value.value) emitUpdate(item.value);
87
+ onMatch(item) {
88
+ if (isOpen.value) optionCollection.activate(item);
89
+ else if (item.value !== value.value) transaction.requestValueUpdate(item.value);
162
90
  }
163
91
  });
164
92
  const rootClass = computed(() => bem("rp-select", {
@@ -171,6 +99,11 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
171
99
  const hasValue = computed(() => hasSelectValue(value.value));
172
100
  const displayLabel = computed(() => getSelectDisplayLabel(props.options, value.value));
173
101
  const canClear = computed(() => Boolean(props.clearable && hasValue.value && !control.disabled));
102
+ function setDropdownElement(elementRef) {
103
+ resolveHTMLElementRef(elementRef, popupId, (resolved) => {
104
+ dropdownRef.value = resolved;
105
+ });
106
+ }
174
107
  function focusTrigger() {
175
108
  nextTick(() => triggerRef.value?.focus());
176
109
  }
@@ -178,11 +111,11 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
178
111
  if (control.disabled || isOpen.value) return;
179
112
  typeahead.reset();
180
113
  isOpen.value = true;
181
- navigation.focusSelected();
114
+ optionCollection.activate("selected");
182
115
  }
183
116
  function close() {
184
117
  isOpen.value = false;
185
- navigation.resetActive();
118
+ optionCollection.reset();
186
119
  typeahead.reset();
187
120
  }
188
121
  function toggle() {
@@ -194,22 +127,21 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
194
127
  }
195
128
  function selectOption(option) {
196
129
  if (option.disabled) return;
197
- emitUpdate(option.value);
130
+ transaction.requestValueUpdate(option.value);
198
131
  close();
199
132
  focusTrigger();
200
133
  }
201
134
  function clearSelection() {
202
135
  if (!canClear.value) return;
203
- emitUpdate(null);
136
+ transaction.requestValueUpdate(null);
204
137
  close();
205
138
  focusTrigger();
206
139
  }
207
- function onOptionMouseenter(option, index) {
208
- if (!option.disabled) navigation.setActiveIndex(index);
140
+ function onOptionMouseenter(option) {
141
+ optionCollection.activate(option);
209
142
  }
210
143
  function onFocusout(event) {
211
- const nextTarget = event.relatedTarget;
212
- if (nextTarget instanceof Node && selectRef.value?.contains(nextTarget)) return;
144
+ if (isNodeWithinElement(event.relatedTarget, selectRef.value)) return;
213
145
  close();
214
146
  }
215
147
  function selectFocusedOption() {
@@ -233,25 +165,25 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
233
165
  case "ArrowDown":
234
166
  e.preventDefault();
235
167
  if (!isOpen.value) open();
236
- else navigation.moveFocus(1);
168
+ else optionCollection.move(1);
237
169
  break;
238
170
  case "ArrowUp":
239
171
  e.preventDefault();
240
172
  if (!isOpen.value) {
241
173
  open();
242
- navigation.focusLast();
243
- } else navigation.moveFocus(-1);
174
+ optionCollection.activate("last");
175
+ } else optionCollection.move(-1);
244
176
  break;
245
177
  case "Home":
246
178
  if (isOpen.value) {
247
179
  e.preventDefault();
248
- navigation.focusFirst();
180
+ optionCollection.activate("first");
249
181
  }
250
182
  break;
251
183
  case "End":
252
184
  if (isOpen.value) {
253
185
  e.preventDefault();
254
- navigation.focusLast();
186
+ optionCollection.activate("last");
255
187
  }
256
188
  break;
257
189
  case "Delete":
@@ -268,30 +200,31 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
268
200
  break;
269
201
  }
270
202
  }
271
- watch(focusedIndex, (index) => {
272
- if (!isOpen.value || index < 0) return;
273
- nextTick(() => {
274
- if (!isOpen.value || focusedIndex.value !== index) return;
275
- selectRef.value?.querySelector(`[id="${selectId}-option-${index}"]`)?.scrollIntoView?.({ block: "nearest" });
276
- });
277
- });
278
203
  useClickOutside(selectRef, isOpen, close);
279
204
  return {
280
- selectRef,
281
- triggerRef,
205
+ templateRefs: {
206
+ select: selectRef,
207
+ trigger: triggerRef,
208
+ native: transaction.nativeSelectRef
209
+ },
210
+ nativeInputAttrs: transaction.nativeInputAttrs,
282
211
  isOpen,
283
- selectId,
284
212
  popupId,
285
213
  listboxId,
286
214
  control,
287
215
  visibleOptions,
216
+ renderedOptions,
288
217
  focusedIndex,
289
218
  activeDescendantId,
290
219
  rootClass,
220
+ floatingStyle: floating.floatingStyle,
221
+ actualPlacement: floating.actualPlacement,
222
+ placementSide,
291
223
  hasValue,
292
224
  displayLabel,
293
- value,
225
+ selectedValue: value,
294
226
  canClear,
227
+ setDropdownElement,
295
228
  toggle,
296
229
  selectOption,
297
230
  clearSelection,
@@ -301,108 +234,13 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
301
234
  };
302
235
  }
303
236
  //#endregion
304
- //#region src/components/select/useSelectNativeValue.ts
305
- function useSelectNativeValue(props, emitUpdate) {
306
- const nativeSelectRef = ref(null);
307
- const controllable = useControllableValue({
308
- modelValue: () => props.modelValue,
309
- defaultValue: () => props.defaultValue ?? null,
310
- onChange: emitUpdate
311
- });
312
- function getNativeValue(select) {
313
- if (select.selectedIndex <= 0) return null;
314
- return props.options?.[select.selectedIndex - 1]?.value ?? null;
315
- }
316
- function syncNativeSelection(value) {
317
- const select = nativeSelectRef.value;
318
- if (!select) return;
319
- select.selectedIndex = (props.options?.findIndex((option) => option.value === value) ?? -1) + 1;
320
- }
321
- function syncNativeDefaultSelection() {
322
- const select = nativeSelectRef.value;
323
- if (!select) return;
324
- const optionIndex = props.options?.findIndex((option) => option.value === controllable.initialValue) ?? -1;
325
- for (const [index, option] of [...select.options].entries()) option.defaultSelected = index === optionIndex + 1;
326
- }
327
- function requestValueUpdate(value) {
328
- const select = nativeSelectRef.value;
329
- if (!select) {
330
- controllable.setValue(value);
331
- return;
332
- }
333
- syncNativeSelection(value);
334
- select.dispatchEvent(new Event("input", {
335
- bubbles: true,
336
- cancelable: true
337
- }));
338
- select.dispatchEvent(new Event("change", {
339
- bubbles: true,
340
- cancelable: true
341
- }));
342
- if (controllable.isControlled.value) queueMicrotask(() => syncNativeSelection(controllable.value.value));
343
- }
344
- watchEffect(syncNativeDefaultSelection, { flush: "post" });
345
- watchEffect(() => syncNativeSelection(controllable.value.value), { flush: "post" });
346
- return {
347
- nativeSelectRef,
348
- controllable,
349
- getNativeValue,
350
- syncNativeSelection,
351
- requestValueUpdate
352
- };
353
- }
354
- //#endregion
355
- //#region src/components/select/useSelectNativeControl.ts
356
- function useSelectNativeControl(props, emitUpdate, triggerRef) {
357
- const nativeValue = useSelectNativeValue(props, emitUpdate);
358
- const { nativeSelectRef, controllable, getNativeValue, syncNativeSelection } = nativeValue;
359
- useFormControl({
360
- elements: () => [nativeSelectRef.value],
361
- isControlled: () => controllable.isControlled.value,
362
- validationMessage: () => props.validationMessage,
363
- readResetValue(elements) {
364
- controllable.resetValue(getNativeValue(elements[0]));
365
- },
366
- syncControlledValue() {
367
- syncNativeSelection(controllable.value.value);
368
- }
369
- });
370
- const nativeInputAttrs = computed(() => {
371
- const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, onChange: compatibilityOnChange, onInvalid: compatibilityOnInvalid, ...attrs } = props.inputAttrs ?? {};
372
- return {
373
- ...attrs,
374
- class: ["rp-select__native", compatibilityClass],
375
- style: compatibilityStyle,
376
- onInput(event) {
377
- controllable.setValue(getNativeValue(event.currentTarget));
378
- compatibilityOnInput?.(event);
379
- },
380
- onChange(event) {
381
- compatibilityOnChange?.(event);
382
- },
383
- onInvalid(event) {
384
- event.preventDefault();
385
- triggerRef.value?.focus();
386
- compatibilityOnInvalid?.(event);
387
- }
388
- };
389
- });
390
- return {
391
- nativeSelectRef,
392
- selectedValue: controllable.value,
393
- nativeInputAttrs,
394
- requestValueUpdate: nativeValue.requestValueUpdate
395
- };
396
- }
397
- //#endregion
398
237
  //#region src/components/select/select.vue?vue&type=script&setup=true&vapor=true&lang.ts
399
- var t0 = template("<option data-v-7eb8ed79> ");
400
- var t1 = template("<button data-v-7eb8ed79></button>");
238
+ var t0 = template("<option data-v-097d7f90> ");
239
+ var t1 = template("<button data-v-097d7f90></button>");
401
240
  var t2 = template("No options", 2);
402
- var t3 = template("<div data-v-7eb8ed79>");
403
- var t4 = template("<div data-v-7eb8ed79> ");
404
- var t5 = template("<div data-v-7eb8ed79><select data-v-7eb8ed79><option data-v-7eb8ed79 value></option></select><div data-v-7eb8ed79><span data-v-7eb8ed79> </span><span data-v-7eb8ed79><span data-v-7eb8ed79 class=rp-select__arrow aria-hidden=true>", 1);
405
- delegateEvents("mousedown", "click", "keydown");
241
+ var t3 = template("<div data-v-097d7f90>");
242
+ var t4 = template("<div data-v-097d7f90> ");
243
+ var t5 = template("<div data-v-097d7f90><select data-v-097d7f90><option data-v-097d7f90 value></option></select><div data-v-097d7f90><span data-v-097d7f90> </span><span data-v-097d7f90><span data-v-097d7f90 class=rp-select__arrow aria-hidden=true>", 1);
406
244
  //#endregion
407
245
  //#region src/components/select/select.vue
408
246
  var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -448,20 +286,26 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
448
286
  setup(__props, { expose: __expose, emit: __emit }) {
449
287
  const props = __props;
450
288
  const emit = __emit;
451
- const triggerRef = ref(null);
452
- const { nativeSelectRef, selectedValue, nativeInputAttrs, requestValueUpdate } = useSelectNativeControl(props, (value) => emit("update:modelValue", value), triggerRef);
453
- const { selectRef, isOpen, selectId, popupId, listboxId, control, visibleOptions, focusedIndex, activeDescendantId, rootClass, hasValue, displayLabel, canClear, toggle, selectOption, clearSelection, onOptionMouseenter, onFocusout, onTriggerKeydown } = useSelect(props, requestValueUpdate, () => selectedValue.value, triggerRef);
289
+ const { templateRefs, nativeInputAttrs, isOpen, popupId, listboxId, control, visibleOptions, renderedOptions, activeDescendantId, rootClass, floatingStyle, actualPlacement, placementSide, hasValue, displayLabel, canClear, setDropdownElement, toggle, selectOption, clearSelection, onOptionMouseenter, onFocusout, onTriggerKeydown } = useSelect(props, (value) => emit("update:modelValue", value));
454
290
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
455
291
  const rootAttrs = computed(() => getRootAttrs({
456
292
  class: rootClass.value,
457
293
  onFocusout,
458
294
  "data-state": isOpen.value ? "open" : "closed",
459
- "data-disabled": presence(control.disabled),
460
- "data-invalid": presence(control.invalid)
295
+ "data-disabled": toPresenceAttribute(control.disabled),
296
+ "data-invalid": toPresenceAttribute(control.invalid)
297
+ }));
298
+ const contentAttrs = computed(() => ({
299
+ ...getPartAttrs("content", {
300
+ class: "rp-select__dropdown",
301
+ style: floatingStyle.value
302
+ }),
303
+ "data-placement": actualPlacement.value,
304
+ "data-side": placementSide.value
461
305
  }));
462
306
  __expose({
463
- nativeElement: nativeSelectRef,
464
- focus: () => triggerRef.value?.focus()
307
+ nativeElement: templateRefs.native,
308
+ focus: () => templateRefs.trigger.value?.focus()
465
309
  });
466
310
  const _setTemplateRef = createTemplateRefSetter();
467
311
  const n26 = t5();
@@ -495,13 +339,13 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
495
339
  });
496
340
  return n2;
497
341
  }, (option) => option.value, 8);
498
- _setTemplateRef(n3, nativeSelectRef, null, "nativeSelectRef");
499
342
  const x4 = txt(n4);
500
343
  renderEffect(() => {
501
344
  const _control = unref(control);
502
345
  const _getPartAttrs = unref(getPartAttrs);
503
346
  const _isOpen = unref(isOpen);
504
347
  const _control_disabled = _control.disabled;
348
+ _setTemplateRef(n3, unref(templateRefs).native);
505
349
  setDynamicProps(n12, [
506
350
  { id: _control.id },
507
351
  _getPartAttrs("trigger", { class: "rp-select__trigger" }),
@@ -518,8 +362,8 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
518
362
  "aria-labelledby": _control.ariaLabelledby,
519
363
  "aria-describedby": _control.ariaDescribedby,
520
364
  "data-state": _isOpen ? "open" : "closed",
521
- "data-disabled": unref(presence)(_control.disabled),
522
- "data-invalid": unref(presence)(_control.invalid),
365
+ "data-disabled": unref(toPresenceAttribute)(_control.disabled),
366
+ "data-invalid": unref(toPresenceAttribute)(_control.invalid),
523
367
  tabindex: _control_disabled ? -1 : 0
524
368
  }
525
369
  ]);
@@ -540,19 +384,19 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
540
384
  ]));
541
385
  setInsertionState(n8, null, 0);
542
386
  createComponent(unref(x_default));
543
- n8.$evtmousedown = withVaporModifiers(() => {}, ["prevent"]);
387
+ on(n8, "mousedown", withModifiers(() => {}, ["prevent"]));
544
388
  on(n8, "click", withModifiers((e) => unref(clearSelection)(e), ["stop"]));
545
389
  return n8;
546
390
  });
547
391
  setInsertionState(n10, null, 0);
548
392
  createComponent(unref(chevrons_up_down_default));
549
- n12.$evtclick = createInvoker((e) => unref(toggle)(e));
550
- n12.$evtkeydown = createInvoker((e) => unref(onTriggerKeydown)(e));
551
- _setTemplateRef(n12, triggerRef, null, "triggerRef");
393
+ on(n12, "click", (e) => unref(toggle)(e));
394
+ on(n12, "keydown", (e) => unref(onTriggerKeydown)(e));
395
+ setTemplateRefBinding(n12, () => unref(templateRefs).trigger);
552
396
  setInsertionState(n26, null, 2);
553
397
  createComponent(VaporTransition, { name: "rp-select-dropdown" }, extend(() => {
554
398
  return createIf(() => unref(isOpen), () => {
555
- return createComponent(scroll_area_default, { $: [() => unref(getPartAttrs)("content", { class: "rp-select__dropdown" }), {
399
+ const n24 = createComponent(scroll_area_default, { $: [() => contentAttrs.value, {
556
400
  id: () => unref(popupId),
557
401
  embedded: "",
558
402
  type: "auto",
@@ -571,43 +415,41 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
571
415
  return t2();
572
416
  }, 1);
573
417
  return n20;
574
- }, null, 129), createFor(() => unref(visibleOptions), (_for_item0, _for_key0) => {
418
+ }, null, 129), createFor(() => unref(renderedOptions), (_for_item0) => {
575
419
  const n23 = t4();
576
420
  const x23 = txt(n23);
577
- n23.$evtclick = createInvoker(() => unref(selectOption)(_for_item0.value));
578
- on(n23, "mouseenter", () => unref(onOptionMouseenter)(_for_item0.value, _for_key0.value));
421
+ on(n23, "click", () => unref(selectOption)(_for_item0.value.option));
422
+ on(n23, "mouseenter", () => unref(onOptionMouseenter)(_for_item0.value.option));
579
423
  renderEffect(() => {
580
- const _index = _for_key0.value;
581
- const _option = _for_item0.value;
582
- const _selectedValue = unref(selectedValue);
583
- const _presence = unref(presence);
584
- const _focusedIndex = unref(focusedIndex);
585
- const _option_value = _option.value;
586
- const _option_disabled = _option.disabled;
424
+ const _optionState = _for_item0.value;
425
+ const _optionState_selected = _optionState.selected;
426
+ const _optionState_disabled = _optionState.disabled;
587
427
  setDynamicProps(n23, [{
588
428
  role: "option",
589
- id: `${unref(selectId)}-option-${_index}`,
590
- "aria-selected": _option_value === _selectedValue,
591
- "aria-disabled": _option_disabled || void 0,
592
- "data-selected": _presence(_option_value === _selectedValue),
593
- "data-highlighted": _presence(_index === _focusedIndex),
594
- "data-disabled": _presence(_option.disabled)
429
+ id: _optionState.id,
430
+ "aria-selected": _optionState_selected,
431
+ "aria-disabled": _optionState_disabled || void 0,
432
+ "data-selected": unref(toPresenceAttribute)(_optionState.selected),
433
+ "data-highlighted": unref(toPresenceAttribute)(_optionState.active),
434
+ "data-disabled": unref(toPresenceAttribute)(_optionState.disabled)
595
435
  }, unref(getPartAttrs)("option", { class: ["rp-select__option", {
596
- "rp-select__option--selected": _option_value === _selectedValue,
597
- "rp-select__option--focused": _index === _focusedIndex,
598
- "rp-select__option--disabled": _option_disabled
436
+ "rp-select__option--selected": _optionState_selected,
437
+ "rp-select__option--focused": _optionState.active,
438
+ "rp-select__option--disabled": _optionState_disabled
599
439
  }] })]);
600
- setText(x23, toDisplayString(_option.label));
440
+ setText(x23, toDisplayString(_optionState.option.label));
601
441
  });
602
442
  return n23;
603
- }, (option, index) => option.value, 40)];
443
+ }, (optionState) => optionState.option.value, 40)];
604
444
  }, { _: 8 }));
445
+ setTemplateRefBinding(n24, () => setDropdownElement, _setTemplateRef, void 0, "setDropdownElement");
446
+ return n24;
605
447
  }, null, 129);
606
448
  }, { _: 8 }));
607
- _setTemplateRef(n26, selectRef, null, "selectRef");
449
+ setTemplateRefBinding(n26, () => unref(templateRefs).select);
608
450
  return n26;
609
451
  }
610
- }), [["__scopeId", "data-v-7eb8ed79"]]);
452
+ }), [["__scopeId", "data-v-097d7f90"]]);
611
453
  //#endregion
612
454
  //#region src/components/select/types.ts
613
455
  var selectParts = [