@rotki/ui-library 2.12.2 → 2.13.0

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 (277) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +6 -14
  2. package/dist/components/accordions/accordion/RuiAccordion.vue.js +3 -4
  3. package/dist/components/accordions/accordion/RuiAccordion.vue.js.map +1 -1
  4. package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +10 -9
  5. package/dist/components/accordions/accordions/RuiAccordions.vue.js +27 -26
  6. package/dist/components/accordions/accordions/RuiAccordions.vue.js.map +1 -1
  7. package/dist/components/alerts/RuiAlert.vue.d.ts +5 -15
  8. package/dist/components/alerts/RuiAlert.vue2.js +8 -16
  9. package/dist/components/alerts/RuiAlert.vue2.js.map +1 -1
  10. package/dist/components/buttons/button/RuiButton.vue.d.ts +5 -7
  11. package/dist/components/buttons/button/RuiButton.vue2.js +19 -20
  12. package/dist/components/buttons/button/RuiButton.vue2.js.map +1 -1
  13. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +6 -5
  14. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js +42 -41
  15. package/dist/components/buttons/button-group/RuiButtonGroup.vue2.js.map +1 -1
  16. package/dist/components/calendar/RuiCalendar.vue.d.ts +1 -6
  17. package/dist/components/calendar/RuiCalendar.vue.js +6 -7
  18. package/dist/components/calendar/RuiCalendar.vue.js.map +1 -1
  19. package/dist/components/calendar/RuiCalendarGrid.vue.js +1 -1
  20. package/dist/components/calendar/RuiCalendarGrid.vue2.js +19 -17
  21. package/dist/components/calendar/RuiCalendarGrid.vue2.js.map +1 -1
  22. package/dist/components/calendar/RuiCalendarHeader.vue.js +1 -1
  23. package/dist/components/calendar/RuiCalendarHeader.vue2.js +2 -3
  24. package/dist/components/calendar/RuiCalendarHeader.vue2.js.map +1 -1
  25. package/dist/components/calendar/RuiCalendarMenu.vue.js +1 -1
  26. package/dist/components/calendar/RuiCalendarMenu.vue2.js +47 -39
  27. package/dist/components/calendar/RuiCalendarMenu.vue2.js.map +1 -1
  28. package/dist/components/cards/RuiCard.vue.d.ts +9 -24
  29. package/dist/components/cards/RuiCard.vue2.js +7 -7
  30. package/dist/components/cards/RuiCard.vue2.js.map +1 -1
  31. package/dist/components/cards/RuiCardHeader.vue.d.ts +5 -10
  32. package/dist/components/cards/RuiCardHeader.vue2.js.map +1 -1
  33. package/dist/components/chips/RuiChip.vue.d.ts +7 -21
  34. package/dist/components/chips/RuiChip.vue2.js +16 -21
  35. package/dist/components/chips/RuiChip.vue2.js.map +1 -1
  36. package/dist/components/color-picker/RuiColorBoard.vue.d.ts +1 -1
  37. package/dist/components/color-picker/RuiColorBoard.vue2.js +14 -18
  38. package/dist/components/color-picker/RuiColorBoard.vue2.js.map +1 -1
  39. package/dist/components/color-picker/RuiColorDisplay.vue.js +3 -5
  40. package/dist/components/color-picker/RuiColorDisplay.vue.js.map +1 -1
  41. package/dist/components/color-picker/RuiColorHue.vue2.js +10 -13
  42. package/dist/components/color-picker/RuiColorHue.vue2.js.map +1 -1
  43. package/dist/components/color-picker/RuiColorInput.vue.js +8 -6
  44. package/dist/components/color-picker/RuiColorInput.vue.js.map +1 -1
  45. package/dist/components/color-picker/RuiColorPicker.vue.d.ts +7 -9
  46. package/dist/components/color-picker/RuiColorPicker.vue.js +18 -13
  47. package/dist/components/color-picker/RuiColorPicker.vue.js.map +1 -1
  48. package/dist/components/color-picker/utils.js +22 -5
  49. package/dist/components/color-picker/utils.js.map +1 -1
  50. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +2 -44
  51. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js +73 -77
  52. package/dist/components/date-time-picker/RuiDateTimePicker.vue2.js.map +1 -1
  53. package/dist/components/date-time-picker/dayjs-setup.d.ts +1 -0
  54. package/dist/components/date-time-picker/dayjs-setup.js +8 -0
  55. package/dist/components/date-time-picker/dayjs-setup.js.map +1 -0
  56. package/dist/components/date-time-picker/segment-config.d.ts +14 -0
  57. package/dist/components/date-time-picker/segment-config.js +23 -0
  58. package/dist/components/date-time-picker/segment-config.js.map +1 -0
  59. package/dist/components/date-time-picker/segment-utils.d.ts +5 -0
  60. package/dist/components/date-time-picker/segment-utils.js +36 -0
  61. package/dist/components/date-time-picker/segment-utils.js.map +1 -0
  62. package/dist/components/date-time-picker/use-date-time-selection.d.ts +1 -0
  63. package/dist/components/date-time-picker/use-date-time-selection.js +1 -0
  64. package/dist/components/date-time-picker/use-date-time-selection.js.map +1 -1
  65. package/dist/components/date-time-picker/use-keyboard-handler.d.ts +4 -8
  66. package/dist/components/date-time-picker/use-keyboard-handler.js +9 -54
  67. package/dist/components/date-time-picker/use-keyboard-handler.js.map +1 -1
  68. package/dist/components/date-time-picker/utils.d.ts +1 -0
  69. package/dist/components/date-time-picker/utils.js +1 -0
  70. package/dist/components/date-time-picker/utils.js.map +1 -1
  71. package/dist/components/divider/RuiDivider.vue.d.ts +1 -3
  72. package/dist/components/divider/RuiDivider.vue.js.map +1 -1
  73. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +9 -1120
  74. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js +144 -160
  75. package/dist/components/forms/auto-complete/RuiAutoComplete.vue2.js.map +1 -1
  76. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +15 -24
  77. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js +31 -31
  78. package/dist/components/forms/checkbox/RuiCheckbox.vue2.js.map +1 -1
  79. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +1 -1
  80. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js +18 -21
  81. package/dist/components/forms/radio-button/radio/RuiRadio.vue2.js.map +1 -1
  82. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +3 -1
  83. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js +12 -15
  84. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue2.js.map +1 -1
  85. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +5 -11
  86. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js +6 -7
  87. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.js.map +1 -1
  88. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +9 -784
  89. package/dist/components/forms/select/RuiMenuSelect.vue2.js +48 -51
  90. package/dist/components/forms/select/RuiMenuSelect.vue2.js.map +1 -1
  91. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +10 -11
  92. package/dist/components/forms/select/RuiSimpleSelect.vue2.js +15 -24
  93. package/dist/components/forms/select/RuiSimpleSelect.vue2.js.map +1 -1
  94. package/dist/components/forms/slider/RuiSlider.vue.d.ts +10 -26
  95. package/dist/components/forms/slider/RuiSlider.vue2.js +41 -46
  96. package/dist/components/forms/slider/RuiSlider.vue2.js.map +1 -1
  97. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +12 -20
  98. package/dist/components/forms/switch/RuiSwitch.vue2.js +21 -20
  99. package/dist/components/forms/switch/RuiSwitch.vue2.js.map +1 -1
  100. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +5 -30
  101. package/dist/components/forms/text-area/RuiTextArea.vue2.js +43 -79
  102. package/dist/components/forms/text-area/RuiTextArea.vue2.js.map +1 -1
  103. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +7 -27
  104. package/dist/components/forms/text-field/RuiTextField.vue2.js +35 -66
  105. package/dist/components/forms/text-field/RuiTextField.vue2.js.map +1 -1
  106. package/dist/components/helpers/RuiFormTextDetail.vue.d.ts +1 -5
  107. package/dist/components/helpers/RuiFormTextDetail.vue.js +5 -9
  108. package/dist/components/helpers/RuiFormTextDetail.vue.js.map +1 -1
  109. package/dist/components/icons/LazyIcon.vue.d.ts +1 -3
  110. package/dist/components/icons/RuiIcon.vue.d.ts +1 -4
  111. package/dist/components/icons/RuiIcon.vue2.js +8 -8
  112. package/dist/components/icons/RuiIcon.vue2.js.map +1 -1
  113. package/dist/components/index.d.ts +3 -3
  114. package/dist/components/loaders/RuiSkeletonBase.vue.d.ts +1 -3
  115. package/dist/components/loaders/RuiSkeletonBase.vue2.js +1 -1
  116. package/dist/components/loaders/RuiSkeletonBase.vue2.js.map +1 -1
  117. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +1 -4
  118. package/dist/components/loaders/RuiSkeletonLoader.vue2.js +1 -1
  119. package/dist/components/loaders/RuiSkeletonLoader.vue2.js.map +1 -1
  120. package/dist/components/logos/RuiLogo.vue.d.ts +1 -7
  121. package/dist/components/logos/RuiLogo.vue.js +11 -13
  122. package/dist/components/logos/RuiLogo.vue.js.map +1 -1
  123. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +5 -20
  124. package/dist/components/overlays/badge/RuiBadge.vue2.js +11 -13
  125. package/dist/components/overlays/badge/RuiBadge.vue2.js.map +1 -1
  126. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +10 -5
  127. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js +18 -7
  128. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.js.map +1 -1
  129. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +21 -27
  130. package/dist/components/overlays/dialog/RuiDialog.vue2.js +80 -63
  131. package/dist/components/overlays/dialog/RuiDialog.vue2.js.map +1 -1
  132. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +24 -35
  133. package/dist/components/overlays/menu/RuiMenu.vue2.js +67 -76
  134. package/dist/components/overlays/menu/RuiMenu.vue2.js.map +1 -1
  135. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +22 -30
  136. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js +71 -47
  137. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue2.js.map +1 -1
  138. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +12 -12
  139. package/dist/components/overlays/notification/RuiNotification.vue.js +25 -22
  140. package/dist/components/overlays/notification/RuiNotification.vue.js.map +1 -1
  141. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +7 -18
  142. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js +11 -8
  143. package/dist/components/overlays/tooltip/RuiTooltip.vue2.js.map +1 -1
  144. package/dist/components/progress/RuiProgress.vue.d.ts +8 -10
  145. package/dist/components/progress/RuiProgress.vue2.js +18 -24
  146. package/dist/components/progress/RuiProgress.vue2.js.map +1 -1
  147. package/dist/components/steppers/RuiFooterStepper.vue.d.ts +10 -11
  148. package/dist/components/steppers/RuiFooterStepper.vue2.js +21 -21
  149. package/dist/components/steppers/RuiFooterStepper.vue2.js.map +1 -1
  150. package/dist/components/steppers/RuiStepper.vue.d.ts +6 -15
  151. package/dist/components/steppers/RuiStepper.vue2.js +31 -33
  152. package/dist/components/steppers/RuiStepper.vue2.js.map +1 -1
  153. package/dist/components/steppers/RuiStepperCustomIcon.vue.d.ts +1 -3
  154. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js +1 -1
  155. package/dist/components/steppers/RuiStepperCustomIcon.vue2.js.map +1 -1
  156. package/dist/components/steppers/RuiStepperIcon.vue.d.ts +1 -3
  157. package/dist/components/steppers/RuiStepperIcon.vue2.js +1 -1
  158. package/dist/components/steppers/RuiStepperIcon.vue2.js.map +1 -1
  159. package/dist/components/tables/RuiDataTable.vue.d.ts +29 -81
  160. package/dist/components/tables/RuiDataTable.vue2.js +173 -582
  161. package/dist/components/tables/RuiDataTable.vue2.js.map +1 -1
  162. package/dist/components/tables/RuiDataTable.vue3.js +24 -27
  163. package/dist/components/tables/RuiDataTable.vue3.js.map +1 -1
  164. package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -6
  165. package/dist/components/tables/RuiExpandButton.vue2.js +1 -0
  166. package/dist/components/tables/RuiExpandButton.vue2.js.map +1 -1
  167. package/dist/components/tables/RuiTableHead.vue.d.ts +4 -7
  168. package/dist/components/tables/RuiTableHead.vue2.js +19 -19
  169. package/dist/components/tables/RuiTableHead.vue2.js.map +1 -1
  170. package/dist/components/tables/RuiTablePagination.vue.d.ts +10 -10
  171. package/dist/components/tables/RuiTablePagination.vue2.js +17 -16
  172. package/dist/components/tables/RuiTablePagination.vue2.js.map +1 -1
  173. package/dist/components/tabs/tab/RuiTab.vue.d.ts +3 -18
  174. package/dist/components/tabs/tab/RuiTab.vue2.js +80 -51
  175. package/dist/components/tabs/tab/RuiTab.vue2.js.map +1 -1
  176. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -11
  177. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js +1 -1
  178. package/dist/components/tabs/tab-item/RuiTabItem.vue2.js.map +1 -1
  179. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +1 -4
  180. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js +18 -18
  181. package/dist/components/tabs/tab-items/RuiTabItems.vue2.js.map +1 -1
  182. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +10 -14
  183. package/dist/components/tabs/tabs/RuiTabs.vue2.js +101 -94
  184. package/dist/components/tabs/tabs/RuiTabs.vue2.js.map +1 -1
  185. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +1 -4
  186. package/dist/components/time-picker/RuiTimePicker.vue2.js +68 -35
  187. package/dist/components/time-picker/RuiTimePicker.vue2.js.map +1 -1
  188. package/dist/composables/breakpoint.js +8 -13
  189. package/dist/composables/breakpoint.js.map +1 -1
  190. package/dist/composables/dropdown-menu.d.ts +7 -4
  191. package/dist/composables/dropdown-menu.js +73 -50
  192. package/dist/composables/dropdown-menu.js.map +1 -1
  193. package/dist/composables/forms/auto-complete/focus.d.ts +7 -5
  194. package/dist/composables/forms/auto-complete/focus.js +28 -17
  195. package/dist/composables/forms/auto-complete/focus.js.map +1 -1
  196. package/dist/composables/forms/auto-complete/index.d.ts +0 -9
  197. package/dist/composables/forms/auto-complete/keyboard-navigation.d.ts +8 -3
  198. package/dist/composables/forms/auto-complete/keyboard-navigation.js +11 -5
  199. package/dist/composables/forms/auto-complete/keyboard-navigation.js.map +1 -1
  200. package/dist/composables/forms/auto-complete/search.d.ts +7 -0
  201. package/dist/composables/forms/auto-complete/search.js +10 -8
  202. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  203. package/dist/composables/forms/auto-complete/value.d.ts +4 -0
  204. package/dist/composables/forms/auto-complete/value.js +24 -42
  205. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  206. package/dist/composables/forms/use-label-with-quote.d.ts +2 -0
  207. package/dist/composables/forms/use-label-with-quote.js +14 -0
  208. package/dist/composables/forms/use-label-with-quote.js.map +1 -0
  209. package/dist/composables/forms/use-prepend-append-width.d.ts +6 -0
  210. package/dist/composables/forms/use-prepend-append-width.js +25 -0
  211. package/dist/composables/forms/use-prepend-append-width.js.map +1 -0
  212. package/dist/composables/popper.js +60 -46
  213. package/dist/composables/popper.js.map +1 -1
  214. package/dist/composables/sticky-header.d.ts +7 -5
  215. package/dist/composables/sticky-header.js +51 -41
  216. package/dist/composables/sticky-header.js.map +1 -1
  217. package/dist/composables/tables/data-table/columns.d.ts +25 -0
  218. package/dist/composables/tables/data-table/columns.js +54 -0
  219. package/dist/composables/tables/data-table/columns.js.map +1 -0
  220. package/dist/composables/tables/data-table/expansion.d.ts +17 -0
  221. package/dist/composables/tables/data-table/expansion.js +38 -0
  222. package/dist/composables/tables/data-table/expansion.js.map +1 -0
  223. package/dist/composables/tables/data-table/grouping.d.ts +29 -0
  224. package/dist/composables/tables/data-table/grouping.js +136 -0
  225. package/dist/composables/tables/data-table/grouping.js.map +1 -0
  226. package/dist/composables/tables/data-table/pagination.d.ts +33 -0
  227. package/dist/composables/tables/data-table/pagination.js +119 -0
  228. package/dist/composables/tables/data-table/pagination.js.map +1 -0
  229. package/dist/composables/tables/data-table/selection.d.ts +29 -0
  230. package/dist/composables/tables/data-table/selection.js +164 -0
  231. package/dist/composables/tables/data-table/selection.js.map +1 -0
  232. package/dist/composables/tables/data-table/sort.d.ts +32 -0
  233. package/dist/composables/tables/data-table/sort.js +136 -0
  234. package/dist/composables/tables/data-table/sort.js.map +1 -0
  235. package/dist/composables/tables/data-table/types.d.ts +14 -0
  236. package/dist/composables/tables/data-table/types.js +11 -0
  237. package/dist/composables/tables/data-table/types.js.map +1 -0
  238. package/dist/composables/theme.js +1 -20
  239. package/dist/composables/theme.js.map +1 -1
  240. package/dist/composables/timeout-manager.d.ts +4 -2
  241. package/dist/composables/timeout-manager.js +2 -1
  242. package/dist/composables/timeout-manager.js.map +1 -1
  243. package/dist/icons/icons_1.js +28 -28
  244. package/dist/icons/icons_1.js.map +1 -1
  245. package/dist/icons/icons_2.d.ts +8 -8
  246. package/dist/icons/icons_2.js +52 -52
  247. package/dist/icons/icons_2.js.map +1 -1
  248. package/dist/icons/icons_3.d.ts +18 -18
  249. package/dist/icons/icons_3.js +108 -108
  250. package/dist/icons/icons_3.js.map +1 -1
  251. package/dist/icons/icons_4.d.ts +35 -0
  252. package/dist/icons/icons_4.js +176 -1
  253. package/dist/icons/icons_4.js.map +1 -1
  254. package/dist/icons/index.d.ts +1 -1
  255. package/dist/icons/index.js +1 -1
  256. package/dist/icons/index.js.map +1 -1
  257. package/dist/index.js +43 -15
  258. package/dist/index.js.map +1 -1
  259. package/dist/style.css +189 -162
  260. package/dist/theme/index.js +15 -1
  261. package/dist/theme/index.js.map +1 -1
  262. package/dist/utils/assert.d.ts +1 -1
  263. package/dist/utils/assert.js.map +1 -1
  264. package/dist/utils/form-text-detail.d.ts +9 -8
  265. package/dist/utils/form-text-detail.js +1 -2
  266. package/dist/utils/form-text-detail.js.map +1 -1
  267. package/dist/utils/helpers.d.ts +4 -32
  268. package/dist/utils/helpers.js +8 -9
  269. package/dist/utils/helpers.js.map +1 -1
  270. package/dist/utils/is-equal.d.ts +1 -1
  271. package/dist/utils/is-equal.js +5 -3
  272. package/dist/utils/is-equal.js.map +1 -1
  273. package/dist/web-types.json +359 -359
  274. package/package.json +44 -35
  275. package/dist/utils/generate-id.d.ts +0 -5
  276. package/dist/utils/generate-id.js +0 -21
  277. package/dist/utils/generate-id.js.map +0 -1
