ropav 0.1.6 → 0.1.7

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 (208) hide show
  1. package/README.md +6 -0
  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/aria.js +14 -0
  7. package/dist/aspect-ratio.js +1 -1
  8. package/dist/attributes.js +9 -0
  9. package/dist/attributes2.js +29 -0
  10. package/dist/avatar.css +19 -19
  11. package/dist/avatar.js +9 -17
  12. package/dist/badge.css +16 -16
  13. package/dist/badge.js +5 -5
  14. package/dist/button-group.js +1 -1
  15. package/dist/button-link.js +4 -3
  16. package/dist/button.js +4 -3
  17. package/dist/button.scss_vue_type_style_index_0_src_true_lang.js +1 -1
  18. package/dist/card.js +1 -1
  19. package/dist/checkbox.css +32 -32
  20. package/dist/checkbox.js +22 -28
  21. package/dist/collapse.css +6 -6
  22. package/dist/collapse.js +7 -6
  23. package/dist/collectionNavigation.js +2 -99
  24. package/dist/color-input.css +19 -19
  25. package/dist/color-input.js +14 -13
  26. package/dist/color-picker.css +40 -40
  27. package/dist/color-picker.js +221 -200
  28. package/dist/color-picker2.js +1 -9
  29. package/dist/color-swatch.css +4 -4
  30. package/dist/color-swatch.js +6 -8
  31. package/dist/color.js +5 -10
  32. package/dist/componentColors.js +125 -84
  33. package/dist/componentRef.js +26 -0
  34. package/dist/components/accordion/accordionContext.d.ts +3 -0
  35. package/dist/components/accordion/accordionModel.d.ts +14 -0
  36. package/dist/components/accordion/index.d.ts +2 -1
  37. package/dist/components/accordion/index.js +1 -1
  38. package/dist/components/accordion/types.d.ts +1 -2
  39. package/dist/components/accordion/useAccordion.d.ts +2 -2
  40. package/dist/components/accordion/useAccordionItem.d.ts +2 -0
  41. package/dist/components/checkbox/useCheckbox.d.ts +1 -2
  42. package/dist/components/color-picker/index.js +2 -2
  43. package/dist/components/color-picker/types.d.ts +2 -2
  44. package/dist/components/color-picker/useColorPickerSaturation.d.ts +22 -0
  45. package/dist/components/color-picker/useColorPickerSlider.d.ts +20 -0
  46. package/dist/components/color-picker/useColorPickerValue.d.ts +1 -1
  47. package/dist/components/dialog/{dialog-core.d.ts → dialogContext.d.ts} +1 -5
  48. package/dist/components/dialog/useDialogContentInteractions.d.ts +18 -0
  49. package/dist/components/dialog/useDialogRootState.d.ts +19 -0
  50. package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +1 -1
  51. package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +1 -1
  52. package/dist/components/dropdown-menu/dropdown-menu-model.d.ts +8 -0
  53. package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +2 -2
  54. package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
  55. package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
  56. package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +16 -18
  57. package/dist/components/dropdown-menu/dropdownMenuDataModel.d.ts +20 -0
  58. package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -0
  59. package/dist/components/dropdown-menu/dropdownMenuInteractionNavigation.d.ts +24 -0
  60. package/dist/components/dropdown-menu/dropdownMenuInteractionRegistry.d.ts +42 -0
  61. package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +85 -0
  62. package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -11
  63. package/dist/components/dropdown-menu/useDropdownMenuContextTrigger.d.ts +9 -0
  64. package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +34 -0
  65. package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +22 -0
  66. package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +6 -5
  67. package/dist/components/dropdown-menu/useDropdownMenuInteractionDismissal.d.ts +17 -0
  68. package/dist/components/dropdown-menu/useDropdownMenuInteractionKeyboard.d.ts +19 -0
  69. package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +0 -1
  70. package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +29 -0
  71. package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +2 -2
  72. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +1 -1
  73. package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +19 -0
  74. package/dist/components/floating/hoverDisclosureInteractionModel.d.ts +42 -0
  75. package/dist/components/floating/index.js +1 -1
  76. package/dist/components/floating/useFloatingPosition.d.ts +0 -1
  77. package/dist/components/floating/useHoverDisclosureInteractions.d.ts +32 -0
  78. package/dist/components/floating/useHoverDisclosureOpenState.d.ts +25 -0
  79. package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +27 -0
  80. package/dist/components/number-input/numberInputModel.d.ts +15 -0
  81. package/dist/components/number-input/useNumberInput.d.ts +3 -17
  82. package/dist/components/pagination/index.d.ts +1 -1
  83. package/dist/components/pagination/index.js +1 -1
  84. package/dist/components/pagination/paginationModel.d.ts +4 -0
  85. package/dist/components/pagination/types.d.ts +15 -0
  86. package/dist/components/pagination/usePagination.d.ts +3 -19
  87. package/dist/components/popover/usePopoverBindings.d.ts +16 -0
  88. package/dist/components/progress/progressModel.d.ts +8 -0
  89. package/dist/components/progress/useProgress.d.ts +0 -6
  90. package/dist/components/radio/useRadio.d.ts +1 -2
  91. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  92. package/dist/components/scroll-area/scrollAreaModel.d.ts +64 -0
  93. package/dist/components/scroll-area/useScrollArea.d.ts +70 -53
  94. package/dist/components/scroll-area/{useScrollAreaPresentation.d.ts → useScrollAreaAttributes.d.ts} +37 -17
  95. package/dist/components/scroll-area/useScrollAreaDerivedState.d.ts +8 -0
  96. package/dist/components/scroll-area/useScrollAreaMeasurement.d.ts +35 -0
  97. package/dist/components/scroll-area/useScrollAreaPointer.d.ts +10 -8
  98. package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
  99. package/dist/components/slider/rangeSliderModel.d.ts +41 -0
  100. package/dist/components/slider/{sliderCore.d.ts → sliderModel.d.ts} +0 -1
  101. package/dist/components/slider/useRangeSlider.d.ts +8 -16
  102. package/dist/components/slider/useRangeSliderValueState.d.ts +40 -0
  103. package/dist/components/slider/useSlider.d.ts +7 -13
  104. package/dist/components/slider/useSliderPointerPreview.d.ts +22 -0
  105. package/dist/components/slider/useSliderTooltipState.d.ts +40 -0
  106. package/dist/components/slider/useSliderValueState.d.ts +33 -0
  107. package/dist/components/teleport-provider/index.js +1 -1
  108. package/dist/components/teleport-provider/useTeleportTarget.d.ts +1 -2
  109. package/dist/components/toast/useToastLifecycle.d.ts +19 -0
  110. package/dist/components/tooltip/useTooltip.d.ts +1 -2
  111. package/dist/css.js +12 -0
  112. package/dist/dialog.js +226 -218
  113. package/dist/dropdown-menu.js +1458 -1097
  114. package/dist/events.js +59 -0
  115. package/dist/field.css +8 -8
  116. package/dist/field.js +13 -25
  117. package/dist/floating.js +548 -319
  118. package/dist/floatingOffset.js +11 -0
  119. package/dist/focus-trap.js +7 -5
  120. package/dist/focusNavigation.js +37 -0
  121. package/dist/icon-button.css +8 -8
  122. package/dist/icon-button.js +7 -6
  123. package/dist/index.js +6 -6
  124. package/dist/input.css +24 -24
  125. package/dist/input.js +19 -31
  126. package/dist/interactive.js +18 -0
  127. package/dist/modal.js +1 -1
  128. package/dist/number-input.css +18 -18
  129. package/dist/number-input.js +14 -12
  130. package/dist/number.js +22 -0
  131. package/dist/overlay.js +3 -2
  132. package/dist/pagination.css +28 -28
  133. package/dist/pagination.js +65 -63
  134. package/dist/pointer.js +9 -0
  135. package/dist/popover.css +34 -34
  136. package/dist/popover.js +85 -86
  137. package/dist/progress.js +10 -13
  138. package/dist/query.js +40 -0
  139. package/dist/radio.css +18 -18
  140. package/dist/radio.js +30 -36
  141. package/dist/rafScheduler.js +34 -0
  142. package/dist/scroll-area.css +28 -28
  143. package/dist/scroll-area.js +512 -516
  144. package/dist/select.css +45 -45
  145. package/dist/select.js +36 -44
  146. package/dist/slider.css +191 -191
  147. package/dist/slider.js +691 -618
  148. package/dist/styles-api.d.ts +0 -1
  149. package/dist/styles-api.js +1 -4
  150. package/dist/switch.css +17 -17
  151. package/dist/switch.js +14 -15
  152. package/dist/tabs.css +43 -43
  153. package/dist/tabs.js +29 -56
  154. package/dist/text.js +17 -0
  155. package/dist/textarea.css +26 -26
  156. package/dist/textarea.js +21 -32
  157. package/dist/toast.css +26 -26
  158. package/dist/toast.js +141 -118
  159. package/dist/tooltip.css +12 -12
  160. package/dist/tooltip.js +36 -40
  161. package/dist/useCollapse.js +8 -11
  162. package/dist/useControlState.js +3 -6
  163. package/dist/useFloatingPosition.js +140 -10
  164. package/dist/useOverlayZIndex.js +1 -5
  165. package/dist/useTeleportTarget.js +3 -14
  166. package/dist/useTypeahead.js +94 -0
  167. package/dist/utils/aria.d.ts +3 -0
  168. package/dist/utils/attributes.d.ts +2 -0
  169. package/dist/utils/bem.d.ts +3 -0
  170. package/dist/utils/collectionNavigation.d.ts +2 -0
  171. package/dist/utils/color.d.ts +7 -0
  172. package/dist/{components/color-picker/color-picker-utils.d.ts → utils/colorPicker.d.ts} +5 -4
  173. package/dist/utils/componentColors.d.ts +7 -0
  174. package/dist/utils/css.d.ts +3 -0
  175. package/dist/utils/dom/ancestry.d.ts +7 -0
  176. package/dist/utils/dom/attributes.d.ts +16 -0
  177. package/dist/utils/dom/componentRef.d.ts +4 -0
  178. package/dist/utils/dom/events.d.ts +5 -0
  179. package/dist/utils/dom/focusNavigation.d.ts +7 -0
  180. package/dist/utils/dom/interactive.d.ts +2 -0
  181. package/dist/utils/dom/pointer.d.ts +2 -0
  182. package/dist/utils/dom/query.d.ts +4 -0
  183. package/dist/utils/dom/scroll.d.ts +23 -0
  184. package/dist/utils/floatingOffset.d.ts +10 -0
  185. package/dist/utils/geometry.d.ts +14 -0
  186. package/dist/utils/indexPath.d.ts +6 -0
  187. package/dist/utils/number.d.ts +4 -0
  188. package/dist/utils/rafScheduler.d.ts +4 -0
  189. package/dist/utils/text.d.ts +2 -0
  190. package/docs/code-architecture.md +118 -0
  191. package/docs/public-floating-api.md +6 -5
  192. package/package.json +13 -12
  193. package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +0 -3
  194. package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -21
  195. package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +0 -36
  196. package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +0 -29
  197. package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +0 -52
  198. package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +0 -17
  199. package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +0 -18
  200. package/dist/components/scroll-area/scrollAreaCore.d.ts +0 -30
  201. package/dist/components/scroll-area/useScrollAreaControls.d.ts +0 -25
  202. package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +0 -38
  203. /package/dist/components/alert/{useAlertColor.d.ts → alertColor.d.ts} +0 -0
  204. /package/dist/components/avatar/{useAvatarColor.d.ts → avatarColor.d.ts} +0 -0
  205. /package/dist/components/badge/{useBadgeColor.d.ts → badgeColor.d.ts} +0 -0
  206. /package/dist/components/button/{useButtonColor.d.ts → buttonColor.d.ts} +0 -0
  207. /package/dist/components/color-swatch/{useColorSwatchColor.d.ts → colorSwatchColor.d.ts} +0 -0
  208. /package/dist/components/toast/{useToastColor.d.ts → toastColor.d.ts} +0 -0