@@ -1,9 +1,10 @@
1
- import { defineComponent, useCssVars, unref, useModel, toRefs, ref, computed, openBlock, createBlock, mergeProps, isRef, withCtx, createElementBlock, withKeys, withModifiers, createElementVNode, Fragment, renderList, normalizeClass, renderSlot, createTextVNode, toDisplayString, normalizeStyle, createCommentVNode, normalizeProps, guardReactiveProps, createVNode, mergeModels } from "vue";
1
+ import { defineComponent, useCssVars, unref, useModel, useTemplateRef, computed, toRef, openBlock, createBlock, mergeProps, isRef, withCtx, createElementBlock, withKeys, withModifiers, createElementVNode, Fragment, renderList, normalizeClass, renderSlot, createTextVNode, toDisplayString, normalizeStyle, createCommentVNode, normalizeProps, guardReactiveProps, createVNode, mergeModels } from "vue";
2
2
  import RuiButton from "../../buttons/button/RuiButton.vue.js";
3
3
  import RuiIcon from "../../icons/RuiIcon.vue.js";
4
4
  import RuiMenu from "../../overlays/menu/RuiMenu.vue.js";
5
5
  import RuiProgress from "../../progress/RuiProgress.vue.js";
6
6
  import { useDropdownMenu } from "../../../composables/dropdown-menu.js";
7
+ import { useLabelWithQuote } from "../../../composables/forms/use-label-with-quote.js";
7
8
  import { getRootAttrs, getNonRootAttrs } from "../../../utils/helpers.js";
8
9
  import { useFocus, isDefined } from "@vueuse/core";
9
10
  import { set, get } from "@vueuse/shared";
@@ -22,8 +23,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
22
23
  __name: "RuiMenuSelect",
23
24
  props: /* @__PURE__ */ mergeModels({
24
25
  options: {},
25
- keyAttr: { default: void 0 },
26
- textAttr: { default: void 0 },
26
+ keyAttr: {},
27
+ textAttr: {},
27
28
  disabled: { type: Boolean, default: false },
28
29
  loading: { type: Boolean, default: false },
29
30
  readOnly: { type: Boolean, default: false },
@@ -34,11 +35,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
34
35
  labelClass: {},
35
36
  menuClass: {},
36
37
  optionClass: {},
37
- prependWidth: { default: 0 },
38
- appendWidth: { default: 0 },
39
- itemHeight: { default: void 0 },
38
+ prependWidth: {},
39
+ appendWidth: {},
40
+ itemHeight: {},
40
41
  variant: { default: "default" },
41
- hint: { default: void 0 },
42
+ hint: {},
42
43
  errorMessages: { default: () => [] },
43
44
  successMessages: { default: () => [] },
44
45
  hideDetails: { type: Boolean, default: false },
@@ -53,34 +54,28 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
53
54
  emits: ["update:modelValue"],
54
55
  setup(__props) {
55
56
  useCssVars((_ctx) => ({
56
- "v27aaaf1d": unref(labelWithQuote)
57
+ "v3c7b8cf5": unref(labelWithQuote)
57
58
  }));
58
59
  const modelValue = useModel(__props, "modelValue");
59
- const props = __props;
60
- const { dense, options, disabled } = toRefs(props);
61
- const menuRef = ref();
62
- const activator = ref();
60
+ const menuRef = useTemplateRef("menuRef");
61
+ const activator = useTemplateRef("activator");
63
62
  const { focused } = useFocus(activator);
64
63
  const value = computed({
65
64
  get: () => {
66
- const keyAttr = props.keyAttr;
67
65
  const value2 = get(modelValue);
68
- if (keyAttr)
69
- return props.options.find((option) => option[keyAttr] === value2);
66
+ if (__props.keyAttr)
67
+ return __props.options.find((option) => option[__props.keyAttr] === value2);
70
68
  return value2;
71
69
  },
72
70
  set: (selected) => {
73
- const keyAttr = props.keyAttr;
74
- const selection = keyAttr && selected ? selected[keyAttr] : selected;
71
+ const selection = __props.keyAttr && selected ? selected[__props.keyAttr] : selected;
75
72
  set(modelValue, selection);
76
73
  }
77
74
  });
78
- const labelWithQuote = computed(() => {
79
- if (!props.label)
80
- return '"\\200B"';
81
- const asterisk = props.required ? "﹡" : "";
82
- return `' ${props.label}${asterisk} '`;
83
- });
75
+ const labelWithQuote = useLabelWithQuote(
76
+ () => __props.label,
77
+ () => __props.required
78
+ );
84
79
  const {
85
80
  containerProps,
86
81
  wrapperProps,
@@ -94,23 +89,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
94
89
  moveHighlight,
95
90
  valueKey
96
91
  } = useDropdownMenu({
97
- itemHeight: props.itemHeight ?? (props.dense ? 30 : 48),
98
- keyAttr: props.keyAttr,
99
- textAttr: props.textAttr,
100
- options,
92
+ itemHeight: __props.itemHeight ?? (__props.dense ? 30 : 48),
93
+ keyAttr: __props.keyAttr,
94
+ textAttr: __props.textAttr,
95
+ options: toRef(() => __props.options),
101
96
  autoFocus: true,
102
- dense,
97
+ dense: toRef(() => __props.dense),
103
98
  value,
104
99
  menuRef,
105
- disabled,
106
- autoSelectFirst: props.autoSelectFirst
100
+ disabled: toRef(() => __props.disabled),
101
+ autoSelectFirst: __props.autoSelectFirst
107
102
  });
108
- const outlined = computed(() => props.variant === "outlined");
103
+ const outlined = computed(() => __props.variant === "outlined");
109
104
  const float = computed(() => (get(isOpen) || !!get(value)) && get(outlined));
110
- const virtualContainerProps = computed(() => ({
111
- style: containerProps.style,
112
- ref: containerProps.ref
113
- }));
105
+ const virtualContainerProps = computed(
106
+ () => ({
107
+ style: containerProps.style,
108
+ ref: containerProps.ref
109
+ })
110
+ );
114
111
  function setValue(val, index) {
115
112
  if (isDefined(index))
116
113
  set(highlightedIndex, index);
@@ -135,31 +132,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
135
132
  errorMessages: __props.errorMessages,
136
133
  successMessages: __props.successMessages,
137
134
  hint: __props.hint,
138
- dense: unref(dense),
135
+ dense: __props.dense,
139
136
  showDetails: !__props.hideDetails,
140
- disabled: unref(disabled)
137
+ disabled: __props.disabled
141
138
  }), {
142
139
  activator: withCtx(({ attrs, open, hasError, hasSuccess }) => [
143
- renderSlot(_ctx.$slots, "activator", normalizeProps(guardReactiveProps({ disabled: unref(disabled), value: unref(value), variant: __props.variant, readOnly: __props.readOnly, attrs, open, hasError, hasSuccess })), () => [
140
+ renderSlot(_ctx.$slots, "activator", normalizeProps(guardReactiveProps({ disabled: __props.disabled, value: unref(value), variant: __props.variant, readOnly: __props.readOnly, attrs, open, hasError, hasSuccess })), () => [
144
141
  createElementVNode("button", mergeProps({
145
142
  ref_key: "activator",
146
143
  ref: activator,
147
- disabled: unref(disabled),
148
- "aria-disabled": unref(disabled),
144
+ disabled: __props.disabled,
145
+ "aria-disabled": __props.disabled,
149
146
  "aria-expanded": unref(isOpen),
150
147
  "aria-readonly": __props.readOnly || void 0,
151
148
  "aria-required": __props.required || void 0,
152
149
  "aria-busy": __props.loading || void 0,
153
150
  type: "button",
154
- tabindex: unref(disabled) || __props.readOnly ? -1 : 0,
151
+ tabindex: __props.disabled || __props.readOnly ? -1 : 0,
155
152
  class: ["group", [
156
153
  _ctx.$style.activator,
157
154
  __props.labelClass,
158
155
  {
159
- [_ctx.$style.disabled]: unref(disabled),
156
+ [_ctx.$style.disabled]: __props.disabled,
160
157
  [_ctx.$style.readonly]: __props.readOnly,
161
158
  [_ctx.$style.outlined]: unref(outlined),
162
- [_ctx.$style.dense]: unref(dense),
159
+ [_ctx.$style.dense]: __props.dense,
163
160
  [_ctx.$style.float]: unref(float),
164
161
  [_ctx.$style.opened]: open,
165
162
  [_ctx.$style["with-value"]]: !!unref(value),
@@ -200,7 +197,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
200
197
  createTextVNode(toDisplayString(unref(getText)(unref(value))), 1)
201
198
  ])
202
199
  ], 2)) : createCommentVNode("", true),
203
- __props.clearable && unref(value) && !unref(disabled) ? (openBlock(), createElementBlock("span", {
200
+ __props.clearable && unref(value) && !__props.disabled ? (openBlock(), createElementBlock("span", {
204
201
  key: 2,
205
202
  "data-id": "clear",
206
203
  class: normalizeClass(["group-hover:!visible", [_ctx.$style.clear, unref(focused) && "!visible"]]),
@@ -217,7 +214,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
217
214
  }, [
218
215
  createVNode(RuiIcon, {
219
216
  class: normalizeClass([_ctx.$style.icon, { "rotate-180": open }]),
220
- size: unref(dense) ? 16 : 24,
217
+ size: __props.dense ? 16 : 24,
221
218
  name: "lu-chevron-down"
222
219
  }, null, 8, ["class", "size"])
223
220
  ], 2),
@@ -245,7 +242,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
245
242
  }, null, 8, _hoisted_3)
246
243
  ]),
247
244
  default: withCtx(({ width }) => [
248
- unref(options).length > 0 ? (openBlock(), createElementBlock("div", mergeProps({
245
+ __props.options.length > 0 ? (openBlock(), createElementBlock("div", mergeProps({
249
246
  key: 0,
250
247
  class: [_ctx.$style.menu, __props.menuClass],
251
248
  style: { width: `${width}px`, minWidth: unref(menuWidth) }
@@ -263,10 +260,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
263
260
  }), [
264
261
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(renderedData), ({ item, _index }) => {
265
262
  return openBlock(), createBlock(RuiButton, {
266
- key: _index,
263
+ key: unref(getIdentifier)(item),
267
264
  active: unref(isActiveItem)(item),
268
265
  "aria-selected": unref(isActiveItem)(item),
269
- size: unref(dense) ? "sm" : void 0,
266
+ size: __props.dense ? "sm" : void 0,
270
267
  "model-value": unref(getIdentifier)(item),
271
268
  variant: "list",
272
269
  class: normalizeClass({
@@ -277,13 +274,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
277
274
  onMousedown: ($event) => highlightedIndex.value = _index
278
275
  }, {
279
276
  prepend: withCtx(() => [
280
- renderSlot(_ctx.$slots, "item.prepend", mergeProps({ ref_for: true }, { disabled: unref(disabled), item, active: unref(isActiveItem)(item) }))
277
+ renderSlot(_ctx.$slots, "item.prepend", mergeProps({ ref_for: true }, { disabled: __props.disabled, item, active: unref(isActiveItem)(item) }))
281
278
  ]),
282
279
  append: withCtx(() => [
283
- renderSlot(_ctx.$slots, "item.append", mergeProps({ ref_for: true }, { disabled: unref(disabled), item, active: unref(isActiveItem)(item) }))
280
+ renderSlot(_ctx.$slots, "item.append", mergeProps({ ref_for: true }, { disabled: __props.disabled, item, active: unref(isActiveItem)(item) }))
284
281
  ]),
285
282
  default: withCtx(() => [
286
- renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, { disabled: unref(disabled), item, active: unref(isActiveItem)(item) }), () => [
283
+ renderSlot(_ctx.$slots, "item", mergeProps({ ref_for: true }, { disabled: __props.disabled, item, active: unref(isActiveItem)(item) }), () => [
287
284
  createTextVNode(toDisplayString(unref(getText)(item)), 1)
288
285
  ])
289
286
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"RuiMenuSelect.vue2.js","sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu, { type MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { type KeyOfType, useDropdownMenu } from '@/composables/dropdown-menu';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props<TValue, TItem> {\n options: TItem[];\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem;\n disabled?: boolean;\n loading?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n menuOptions?: MenuProps;\n labelClass?: string;\n menuClass?: string;\n optionClass?: string;\n prependWidth?: number; // in rem\n appendWidth?: number; // in rem\n itemHeight?: number; // in px\n variant?: 'default' | 'filled' | 'outlined';\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n autoSelectFirst?: boolean;\n hideNoData?: boolean;\n noDataText?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenuSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<TValue | undefined>({ required: true });\n\nconst props = withDefaults(defineProps<Props<TValue, TItem>>(), {\n disabled: false,\n loading: false,\n readOnly: false,\n dense: false,\n clearable: false,\n hideDetails: false,\n label: 'Select',\n prependWidth: 0,\n appendWidth: 0,\n variant: 'default',\n hint: undefined,\n keyAttr: undefined,\n textAttr: undefined,\n itemHeight: undefined,\n errorMessages: () => [],\n successMessages: () => [],\n autoSelectFirst: false,\n hideNoData: false,\n noDataText: 'No data available',\n required: false,\n});\n\nconst { dense, options, disabled } = toRefs(props);\n\nconst menuRef = ref();\nconst activator = ref();\nconst { focused } = useFocus(activator);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const keyAttr = props.keyAttr;\n const value = get(modelValue);\n if (keyAttr)\n return props.options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const keyAttr = props.keyAttr;\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nconst labelWithQuote = computed<string>(() => {\n if (!props.label)\n return '\"\\\\200B\"';\n\n const asterisk = props.required ? '﹡' : '';\n return `' ${props.label}${asterisk} '`;\n});\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: props.itemHeight ?? (props.dense ? 30 : 48),\n keyAttr: props.keyAttr,\n textAttr: props.textAttr,\n options,\n autoFocus: true,\n dense,\n value,\n menuRef,\n disabled,\n autoSelectFirst: props.autoSelectFirst,\n});\n\nconst outlined = computed(() => props.variant === 'outlined');\n\nconst float = computed(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst virtualContainerProps = computed(() => ({\n style: containerProps.style as any,\n ref: containerProps.ref as any,\n}));\n\nfunction setValue(val: TItem, index?: number) {\n if (isDefined(index))\n set(highlightedIndex, index);\n\n set(value, val);\n set(focused, true);\n}\n\nfunction clear() {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n :class=\"$style.wrapper\"\n disable-auto-focus\n v-bind=\"{\n ...getRootAttrs($attrs),\n placement: 'bottom-start',\n closeOnContentClick: true,\n fullWidth: true,\n ...menuOptions,\n errorMessages,\n successMessages,\n hint,\n dense,\n showDetails: !hideDetails,\n disabled,\n }\"\n >\n <template #activator=\"{ attrs, open, hasError, hasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError, hasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n :aria-expanded=\"isOpen\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n class=\"group\"\n :class=\"[\n $style.activator,\n labelClass,\n {\n [$style.disabled]: disabled,\n [$style.readonly]: readOnly,\n [$style.outlined]: outlined,\n [$style.dense]: dense,\n [$style.float]: float,\n [$style.opened]: open,\n [$style['with-value']]: !!value,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n v-bind=\"{ ...getNonRootAttrs($attrs), ...(readOnly ? {} : attrs) }\"\n data-id=\"activator\"\n :data-error=\"hasError ? '' : undefined\"\n :aria-invalid=\"hasError\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n $style.label,\n {\n 'absolute': outlined,\n 'pr-2': !value && !open && outlined,\n },\n ]\"\n >\n <slot\n name=\"activator.label\"\n v-bind=\"{ value }\"\n >\n {{ label }}\n </slot>\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n class=\"w-full\"\n :class=\"$style.value\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"{ item: value }\"\n />\n <slot\n name=\"selection\"\n v-bind=\"{ item: value }\"\n >\n {{ getText(value) }}\n </slot>\n </span>\n\n <span\n v-if=\"clearable && value && !disabled\"\n data-id=\"clear\"\n class=\"group-hover:!visible\"\n :class=\"[$style.clear, focused && '!visible']\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n color=\"error\"\n name=\"lu-x\"\n size=\"18\"\n />\n </span>\n\n <span :class=\"$style.icon__wrapper\">\n <RuiIcon\n :class=\"[$style.icon, { 'rotate-180': open }]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n class=\"absolute left-0 bottom-0 w-full\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"$style.fieldset\"\n >\n <legend :class=\"{ 'px-2': float }\" />\n </fieldset>\n </slot>\n <input\n :value=\"valueKey\"\n class=\"hidden\"\n type=\"hidden\"\n />\n </template>\n <template #default=\"{ width }\">\n <div\n v-if=\"options.length > 0\"\n :class=\"[$style.menu, menuClass]\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n v-bind=\"virtualContainerProps\"\n @scroll=\"containerProps.onScroll\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <div\n v-bind=\"wrapperProps\"\n ref=\"menuRef\"\n >\n <RuiButton\n v-for=\"({ item, _index }) in renderedData\"\n :key=\"_index\"\n :active=\"isActiveItem(item)\"\n :aria-selected=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n :model-value=\"getIdentifier(item)\"\n variant=\"list\"\n :class=\"{\n highlighted: highlightedIndex === _index,\n [$style.highlighted]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @update:model-value=\"setValue(item, _index)\"\n @mousedown=\"highlightedIndex = _index\"\n >\n <template #prepend>\n <slot\n name=\"item.prepend\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n <slot\n name=\"item\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n >\n {{ getText(item) }}\n </slot>\n <template #append>\n <slot\n name=\"item.append\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n </RuiButton>\n </div>\n </div>\n\n <div\n v-else-if=\"!hideNoData\"\n data-id=\"no-data\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"menuClass\"\n >\n <slot name=\"no-data\">\n <div class=\"p-4\">\n {{ noDataText }}\n </div>\n </slot>\n </div>\n </template>\n </RuiMenu>\n</template>\n\n<style lang=\"scss\" module>\n.wrapper {\n @apply w-full inline-flex flex-col;\n\n .activator {\n @apply relative inline-flex items-center w-full;\n @apply outline-none focus:outline-none cursor-pointer min-h-14 pl-3 py-2 pr-8 rounded;\n @apply m-0 bg-white transition-all text-body-1 text-left hover:border-black;\n\n &:not(.outlined) {\n @apply hover:bg-gray-100 focus-within:bg-gray-100;\n }\n\n &.dense {\n @apply py-1.5 min-h-10;\n\n ~ .fieldset {\n @apply px-2;\n }\n }\n\n &.disabled {\n @apply opacity-65 text-rui-text-disabled active:text-rui-text-disabled cursor-default pointer-events-none;\n }\n\n &.readonly {\n @apply opacity-80 pointer-events-none cursor-default bg-gray-50;\n }\n\n &.outlined {\n @apply border-none hover:border-none;\n\n &.opened,\n &:focus {\n @apply border-rui-primary;\n\n ~ .fieldset {\n @apply border-rui-primary #{!important};\n @apply border-2 #{!important};\n }\n }\n\n ~ .fieldset {\n @apply border border-black/[0.23];\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-black;\n }\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-dotted;\n @apply border-black/[0.23] #{!important};\n }\n }\n\n &.with-success {\n .label {\n @apply text-rui-success #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-success #{!important};\n }\n }\n\n &.with-error {\n .label {\n @apply text-rui-error #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-error #{!important};\n }\n }\n }\n\n .label {\n @apply text-rui-text-secondary;\n max-width: calc(100% - 2.5rem);\n }\n\n .label,\n .value {\n @apply block truncate transition-all duration-75;\n }\n\n .clear {\n @apply ml-auto shrink-0 invisible;\n }\n\n .icon {\n @apply text-rui-text transition;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute right-3 top-px bottom-0;\n }\n }\n\n &.float {\n .label {\n @apply -translate-y-2 top-0 text-xs px-1;\n }\n\n ~ .fieldset {\n legend {\n &:after {\n content: v-bind(labelWithQuote);\n }\n }\n }\n\n &.opened,\n &.opened.with-value,\n &:focus,\n &:focus.with-value {\n .label {\n @apply text-rui-primary;\n }\n\n ~ .fieldset {\n @apply border-rui-primary;\n @apply border-2 #{!important};\n }\n }\n }\n }\n\n .fieldset {\n @apply absolute w-full min-w-0 h-[calc(100%+0.5rem)] top-0 left-0 rounded pointer-events-none px-2 transition-all -mt-2;\n\n legend {\n @apply opacity-0 text-xs truncate;\n max-width: calc(100% - 1rem);\n\n &:before {\n content: ' ';\n }\n\n &:after {\n @apply truncate max-w-full leading-[0];\n content: '\\200B';\n }\n }\n }\n}\n\n.menu {\n @apply overflow-y-auto max-h-60 min-w-[2.5rem];\n}\n\n.highlighted {\n @apply bg-rui-grey-200 #{!important};\n\n &.active {\n @apply bg-rui-grey-300 #{!important};\n }\n}\n\n:global(.dark) {\n .wrapper {\n .activator {\n @apply bg-transparent text-rui-text;\n\n &:not(.outlined) {\n @apply hover:bg-white/10 focus-within:bg-white/10;\n\n &.disabled {\n @apply bg-white/10;\n }\n }\n\n &.readonly {\n @apply bg-white/10;\n }\n\n &.outlined {\n ~ .fieldset {\n @apply border-white/[0.23];\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-white/[0.23] #{!important};\n }\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-white;\n }\n }\n }\n }\n }\n\n .highlighted {\n @apply bg-rui-grey-800 #{!important};\n\n &.active {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n}\n</style>\n"],"names":["_useModel","value","_openBlock","_createBlock","_mergeProps","_unref","$style","$attrs","_withCtx","_renderSlot","_createElementVNode","_createElementBlock","_normalizeClass","_normalizeProps","_guardReactiveProps","_createTextVNode","_toDisplayString","_createVNode","_Fragment","_renderList","_normalizeStyle"],"mappings":"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"}
1
+ {"version":3,"file":"RuiMenuSelect.vue2.js","sources":["../../../../src/components/forms/select/RuiMenuSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiMenu, { type MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { type KeyOfType, useDropdownMenu } from '@/composables/dropdown-menu';\nimport { useLabelWithQuote } from '@/composables/forms/use-label-with-quote';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\n\nexport interface Props<TValue, TItem> {\n options: TItem[];\n keyAttr?: KeyOfType<TItem, TValue extends Array<infer U> ? U : TValue>;\n textAttr?: keyof TItem;\n disabled?: boolean;\n loading?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n menuOptions?: MenuProps;\n labelClass?: string;\n menuClass?: string;\n optionClass?: string;\n prependWidth?: number; // in rem\n appendWidth?: number; // in rem\n itemHeight?: number; // in px\n variant?: 'default' | 'filled' | 'outlined';\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n hideDetails?: boolean;\n autoSelectFirst?: boolean;\n hideNoData?: boolean;\n noDataText?: string;\n required?: boolean;\n}\n\ndefineOptions({\n name: 'RuiMenuSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<TValue | undefined>({ required: true });\n\nconst {\n options,\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n hideDetails = false,\n label = 'Select',\n menuOptions,\n labelClass,\n menuClass,\n variant = 'default',\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n hideNoData = false,\n noDataText = 'No data available',\n required = false,\n} = defineProps<Props<TValue, TItem>>();\n\ndefineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem | undefined;\n variant: string;\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'activator.label'?: (props: { value: TItem | undefined }) => any;\n 'selection.prepend'?: (props: { item: TItem }) => any;\n 'selection'?: (props: { item: TItem }) => any;\n 'item.prepend'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'item.append'?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n 'no-data'?: () => any;\n}>();\n\nconst menuRef = useTemplateRef<HTMLDivElement>('menuRef');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\nconst { focused } = useFocus(activator);\n\nconst value = computed<TItem | undefined>({\n get: () => {\n const value = get(modelValue);\n if (keyAttr)\n return options.find(option => option[keyAttr] === value);\n return value as unknown as TItem;\n },\n set: (selected?: TItem) => {\n const selection = keyAttr && selected ? selected[keyAttr] : selected;\n set(modelValue, selection as TValue);\n },\n});\n\nconst labelWithQuote = useLabelWithQuote(\n () => label,\n () => required,\n);\n\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n isOpen,\n menuWidth,\n getText,\n getIdentifier,\n isActiveItem,\n highlightedIndex,\n moveHighlight,\n valueKey,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: itemHeight ?? (dense ? 30 : 48),\n keyAttr,\n textAttr,\n options: toRef(() => options),\n autoFocus: true,\n dense: toRef(() => dense),\n value,\n menuRef,\n disabled: toRef(() => disabled),\n autoSelectFirst,\n});\n\nconst outlined = computed<boolean>(() => variant === 'outlined');\n\nconst float = computed<boolean>(() => (get(isOpen) || !!get(value)) && get(outlined));\n\nconst virtualContainerProps = computed<{ style: Record<string, string>; ref: (el: any) => void }>(\n () => ({\n style: containerProps.style as any,\n ref: containerProps.ref as any,\n }),\n);\n\nfunction setValue(val: TItem, index?: number): void {\n if (isDefined(index))\n set(highlightedIndex, index);\n\n set(value, val);\n set(focused, true);\n}\n\nfunction clear(): void {\n set(modelValue, undefined);\n}\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n :class=\"$style.wrapper\"\n disable-auto-focus\n v-bind=\"{\n ...getRootAttrs($attrs),\n placement: 'bottom-start',\n closeOnContentClick: true,\n fullWidth: true,\n ...menuOptions,\n errorMessages,\n successMessages,\n hint,\n dense,\n showDetails: !hideDetails,\n disabled,\n }\"\n >\n <template #activator=\"{ attrs, open, hasError, hasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, variant, readOnly, attrs, open, hasError, hasSuccess }\"\n >\n <button\n ref=\"activator\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled\"\n :aria-expanded=\"isOpen\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n type=\"button\"\n :tabindex=\"disabled || readOnly ? -1 : 0\"\n class=\"group\"\n :class=\"[\n $style.activator,\n labelClass,\n {\n [$style.disabled]: disabled,\n [$style.readonly]: readOnly,\n [$style.outlined]: outlined,\n [$style.dense]: dense,\n [$style.float]: float,\n [$style.opened]: open,\n [$style['with-value']]: !!value,\n [$style['with-error']]: hasError,\n [$style['with-success']]: hasSuccess && !hasError,\n },\n ]\"\n v-bind=\"{ ...getNonRootAttrs($attrs), ...(readOnly ? {} : attrs) }\"\n data-id=\"activator\"\n :data-error=\"hasError ? '' : undefined\"\n :aria-invalid=\"hasError\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <span\n v-if=\"outlined || !value\"\n :class=\"[\n $style.label,\n {\n 'absolute': outlined,\n 'pr-2': !value && !open && outlined,\n },\n ]\"\n >\n <slot\n name=\"activator.label\"\n v-bind=\"{ value }\"\n >\n {{ label }}\n </slot>\n <span\n v-if=\"required\"\n class=\"text-rui-error\"\n >\n ﹡\n </span>\n </span>\n <span\n v-if=\"value\"\n class=\"w-full\"\n :class=\"$style.value\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"{ item: value }\"\n />\n <slot\n name=\"selection\"\n v-bind=\"{ item: value }\"\n >\n {{ getText(value) }}\n </slot>\n </span>\n\n <span\n v-if=\"clearable && value && !disabled\"\n data-id=\"clear\"\n class=\"group-hover:!visible\"\n :class=\"[$style.clear, focused && '!visible']\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n color=\"error\"\n name=\"lu-x\"\n size=\"18\"\n />\n </span>\n\n <span :class=\"$style.icon__wrapper\">\n <RuiIcon\n :class=\"[$style.icon, { 'rotate-180': open }]\"\n :size=\"dense ? 16 : 24\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n class=\"absolute left-0 bottom-0 w-full\"\n color=\"primary\"\n thickness=\"3\"\n variant=\"indeterminate\"\n />\n </button>\n <fieldset\n v-if=\"outlined\"\n :class=\"$style.fieldset\"\n >\n <legend :class=\"{ 'px-2': float }\" />\n </fieldset>\n </slot>\n <input\n :value=\"valueKey\"\n class=\"hidden\"\n type=\"hidden\"\n />\n </template>\n <template #default=\"{ width }\">\n <div\n v-if=\"options.length > 0\"\n :class=\"[$style.menu, menuClass]\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n v-bind=\"virtualContainerProps\"\n @scroll=\"containerProps.onScroll\"\n @keydown.up.prevent=\"moveHighlight(true)\"\n @keydown.down.prevent=\"moveHighlight(false)\"\n >\n <div\n v-bind=\"wrapperProps\"\n ref=\"menuRef\"\n >\n <RuiButton\n v-for=\"{ item, _index } in renderedData\"\n :key=\"getIdentifier(item)\"\n :active=\"isActiveItem(item)\"\n :aria-selected=\"isActiveItem(item)\"\n :size=\"dense ? 'sm' : undefined\"\n :model-value=\"getIdentifier(item)\"\n variant=\"list\"\n :class=\"{\n highlighted: highlightedIndex === _index,\n [$style.highlighted]: !isActiveItem(item) && highlightedIndex === _index,\n }\"\n @update:model-value=\"setValue(item, _index)\"\n @mousedown=\"highlightedIndex = _index\"\n >\n <template #prepend>\n <slot\n name=\"item.prepend\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n <slot\n name=\"item\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n >\n {{ getText(item) }}\n </slot>\n <template #append>\n <slot\n name=\"item.append\"\n v-bind=\"{ disabled, item, active: isActiveItem(item) }\"\n />\n </template>\n </RuiButton>\n </div>\n </div>\n\n <div\n v-else-if=\"!hideNoData\"\n data-id=\"no-data\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"menuClass\"\n >\n <slot name=\"no-data\">\n <div class=\"p-4\">\n {{ noDataText }}\n </div>\n </slot>\n </div>\n </template>\n </RuiMenu>\n</template>\n\n<style lang=\"scss\" module>\n.wrapper {\n @apply w-full inline-flex flex-col;\n\n .activator {\n @apply relative inline-flex items-center w-full;\n @apply outline-none focus:outline-none cursor-pointer min-h-14 pl-3 py-2 pr-8 rounded;\n @apply m-0 bg-white transition-all text-body-1 text-left hover:border-black;\n\n &:not(.outlined) {\n @apply hover:bg-gray-100 focus-within:bg-gray-100;\n }\n\n &.dense {\n @apply py-1.5 min-h-10;\n\n ~ .fieldset {\n @apply px-2;\n }\n }\n\n &.disabled {\n @apply opacity-65 text-rui-text-disabled active:text-rui-text-disabled cursor-default pointer-events-none;\n }\n\n &.readonly {\n @apply opacity-80 pointer-events-none cursor-default bg-gray-50;\n }\n\n &.outlined {\n @apply border-none hover:border-none;\n\n &.opened,\n &:focus {\n @apply border-rui-primary;\n\n ~ .fieldset {\n @apply border-rui-primary #{!important};\n @apply border-2 #{!important};\n }\n }\n\n ~ .fieldset {\n @apply border border-black/[0.23];\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-black;\n }\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-dotted;\n @apply border-black/[0.23] #{!important};\n }\n }\n\n &.with-success {\n .label {\n @apply text-rui-success #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-success #{!important};\n }\n }\n\n &.with-error {\n .label {\n @apply text-rui-error #{!important};\n }\n\n ~ .fieldset {\n @apply border-rui-error #{!important};\n }\n }\n }\n\n .label {\n @apply text-rui-text-secondary;\n max-width: calc(100% - 2.5rem);\n }\n\n .label,\n .value {\n @apply block truncate transition-all duration-75;\n }\n\n .clear {\n @apply ml-auto shrink-0 invisible;\n }\n\n .icon {\n @apply text-rui-text transition;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute right-3 top-px bottom-0;\n }\n }\n\n &.float {\n .label {\n @apply -translate-y-2 top-0 text-xs px-1;\n }\n\n ~ .fieldset {\n legend {\n &:after {\n content: v-bind(labelWithQuote);\n }\n }\n }\n\n &.opened,\n &.opened.with-value,\n &:focus,\n &:focus.with-value {\n .label {\n @apply text-rui-primary;\n }\n\n ~ .fieldset {\n @apply border-rui-primary;\n @apply border-2 #{!important};\n }\n }\n }\n }\n\n .fieldset {\n @apply absolute w-full min-w-0 h-[calc(100%+0.5rem)] top-0 left-0 rounded pointer-events-none px-2 transition-all -mt-2;\n\n legend {\n @apply opacity-0 text-xs truncate;\n max-width: calc(100% - 1rem);\n\n &:before {\n content: ' ';\n }\n\n &:after {\n @apply truncate max-w-full leading-[0];\n content: '\\200B';\n }\n }\n }\n}\n\n.menu {\n @apply overflow-y-auto max-h-60 min-w-[2.5rem];\n}\n\n.highlighted {\n @apply bg-rui-grey-200 #{!important};\n\n &.active {\n @apply bg-rui-grey-300 #{!important};\n }\n}\n\n:global(.dark) {\n .wrapper {\n .activator {\n @apply bg-transparent text-rui-text;\n\n &:not(.outlined) {\n @apply hover:bg-white/10 focus-within:bg-white/10;\n\n &.disabled {\n @apply bg-white/10;\n }\n }\n\n &.readonly {\n @apply bg-white/10;\n }\n\n &.outlined {\n ~ .fieldset {\n @apply border-white/[0.23];\n }\n\n &.disabled {\n ~ .fieldset {\n @apply border-white/[0.23] #{!important};\n }\n }\n\n &:hover {\n ~ .fieldset {\n @apply border-white;\n }\n }\n }\n }\n }\n\n .highlighted {\n @apply bg-rui-grey-800 #{!important};\n\n &.active {\n @apply bg-rui-grey-700 #{!important};\n }\n }\n}\n</style>\n"],"names":["_useModel","value","_openBlock","_createBlock","_mergeProps","_unref","$style","$attrs","_withCtx","_renderSlot","_createElementVNode","_createElementBlock","_normalizeClass","_normalizeProps","_guardReactiveProps","_createTextVNode","_toDisplayString","_createVNode","_Fragment","_renderList","_normalizeStyle"],"mappings":"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"}
@@ -1,20 +1,19 @@
1
1
  export interface Props {
2
- modelValue: string | number;
3
2
  options: string[] | number[];
4
3
  disabled?: boolean;
5
4
  label?: string;
6
5
  name?: string;
7
6
  variant?: 'default' | 'outlined';
8
7
  }
9
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
- "update:model-value": (value?: string | number | undefined) => any;
11
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
12
- "onUpdate:model-value"?: ((value?: string | number | undefined) => any) | undefined;
13
- }>, {
14
- name: string;
15
- label: string;
16
- variant: "default" | "outlined";
17
- disabled: boolean;
18
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
+ type __VLS_Props = Props;
9
+ type __VLS_ModelProps = {
10
+ modelValue: string | number;
11
+ };
12
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
13
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ "update:modelValue": (value: string | number) => any;
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
+ "onUpdate:modelValue"?: ((value: string | number) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
18
  declare const _default: typeof __VLS_export;
20
19
  export default _default;
@@ -1,6 +1,5 @@
1
- import { defineComponent, toRefs, computed, openBlock, createElementBlock, mergeProps, withDirectives, createElementVNode, normalizeClass, isRef, Fragment, renderList, toDisplayString, vModelSelect, unref, createVNode } from "vue";
1
+ import { defineComponent, useModel, openBlock, createElementBlock, mergeProps, withDirectives, createElementVNode, normalizeClass, Fragment, renderList, toDisplayString, vModelSelect, createVNode, mergeModels } from "vue";
2
2
  import RuiIcon from "../../icons/RuiIcon.vue.js";
3
- import { get } from "@vueuse/shared";
4
3
  const _hoisted_1 = ["name", "disabled", "aria-label"];
5
4
  const _hoisted_2 = ["value"];
6
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -9,47 +8,39 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
9
8
  inheritAttrs: false
10
9
  },
11
10
  __name: "RuiSimpleSelect",
12
- props: {
13
- modelValue: {},
11
+ props: /* @__PURE__ */ mergeModels({
14
12
  options: {},
15
13
  disabled: { type: Boolean, default: false },
16
- label: { default: void 0 },
14
+ label: {},
17
15
  name: { default: "" },
18
16
  variant: { default: "default" }
19
- },
20
- emits: ["update:model-value"],
21
- setup(__props, { emit: __emit }) {
22
- const props = __props;
23
- const emit = __emit;
24
- const { modelValue } = toRefs(props);
25
- const value = computed({
26
- get: () => get(modelValue),
27
- set: (value2) => emit("update:model-value", value2)
28
- });
17
+ }, {
18
+ "modelValue": { required: true },
19
+ "modelModifiers": {}
20
+ }),
21
+ emits: ["update:modelValue"],
22
+ setup(__props) {
23
+ const modelValue = useModel(__props, "modelValue");
29
24
  return (_ctx, _cache) => {
30
25
  return openBlock(), createElementBlock("div", mergeProps({
31
26
  class: _ctx.$style.wrapper
32
27
  }, _ctx.$attrs), [
33
28
  withDirectives(createElementVNode("select", {
34
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(value) ? value.value = $event : null),
35
- class: normalizeClass([
36
- _ctx.$style.select,
37
- _ctx.$style[__props.variant ?? "default"],
38
- { [_ctx.$style.disabled ?? ""]: __props.disabled }
39
- ]),
29
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),
30
+ class: normalizeClass([_ctx.$style.select, _ctx.$style[__props.variant ?? "default"], { [_ctx.$style.disabled ?? ""]: __props.disabled }]),
40
31
  name: __props.name,
41
32
  disabled: __props.disabled,
42
33
  "aria-label": __props.label,
43
34
  "data-id": "select"
44
35
  }, [
45
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option, i) => {
36
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
46
37
  return openBlock(), createElementBlock("option", {
47
- key: i,
38
+ key: option,
48
39
  value: option
49
40
  }, toDisplayString(option), 9, _hoisted_2);
50
41
  }), 128))
51
42
  ], 10, _hoisted_1), [
52
- [vModelSelect, unref(value)]
43
+ [vModelSelect, modelValue.value]
53
44
  ]),
54
45
  createElementVNode("span", {
55
46
  class: normalizeClass(_ctx.$style.icon__wrapper),
@@ -1 +1 @@
1
- {"version":3,"file":"RuiSimpleSelect.vue2.js","sources":["../../../../src/components/forms/select/RuiSimpleSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n modelValue: string | number;\n options: string[] | number[];\n disabled?: boolean;\n label?: string;\n name?: string;\n variant?: 'default' | 'outlined';\n}\n\ndefineOptions({\n name: 'RuiSimpleSelect',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n disabled: false,\n label: undefined,\n name: '',\n variant: 'default',\n});\n\nconst emit = defineEmits<{\n (e: 'update:model-value', value?: string | number): void;\n}>();\n\nconst { modelValue } = toRefs(props);\n\nconst value = computed({\n get: () => get(modelValue),\n set: value => emit('update:model-value', value),\n});\n</script>\n\n<template>\n <div\n :class=\"$style.wrapper\"\n v-bind=\"$attrs\"\n >\n <select\n v-model=\"value\"\n :class=\"[\n $style.select,\n $style[variant ?? 'default'],\n { [$style.disabled ?? '']: disabled },\n ]\"\n :name=\"name\"\n :disabled=\"disabled\"\n :aria-label=\"label\"\n data-id=\"select\"\n >\n <option\n v-for=\"(option, i) in options\"\n :key=\"i\"\n :value=\"option\"\n >\n {{ option }}\n </option>\n </select>\n <span\n :class=\"$style.icon__wrapper\"\n aria-hidden=\"true\"\n >\n <RuiIcon\n :class=\"$style.icon\"\n name=\"lu-chevron-down\"\n size=\"16\"\n />\n </span>\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative inline-flex;\n\n .select {\n @apply outline-none focus:outline-none appearance-none cursor-pointer pl-2 py-1 pr-8 rounded;\n @apply m-0 w-full bg-white hover:bg-gray-50 transition;\n @apply disabled:bg-black/[.12] disabled:text-rui-text-disabled disabled:active:text-rui-text-disabled disabled:cursor-default;\n\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n\n &::-ms-expand {\n display: none;\n }\n\n &.outlined {\n @apply border border-rui-text-disabled disabled:border-transparent;\n }\n }\n\n .icon {\n @apply text-rui-text-disabled pointer-events-none;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute right-1 top-px bottom-0 pointer-events-none;\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n .select {\n @apply bg-transparent hover:bg-white/10 disabled:bg-white/10 text-rui-text-disabled;\n\n &.outlined {\n @apply border border-rui-text-disabled;\n }\n }\n\n .icon {\n @apply text-rui-text-disabled;\n }\n }\n}\n</style>\n"],"names":["value","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_createElementVNode","_normalizeClass","_Fragment","_renderList","_unref","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiBA,UAAM,QAAQ;AAOd,UAAM,OAAO;AAIb,UAAM,EAAE,WAAA,IAAe,OAAO,KAAK;AAEnC,UAAM,QAAQ,SAAS;AAAA,MACrB,KAAK,MAAM,IAAI,UAAU;AAAA,MACzB,KAAK,CAAAA,WAAS,KAAK,sBAAsBA,MAAK;AAAA,IAAA,CAC/C;;AAIC,aAAAC,UAAA,GAAAC,mBAkCM,OAlCNC,WAkCM;AAAA,QAjCH,OAAOC,KAAAA,OAAO;AAAA,MAAA,GACPC,KAAAA,MAAM,GAAA;AAAA,uBAEdC,mBAmBS,UAAA;AAAA,sFAlBE,MAAK,QAAA,SAAA;AAAA,UACb,OAAKC,eAAA;AAAA,YAAYH,KAAAA,OAAO;AAAA,YAAgBA,KAAAA,OAAO,QAAA,WAAO,SAAA;AAAA,eAA2BA,KAAAA,OAAO,YAAQ,EAAA,GAAS,QAAA,SAAA;AAAA,UAAQ;UAKjH,MAAM,QAAA;AAAA,UACN,UAAU,QAAA;AAAA,UACV,cAAY,QAAA;AAAA,UACb,WAAQ;AAAA,QAAA;WAERH,UAAA,IAAA,GAAAC,mBAMSM,UAAA,MAAAC,WALe,QAAA,SAAO,CAArB,QAAQ,MAAC;gCADnBP,mBAMS,UAAA;AAAA,cAJN,KAAK;AAAA,cACL,OAAO;AAAA,YAAA,mBAEL,MAAM,GAAA,GAAA,UAAA;AAAA;;yBAhBFQ,MAAA,KAAA,CAAK;AAAA,QAAA;QAmBhBJ,mBASO,QAAA;AAAA,UARJ,OAAKC,eAAEH,KAAAA,OAAO,aAAa;AAAA,UAC5B,eAAY;AAAA,QAAA;UAEZO,YAIE,SAAA;AAAA,YAHC,OAAKJ,eAAEH,KAAAA,OAAO,IAAI;AAAA,YACnB,MAAK;AAAA,YACL,MAAK;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"RuiSimpleSelect.vue2.js","sources":["../../../../src/components/forms/select/RuiSimpleSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\n\nexport interface Props {\n options: string[] | number[];\n disabled?: boolean;\n label?: string;\n name?: string;\n variant?: 'default' | 'outlined';\n}\n\ndefineOptions({\n name: 'RuiSimpleSelect',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<string | number>({ required: true });\n\nconst { options, disabled = false, label, name = '', variant = 'default' } = defineProps<Props>();\n</script>\n\n<template>\n <div\n :class=\"$style.wrapper\"\n v-bind=\"$attrs\"\n >\n <select\n v-model=\"modelValue\"\n :class=\"[$style.select, $style[variant ?? 'default'], { [$style.disabled ?? '']: disabled }]\"\n :name=\"name\"\n :disabled=\"disabled\"\n :aria-label=\"label\"\n data-id=\"select\"\n >\n <option\n v-for=\"option in options\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option }}\n </option>\n </select>\n <span\n :class=\"$style.icon__wrapper\"\n aria-hidden=\"true\"\n >\n <RuiIcon\n :class=\"$style.icon\"\n name=\"lu-chevron-down\"\n size=\"16\"\n />\n </span>\n </div>\n</template>\n\n<style module lang=\"scss\">\n.wrapper {\n @apply relative inline-flex;\n\n .select {\n @apply outline-none focus:outline-none appearance-none cursor-pointer pl-2 py-1 pr-8 rounded;\n @apply m-0 w-full bg-white hover:bg-gray-50 transition;\n @apply disabled:bg-black/[.12] disabled:text-rui-text-disabled disabled:active:text-rui-text-disabled disabled:cursor-default;\n\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n\n &::-ms-expand {\n display: none;\n }\n\n &.outlined {\n @apply border border-rui-text-disabled disabled:border-transparent;\n }\n }\n\n .icon {\n @apply text-rui-text-disabled pointer-events-none;\n\n &__wrapper {\n @apply flex items-center justify-end;\n @apply absolute right-1 top-px bottom-0 pointer-events-none;\n }\n }\n}\n\n:global(.dark) {\n .wrapper {\n .select {\n @apply bg-transparent hover:bg-white/10 disabled:bg-white/10 text-rui-text-disabled;\n\n &.outlined {\n @apply border border-rui-text-disabled;\n }\n }\n\n .icon {\n @apply text-rui-text-disabled;\n }\n }\n}\n</style>\n"],"names":["_useModel","_openBlock","_createElementBlock","_mergeProps","$style","$attrs","_createElementVNode","_normalizeClass","_Fragment","_renderList","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBA,UAAM,aAAaA,8BAA+C;;AAMhE,aAAAC,UAAA,GAAAC,mBA8BM,OA9BNC,WA8BM;AAAA,QA7BH,OAAOC,KAAAA,OAAO;AAAA,MAAA,GACPC,KAAAA,MAAM,GAAA;AAAA,uBAEdC,mBAeS,UAAA;AAAA,uEAdE,WAAU,QAAA;AAAA,UAClB,OAAKC,eAAA,CAAGH,KAAAA,OAAO,QAAQA,KAAAA,OAAO,QAAA,WAAO,SAAA,GAAA,EAAA,CAAmBA,KAAAA,OAAO,iBAAiB,QAAA,SAAA,CAAQ,CAAA;AAAA,UACxF,MAAM,QAAA;AAAA,UACN,UAAU,QAAA;AAAA,UACV,cAAY,QAAA;AAAA,UACb,WAAQ;AAAA,QAAA;4BAERF,mBAMSM,UAAA,MAAAC,WALU,QAAA,SAAO,CAAjB,WAAM;gCADfP,mBAMS,UAAA;AAAA,cAJN,KAAK;AAAA,cACL,OAAO;AAAA,YAAA,mBAEL,MAAM,GAAA,GAAA,UAAA;AAAA;;yBAZF,WAAA,KAAU;AAAA,QAAA;QAerBI,mBASO,QAAA;AAAA,UARJ,OAAKC,eAAEH,KAAAA,OAAO,aAAa;AAAA,UAC5B,eAAY;AAAA,QAAA;UAEZM,YAIE,SAAA;AAAA,YAHC,OAAKH,eAAEH,KAAAA,OAAO,IAAI;AAAA,YACnB,MAAK;AAAA,YACL,MAAK;AAAA,UAAA;;;;;;"}
@@ -1,6 +1,5 @@
1
1
  import type { ContextColorsType } from '../../../consts/colors.js';
2
2
  export interface Props {
3
- modelValue?: number;
4
3
  min?: number;
5
4
  max?: number;
6
5
  step?: number;
@@ -20,30 +19,15 @@ export interface Props {
20
19
  tickClass?: string;
21
20
  required?: boolean;
22
21
  }
23
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
24
- "update:model-value": (value: number) => any;
25
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
26
- "onUpdate:model-value"?: ((value: number) => any) | undefined;
27
- }>, {
28
- label: string;
29
- vertical: boolean;
30
- color: ContextColorsType;
31
- disabled: boolean;
32
- modelValue: number;
33
- errorMessages: string | string[];
34
- successMessages: string | string[];
35
- hint: string;
36
- required: boolean;
37
- hideDetails: boolean;
38
- step: number;
39
- min: number;
40
- max: number;
41
- showThumbLabel: boolean;
42
- showTicks: boolean;
43
- hideTrack: boolean;
44
- tickSize: number;
45
- sliderClass: string;
46
- tickClass: string;
47
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ type __VLS_Props = Props;
23
+ type __VLS_ModelProps = {
24
+ modelValue?: number;
25
+ };
26
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
27
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ "update:modelValue": (value: number) => any;
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
30
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
31
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
48
32
  declare const _default: typeof __VLS_export;
49
33
  export default _default;