package/dist/select.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-select[data-v-7eb8ed79] {
2
+ .rp-select[data-v-b42a5b2f] {
3
3
  --_rp-select-height: var(--rp-size-control-md);
4
4
  --_rp-select-padding-x: calc(var(--rp-size-control-md) / 3);
5
5
  --_rp-select-font-size: var(--rp-font-size-md);
@@ -15,7 +15,7 @@
15
15
  font-weight: var(--rp-font-weight-normal);
16
16
  line-height: 1;
17
17
  }
18
- .rp-select__native[data-v-7eb8ed79] {
18
+ .rp-select__native[data-v-b42a5b2f] {
19
19
  position: absolute;
20
20
  width: 1px;
21
21
  height: 1px;
@@ -26,42 +26,42 @@
26
26
  white-space: nowrap;
27
27
  border-width: 0;
28
28
  }
29
- .rp-select--size-xs[data-v-7eb8ed79] {
29
+ .rp-select--size-xs[data-v-b42a5b2f] {
30
30
  --_rp-select-height: var(--rp-size-control-xs);
31
31
  --_rp-select-padding-x: calc(var(--rp-size-control-xs) / 3);
32
32
  --_rp-select-font-size: var(--rp-font-size-xs);
33
33
  --_rp-select-option-min-height: calc(var(--rp-size-control-xs) - var(--rp-spacing-2));
34
34
  --_rp-select-option-padding-y: calc(var(--rp-spacing-1) / 2);
35
35
  }
36
- .rp-select--size-sm[data-v-7eb8ed79] {
36
+ .rp-select--size-sm[data-v-b42a5b2f] {
37
37
  --_rp-select-height: var(--rp-size-control-sm);
38
38
  --_rp-select-padding-x: calc(var(--rp-size-control-sm) / 3);
39
39
  --_rp-select-font-size: var(--rp-font-size-sm);
40
40
  --_rp-select-option-min-height: calc(var(--rp-size-control-sm) - var(--rp-spacing-3));
41
41
  --_rp-select-option-padding-y: var(--rp-spacing-1);
42
42
  }
43
- .rp-select--size-md[data-v-7eb8ed79] {
43
+ .rp-select--size-md[data-v-b42a5b2f] {
44
44
  --_rp-select-height: var(--rp-size-control-md);
45
45
  --_rp-select-padding-x: calc(var(--rp-size-control-md) / 3);
46
46
  --_rp-select-font-size: var(--rp-font-size-md);
47
47
  --_rp-select-option-min-height: calc(var(--rp-size-control-md) - var(--rp-spacing-4));
48
48
  --_rp-select-option-padding-y: var(--rp-spacing-1);
49
49
  }
50
- .rp-select--size-lg[data-v-7eb8ed79] {
50
+ .rp-select--size-lg[data-v-b42a5b2f] {
51
51
  --_rp-select-height: var(--rp-size-control-lg);
52
52
  --_rp-select-padding-x: calc(var(--rp-size-control-lg) / 3);
53
53
  --_rp-select-font-size: var(--rp-font-size-lg);
54
54
  --_rp-select-option-min-height: calc(var(--rp-size-control-lg) - var(--rp-spacing-5));
55
55
  --_rp-select-option-padding-y: calc(var(--rp-spacing-3) / 2);
56
56
  }
57
- .rp-select--size-xl[data-v-7eb8ed79] {
57
+ .rp-select--size-xl[data-v-b42a5b2f] {
58
58
  --_rp-select-height: var(--rp-size-control-xl);
59
59
  --_rp-select-padding-x: calc(var(--rp-size-control-xl) / 3);
60
60
  --_rp-select-font-size: var(--rp-font-size-xl);
61
61
  --_rp-select-option-min-height: calc(var(--rp-size-control-xl) - var(--rp-spacing-6));
62
62
  --_rp-select-option-padding-y: var(--rp-spacing-2);
63
63
  }
64
- html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[data-v-7eb8ed79] {
64
+ html.dark .rp-select[data-v-b42a5b2f], [data-rp-color-scheme=dark] .rp-select[data-v-b42a5b2f] {
65
65
  --_rp-select-invalid-border: var(--rp-color-red-light-color);
66
66
  --_rp-select-invalid-ring: color-mix(
67
67
  in srgb,
@@ -70,11 +70,11 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
70
70
  );
71
71
  --_rp-select-option-focused-bg: var(--rp-color-default-hover);
72
72
  }
73
- .rp-select--disabled[data-v-7eb8ed79] {
73
+ .rp-select--disabled[data-v-b42a5b2f] {
74
74
  opacity: var(--rp-opacity-disabled);
75
75
  cursor: not-allowed;
76
76
  }
77
- .rp-select__trigger[data-v-7eb8ed79] {
77
+ .rp-select__trigger[data-v-b42a5b2f] {
78
78
  display: inline-flex;
79
79
  align-items: center;
80
80
  justify-content: center;
@@ -91,81 +91,81 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
91
91
  transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
92
92
  gap: var(--rp-spacing-2);
93
93
  }
94
- .rp-select__trigger[data-v-7eb8ed79]:hover {
94
+ .rp-select__trigger[data-v-b42a5b2f]:hover {
95
95
  border-color: var(--rp-color-control-border-hover);
96
96
  }
97
- .rp-select__trigger[data-v-7eb8ed79]:focus-visible {
97
+ .rp-select__trigger[data-v-b42a5b2f]:focus-visible {
98
98
  outline: none;
99
99
  border-color: var(--rp-color-control-border-focus);
100
100
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
101
101
  }
102
- .rp-select--radius-xs[data-v-7eb8ed79] {
102
+ .rp-select--radius-xs[data-v-b42a5b2f] {
103
103
  --_rp-select-radius: var(--rp-radius-xs);
104
104
  }
105
- .rp-select--radius-sm[data-v-7eb8ed79] {
105
+ .rp-select--radius-sm[data-v-b42a5b2f] {
106
106
  --_rp-select-radius: var(--rp-radius-sm);
107
107
  }
108
- .rp-select--radius-md[data-v-7eb8ed79] {
108
+ .rp-select--radius-md[data-v-b42a5b2f] {
109
109
  --_rp-select-radius: var(--rp-radius-md);
110
110
  }
111
- .rp-select--radius-lg[data-v-7eb8ed79] {
111
+ .rp-select--radius-lg[data-v-b42a5b2f] {
112
112
  --_rp-select-radius: var(--rp-radius-lg);
113
113
  }
114
- .rp-select--radius-xl[data-v-7eb8ed79] {
114
+ .rp-select--radius-xl[data-v-b42a5b2f] {
115
115
  --_rp-select-radius: var(--rp-radius-xl);
116
116
  }
117
- .rp-select--open .rp-select__trigger[data-v-7eb8ed79] {
117
+ .rp-select--open .rp-select__trigger[data-v-b42a5b2f] {
118
118
  border-color: var(--rp-color-control-border-focus);
119
119
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
120
120
  }
121
- .rp-select--invalid .rp-select__trigger[data-v-7eb8ed79] {
121
+ .rp-select--invalid .rp-select__trigger[data-v-b42a5b2f] {
122
122
  border-color: var(--_rp-select-invalid-border);
123
123
  }
124
- .rp-select--invalid .rp-select__trigger[data-v-7eb8ed79]:focus-visible, .rp-select--open.rp-select--invalid .rp-select__trigger[data-v-7eb8ed79] {
124
+ .rp-select--invalid .rp-select__trigger[data-v-b42a5b2f]:focus-visible, .rp-select--open.rp-select--invalid .rp-select__trigger[data-v-b42a5b2f] {
125
125
  border-color: var(--_rp-select-invalid-border);
126
126
  box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-select-invalid-ring);
127
127
  }
128
- .rp-select__value[data-v-7eb8ed79] {
128
+ .rp-select__value[data-v-b42a5b2f] {
129
129
  flex: 1;
130
130
  overflow: hidden;
131
131
  text-overflow: ellipsis;
132
132
  white-space: nowrap;
133
133
  color: var(--rp-color-control-fg);
134
134
  }
135
- .rp-select__placeholder[data-v-7eb8ed79] {
135
+ .rp-select__placeholder[data-v-b42a5b2f] {
136
136
  color: var(--rp-color-control-placeholder);
137
137
  }
138
- .rp-select__indicator[data-v-7eb8ed79] {
138
+ .rp-select__indicator[data-v-b42a5b2f] {
139
139
  display: inline-flex;
140
140
  align-items: center;
141
141
  width: 1em;
142
142
  height: 1em;
143
143
  flex-shrink: 0;
144
144
  }
145
- .rp-select__indicator svg[data-v-7eb8ed79] {
145
+ .rp-select__indicator svg[data-v-b42a5b2f] {
146
146
  width: 100%;
147
147
  height: 100%;
148
148
  }
149
- .rp-select__indicator[data-v-7eb8ed79] {
149
+ .rp-select__indicator[data-v-b42a5b2f] {
150
150
  position: relative;
151
151
  color: var(--rp-color-control-icon);
152
152
  transform: translateX(var(--rp-spacing-1));
153
153
  }
154
- .rp-select__arrow[data-v-7eb8ed79] {
154
+ .rp-select__arrow[data-v-b42a5b2f] {
155
155
  display: inline-flex;
156
156
  align-items: center;
157
157
  width: 1em;
158
158
  height: 1em;
159
159
  flex-shrink: 0;
160
160
  }
161
- .rp-select__arrow svg[data-v-7eb8ed79] {
161
+ .rp-select__arrow svg[data-v-b42a5b2f] {
162
162
  width: 100%;
163
163
  height: 100%;
164
164
  }
165
- .rp-select__arrow[data-v-7eb8ed79] {
165
+ .rp-select__arrow[data-v-b42a5b2f] {
166
166
  transition: opacity var(--rp-transition-fast);
167
167
  }
168
- .rp-select__clear[data-v-7eb8ed79] {
168
+ .rp-select__clear[data-v-b42a5b2f] {
169
169
  padding: 0;
170
170
  font: inherit;
171
171
  background: none;
@@ -177,11 +177,11 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
177
177
  height: 1em;
178
178
  flex-shrink: 0;
179
179
  }
180
- .rp-select__clear svg[data-v-7eb8ed79] {
180
+ .rp-select__clear svg[data-v-b42a5b2f] {
181
181
  width: 100%;
182
182
  height: 100%;
183
183
  }
184
- .rp-select__clear[data-v-7eb8ed79] {
184
+ .rp-select__clear[data-v-b42a5b2f] {
185
185
  position: absolute;
186
186
  inset: 0;
187
187
  z-index: 1;
@@ -190,17 +190,17 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
190
190
  pointer-events: none;
191
191
  transition: color var(--rp-transition-fast), opacity var(--rp-transition-fast);
192
192
  }
193
- .rp-select__clear[data-v-7eb8ed79]:hover {
193
+ .rp-select__clear[data-v-b42a5b2f]:hover {
194
194
  color: var(--rp-color-control-fg);
195
195
  }
196
- .rp-select__trigger:hover .rp-select__clear[data-v-7eb8ed79] {
196
+ .rp-select__trigger:hover .rp-select__clear[data-v-b42a5b2f] {
197
197
  opacity: 1;
198
198
  pointer-events: auto;
199
199
  }
200
- .rp-select__trigger:hover .rp-select__clear + .rp-select__arrow[data-v-7eb8ed79] {
200
+ .rp-select__trigger:hover .rp-select__clear + .rp-select__arrow[data-v-b42a5b2f] {
201
201
  opacity: 0;
202
202
  }
203
- .rp-select__dropdown[data-v-7eb8ed79] {
203
+ .rp-select__dropdown[data-v-b42a5b2f] {
204
204
  position: absolute;
205
205
  top: calc(100% + var(--rp-spacing-2));
206
206
  left: 0;
@@ -214,10 +214,10 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
214
214
  max-height: 240px;
215
215
  padding: var(--rp-spacing-1);
216
216
  }
217
- .rp-select__dropdown[data-v-7eb8ed79] .rp-scroll-area__viewport {
217
+ .rp-select__dropdown[data-v-b42a5b2f] .rp-scroll-area__viewport {
218
218
  scroll-padding-block: var(--rp-spacing-1);
219
219
  }
220
- .rp-select__option[data-v-7eb8ed79] {
220
+ .rp-select__option[data-v-b42a5b2f] {
221
221
  display: flex;
222
222
  align-items: center;
223
223
  min-height: var(--_rp-select-option-min-height);
@@ -228,17 +228,17 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
228
228
  transition: color var(--rp-transition-fast);
229
229
  color: var(--rp-color-control-fg);
230
230
  }
231
- .rp-select__option--focused[data-v-7eb8ed79] {
231
+ .rp-select__option--focused[data-v-b42a5b2f] {
232
232
  background-color: var(--_rp-select-option-focused-bg);
233
233
  }
234
- .rp-select__option--selected[data-v-7eb8ed79] {
234
+ .rp-select__option--selected[data-v-b42a5b2f] {
235
235
  color: var(--rp-primary-color-light-color);
236
236
  }
237
- .rp-select__option--disabled[data-v-7eb8ed79] {
237
+ .rp-select__option--disabled[data-v-b42a5b2f] {
238
238
  color: var(--rp-color-disabled-color);
239
239
  cursor: not-allowed;
240
240
  }
241
- .rp-select__empty[data-v-7eb8ed79] {
241
+ .rp-select__empty[data-v-b42a5b2f] {
242
242
  display: flex;
243
243
  align-items: center;
244
244
  justify-content: center;
@@ -246,12 +246,12 @@ html.dark .rp-select[data-v-7eb8ed79], [data-rp-color-scheme=dark] .rp-select[da
246
246
  color: var(--rp-color-dimmed);
247
247
  font-size: var(--_rp-select-font-size);
248
248
  }
249
- .rp-select-dropdown-enter-active[data-v-7eb8ed79],
250
- .rp-select-dropdown-leave-active[data-v-7eb8ed79] {
249
+ .rp-select-dropdown-enter-active[data-v-b42a5b2f],
250
+ .rp-select-dropdown-leave-active[data-v-b42a5b2f] {
251
251
  transition: opacity var(--rp-transition-fast), transform var(--rp-transition-fast);
252
252
  }
253
- .rp-select-dropdown-enter-from[data-v-7eb8ed79],
254
- .rp-select-dropdown-leave-to[data-v-7eb8ed79] {
253
+ .rp-select-dropdown-enter-from[data-v-b42a5b2f],
254
+ .rp-select-dropdown-leave-to[data-v-b42a5b2f] {
255
255
  opacity: 0;
256
256
  transform: translateY(calc(-1 * var(--rp-spacing-1)));
257
257
  }
package/dist/select.js CHANGED
@@ -1,14 +1,18 @@
1
1
  import './select.css';
2
2
  import { t as useControllableValue } from "./useControllableValue.js";
3
- import { n as useStylesApi, t as presence } from "./styles-api.js";
3
+ import { t as useStylesApi } from "./styles-api.js";
4
+ import { n as toPresenceAttribute } from "./attributes.js";
4
5
  import { t as bem } from "./bem.js";
6
+ import { n as getNextEnabledIndex, t as getEnabledIndexes } from "./collectionNavigation.js";
5
7
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
8
  import { t as x_default } from "./x.js";
7
9
  import { i as useFormControl } from "./useFormControl.js";
10
+ import { o as splitCompatibilityAttributes, t as composeEventHandlers } from "./attributes2.js";
8
11
  import { t as useControlState } from "./useControlState.js";
9
- import { n as getNextEnabledIndex, r as useTypeahead, t as getEnabledIndexes } from "./collectionNavigation.js";
12
+ import { i as isNodeWithinElement, n as isEventWithinElement } from "./events.js";
13
+ import { t as useTypeahead } from "./useTypeahead.js";
10
14
  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";
15
+ import { VaporTransition, child, computed, createComponent, createFor, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, markRaw, next, nextTick, on, onBeforeUnmount, onMounted, ref, renderEffect, setDynamicProps, setInsertionState, setProp, setTemplateRefBinding, setText, setValue, shallowRef, template, toDisplayString, txt, unref, useId, watch, watchEffect, withModifiers } from "vue";
12
16
  //#region ~icons/lucide/chevrons-up-down
13
17
  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
18
  function render(_ctx) {
@@ -20,12 +24,6 @@ var chevrons_up_down_default = markRaw(defineVaporComponent({
20
24
  }));
21
25
  //#endregion
22
26
  //#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
27
  function useClickOutside(target, active, callback) {
30
28
  const targets = Array.isArray(target) ? target : [target];
31
29
  const listeningDocuments = /* @__PURE__ */ new Set();
@@ -33,7 +31,7 @@ function useClickOutside(target, active, callback) {
33
31
  function handler(event) {
34
32
  if (!targets.some((current) => {
35
33
  const element = current.value;
36
- return element ? isEventInside(event, element) : false;
34
+ return element ? isEventWithinElement(event, element) : false;
37
35
  })) callback(event);
38
36
  }
39
37
  function detachListeners() {
@@ -208,8 +206,7 @@ function useSelect(props, emitUpdate, getValue = () => props.modelValue ?? null,
208
206
  if (!option.disabled) navigation.setActiveIndex(index);
209
207
  }
210
208
  function onFocusout(event) {
211
- const nextTarget = event.relatedTarget;
212
- if (nextTarget instanceof Node && selectRef.value?.contains(nextTarget)) return;
209
+ if (isNodeWithinElement(event.relatedTarget, selectRef.value)) return;
213
210
  close();
214
211
  }
215
212
  function selectFocusedOption() {
@@ -368,23 +365,18 @@ function useSelectNativeControl(props, emitUpdate, triggerRef) {
368
365
  }
369
366
  });
370
367
  const nativeInputAttrs = computed(() => {
371
- const { class: compatibilityClass, style: compatibilityStyle, onInput: compatibilityOnInput, onChange: compatibilityOnChange, onInvalid: compatibilityOnInvalid, ...attrs } = props.inputAttrs ?? {};
368
+ const compatibilityAttrs = props.inputAttrs ?? {};
369
+ const { compatibilityClass, compatibilityStyle, forwardedAttributes } = splitCompatibilityAttributes(compatibilityAttrs);
372
370
  return {
373
- ...attrs,
371
+ ...forwardedAttributes,
374
372
  class: ["rp-select__native", compatibilityClass],
375
373
  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) {
374
+ onInput: composeEventHandlers((event) => controllable.setValue(getNativeValue(event.currentTarget)), compatibilityAttrs.onInput),
375
+ onChange: compatibilityAttrs.onChange,
376
+ onInvalid: composeEventHandlers((event) => {
384
377
  event.preventDefault();
385
378
  triggerRef.value?.focus();
386
- compatibilityOnInvalid?.(event);
387
- }
379
+ }, compatibilityAttrs.onInvalid)
388
380
  };
389
381
  });
390
382
  return {
@@ -396,13 +388,12 @@ function useSelectNativeControl(props, emitUpdate, triggerRef) {
396
388
  }
397
389
  //#endregion
398
390
  //#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>");
391
+ var t0 = template("<option data-v-b42a5b2f> ");
392
+ var t1 = template("<button data-v-b42a5b2f></button>");
401
393
  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");
394
+ var t3 = template("<div data-v-b42a5b2f>");
395
+ var t4 = template("<div data-v-b42a5b2f> ");
396
+ var t5 = template("<div data-v-b42a5b2f><select data-v-b42a5b2f><option data-v-b42a5b2f value></option></select><div data-v-b42a5b2f><span data-v-b42a5b2f> </span><span data-v-b42a5b2f><span data-v-b42a5b2f class=rp-select__arrow aria-hidden=true>", 1);
406
397
  //#endregion
407
398
  //#region src/components/select/select.vue
408
399
  var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -451,13 +442,14 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
451
442
  const triggerRef = ref(null);
452
443
  const { nativeSelectRef, selectedValue, nativeInputAttrs, requestValueUpdate } = useSelectNativeControl(props, (value) => emit("update:modelValue", value), triggerRef);
453
444
  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);
445
+ const templateRefs = { select: selectRef };
454
446
  const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
455
447
  const rootAttrs = computed(() => getRootAttrs({
456
448
  class: rootClass.value,
457
449
  onFocusout,
458
450
  "data-state": isOpen.value ? "open" : "closed",
459
- "data-disabled": presence(control.disabled),
460
- "data-invalid": presence(control.invalid)
451
+ "data-disabled": toPresenceAttribute(control.disabled),
452
+ "data-invalid": toPresenceAttribute(control.invalid)
461
453
  }));
462
454
  __expose({
463
455
  nativeElement: nativeSelectRef,
@@ -518,8 +510,8 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
518
510
  "aria-labelledby": _control.ariaLabelledby,
519
511
  "aria-describedby": _control.ariaDescribedby,
520
512
  "data-state": _isOpen ? "open" : "closed",
521
- "data-disabled": unref(presence)(_control.disabled),
522
- "data-invalid": unref(presence)(_control.invalid),
513
+ "data-disabled": unref(toPresenceAttribute)(_control.disabled),
514
+ "data-invalid": unref(toPresenceAttribute)(_control.invalid),
523
515
  tabindex: _control_disabled ? -1 : 0
524
516
  }
525
517
  ]);
@@ -540,14 +532,14 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
540
532
  ]));
541
533
  setInsertionState(n8, null, 0);
542
534
  createComponent(unref(x_default));
543
- n8.$evtmousedown = withVaporModifiers(() => {}, ["prevent"]);
535
+ on(n8, "mousedown", withModifiers(() => {}, ["prevent"]));
544
536
  on(n8, "click", withModifiers((e) => unref(clearSelection)(e), ["stop"]));
545
537
  return n8;
546
538
  });
547
539
  setInsertionState(n10, null, 0);
548
540
  createComponent(unref(chevrons_up_down_default));
549
- n12.$evtclick = createInvoker((e) => unref(toggle)(e));
550
- n12.$evtkeydown = createInvoker((e) => unref(onTriggerKeydown)(e));
541
+ on(n12, "click", (e) => unref(toggle)(e));
542
+ on(n12, "keydown", (e) => unref(onTriggerKeydown)(e));
551
543
  _setTemplateRef(n12, triggerRef, null, "triggerRef");
552
544
  setInsertionState(n26, null, 2);
553
545
  createComponent(VaporTransition, { name: "rp-select-dropdown" }, extend(() => {
@@ -574,13 +566,13 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
574
566
  }, null, 129), createFor(() => unref(visibleOptions), (_for_item0, _for_key0) => {
575
567
  const n23 = t4();
576
568
  const x23 = txt(n23);
577
- n23.$evtclick = createInvoker(() => unref(selectOption)(_for_item0.value));
569
+ on(n23, "click", () => unref(selectOption)(_for_item0.value));
578
570
  on(n23, "mouseenter", () => unref(onOptionMouseenter)(_for_item0.value, _for_key0.value));
579
571
  renderEffect(() => {
580
572
  const _index = _for_key0.value;
581
573
  const _option = _for_item0.value;
582
574
  const _selectedValue = unref(selectedValue);
583
- const _presence = unref(presence);
575
+ const _toPresenceAttribute = unref(toPresenceAttribute);
584
576
  const _focusedIndex = unref(focusedIndex);
585
577
  const _option_value = _option.value;
586
578
  const _option_disabled = _option.disabled;
@@ -589,9 +581,9 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
589
581
  id: `${unref(selectId)}-option-${_index}`,
590
582
  "aria-selected": _option_value === _selectedValue,
591
583
  "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)
584
+ "data-selected": _toPresenceAttribute(_option_value === _selectedValue),
585
+ "data-highlighted": _toPresenceAttribute(_index === _focusedIndex),
586
+ "data-disabled": _toPresenceAttribute(_option.disabled)
595
587
  }, unref(getPartAttrs)("option", { class: ["rp-select__option", {
596
588
  "rp-select__option--selected": _option_value === _selectedValue,
597
589
  "rp-select__option--focused": _index === _focusedIndex,
@@ -604,10 +596,10 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
604
596
  }, { _: 8 }));
605
597
  }, null, 129);
606
598
  }, { _: 8 }));
607
- _setTemplateRef(n26, selectRef, null, "selectRef");
599
+ setTemplateRefBinding(n26, () => templateRefs.select);
608
600
  return n26;
609
601
  }
610
- }), [["__scopeId", "data-v-7eb8ed79"]]);
602
+ }), [["__scopeId", "data-v-b42a5b2f"]]);
611
603
  //#endregion
612
604
  //#region src/components/select/types.ts
613
605
  var selectParts = [