@rotki/ui-library 3.1.7 → 3.3.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 (418) hide show
  1. package/dist/components/accordions/accordion/RuiAccordion.js.map +1 -1
  2. package/dist/components/accordions/accordion/RuiAccordion.vue.d.ts +4 -2
  3. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js +3 -3
  4. package/dist/components/accordions/accordion/RuiAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/accordions/accordion/accordion-styles.d.ts +1 -0
  6. package/dist/components/accordions/accordion/accordion-styles.js +7 -0
  7. package/dist/components/accordions/accordion/accordion-styles.js.map +1 -0
  8. package/dist/components/accordions/accordions/RuiAccordions.js.map +1 -1
  9. package/dist/components/accordions/accordions/RuiAccordions.vue.d.ts +26 -9
  10. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js +11 -10
  11. package/dist/components/accordions/accordions/RuiAccordions.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/components/alerts/RuiAlert.js.map +1 -1
  13. package/dist/components/alerts/RuiAlert.vue.d.ts +4 -2
  14. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js +1 -65
  15. package/dist/components/alerts/RuiAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  16. package/dist/components/alerts/alert-styles.d.ts +145 -0
  17. package/dist/components/alerts/alert-styles.js +70 -0
  18. package/dist/components/alerts/alert-styles.js.map +1 -0
  19. package/dist/components/avatars/RuiAvatar.js.map +1 -1
  20. package/dist/components/avatars/RuiAvatar.vue.d.ts +4 -2
  21. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js +1 -38
  22. package/dist/components/avatars/RuiAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/avatars/RuiAvatarGroup.js.map +1 -1
  24. package/dist/components/avatars/RuiAvatarGroup.vue.d.ts +3 -2
  25. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js +1 -13
  26. package/dist/components/avatars/RuiAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/avatars/avatar-group-styles.d.ts +49 -0
  28. package/dist/components/avatars/avatar-group-styles.js +18 -0
  29. package/dist/components/avatars/avatar-group-styles.js.map +1 -0
  30. package/dist/components/avatars/avatar-styles.d.ts +181 -0
  31. package/dist/components/avatars/avatar-styles.js +43 -0
  32. package/dist/components/avatars/avatar-styles.js.map +1 -0
  33. package/dist/components/buttons/button/RuiButton.js.map +1 -1
  34. package/dist/components/buttons/button/RuiButton.vue.d.ts +2 -1
  35. package/dist/components/buttons/button/RuiButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/buttons/button-group/RuiButtonGroup.js.map +1 -1
  37. package/dist/components/buttons/button-group/RuiButtonGroup.vue.d.ts +10 -4
  38. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js +9 -146
  39. package/dist/components/buttons/button-group/RuiButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/buttons/button-group/button-group-styles.d.ts +142 -0
  41. package/dist/components/buttons/button-group/button-group-styles.js +143 -0
  42. package/dist/components/buttons/button-group/button-group-styles.js.map +1 -0
  43. package/dist/components/calendar/RuiCalendar.js.map +1 -1
  44. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js +1 -8
  45. package/dist/components/calendar/RuiCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/calendar/RuiCalendarGrid.js.map +1 -1
  47. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js +5 -25
  48. package/dist/components/calendar/RuiCalendarGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/calendar/RuiCalendarHeader.js.map +1 -1
  50. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js +3 -3
  51. package/dist/components/calendar/RuiCalendarHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  52. package/dist/components/calendar/RuiCalendarMenu.js.map +1 -1
  53. package/dist/components/calendar/RuiCalendarMenu.vue.d.ts +3 -3
  54. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js +10 -18
  55. package/dist/components/calendar/RuiCalendarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  56. package/dist/components/calendar/calendar-grid-styles.d.ts +43 -0
  57. package/dist/components/calendar/calendar-grid-styles.js +26 -0
  58. package/dist/components/calendar/calendar-grid-styles.js.map +1 -0
  59. package/dist/components/calendar/calendar-menu-styles.d.ts +34 -0
  60. package/dist/components/calendar/calendar-menu-styles.js +17 -0
  61. package/dist/components/calendar/calendar-menu-styles.js.map +1 -0
  62. package/dist/components/calendar/calendar-styles.d.ts +16 -0
  63. package/dist/components/calendar/calendar-styles.js +13 -0
  64. package/dist/components/calendar/calendar-styles.js.map +1 -0
  65. package/dist/components/calendar/state.d.ts +8 -1
  66. package/dist/components/calendar/state.js +13 -1
  67. package/dist/components/calendar/state.js.map +1 -1
  68. package/dist/components/cards/RuiCard.js.map +1 -1
  69. package/dist/components/cards/RuiCard.vue.d.ts +3 -1
  70. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js +3 -58
  71. package/dist/components/cards/RuiCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/cards/RuiCardHeader.js.map +1 -1
  73. package/dist/components/cards/RuiCardHeader.vue.d.ts +3 -1
  74. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js +2 -20
  75. package/dist/components/cards/RuiCardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  76. package/dist/components/cards/card-header-styles.d.ts +46 -0
  77. package/dist/components/cards/card-header-styles.js +24 -0
  78. package/dist/components/cards/card-header-styles.js.map +1 -0
  79. package/dist/components/cards/card-styles.d.ts +175 -0
  80. package/dist/components/cards/card-styles.js +62 -0
  81. package/dist/components/cards/card-styles.js.map +1 -0
  82. package/dist/components/chips/RuiChip.js.map +1 -1
  83. package/dist/components/chips/RuiChip.vue.d.ts +4 -2
  84. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js +2 -241
  85. package/dist/components/chips/RuiChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/components/chips/chip-styles.d.ts +223 -0
  87. package/dist/components/chips/chip-styles.js +246 -0
  88. package/dist/components/chips/chip-styles.js.map +1 -0
  89. package/dist/components/color-picker/RuiColorBoard.js.map +1 -1
  90. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js +3 -3
  91. package/dist/components/color-picker/RuiColorBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  92. package/dist/components/color-picker/RuiColorHue.js.map +1 -1
  93. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js +3 -3
  94. package/dist/components/color-picker/RuiColorHue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  95. package/dist/components/color-picker/RuiColorPicker.js.map +1 -1
  96. package/dist/components/color-picker/RuiColorPicker.vue.d.ts +5 -2
  97. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js +3 -3
  98. package/dist/components/color-picker/RuiColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/color-picker/color-board-styles.d.ts +1 -0
  100. package/dist/components/color-picker/color-board-styles.js +7 -0
  101. package/dist/components/color-picker/color-board-styles.js.map +1 -0
  102. package/dist/components/color-picker/color-hue-styles.d.ts +1 -0
  103. package/dist/components/color-picker/color-hue-styles.js +7 -0
  104. package/dist/components/color-picker/color-hue-styles.js.map +1 -0
  105. package/dist/components/color-picker/color-picker-styles.d.ts +1 -0
  106. package/dist/components/color-picker/color-picker-styles.js +7 -0
  107. package/dist/components/color-picker/color-picker-styles.js.map +1 -0
  108. package/dist/components/date-time-picker/RuiDateTimePicker.js.map +1 -1
  109. package/dist/components/date-time-picker/RuiDateTimePicker.vue.d.ts +39 -30
  110. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js +8 -3
  111. package/dist/components/date-time-picker/RuiDateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/components/date-time-picker/RuiDateTimePickerMenu.js.map +1 -1
  113. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue.d.ts +2 -1
  114. package/dist/components/date-time-picker/RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  115. package/dist/components/date-time-picker/RuiTimezoneSelect.js.map +1 -1
  116. package/dist/components/date-time-picker/RuiTimezoneSelect.vue.d.ts +2 -1
  117. package/dist/components/date-time-picker/RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/divider/RuiDivider.js.map +1 -1
  119. package/dist/components/divider/RuiDivider.vue.d.ts +3 -1
  120. package/dist/components/divider/RuiDivider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/components/forms/auto-complete/RuiAutoComplete.js.map +1 -1
  122. package/dist/components/forms/auto-complete/RuiAutoComplete.vue.d.ts +11 -5
  123. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js +5 -0
  124. package/dist/components/forms/auto-complete/RuiAutoComplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  125. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.js.map +1 -1
  126. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.vue.d.ts +2 -1
  127. package/dist/components/forms/auto-complete/RuiAutoCompleteOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.js.map +1 -1
  129. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue.d.ts +2 -2
  130. package/dist/components/forms/auto-complete/RuiAutoCompleteOptionList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/components/forms/auto-complete/auto-complete-props.d.ts +0 -1
  132. package/dist/components/forms/category-picker/RuiCategoryPicker.js.map +1 -1
  133. package/dist/components/forms/category-picker/RuiCategoryPicker.vue.d.ts +2 -1
  134. package/dist/components/forms/category-picker/RuiCategoryPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  135. package/dist/components/forms/checkbox/RuiCheckbox.js.map +1 -1
  136. package/dist/components/forms/checkbox/RuiCheckbox.vue.d.ts +2 -1
  137. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js +4 -1
  138. package/dist/components/forms/checkbox/RuiCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.js.map +1 -1
  140. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue.d.ts +2 -1
  141. package/dist/components/forms/checkbox/checkbox-group/RuiCheckboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/forms/field-label/RuiFieldLabel.js.map +1 -1
  143. package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js +1 -11
  144. package/dist/components/forms/field-label/RuiFieldLabel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  145. package/dist/components/forms/field-label/field-label-styles.d.ts +43 -0
  146. package/dist/components/forms/field-label/field-label-styles.js +16 -0
  147. package/dist/components/forms/field-label/field-label-styles.js.map +1 -0
  148. package/dist/components/forms/file-upload/RuiFileUpload.js.map +1 -1
  149. package/dist/components/forms/file-upload/RuiFileUpload.vue.d.ts +36 -29
  150. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js +5 -0
  151. package/dist/components/forms/file-upload/RuiFileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/forms/radio-button/radio/RuiRadio.js.map +1 -1
  153. package/dist/components/forms/radio-button/radio/RuiRadio.vue.d.ts +5 -3
  154. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js +7 -8
  155. package/dist/components/forms/radio-button/radio/RuiRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.js.map +1 -1
  157. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue.d.ts +5 -3
  158. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js +9 -10
  159. package/dist/components/forms/radio-button/radio-group/RuiRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  160. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.js.map +1 -1
  161. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue.d.ts +9 -2
  162. package/dist/components/forms/revealable-text-field/RuiRevealableTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  163. package/dist/components/forms/select/RuiMenuSelect.js.map +1 -1
  164. package/dist/components/forms/select/RuiMenuSelect.vue.d.ts +10 -4
  165. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js +5 -0
  166. package/dist/components/forms/select/RuiMenuSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  167. package/dist/components/forms/select/RuiSimpleSelect.js.map +1 -1
  168. package/dist/components/forms/select/RuiSimpleSelect.vue.d.ts +22 -11
  169. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js +2 -11
  170. package/dist/components/forms/select/RuiSimpleSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/components/forms/select/simple-select-styles.d.ts +2 -0
  172. package/dist/components/forms/select/simple-select-styles.js +15 -0
  173. package/dist/components/forms/select/simple-select-styles.js.map +1 -0
  174. package/dist/components/forms/slider/RuiSlider.js.map +1 -1
  175. package/dist/components/forms/slider/RuiSlider.vue.d.ts +2 -1
  176. package/dist/components/forms/slider/RuiSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  177. package/dist/components/forms/switch/RuiSwitch.js.map +1 -1
  178. package/dist/components/forms/switch/RuiSwitch.vue.d.ts +2 -1
  179. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js +1 -126
  180. package/dist/components/forms/switch/RuiSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/components/forms/switch/switch-styles.d.ts +151 -0
  182. package/dist/components/forms/switch/switch-styles.js +131 -0
  183. package/dist/components/forms/switch/switch-styles.js.map +1 -0
  184. package/dist/components/forms/text-area/RuiTextArea.js.map +1 -1
  185. package/dist/components/forms/text-area/RuiTextArea.vue.d.ts +3 -1
  186. package/dist/components/forms/text-area/RuiTextArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  187. package/dist/components/forms/text-field/RuiTextField.js.map +1 -1
  188. package/dist/components/forms/text-field/RuiTextField.vue.d.ts +3 -1
  189. package/dist/components/forms/text-field/RuiTextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  190. package/dist/components/icons/RuiIcon.js.map +1 -1
  191. package/dist/components/icons/RuiIcon.vue.d.ts +3 -1
  192. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js +2 -28
  193. package/dist/components/icons/RuiIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  194. package/dist/components/icons/icon-styles.d.ts +44 -0
  195. package/dist/components/icons/icon-styles.js +33 -0
  196. package/dist/components/icons/icon-styles.js.map +1 -0
  197. package/dist/components/index.d.ts +2 -2
  198. package/dist/components/loaders/RuiSkeletonBase.js.map +1 -1
  199. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js +2 -12
  200. package/dist/components/loaders/RuiSkeletonBase.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/loaders/RuiSkeletonLoader.js.map +1 -1
  202. package/dist/components/loaders/RuiSkeletonLoader.vue.d.ts +3 -1
  203. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js +3 -13
  204. package/dist/components/loaders/RuiSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  205. package/dist/components/loaders/skeleton-base-styles.d.ts +25 -0
  206. package/dist/components/loaders/skeleton-base-styles.js +16 -0
  207. package/dist/components/loaders/skeleton-base-styles.js.map +1 -0
  208. package/dist/components/loaders/skeleton-loader-styles.d.ts +37 -0
  209. package/dist/components/loaders/skeleton-loader-styles.js +18 -0
  210. package/dist/components/loaders/skeleton-loader-styles.js.map +1 -0
  211. package/dist/components/logos/RuiLogo.js.map +1 -1
  212. package/dist/components/logos/RuiLogo.vue.d.ts +3 -1
  213. package/dist/components/logos/RuiLogo.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/overlays/badge/RuiBadge.js.map +1 -1
  215. package/dist/components/overlays/badge/RuiBadge.vue.d.ts +3 -1
  216. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js +1 -83
  217. package/dist/components/overlays/badge/RuiBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  218. package/dist/components/overlays/badge/badge-styles.d.ts +193 -0
  219. package/dist/components/overlays/badge/badge-styles.js +88 -0
  220. package/dist/components/overlays/badge/badge-styles.js.map +1 -0
  221. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.js.map +1 -1
  222. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue.d.ts +11 -5
  223. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js +6 -7
  224. package/dist/components/overlays/bottom-sheet/RuiBottomSheet.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/components/overlays/dialog/RuiDialog.js.map +1 -1
  226. package/dist/components/overlays/dialog/RuiDialog.vue.d.ts +5 -3
  227. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js +3 -14
  228. package/dist/components/overlays/dialog/RuiDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/overlays/dialog/dialog-styles.d.ts +40 -0
  230. package/dist/components/overlays/dialog/dialog-styles.js +18 -0
  231. package/dist/components/overlays/dialog/dialog-styles.js.map +1 -0
  232. package/dist/components/overlays/menu/RuiMenu.js.map +1 -1
  233. package/dist/components/overlays/menu/RuiMenu.vue.d.ts +11 -1
  234. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js +113 -58
  235. package/dist/components/overlays/menu/RuiMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  236. package/dist/components/overlays/menu/menu-styles.d.ts +58 -0
  237. package/dist/components/overlays/menu/menu-styles.js +25 -0
  238. package/dist/components/overlays/menu/menu-styles.js.map +1 -0
  239. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.js.map +1 -1
  240. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue.d.ts +2 -1
  241. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js +4 -69
  242. package/dist/components/overlays/navigation-drawer/RuiNavigationDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  243. package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.d.ts +76 -0
  244. package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.js +72 -0
  245. package/dist/components/overlays/navigation-drawer/navigation-drawer-styles.js.map +1 -0
  246. package/dist/components/overlays/notification/RuiNotification.js.map +1 -1
  247. package/dist/components/overlays/notification/RuiNotification.vue.d.ts +2 -1
  248. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js +3 -3
  249. package/dist/components/overlays/notification/RuiNotification.vue_vue_type_script_setup_true_lang.js.map +1 -1
  250. package/dist/components/overlays/notification/notification-styles.d.ts +1 -0
  251. package/dist/components/overlays/notification/notification-styles.js +7 -0
  252. package/dist/components/overlays/notification/notification-styles.js.map +1 -0
  253. package/dist/components/overlays/tooltip/RuiTooltip.js.map +1 -1
  254. package/dist/components/overlays/tooltip/RuiTooltip.vue.d.ts +8 -4
  255. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js +42 -25
  256. package/dist/components/overlays/tooltip/RuiTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/components/overlays/tooltip/tooltip-styles.d.ts +2 -0
  258. package/dist/components/overlays/tooltip/tooltip-styles.js +3 -1
  259. package/dist/components/overlays/tooltip/tooltip-styles.js.map +1 -1
  260. package/dist/components/progress/RuiProgress.js.map +1 -1
  261. package/dist/components/progress/RuiProgress.vue.d.ts +3 -1
  262. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js +1 -133
  263. package/dist/components/progress/RuiProgress.vue_vue_type_script_setup_true_lang.js.map +1 -1
  264. package/dist/components/progress/progress-styles.d.ts +181 -0
  265. package/dist/components/progress/progress-styles.js +139 -0
  266. package/dist/components/progress/progress-styles.js.map +1 -0
  267. package/dist/components/steppers/RuiFooterStepper.js.map +1 -1
  268. package/dist/components/steppers/RuiFooterStepper.vue.d.ts +2 -1
  269. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js +3 -13
  270. package/dist/components/steppers/RuiFooterStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/components/steppers/RuiStepper.js.map +1 -1
  272. package/dist/components/steppers/RuiStepper.vue.d.ts +3 -1
  273. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js +4 -94
  274. package/dist/components/steppers/RuiStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  275. package/dist/components/steppers/RuiStepperIcon.js.map +1 -1
  276. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js +2 -34
  277. package/dist/components/steppers/RuiStepperIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  278. package/dist/components/steppers/footer-stepper-styles.d.ts +28 -0
  279. package/dist/components/steppers/footer-stepper-styles.js +16 -0
  280. package/dist/components/steppers/footer-stepper-styles.js.map +1 -0
  281. package/dist/components/steppers/stepper-icon-styles.d.ts +60 -0
  282. package/dist/components/steppers/stepper-icon-styles.js +39 -0
  283. package/dist/components/steppers/stepper-icon-styles.js.map +1 -0
  284. package/dist/components/steppers/stepper-styles.d.ts +202 -0
  285. package/dist/components/steppers/stepper-styles.js +98 -0
  286. package/dist/components/steppers/stepper-styles.js.map +1 -0
  287. package/dist/components/tables/RuiDataTable.js.map +1 -1
  288. package/dist/components/tables/RuiDataTable.vue.d.ts +14 -19
  289. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js +25 -29
  290. package/dist/components/tables/RuiDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  291. package/dist/components/tables/RuiExpandButton.js.map +1 -1
  292. package/dist/components/tables/RuiExpandButton.vue.d.ts +3 -1
  293. package/dist/components/tables/RuiExpandButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  294. package/dist/components/tables/RuiTable.js.map +1 -1
  295. package/dist/components/tables/RuiTable.vue.d.ts +4 -2
  296. package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js +1 -32
  297. package/dist/components/tables/RuiTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  298. package/dist/components/tables/RuiTableEmptyState.js.map +1 -1
  299. package/dist/components/tables/RuiTableEmptyState.vue.d.ts +3 -1
  300. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js +1 -15
  301. package/dist/components/tables/RuiTableEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  302. package/dist/components/tables/RuiTableErrorState.js.map +1 -1
  303. package/dist/components/tables/RuiTableErrorState.vue.d.ts +4 -2
  304. package/dist/components/tables/RuiTableErrorState.vue_vue_type_script_setup_true_lang.js +2 -5
  305. package/dist/components/tables/RuiTableErrorState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/dist/components/tables/RuiTableHead.js.map +1 -1
  307. package/dist/components/tables/RuiTableHead.vue.d.ts +3 -2
  308. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js +4 -37
  309. package/dist/components/tables/RuiTableHead.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/components/tables/RuiTableLoadingState.js.map +1 -1
  311. package/dist/components/tables/RuiTableLoadingState.vue.d.ts +3 -1
  312. package/dist/components/tables/RuiTableLoadingState.vue_vue_type_script_setup_true_lang.js +1 -8
  313. package/dist/components/tables/RuiTableLoadingState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  314. package/dist/components/tables/RuiTablePagination.js.map +1 -1
  315. package/dist/components/tables/RuiTablePagination.vue.d.ts +2 -1
  316. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js +1 -30
  317. package/dist/components/tables/RuiTablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  318. package/dist/components/tables/data-table/RuiDataTableCell.js.map +1 -1
  319. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js +2 -4
  320. package/dist/components/tables/data-table/RuiDataTableCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  321. package/dist/components/tables/data-table/RuiDataTableMobileSort.js.map +1 -1
  322. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue.d.ts +1 -1
  323. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js +2 -3
  324. package/dist/components/tables/data-table/RuiDataTableMobileSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
  325. package/dist/components/tables/data-table/context.d.ts +6 -6
  326. package/dist/components/tables/data-table/context.js +1 -1
  327. package/dist/components/tables/data-table/context.js.map +1 -1
  328. package/dist/components/tables/table-empty-state-styles.d.ts +43 -0
  329. package/dist/components/tables/table-empty-state-styles.js +20 -0
  330. package/dist/components/tables/table-empty-state-styles.js.map +1 -0
  331. package/dist/components/tables/table-error-state-styles.d.ts +36 -0
  332. package/dist/components/tables/table-error-state-styles.js +15 -0
  333. package/dist/components/tables/table-error-state-styles.js.map +1 -0
  334. package/dist/components/tables/table-head-styles.d.ts +91 -0
  335. package/dist/components/tables/table-head-styles.js +39 -0
  336. package/dist/components/tables/table-head-styles.js.map +1 -0
  337. package/dist/components/tables/table-loading-state-styles.d.ts +34 -0
  338. package/dist/components/tables/table-loading-state-styles.js +13 -0
  339. package/dist/components/tables/table-loading-state-styles.js.map +1 -0
  340. package/dist/components/tables/table-pagination-styles.d.ts +82 -0
  341. package/dist/components/tables/table-pagination-styles.js +35 -0
  342. package/dist/components/tables/table-pagination-styles.js.map +1 -0
  343. package/dist/components/tables/table-props.d.ts +9 -0
  344. package/dist/components/tables/table-props.js +13 -1
  345. package/dist/components/tables/table-props.js.map +1 -1
  346. package/dist/components/tables/table-styles.d.ts +62 -0
  347. package/dist/components/tables/table-styles.js +37 -0
  348. package/dist/components/tables/table-styles.js.map +1 -0
  349. package/dist/components/tabs/tab/RuiTab.js.map +1 -1
  350. package/dist/components/tabs/tab/RuiTab.vue.d.ts +4 -2
  351. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js +3 -84
  352. package/dist/components/tabs/tab/RuiTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/components/tabs/tab/tab-styles.d.ts +153 -0
  354. package/dist/components/tabs/tab/tab-styles.js +89 -0
  355. package/dist/components/tabs/tab/tab-styles.js.map +1 -0
  356. package/dist/components/tabs/tab-item/RuiTabItem.js.map +1 -1
  357. package/dist/components/tabs/tab-item/RuiTabItem.vue.d.ts +3 -1
  358. package/dist/components/tabs/tab-item/RuiTabItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  359. package/dist/components/tabs/tab-items/RuiTabItems.js.map +1 -1
  360. package/dist/components/tabs/tab-items/RuiTabItems.vue.d.ts +5 -12
  361. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js +8 -14
  362. package/dist/components/tabs/tab-items/RuiTabItems.vue_vue_type_script_setup_true_lang.js.map +1 -1
  363. package/dist/components/tabs/tabs/RuiTabs.js.map +1 -1
  364. package/dist/components/tabs/tabs/RuiTabs.vue.d.ts +26 -14
  365. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js +13 -150
  366. package/dist/components/tabs/tabs/RuiTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  367. package/dist/components/tabs/tabs/tabs-styles.d.ts +168 -0
  368. package/dist/components/tabs/tabs/tabs-styles.js +142 -0
  369. package/dist/components/tabs/tabs/tabs-styles.js.map +1 -0
  370. package/dist/components/time-picker/RuiTimePicker.js.map +1 -1
  371. package/dist/components/time-picker/RuiTimePicker.vue.d.ts +2 -1
  372. package/dist/components/time-picker/RuiTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  373. package/dist/composables/dropdown-menu.js.map +1 -1
  374. package/dist/composables/floating.d.ts +3 -1
  375. package/dist/composables/floating.js +8 -9
  376. package/dist/composables/floating.js.map +1 -1
  377. package/dist/composables/forms/auto-complete/search.js.map +1 -1
  378. package/dist/composables/forms/auto-complete/value.d.ts +1 -1
  379. package/dist/composables/forms/auto-complete/value.js.map +1 -1
  380. package/dist/composables/prop-model.d.ts +21 -0
  381. package/dist/composables/prop-model.js +33 -0
  382. package/dist/composables/prop-model.js.map +1 -0
  383. package/dist/composables/tables/data-table/columns.d.ts +2 -1
  384. package/dist/composables/tables/data-table/columns.js.map +1 -1
  385. package/dist/composables/tables/data-table/types.d.ts +35 -0
  386. package/dist/composables/tables/data-table/types.js.map +1 -1
  387. package/dist/composables/use-rui-i18n.d.ts +6 -3
  388. package/dist/composables/use-rui-i18n.js +1 -1
  389. package/dist/composables/use-rui-i18n.js.map +1 -1
  390. package/dist/icons/icons_1.d.ts +1 -1
  391. package/dist/icons/icons_1.js +10 -9
  392. package/dist/icons/icons_1.js.map +1 -1
  393. package/dist/icons/icons_2.d.ts +1 -1
  394. package/dist/icons/icons_2.js +9 -11
  395. package/dist/icons/icons_2.js.map +1 -1
  396. package/dist/icons/icons_3.d.ts +1 -1
  397. package/dist/icons/icons_3.js +11 -5
  398. package/dist/icons/icons_3.js.map +1 -1
  399. package/dist/icons/icons_4.d.ts +1 -1
  400. package/dist/icons/icons_4.js +5 -10
  401. package/dist/icons/icons_4.js.map +1 -1
  402. package/dist/icons/icons_5.d.ts +1 -0
  403. package/dist/icons/icons_5.js +10 -1
  404. package/dist/icons/icons_5.js.map +1 -1
  405. package/dist/icons/index.d.ts +1 -1
  406. package/dist/icons/index.js +7 -6
  407. package/dist/icons/index.js.map +1 -1
  408. package/dist/index.d.ts +7 -1
  409. package/dist/index.js +20 -12
  410. package/dist/index.js.map +1 -1
  411. package/dist/types/attributes.d.ts +9 -0
  412. package/dist/utils/blockie.js +10 -9
  413. package/dist/utils/blockie.js.map +1 -1
  414. package/dist/utils/form-text-detail.d.ts +2 -0
  415. package/dist/utils/form-text-detail.js +5 -1
  416. package/dist/utils/form-text-detail.js.map +1 -1
  417. package/dist/web-types.json +290 -110
  418. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDateTimePickerMenu.js","names":["_sfc_main"],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { DateTimePickerAction } from '@/components/date-time-picker/types';\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport RuiTimezoneSelect from '@/components/date-time-picker/RuiTimezoneSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTimePicker, { type TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\ndefineOptions({\n name: 'RuiDateTimePickerMenu',\n});\n\nconst selectedDate = defineModel<Date | undefined>('selectedDate', { required: true });\nconst selectedTime = defineModel<Date | undefined>('selectedTime', { required: true });\nconst selectedHour = defineModel<number | undefined>('selectedHour', { required: true });\nconst selectedMinute = defineModel<number | undefined>('selectedMinute', { required: true });\nconst selectedSecond = defineModel<number | undefined>('selectedSecond', { required: true });\nconst selectedMillisecond = defineModel<number | undefined>('selectedMillisecond', { required: true });\nconst timeSelection = defineModel<TimePickerSelection>('timeSelection', { required: true });\nconst selectedTimezone = defineModel<string | undefined>('selectedTimezone', { required: true });\nconst calendarMenuOpen = defineModel<boolean>('calendarMenuOpen', { required: true });\n\nconst { actions = [] } = defineProps<{\n accuracy: TimeAccuracy;\n actions?: DateTimePickerAction[];\n maxDate?: Date | number;\n minDate?: Date | number;\n showTimezone?: boolean;\n}>();\n\nconst emit = defineEmits<{\n 'set-now': [];\n 'set-today': [];\n 'clear': [];\n}>();\n\ndefineSlots<{\n default: () => any;\n}>();\n\nconst { t } = useRuiI8n();\n\nconst keys = RUI_I18N_KEYS.dateTimePicker;\n\ninterface ActionConfig {\n id: DateTimePickerAction;\n icon: 'lu-clock' | 'lu-calendar-days' | 'lu-x';\n label: string;\n handler: () => void;\n}\n\nconst actionConfig = computed<ActionConfig[]>(() => {\n const available: Record<DateTimePickerAction, ActionConfig> = {\n clear: {\n handler: () => emit('clear'),\n icon: 'lu-x',\n id: 'clear',\n label: t(keys.clear, 'Clear'),\n },\n now: {\n handler: () => emit('set-now'),\n icon: 'lu-clock',\n id: 'now',\n label: t(keys.now, 'Now'),\n },\n today: {\n handler: () => emit('set-today'),\n icon: 'lu-calendar-days',\n id: 'today',\n label: t(keys.today, 'Today'),\n },\n };\n\n return actions.map(action => available[action]).filter(Boolean);\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"flex between:border-l between:border-r-0 between:border-rui-divider\">\n <RuiCalendar\n v-model=\"selectedDate\"\n v-model:menu-open=\"calendarMenuOpen\"\n borderless\n :max-date=\"maxDate\"\n :min-date=\"minDate\"\n />\n <RuiTimePicker\n v-model=\"selectedTime\"\n v-model:hour=\"selectedHour\"\n v-model:minute=\"selectedMinute\"\n v-model:second=\"selectedSecond\"\n v-model:millisecond=\"selectedMillisecond\"\n v-model:selection=\"timeSelection\"\n :accuracy=\"accuracy\"\n borderless\n />\n <div v-if=\"showTimezone || $slots.default\">\n <div\n v-if=\"showTimezone\"\n class=\"p-4 pl-3\"\n >\n <RuiTimezoneSelect\n v-model=\"selectedTimezone\"\n data-id=\"timezone-select\"\n details=\"hidden\"\n class=\"pt-0 pr-0\"\n />\n </div>\n <slot />\n </div>\n </div>\n <div\n v-if=\"actionConfig.length > 0\"\n data-id=\"actions\"\n class=\"flex justify-end gap-1 px-3 py-2 border-t border-rui-divider\"\n >\n <RuiButton\n v-for=\"action in actionConfig\"\n :key=\"action.id\"\n variant=\"text\"\n size=\"sm\"\n color=\"primary\"\n :data-id=\"`action-${action.id}`\"\n @click=\"action.handler()\"\n >\n <template #prepend>\n <RuiIcon\n :name=\"action.icon\"\n size=\"16\"\n />\n </template>\n {{ action.label }}\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiDateTimePickerMenu.js","names":["_sfc_main"],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue';\nimport type { DateTimePickerAction } from '@/components/date-time-picker/types';\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport RuiTimezoneSelect from '@/components/date-time-picker/RuiTimezoneSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTimePicker, { type TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\ndefineOptions({\n name: 'RuiDateTimePickerMenu',\n});\n\nconst selectedDate = defineModel<Date | undefined>('selectedDate', { required: true });\nconst selectedTime = defineModel<Date | undefined>('selectedTime', { required: true });\nconst selectedHour = defineModel<number | undefined>('selectedHour', { required: true });\nconst selectedMinute = defineModel<number | undefined>('selectedMinute', { required: true });\nconst selectedSecond = defineModel<number | undefined>('selectedSecond', { required: true });\nconst selectedMillisecond = defineModel<number | undefined>('selectedMillisecond', { required: true });\nconst timeSelection = defineModel<TimePickerSelection>('timeSelection', { required: true });\nconst selectedTimezone = defineModel<string | undefined>('selectedTimezone', { required: true });\nconst calendarMenuOpen = defineModel<boolean>('calendarMenuOpen', { required: true });\n\nconst { actions = [] } = defineProps<{\n accuracy: TimeAccuracy;\n actions?: DateTimePickerAction[];\n maxDate?: Date | number;\n minDate?: Date | number;\n showTimezone?: boolean;\n} & /* @vue-ignore */ HTMLAttributes>();\n\nconst emit = defineEmits<{\n 'set-now': [];\n 'set-today': [];\n 'clear': [];\n}>();\n\ndefineSlots<{\n default: () => any;\n}>();\n\nconst { t } = useRuiI8n();\n\nconst keys = RUI_I18N_KEYS.dateTimePicker;\n\ninterface ActionConfig {\n id: DateTimePickerAction;\n icon: 'lu-clock' | 'lu-calendar-days' | 'lu-x';\n label: string;\n handler: () => void;\n}\n\nconst actionConfig = computed<ActionConfig[]>(() => {\n const available: Record<DateTimePickerAction, ActionConfig> = {\n clear: {\n handler: () => emit('clear'),\n icon: 'lu-x',\n id: 'clear',\n label: t(keys.clear, 'Clear'),\n },\n now: {\n handler: () => emit('set-now'),\n icon: 'lu-clock',\n id: 'now',\n label: t(keys.now, 'Now'),\n },\n today: {\n handler: () => emit('set-today'),\n icon: 'lu-calendar-days',\n id: 'today',\n label: t(keys.today, 'Today'),\n },\n };\n\n return actions.map(action => available[action]).filter(Boolean);\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"flex between:border-l between:border-r-0 between:border-rui-divider\">\n <RuiCalendar\n v-model=\"selectedDate\"\n v-model:menu-open=\"calendarMenuOpen\"\n borderless\n :max-date=\"maxDate\"\n :min-date=\"minDate\"\n />\n <RuiTimePicker\n v-model=\"selectedTime\"\n v-model:hour=\"selectedHour\"\n v-model:minute=\"selectedMinute\"\n v-model:second=\"selectedSecond\"\n v-model:millisecond=\"selectedMillisecond\"\n v-model:selection=\"timeSelection\"\n :accuracy=\"accuracy\"\n borderless\n />\n <div v-if=\"showTimezone || $slots.default\">\n <div\n v-if=\"showTimezone\"\n class=\"p-4 pl-3\"\n >\n <RuiTimezoneSelect\n v-model=\"selectedTimezone\"\n data-id=\"timezone-select\"\n details=\"hidden\"\n class=\"pt-0 pr-0\"\n />\n </div>\n <slot />\n </div>\n </div>\n <div\n v-if=\"actionConfig.length > 0\"\n data-id=\"actions\"\n class=\"flex justify-end gap-1 px-3 py-2 border-t border-rui-divider\"\n >\n <RuiButton\n v-for=\"action in actionConfig\"\n :key=\"action.id\"\n variant=\"text\"\n size=\"sm\"\n color=\"primary\"\n :data-id=\"`action-${action.id}`\"\n @click=\"action.handler()\"\n >\n <template #prepend>\n <RuiIcon\n :name=\"action.icon\"\n size=\"16\"\n />\n </template>\n {{ action.label }}\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { HTMLAttributes } from 'vue';
1
2
  import type { DateTimePickerAction } from './types.js';
2
3
  import type { TimeAccuracy } from '../../consts/time-accuracy.js';
3
4
  import { type TimePickerSelection } from '../time-picker/RuiTimePicker.vue.js';
@@ -7,7 +8,7 @@ type __VLS_Props = {
7
8
  maxDate?: Date | number;
8
9
  minDate?: Date | number;
9
10
  showTimezone?: boolean;
10
- };
11
+ } & /* @vue-ignore */ HTMLAttributes;
11
12
  type __VLS_Slots = {
12
13
  default: () => any;
13
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createElementBlock","_createElementVNode","_createVNode","RuiCalendar","RuiTimePicker","RuiTimezoneSelect","_createCommentVNode","_renderSlot","_unref","_Fragment","_renderList","_createBlock","RuiButton","_withCtx","RuiIcon","_createTextVNode","_toDisplayString"],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { DateTimePickerAction } from '@/components/date-time-picker/types';\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport RuiTimezoneSelect from '@/components/date-time-picker/RuiTimezoneSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTimePicker, { type TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\ndefineOptions({\n name: 'RuiDateTimePickerMenu',\n});\n\nconst selectedDate = defineModel<Date | undefined>('selectedDate', { required: true });\nconst selectedTime = defineModel<Date | undefined>('selectedTime', { required: true });\nconst selectedHour = defineModel<number | undefined>('selectedHour', { required: true });\nconst selectedMinute = defineModel<number | undefined>('selectedMinute', { required: true });\nconst selectedSecond = defineModel<number | undefined>('selectedSecond', { required: true });\nconst selectedMillisecond = defineModel<number | undefined>('selectedMillisecond', { required: true });\nconst timeSelection = defineModel<TimePickerSelection>('timeSelection', { required: true });\nconst selectedTimezone = defineModel<string | undefined>('selectedTimezone', { required: true });\nconst calendarMenuOpen = defineModel<boolean>('calendarMenuOpen', { required: true });\n\nconst { actions = [] } = defineProps<{\n accuracy: TimeAccuracy;\n actions?: DateTimePickerAction[];\n maxDate?: Date | number;\n minDate?: Date | number;\n showTimezone?: boolean;\n}>();\n\nconst emit = defineEmits<{\n 'set-now': [];\n 'set-today': [];\n 'clear': [];\n}>();\n\ndefineSlots<{\n default: () => any;\n}>();\n\nconst { t } = useRuiI8n();\n\nconst keys = RUI_I18N_KEYS.dateTimePicker;\n\ninterface ActionConfig {\n id: DateTimePickerAction;\n icon: 'lu-clock' | 'lu-calendar-days' | 'lu-x';\n label: string;\n handler: () => void;\n}\n\nconst actionConfig = computed<ActionConfig[]>(() => {\n const available: Record<DateTimePickerAction, ActionConfig> = {\n clear: {\n handler: () => emit('clear'),\n icon: 'lu-x',\n id: 'clear',\n label: t(keys.clear, 'Clear'),\n },\n now: {\n handler: () => emit('set-now'),\n icon: 'lu-clock',\n id: 'now',\n label: t(keys.now, 'Now'),\n },\n today: {\n handler: () => emit('set-today'),\n icon: 'lu-calendar-days',\n id: 'today',\n label: t(keys.today, 'Today'),\n },\n };\n\n return actions.map(action => available[action]).filter(Boolean);\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"flex between:border-l between:border-r-0 between:border-rui-divider\">\n <RuiCalendar\n v-model=\"selectedDate\"\n v-model:menu-open=\"calendarMenuOpen\"\n borderless\n :max-date=\"maxDate\"\n :min-date=\"minDate\"\n />\n <RuiTimePicker\n v-model=\"selectedTime\"\n v-model:hour=\"selectedHour\"\n v-model:minute=\"selectedMinute\"\n v-model:second=\"selectedSecond\"\n v-model:millisecond=\"selectedMillisecond\"\n v-model:selection=\"timeSelection\"\n :accuracy=\"accuracy\"\n borderless\n />\n <div v-if=\"showTimezone || $slots.default\">\n <div\n v-if=\"showTimezone\"\n class=\"p-4 pl-3\"\n >\n <RuiTimezoneSelect\n v-model=\"selectedTimezone\"\n data-id=\"timezone-select\"\n details=\"hidden\"\n class=\"pt-0 pr-0\"\n />\n </div>\n <slot />\n </div>\n </div>\n <div\n v-if=\"actionConfig.length > 0\"\n data-id=\"actions\"\n class=\"flex justify-end gap-1 px-3 py-2 border-t border-rui-divider\"\n >\n <RuiButton\n v-for=\"action in actionConfig\"\n :key=\"action.id\"\n variant=\"text\"\n size=\"sm\"\n color=\"primary\"\n :data-id=\"`action-${action.id}`\"\n @click=\"action.handler()\"\n >\n <template #prepend>\n <RuiIcon\n :name=\"action.icon\"\n size=\"16\"\n />\n </template>\n {{ action.label }}\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiDateTimePickerMenu.vue_vue_type_script_setup_true_lang.js","names":["$slots","_useModel","_openBlock","_createElementBlock","_createElementVNode","_createVNode","RuiCalendar","RuiTimePicker","RuiTimezoneSelect","_createCommentVNode","_renderSlot","_unref","_Fragment","_renderList","_createBlock","RuiButton","_withCtx","RuiIcon","_createTextVNode","_toDisplayString"],"sources":["../../../src/components/date-time-picker/RuiDateTimePickerMenu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue';\nimport type { DateTimePickerAction } from '@/components/date-time-picker/types';\nimport type { TimeAccuracy } from '@/consts/time-accuracy';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport RuiCalendar from '@/components/calendar/RuiCalendar.vue';\nimport RuiTimezoneSelect from '@/components/date-time-picker/RuiTimezoneSelect.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport RuiTimePicker, { type TimePickerSelection } from '@/components/time-picker/RuiTimePicker.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\ndefineOptions({\n name: 'RuiDateTimePickerMenu',\n});\n\nconst selectedDate = defineModel<Date | undefined>('selectedDate', { required: true });\nconst selectedTime = defineModel<Date | undefined>('selectedTime', { required: true });\nconst selectedHour = defineModel<number | undefined>('selectedHour', { required: true });\nconst selectedMinute = defineModel<number | undefined>('selectedMinute', { required: true });\nconst selectedSecond = defineModel<number | undefined>('selectedSecond', { required: true });\nconst selectedMillisecond = defineModel<number | undefined>('selectedMillisecond', { required: true });\nconst timeSelection = defineModel<TimePickerSelection>('timeSelection', { required: true });\nconst selectedTimezone = defineModel<string | undefined>('selectedTimezone', { required: true });\nconst calendarMenuOpen = defineModel<boolean>('calendarMenuOpen', { required: true });\n\nconst { actions = [] } = defineProps<{\n accuracy: TimeAccuracy;\n actions?: DateTimePickerAction[];\n maxDate?: Date | number;\n minDate?: Date | number;\n showTimezone?: boolean;\n} & /* @vue-ignore */ HTMLAttributes>();\n\nconst emit = defineEmits<{\n 'set-now': [];\n 'set-today': [];\n 'clear': [];\n}>();\n\ndefineSlots<{\n default: () => any;\n}>();\n\nconst { t } = useRuiI8n();\n\nconst keys = RUI_I18N_KEYS.dateTimePicker;\n\ninterface ActionConfig {\n id: DateTimePickerAction;\n icon: 'lu-clock' | 'lu-calendar-days' | 'lu-x';\n label: string;\n handler: () => void;\n}\n\nconst actionConfig = computed<ActionConfig[]>(() => {\n const available: Record<DateTimePickerAction, ActionConfig> = {\n clear: {\n handler: () => emit('clear'),\n icon: 'lu-x',\n id: 'clear',\n label: t(keys.clear, 'Clear'),\n },\n now: {\n handler: () => emit('set-now'),\n icon: 'lu-clock',\n id: 'now',\n label: t(keys.now, 'Now'),\n },\n today: {\n handler: () => emit('set-today'),\n icon: 'lu-calendar-days',\n id: 'today',\n label: t(keys.today, 'Today'),\n },\n };\n\n return actions.map(action => available[action]).filter(Boolean);\n});\n</script>\n\n<template>\n <div class=\"flex flex-col\">\n <div class=\"flex between:border-l between:border-r-0 between:border-rui-divider\">\n <RuiCalendar\n v-model=\"selectedDate\"\n v-model:menu-open=\"calendarMenuOpen\"\n borderless\n :max-date=\"maxDate\"\n :min-date=\"minDate\"\n />\n <RuiTimePicker\n v-model=\"selectedTime\"\n v-model:hour=\"selectedHour\"\n v-model:minute=\"selectedMinute\"\n v-model:second=\"selectedSecond\"\n v-model:millisecond=\"selectedMillisecond\"\n v-model:selection=\"timeSelection\"\n :accuracy=\"accuracy\"\n borderless\n />\n <div v-if=\"showTimezone || $slots.default\">\n <div\n v-if=\"showTimezone\"\n class=\"p-4 pl-3\"\n >\n <RuiTimezoneSelect\n v-model=\"selectedTimezone\"\n data-id=\"timezone-select\"\n details=\"hidden\"\n class=\"pt-0 pr-0\"\n />\n </div>\n <slot />\n </div>\n </div>\n <div\n v-if=\"actionConfig.length > 0\"\n data-id=\"actions\"\n class=\"flex justify-end gap-1 px-3 py-2 border-t border-rui-divider\"\n >\n <RuiButton\n v-for=\"action in actionConfig\"\n :key=\"action.id\"\n variant=\"text\"\n size=\"sm\"\n color=\"primary\"\n :data-id=\"`action-${action.id}`\"\n @click=\"action.handler()\"\n >\n <template #prepend>\n <RuiIcon\n :name=\"action.icon\"\n size=\"16\"\n />\n </template>\n {{ action.label }}\n </RuiButton>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTimezoneSelect.js","names":["_sfc_main"],"sources":["../../../src/components/date-time-picker/RuiTimezoneSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RuiAutoCompleteClassNames } from '@/components/forms/auto-complete/auto-complete-props';\nimport type { MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport type { LabelPlacement } from '@/composables/defaults/field';\nimport type { FormDetails } from '@/utils/form-text-detail';\nimport { timezones } from '@/components/date-time-picker/timezones';\nimport RuiAutoComplete from '@/components/forms/auto-complete/RuiAutoComplete.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\nexport interface RuiTimezoneSelectProps {\n disabled?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n /** Where the label shows; falls back to the nearest `RuiFieldDefaults`, then the app default, then `top`. */\n labelPlacement?: LabelPlacement;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n /** The line under the field for its hint and messages: `reserve`, `auto` or `hidden`; falls back to the nearest `RuiFieldDefaults`, then the app default, then `reserve`. */\n details?: FormDetails;\n /** @deprecated Use `details=\"hidden\"`. Removed in 4.0. */\n hideDetails?: boolean;\n placeholder?: string;\n required?: boolean;\n classNames?: RuiAutoCompleteClassNames;\n menuOptions?: MenuProps;\n}\n\ndefineOptions({\n name: 'RuiTimezoneSelect',\n});\n\nconst modelValue = defineModel<string | undefined>({ required: true });\n\nconst {\n disabled = false,\n readOnly = false,\n dense = false,\n clearable = false,\n label,\n labelPlacement = undefined,\n hint,\n errorMessages,\n successMessages,\n details = undefined,\n hideDetails = false,\n placeholder,\n required = false,\n classNames,\n menuOptions,\n} = defineProps<RuiTimezoneSelectProps>();\n\nconst { t } = useRuiI8n();\n\nconst fieldLabel = computed<string>(() => label ?? t(RUI_I18N_KEYS.timezoneSelect.label, 'Timezone'));\n\ninterface TimezoneOption {\n value: string;\n label: string;\n}\n\nconst options: TimezoneOption[] = timezones.map(value => ({\n value,\n label: value.replace(/_/g, ' '),\n}));\n</script>\n\n<template>\n <RuiAutoComplete\n v-model=\"modelValue\"\n key-attr=\"value\"\n text-attr=\"label\"\n auto-select-first\n :options=\"options\"\n :label=\"fieldLabel\"\n :label-placement=\"labelPlacement\"\n :disabled=\"disabled\"\n :read-only=\"readOnly\"\n :dense=\"dense\"\n :clearable=\"clearable\"\n :hint=\"hint\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :details=\"hideDetails ? 'hidden' : details\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :class-names=\"classNames\"\n :menu-options=\"menuOptions\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiTimezoneSelect.js","names":["_sfc_main"],"sources":["../../../src/components/date-time-picker/RuiTimezoneSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue';\nimport type { RuiAutoCompleteClassNames } from '@/components/forms/auto-complete/auto-complete-props';\nimport type { MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport type { LabelPlacement } from '@/composables/defaults/field';\nimport type { FormDetails } from '@/utils/form-text-detail';\nimport { timezones } from '@/components/date-time-picker/timezones';\nimport RuiAutoComplete from '@/components/forms/auto-complete/RuiAutoComplete.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\nexport interface RuiTimezoneSelectProps {\n disabled?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n /** Where the label shows; falls back to the nearest `RuiFieldDefaults`, then the app default, then `top`. */\n labelPlacement?: LabelPlacement;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n /** The line under the field for its hint and messages: `reserve`, `auto` or `hidden`; falls back to the nearest `RuiFieldDefaults`, then the app default, then `reserve`. */\n details?: FormDetails;\n /** @deprecated Use `details=\"hidden\"`. Removed in 4.0. */\n hideDetails?: boolean;\n placeholder?: string;\n required?: boolean;\n classNames?: RuiAutoCompleteClassNames;\n menuOptions?: MenuProps;\n}\n\ndefineOptions({\n name: 'RuiTimezoneSelect',\n});\n\nconst modelValue = defineModel<string | undefined>({ required: true });\n\nconst {\n disabled = false,\n readOnly = false,\n dense = false,\n clearable = false,\n label,\n labelPlacement = undefined,\n hint,\n errorMessages,\n successMessages,\n details = undefined,\n hideDetails = false,\n placeholder,\n required = false,\n classNames,\n menuOptions,\n} = defineProps<RuiTimezoneSelectProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof RuiTimezoneSelectProps>>();\n\nconst { t } = useRuiI8n();\n\nconst fieldLabel = computed<string>(() => label ?? t(RUI_I18N_KEYS.timezoneSelect.label, 'Timezone'));\n\ninterface TimezoneOption {\n value: string;\n label: string;\n}\n\nconst options: TimezoneOption[] = timezones.map(value => ({\n value,\n label: value.replace(/_/g, ' '),\n}));\n</script>\n\n<template>\n <RuiAutoComplete\n v-model=\"modelValue\"\n key-attr=\"value\"\n text-attr=\"label\"\n auto-select-first\n :options=\"options\"\n :label=\"fieldLabel\"\n :label-placement=\"labelPlacement\"\n :disabled=\"disabled\"\n :read-only=\"readOnly\"\n :dense=\"dense\"\n :clearable=\"clearable\"\n :hint=\"hint\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :details=\"hideDetails ? 'hidden' : details\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :class-names=\"classNames\"\n :menu-options=\"menuOptions\"\n />\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { HTMLAttributes } from 'vue';
1
2
  import type { RuiAutoCompleteClassNames } from '../forms/auto-complete/auto-complete-props.js';
2
3
  import type { MenuProps } from '../overlays/menu/RuiMenu.vue.js';
3
4
  import type { LabelPlacement } from '../../composables/defaults/field.js';
@@ -22,7 +23,7 @@ export interface RuiTimezoneSelectProps {
22
23
  classNames?: RuiAutoCompleteClassNames;
23
24
  menuOptions?: MenuProps;
24
25
  }
25
- type __VLS_Props = RuiTimezoneSelectProps;
26
+ type __VLS_Props = RuiTimezoneSelectProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof RuiTimezoneSelectProps>;
26
27
  type __VLS_ModelProps = {
27
28
  modelValue: string | undefined;
28
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","RuiAutoComplete","_unref"],"sources":["../../../src/components/date-time-picker/RuiTimezoneSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { RuiAutoCompleteClassNames } from '@/components/forms/auto-complete/auto-complete-props';\nimport type { MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport type { LabelPlacement } from '@/composables/defaults/field';\nimport type { FormDetails } from '@/utils/form-text-detail';\nimport { timezones } from '@/components/date-time-picker/timezones';\nimport RuiAutoComplete from '@/components/forms/auto-complete/RuiAutoComplete.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\nexport interface RuiTimezoneSelectProps {\n disabled?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n /** Where the label shows; falls back to the nearest `RuiFieldDefaults`, then the app default, then `top`. */\n labelPlacement?: LabelPlacement;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n /** The line under the field for its hint and messages: `reserve`, `auto` or `hidden`; falls back to the nearest `RuiFieldDefaults`, then the app default, then `reserve`. */\n details?: FormDetails;\n /** @deprecated Use `details=\"hidden\"`. Removed in 4.0. */\n hideDetails?: boolean;\n placeholder?: string;\n required?: boolean;\n classNames?: RuiAutoCompleteClassNames;\n menuOptions?: MenuProps;\n}\n\ndefineOptions({\n name: 'RuiTimezoneSelect',\n});\n\nconst modelValue = defineModel<string | undefined>({ required: true });\n\nconst {\n disabled = false,\n readOnly = false,\n dense = false,\n clearable = false,\n label,\n labelPlacement = undefined,\n hint,\n errorMessages,\n successMessages,\n details = undefined,\n hideDetails = false,\n placeholder,\n required = false,\n classNames,\n menuOptions,\n} = defineProps<RuiTimezoneSelectProps>();\n\nconst { t } = useRuiI8n();\n\nconst fieldLabel = computed<string>(() => label ?? t(RUI_I18N_KEYS.timezoneSelect.label, 'Timezone'));\n\ninterface TimezoneOption {\n value: string;\n label: string;\n}\n\nconst options: TimezoneOption[] = timezones.map(value => ({\n value,\n label: value.replace(/_/g, ' '),\n}));\n</script>\n\n<template>\n <RuiAutoComplete\n v-model=\"modelValue\"\n key-attr=\"value\"\n text-attr=\"label\"\n auto-select-first\n :options=\"options\"\n :label=\"fieldLabel\"\n :label-placement=\"labelPlacement\"\n :disabled=\"disabled\"\n :read-only=\"readOnly\"\n :dense=\"dense\"\n :clearable=\"clearable\"\n :hint=\"hint\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :details=\"hideDetails ? 'hidden' : details\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :class-names=\"classNames\"\n :menu-options=\"menuOptions\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCA,MAAM,aAAaA,SAA+B,SAAA,YAAmB;EAoBrE,MAAM,EAAE,MAAM,UAAU;EAExB,MAAM,aAAa,eAAuB,QAAA,SAAS,EAAE,cAAc,eAAe,OAAO,UAAU,CAAC;EAOpG,MAAM,UAA4B,UAAU,KAAI,WAAU;GACxD;GACA,OAAO,MAAM,QAAQ,MAAM,GAAG;EAChC,EAAE;;GAIA,OAAAC,UAAA,GAAAC,YAoBEC,yBAAA;IAnBS,YAAA,WAAA;IAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAU,QAAA;IACnB,YAAS;IACT,aAAU;IACV,qBAAA;IACC,SAASC,MAAA,OAAA;IACT,OAAOA,MAAA,UAAA;IACP,mBAAiB,QAAA;IACjB,UAAU,QAAA;IACV,aAAW,QAAA;IACX,OAAO,QAAA;IACP,WAAW,QAAA;IACX,MAAM,QAAA;IACN,kBAAgB,QAAA;IAChB,oBAAkB,QAAA;IAClB,SAAS,QAAA,cAAW,WAAc,QAAA;IAClC,aAAa,QAAA;IACb,UAAU,QAAA;IACV,eAAa,QAAA;IACb,gBAAc,QAAA"}
1
+ {"version":3,"file":"RuiTimezoneSelect.vue_vue_type_script_setup_true_lang.js","names":["_useModel","_openBlock","_createBlock","RuiAutoComplete","_unref"],"sources":["../../../src/components/date-time-picker/RuiTimezoneSelect.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { HTMLAttributes } from 'vue';\nimport type { RuiAutoCompleteClassNames } from '@/components/forms/auto-complete/auto-complete-props';\nimport type { MenuProps } from '@/components/overlays/menu/RuiMenu.vue';\nimport type { LabelPlacement } from '@/composables/defaults/field';\nimport type { FormDetails } from '@/utils/form-text-detail';\nimport { timezones } from '@/components/date-time-picker/timezones';\nimport RuiAutoComplete from '@/components/forms/auto-complete/RuiAutoComplete.vue';\nimport { useRuiI8n } from '@/composables/use-rui-i18n';\nimport { RUI_I18N_KEYS } from '@/i18n/keys';\n\nexport interface RuiTimezoneSelectProps {\n disabled?: boolean;\n readOnly?: boolean;\n dense?: boolean;\n clearable?: boolean;\n label?: string;\n /** Where the label shows; falls back to the nearest `RuiFieldDefaults`, then the app default, then `top`. */\n labelPlacement?: LabelPlacement;\n hint?: string;\n errorMessages?: string | string[];\n successMessages?: string | string[];\n /** The line under the field for its hint and messages: `reserve`, `auto` or `hidden`; falls back to the nearest `RuiFieldDefaults`, then the app default, then `reserve`. */\n details?: FormDetails;\n /** @deprecated Use `details=\"hidden\"`. Removed in 4.0. */\n hideDetails?: boolean;\n placeholder?: string;\n required?: boolean;\n classNames?: RuiAutoCompleteClassNames;\n menuOptions?: MenuProps;\n}\n\ndefineOptions({\n name: 'RuiTimezoneSelect',\n});\n\nconst modelValue = defineModel<string | undefined>({ required: true });\n\nconst {\n disabled = false,\n readOnly = false,\n dense = false,\n clearable = false,\n label,\n labelPlacement = undefined,\n hint,\n errorMessages,\n successMessages,\n details = undefined,\n hideDetails = false,\n placeholder,\n required = false,\n classNames,\n menuOptions,\n} = defineProps<RuiTimezoneSelectProps & /* @vue-ignore */ Omit<HTMLAttributes, keyof RuiTimezoneSelectProps>>();\n\nconst { t } = useRuiI8n();\n\nconst fieldLabel = computed<string>(() => label ?? t(RUI_I18N_KEYS.timezoneSelect.label, 'Timezone'));\n\ninterface TimezoneOption {\n value: string;\n label: string;\n}\n\nconst options: TimezoneOption[] = timezones.map(value => ({\n value,\n label: value.replace(/_/g, ' '),\n}));\n</script>\n\n<template>\n <RuiAutoComplete\n v-model=\"modelValue\"\n key-attr=\"value\"\n text-attr=\"label\"\n auto-select-first\n :options=\"options\"\n :label=\"fieldLabel\"\n :label-placement=\"labelPlacement\"\n :disabled=\"disabled\"\n :read-only=\"readOnly\"\n :dense=\"dense\"\n :clearable=\"clearable\"\n :hint=\"hint\"\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :details=\"hideDetails ? 'hidden' : details\"\n :placeholder=\"placeholder\"\n :required=\"required\"\n :class-names=\"classNames\"\n :menu-options=\"menuOptions\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCA,MAAM,aAAaA,SAA+B,SAAA,YAAmB;EAoBrE,MAAM,EAAE,MAAM,UAAU;EAExB,MAAM,aAAa,eAAuB,QAAA,SAAS,EAAE,cAAc,eAAe,OAAO,UAAU,CAAC;EAOpG,MAAM,UAA4B,UAAU,KAAI,WAAU;GACxD;GACA,OAAO,MAAM,QAAQ,MAAM,GAAG;EAChC,EAAE;;GAIA,OAAAC,UAAA,GAAAC,YAoBEC,yBAAA;IAnBS,YAAA,WAAA;IAAA,uBAAA,OAAA,OAAA,OAAA,MAAA,WAAA,WAAU,QAAA;IACnB,YAAS;IACT,aAAU;IACV,qBAAA;IACC,SAASC,MAAA,OAAA;IACT,OAAOA,MAAA,UAAA;IACP,mBAAiB,QAAA;IACjB,UAAU,QAAA;IACV,aAAW,QAAA;IACX,OAAO,QAAA;IACP,WAAW,QAAA;IACX,MAAM,QAAA;IACN,kBAAgB,QAAA;IAChB,oBAAkB,QAAA;IAClB,SAAS,QAAA,cAAW,WAAc,QAAA;IAClC,aAAa,QAAA;IACb,UAAU,QAAA;IACV,eAAa,QAAA;IACb,gBAAc,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDivider.js","names":["_sfc_main"],"sources":["../../../src/components/divider/RuiDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface Props {\n vertical?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDivider',\n inheritAttrs: false,\n});\n\nconst { vertical = false } = defineProps<Props>();\n</script>\n\n<template>\n <div\n :class=\"vertical ? 'border-l' : 'border-t'\"\n class=\"border-default\"\n role=\"separator\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n v-bind=\"$attrs\"\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiDivider.js","names":["_sfc_main"],"sources":["../../../src/components/divider/RuiDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\n\nexport interface Props {\n vertical?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDivider',\n inheritAttrs: false,\n});\n\nconst { vertical = false } = defineProps<Props & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>>();\n</script>\n\n<template>\n <div\n :class=\"vertical ? 'border-l' : 'border-t'\"\n class=\"border-default\"\n role=\"separator\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n v-bind=\"$attrs\"\n />\n</template>\n"],"mappings":""}
@@ -1,6 +1,8 @@
1
+ import type { HTMLAttributes } from 'vue';
1
2
  export interface Props {
2
3
  vertical?: boolean;
3
4
  }
4
- declare const __VLS_export: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ type __VLS_Props = Props & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>;
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
7
  declare const _default: typeof __VLS_export;
6
8
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"RuiDivider.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_openBlock","_createElementBlock","_mergeProps"],"sources":["../../../src/components/divider/RuiDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport interface Props {\n vertical?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDivider',\n inheritAttrs: false,\n});\n\nconst { vertical = false } = defineProps<Props>();\n</script>\n\n<template>\n <div\n :class=\"vertical ? 'border-l' : 'border-t'\"\n class=\"border-default\"\n role=\"separator\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n v-bind=\"$attrs\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;GAcE,OAAAC,UAAA,GAAAC,mBAME,OANFC,WAME;IALC,OAAK,CAAE,QAAA,WAAQ,aAAA,YACV,gBAAgB;IACtB,MAAK;IACJ,oBAAkB,QAAA,WAAQ,aAAA;GACnBH,GAAAA,KAAAA,MAAM,GAAA,MAAA,IAAA,UAAA"}
1
+ {"version":3,"file":"RuiDivider.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_openBlock","_createElementBlock","_mergeProps"],"sources":["../../../src/components/divider/RuiDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { HTMLAttributes } from 'vue';\n\nexport interface Props {\n vertical?: boolean;\n}\n\ndefineOptions({\n name: 'RuiDivider',\n inheritAttrs: false,\n});\n\nconst { vertical = false } = defineProps<Props & /* @vue-ignore */ Omit<HTMLAttributes, keyof Props>>();\n</script>\n\n<template>\n <div\n :class=\"vertical ? 'border-l' : 'border-t'\"\n class=\"border-default\"\n role=\"separator\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n v-bind=\"$attrs\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;GAgBE,OAAAC,UAAA,GAAAC,mBAME,OANFC,WAME;IALC,OAAK,CAAE,QAAA,WAAQ,aAAA,YACV,gBAAgB;IACtB,MAAK;IACJ,oBAAkB,QAAA,WAAQ,aAAA;GACnBH,GAAAA,KAAAA,MAAM,GAAA,MAAA,IAAA,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAutoComplete.js","names":["_sfc_main"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoComplete.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { AutoCompleteModelValue, AutoCompleteProps } from '@/components/forms/auto-complete/auto-complete-props';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { autoCompleteStyles } from '@/components/forms/auto-complete/auto-complete-styles';\nimport RuiAutoCompleteOptionList from '@/components/forms/auto-complete/RuiAutoCompleteOptionList.vue';\nimport RuiAutoCompleteSelection from '@/components/forms/auto-complete/RuiAutoCompleteSelection.vue';\nimport RuiFieldLabel from '@/components/forms/field-label/RuiFieldLabel.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { activatorHandlers } from '@/components/overlays/menu/activator-handlers';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { useLabelPlacement } from '@/composables/defaults/field';\nimport { getOptionHeight, useDropdownMenu, useDropdownOptionProperty } from '@/composables/dropdown-menu';\nimport { type FloatingOptions, Placement } from '@/composables/floating';\nimport {\n splitAriaAttrs,\n useAutoCompleteChips,\n useAutoCompleteCombobox,\n useAutoCompleteFocus,\n useAutoCompleteKeyboardNavigation,\n useAutoCompleteSearch,\n useAutoCompleteSelection,\n useAutoCompleteValue,\n} from '@/composables/forms/auto-complete';\nimport { useFormDetails, useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\ndefineOptions({\n name: 'RuiAutoComplete',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<AutoCompleteModelValue<TValue>>({ required: true });\n\nconst searchInputModel = defineModel<string>('searchInput', { default: '' });\n\nconst {\n options = [],\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n details = undefined,\n hideDetails = false,\n chips = false,\n label = 'Select',\n labelPlacement = undefined,\n menuOptions,\n classNames,\n prependIcon,\n hideArrow = false,\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n prependWidth,\n appendWidth,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n noFilter = false,\n hideNoData = false,\n noDataText = 'No data available',\n filter,\n hideSelected = false,\n placeholder = '',\n returnObject = false,\n customValue = false,\n hideCustomValue = false,\n required = false,\n hideSearchInput = false,\n hideSelectionWrapper = false,\n groupBy,\n itemDisabled,\n searchIncludesGroupLabel = false,\n} = defineProps<AutoCompleteProps<TValue, TItem>>();\n\nconst slots = defineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem[];\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'selection.prepend'?: (props: { index: number; item: TItem }) => any;\n 'selection'?: (props: { index: number; item: TItem; chipAttrs: Record<string, unknown> }) => 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 'group-header'?: (props: { group: string; items: TItem[] }) => any;\n 'no-data'?: () => any;\n 'placeholder'?: (props: { disabled: boolean; readOnly: boolean }) => any;\n 'footer'?: () => any;\n}>();\n\nconst { getText, getIdentifier } = useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n});\n\nconst textInput = useTemplateRef<HTMLInputElement>('textInput');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\n// Owned by the option list, so it arrives through a ref callback rather than this template\nconst menuRef = shallowRef<HTMLElement | null>(null);\n\nfunction setMenuRef(element: Element | ComponentPublicInstance | null): void {\n set(menuRef, element instanceof HTMLElement ? element : null);\n}\nconst menuWrapperRef = useTemplateRef<HTMLDivElement>('menuWrapperRef');\n\nconst { focused: activatorFocusedWithin } = useFocusWithin(activator);\nconst { focused: menuWrapperFocusedWithin } = useFocusWithin(menuWrapperRef);\nconst { focused: searchInputFocused } = useFocus(textInput);\n\nconst {\n internalSearch,\n filteredOptions,\n justOpened,\n updateInternalSearch,\n textValueToProperValue,\n} = useAutoCompleteSearch<TItem>(\n () => options,\n searchInputModel,\n {\n keyAttr: () => keyAttr,\n textAttr: () => textAttr,\n noFilter: () => noFilter,\n filter: () => filter,\n customValue: () => customValue,\n hideCustomValue: () => hideCustomValue,\n returnObject: () => returnObject,\n groupBy: () => groupBy,\n searchIncludesGroupLabel: () => searchIncludesGroupLabel,\n },\n);\n\nconst isOpen = ref<boolean>(false);\nconst isHovered = ref<boolean>(false);\n\n// Calculate multiple from modelValue directly to avoid circular dependency\nconst multiple = computed<boolean>(() => Array.isArray(get(modelValue)));\n\nconst shouldApplyValueAsSearch = computed<boolean>(\n () => !(slots.selection || get(multiple) || chips),\n);\n\nconst { value } = useAutoCompleteValue<AutoCompleteModelValue<TValue>, TItem>(\n modelValue,\n () => options,\n {\n keyAttr: () => keyAttr,\n returnObject: () => returnObject,\n customValue: () => customValue,\n },\n {\n getIdentifier,\n getText,\n textValueToProperValue,\n shouldApplyValueAsSearch,\n isOpen,\n multiple,\n updateInternalSearch,\n },\n);\n\nconst resolvedItemHeight = itemHeight ?? getOptionHeight(dense);\n\n/* eslint-disable @typescript-eslint/no-use-before-define -- these call the selection composable below, which needs their helpers; the calls run after setup */\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n menuWidth,\n isActiveItem,\n itemIndexInValue,\n modelHighlightedIndex,\n moveHighlight,\n applyHighlighted,\n optionsWithSelectedHidden,\n modelUserNavigated,\n groupedOptions,\n isGrouped,\n isItemDisabled,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: resolvedItemHeight,\n keyAttr,\n textAttr,\n options: filteredOptions,\n dense: () => dense,\n value,\n menuRef,\n setValue: (item: TItem): void => { setValue(item); },\n autoSelectFirst,\n hideSelected,\n isOpen,\n getText,\n getIdentifier,\n groupBy: () => groupBy,\n itemDisabled: () => itemDisabled,\n prependWidth,\n appendWidth,\n});\n\nconst {\n focusedValueIndex,\n moveSelectedValueHighlight,\n onEnter,\n onInputDeletePressed,\n onInputKeydown,\n onTab,\n setValueFocus,\n} = useAutoCompleteKeyboardNavigation<TItem>(\n {\n chips: () => chips,\n customValue: () => customValue,\n multiple,\n },\n {\n activator,\n applyHighlighted,\n clear: (): void => clear(),\n filteredOptions,\n getText,\n highlightedIndex: modelHighlightedIndex,\n internalSearch,\n isOpen,\n removeValue: (item: TItem): void => { setValue(item); },\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n updateInternalSearch,\n userNavigated: modelUserNavigated,\n value,\n },\n);\n\nconst { chipAttrs, selectChip } = useAutoCompleteChips<TItem>({\n focusInput: (): void => get(textInput)?.focus(),\n getIdentifier,\n setValue: (item: TItem): void => { setValue(item); },\n setValueFocus,\n});\n\n/** The selected chip's text, read out by the live region so the selection is heard, not only seen. */\nconst selectedChipAnnouncement = computed<string>(() => {\n const item = get(value)[get(focusedValueIndex)];\n return chips && item !== undefined ? `${getText(item) ?? ''}, press Backspace to remove` : '';\n});\n\nconst {\n anyFocused: focusAnyFocused,\n editing,\n inputClass: focusInputClass,\n onInputFocused: focusOnInputFocused,\n onSettledKeydown,\n setInputFocus: focusSetInputFocus,\n settleOnInput,\n unsettle,\n} = useAutoCompleteFocus(\n {\n customValue: () => customValue,\n disabled: () => disabled,\n shouldApplyValueAsSearch,\n },\n {\n activatorFocusedWithin,\n focusedValueIndex,\n internalSearch,\n isOpen,\n justOpened,\n menuWrapperFocusedWithin,\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n textInput,\n updateInternalSearch,\n },\n);\n\n/* eslint-enable @typescript-eslint/no-use-before-define -- the wiring above ends here */\n\nconst { clear, setSearchAsValue, setValue } = useAutoCompleteSelection<TItem>({\n getText,\n internalSearch,\n isOpen,\n itemIndexInValue,\n multiple,\n resetModel: (): void => set(modelValue, (Array.isArray(get(modelValue)) ? [] : undefined) as AutoCompleteModelValue<TValue>),\n searchInputFocused,\n settleOnInput,\n shouldApplyValueAsSearch,\n textValueToProperValue,\n updateInternalSearch,\n value,\n});\n\nconst menuMinHeight = computed<number>(\n () => Math.min(5, get(optionsWithSelectedHidden).length) * resolvedItemHeight,\n);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\nconst detailsMode = useFormDetails(() => details, () => hideDetails);\n\nconst valueSet = computed<boolean>(() => get(value).length > 0);\n\nconst usedPlaceholder = computed<string>(() => {\n if (get(editing))\n return placeholder;\n return '';\n});\n\nconst labelId = useId();\nconst placement = useLabelPlacement(() => labelPlacement);\nconst { activeDescendant, optionIdPrefix } = useAutoCompleteCombobox(isOpen, modelHighlightedIndex);\n\n// An empty, unfocused field shows the placeholder where the collapsed search input sits\nconst restingPlaceholder = computed<boolean>(() =>\n !!placeholder && !get(valueSet) && !get(editing) && !slots.placeholder,\n);\n\nconst ui = computed<ReturnType<typeof autoCompleteStyles>>(() => autoCompleteStyles({\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n multiple: get(multiple),\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = autoCompleteStyles({}).highlighted();\n\nfunction updateSearchInput(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement))\n return;\n\n const value = target.value;\n unsettle();\n set(isOpen, true);\n updateInternalSearch(value);\n set(justOpened, false);\n}\n\n/**\n * Moves the highlight through the options, which also leaves the picked-value display for a search.\n *\n * @param up - whether to move towards the first option\n */\nfunction onArrow(up: boolean): void {\n unsettle();\n moveHighlight(up);\n}\n\nfunction setSelectionRange(start: number, end: number): void {\n set(searchInputFocused, true);\n get(textInput)?.setSelectionRange?.(start, end);\n}\n\nfunction arrowClicked(event: MouseEvent): void {\n if (get(isOpen)) {\n set(isOpen, false);\n event.stopPropagation();\n }\n}\n\nfunction openMenu(): void {\n set(isOpen, true);\n}\n\nfunction closeMenu(): void {\n set(isOpen, false);\n}\n\nconst menuFloatingOptions = computed<FloatingOptions>(() => ({\n placement: Placement.bottomStart,\n ...menuOptions?.options,\n}));\n\ndefineExpose({\n closeMenu,\n focus: focusSetInputFocus,\n openMenu,\n setSelectionRange,\n});\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n :class-names=\"{\n ...menuOptions?.classNames,\n details: ['px-0', cn(menuOptions?.classNames?.details) ?? ''],\n menu: [\n { hidden: optionsWithSelectedHidden.length === 0 && customValue && !slots['no-data'] },\n cn(menuOptions?.classNames?.menu) ?? '',\n ],\n }\"\n :options=\"menuFloatingOptions\"\n :close-on-content-click=\"false\"\n full-width\n persist-on-activator-click\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"detailsMode !== 'hidden'\"\n :details=\"detailsMode === 'auto' ? 'auto' : 'reserve'\"\n :disabled=\"disabled\"\n disable-auto-focus\n role=\"listbox\"\n >\n <template\n v-if=\"label\"\n #label\n >\n <RuiFieldLabel\n :id=\"labelId\"\n :text=\"label\"\n :hidden=\"placement === 'hidden'\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </template>\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <!--\n The visual box: it takes clicks and the keys that bubble from the input and the chips, but\n is no tab stop and carries no role. The input inside is the combobox (ARIA 1.2), so the\n chips sit beside it rather than nested in it.\n -->\n <div\n ref=\"activator\"\n :class=\"ui.activator({ class: cn([hideArrow && 'pr-3', classNames?.label]) })\"\n v-bind=\"{\n ...splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), false),\n ...(readOnly ? {} : activatorHandlers(attrs)),\n }\"\n data-id=\"activator\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @click=\"focusSetInputFocus()\"\n @keydown.enter=\"onEnter($event)\"\n @keydown.tab=\"onTab($event)\"\n @keydown.left=\"moveSelectedValueHighlight($event, false)\"\n @keydown.right=\"moveSelectedValueHighlight($event, true)\"\n @keydown.up.prevent=\"onArrow(true)\"\n @keydown.down.prevent=\"onArrow(false)\"\n @keydown.home.prevent=\"modelHighlightedIndex = 0\"\n @keydown.end.prevent=\"modelHighlightedIndex = optionsWithSelectedHidden.length - 1\"\n >\n <span\n v-if=\"prependIcon\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <RuiIcon\n :name=\"prependIcon\"\n :size=\"dense ? 16 : 18\"\n />\n </span>\n <div\n data-id=\"value\"\n :class=\"ui.value()\"\n >\n <!--\n Placeholder slot occupies the same flex space the input takes\n when focused, so transitioning into the focused state doesn't\n shift the activator's content. pointer-events-none is required\n so clicks pass through to the activator (otherwise the slot\n swallows the first click and the menu needs two taps to open).\n -->\n <span\n v-if=\"restingPlaceholder\"\n data-id=\"resting-placeholder\"\n class=\"truncate text-rui-text-secondary pointer-events-none\"\n >\n {{ placeholder }}\n </span>\n <div\n v-if=\"!valueSet && !editing && slots.placeholder\"\n data-id=\"placeholder\"\n class=\"flex-1 min-w-0 pointer-events-none\"\n >\n <slot\n name=\"placeholder\"\n v-bind=\"{ disabled, readOnly }\"\n />\n </div>\n <RuiAutoCompleteSelection\n :items=\"value\"\n :chips=\"chips\"\n :dense=\"dense\"\n :multiple=\"multiple\"\n :search-input-focused=\"editing\"\n :hide-selection-wrapper=\"hideSelectionWrapper\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :chip-attrs=\"chipAttrs\"\n :selected-index=\"focusedValueIndex\"\n :select-chip=\"selectChip\"\n >\n <template\n v-if=\"slots['selection.prepend']\"\n #prepend=\"slotProps\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.selection\"\n #default=\"slotProps\"\n >\n <slot\n name=\"selection\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteSelection>\n <!-- with hideSearchInput the input stays as a collapsed, read-only combobox, so the field keeps a focus target -->\n <input\n ref=\"textInput\"\n :disabled=\"disabled\"\n :readonly=\"readOnly || hideSearchInput\"\n :value=\"internalSearch\"\n class=\"bg-transparent outline-hidden\"\n type=\"text\"\n :placeholder=\"usedPlaceholder\"\n :class=\"hideSearchInput ? 'w-0 h-0 min-w-0 opacity-0' : focusInputClass\"\n role=\"combobox\"\n :tabindex=\"readOnly ? -1 : undefined\"\n :aria-labelledby=\"label ? labelId : undefined\"\n :aria-expanded=\"open\"\n aria-haspopup=\"listbox\"\n :aria-controls=\"attrs['aria-controls']\"\n :aria-activedescendant=\"activeDescendant\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n :aria-invalid=\"hasError\"\n aria-autocomplete=\"list\"\n data-id=\"search-input\"\n v-bind=\"splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), true)\"\n @keydown=\"onSettledKeydown($event); onInputKeydown($event)\"\n @keydown.delete=\"onInputDeletePressed($event)\"\n @input.stop=\"updateSearchInput($event)\"\n @focus=\"focusOnInputFocused()\"\n />\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n >\n {{ selectedChipAnnouncement }}\n </span>\n </div>\n\n <RuiButton\n v-if=\"clearable && valueSet && !disabled && !readOnly\"\n variant=\"text\"\n icon\n size=\"sm\"\n tabindex=\"-1\"\n data-id=\"clear\"\n aria-label=\"Clear\"\n :class=\"[\n ui.clear(),\n focusAnyFocused && 'visible!',\n { 'mr-2': !dense },\n ]\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"16\"\n />\n </RuiButton>\n\n <span\n v-if=\"!hideArrow\"\n :class=\"ui.iconWrapper()\"\n @click=\"arrowClicked($event)\"\n >\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 20\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"2\"\n variant=\"indeterminate\"\n />\n </div>\n <fieldset :class=\"ui.fieldset()\" />\n </slot>\n </template>\n <template #default=\"{ width }\">\n <div ref=\"menuWrapperRef\">\n <RuiAutoCompleteOptionList\n v-if=\"optionsWithSelectedHidden.length > 0\"\n :container-props=\"containerProps\"\n :wrapper-props=\"wrapperProps\"\n :set-menu-ref=\"setMenuRef\"\n :is-grouped=\"isGrouped\"\n :grouped-options=\"groupedOptions\"\n :rendered-data=\"renderedData\"\n :options=\"optionsWithSelectedHidden\"\n :highlighted-index=\"modelHighlightedIndex\"\n :highlighted-class=\"highlightedClass\"\n :dense=\"dense\"\n :menu-class=\"ui.menu({ class: cn(classNames?.menu) })\"\n :menu-style=\"{ width: `${width}px`, minWidth: menuWidth, minHeight: `${menuMinHeight}px` }\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :is-active-item=\"isActiveItem\"\n :is-item-disabled=\"isItemDisabled\"\n :option-id-prefix=\"optionIdPrefix\"\n @select=\"setValue($event)\"\n @move-highlight=\"moveHighlight($event)\"\n >\n <template\n v-if=\"slots['group-header']\"\n #group-header=\"slotProps\"\n >\n <slot\n name=\"group-header\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.prepend']\"\n #item.prepend=\"slotProps\"\n >\n <slot\n name=\"item.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.item\"\n #item=\"slotProps\"\n >\n <slot\n name=\"item\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.append']\"\n #item.append=\"slotProps\"\n >\n <slot\n name=\"item.append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteOptionList>\n\n <div\n v-else-if=\"!hideNoData\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu\"\n >\n <slot name=\"no-data\">\n <div\n v-if=\"!customValue\"\n class=\"p-4\"\n data-id=\"no-data\"\n >\n {{ noDataText }}\n </div>\n </slot>\n </div>\n <!--\n The scroll container above reserves ~15px on the right for the\n scrollbar gutter. We render an equivalent right-padding here so the\n footer's content aligns with the option rows' content rather than\n the menu's outer edge. `pr-(--rui-scrollbar-gutter,15px)`\n lets consumers override if their theme reserves a different width.\n -->\n <div\n v-if=\"slots.footer\"\n class=\"bg-rui-menu border-t border-rui-divider pr-(--rui-scrollbar-gutter,15px) -mb-2\"\n data-id=\"footer\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiAutoComplete.js","names":["_sfc_main"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoComplete.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { HTMLAttributes, Ref } from 'vue';\nimport type { AutoCompleteProps } from '@/components/forms/auto-complete/auto-complete-props';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { autoCompleteStyles } from '@/components/forms/auto-complete/auto-complete-styles';\nimport RuiAutoCompleteOptionList from '@/components/forms/auto-complete/RuiAutoCompleteOptionList.vue';\nimport RuiAutoCompleteSelection from '@/components/forms/auto-complete/RuiAutoCompleteSelection.vue';\nimport RuiFieldLabel from '@/components/forms/field-label/RuiFieldLabel.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { activatorHandlers } from '@/components/overlays/menu/activator-handlers';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { useLabelPlacement } from '@/composables/defaults/field';\nimport { getOptionHeight, useDropdownMenu, useDropdownOptionProperty } from '@/composables/dropdown-menu';\nimport { type FloatingOptions, Placement } from '@/composables/floating';\nimport {\n splitAriaAttrs,\n useAutoCompleteChips,\n useAutoCompleteCombobox,\n useAutoCompleteFocus,\n useAutoCompleteKeyboardNavigation,\n useAutoCompleteSearch,\n useAutoCompleteSelection,\n useAutoCompleteValue,\n} from '@/composables/forms/auto-complete';\nimport { useFormDetails, useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\ndefineOptions({\n name: 'RuiAutoComplete',\n inheritAttrs: false,\n});\n\n/**\n * The selected key, or keys in an array for a multiple select. Its type is the bound value's, so a\n * `Ref<number>` takes the update as is. Clearing a single select sets it to `undefined`, and a\n * multiple one to `[]`: the component writes through this wider ref.\n */\nconst modelValue: Ref<TValue | unknown[] | undefined> = defineModel<TValue>({ required: true });\n\nconst searchInputModel = defineModel<string>('searchInput', { default: '' });\n\nconst {\n options = [],\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n details = undefined,\n hideDetails = false,\n chips = false,\n label = 'Select',\n labelPlacement = undefined,\n menuOptions,\n classNames,\n prependIcon,\n hideArrow = false,\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n prependWidth,\n appendWidth,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n noFilter = false,\n hideNoData = false,\n noDataText = 'No data available',\n filter,\n hideSelected = false,\n placeholder = '',\n returnObject = false,\n customValue = false,\n hideCustomValue = false,\n required = false,\n hideSearchInput = false,\n hideSelectionWrapper = false,\n groupBy,\n itemDisabled,\n searchIncludesGroupLabel = false,\n} = defineProps<AutoCompleteProps<TValue, TItem> & /* @vue-ignore */ Omit<HTMLAttributes, keyof AutoCompleteProps<TValue, TItem>>>();\n\nconst slots = defineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem[];\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'selection.prepend'?: (props: { index: number; item: TItem }) => any;\n 'selection'?: (props: { index: number; item: TItem; chipAttrs: Record<string, unknown> }) => 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 'group-header'?: (props: { group: string; items: TItem[] }) => any;\n 'no-data'?: () => any;\n 'placeholder'?: (props: { disabled: boolean; readOnly: boolean }) => any;\n 'footer'?: () => any;\n}>();\n\nconst { getText, getIdentifier } = useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n});\n\nconst textInput = useTemplateRef<HTMLInputElement>('textInput');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\n// Owned by the option list, so it arrives through a ref callback rather than this template\nconst menuRef = shallowRef<HTMLElement | null>(null);\n\nfunction setMenuRef(element: Element | ComponentPublicInstance | null): void {\n set(menuRef, element instanceof HTMLElement ? element : null);\n}\nconst menuWrapperRef = useTemplateRef<HTMLDivElement>('menuWrapperRef');\n\nconst { focused: activatorFocusedWithin } = useFocusWithin(activator);\nconst { focused: menuWrapperFocusedWithin } = useFocusWithin(menuWrapperRef);\nconst { focused: searchInputFocused } = useFocus(textInput);\n\nconst {\n internalSearch,\n filteredOptions,\n justOpened,\n updateInternalSearch,\n textValueToProperValue,\n} = useAutoCompleteSearch<TItem>(\n () => options,\n searchInputModel,\n {\n keyAttr: () => keyAttr,\n textAttr: () => textAttr,\n noFilter: () => noFilter,\n filter: () => filter,\n customValue: () => customValue,\n hideCustomValue: () => hideCustomValue,\n returnObject: () => returnObject,\n groupBy: () => groupBy,\n searchIncludesGroupLabel: () => searchIncludesGroupLabel,\n },\n);\n\nconst isOpen = ref<boolean>(false);\nconst isHovered = ref<boolean>(false);\n\n// Calculate multiple from modelValue directly to avoid circular dependency\nconst multiple = computed<boolean>(() => Array.isArray(get(modelValue)));\n\nconst shouldApplyValueAsSearch = computed<boolean>(\n () => !(slots.selection || get(multiple) || chips),\n);\n\nconst { value } = useAutoCompleteValue<TValue | unknown[], TItem>(\n modelValue,\n () => options,\n {\n keyAttr: () => keyAttr,\n returnObject: () => returnObject,\n customValue: () => customValue,\n },\n {\n getIdentifier,\n getText,\n textValueToProperValue,\n shouldApplyValueAsSearch,\n isOpen,\n multiple,\n updateInternalSearch,\n },\n);\n\nconst resolvedItemHeight = itemHeight ?? getOptionHeight(dense);\n\n/* eslint-disable @typescript-eslint/no-use-before-define -- these call the selection composable below, which needs their helpers; the calls run after setup */\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n menuWidth,\n isActiveItem,\n itemIndexInValue,\n modelHighlightedIndex,\n moveHighlight,\n applyHighlighted,\n optionsWithSelectedHidden,\n modelUserNavigated,\n groupedOptions,\n isGrouped,\n isItemDisabled,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: resolvedItemHeight,\n keyAttr,\n textAttr,\n options: filteredOptions,\n dense: () => dense,\n value,\n menuRef,\n setValue: (item: TItem): void => { setValue(item); },\n autoSelectFirst,\n hideSelected,\n isOpen,\n getText,\n getIdentifier,\n groupBy: () => groupBy,\n itemDisabled: () => itemDisabled,\n prependWidth,\n appendWidth,\n});\n\nconst {\n focusedValueIndex,\n moveSelectedValueHighlight,\n onEnter,\n onInputDeletePressed,\n onInputKeydown,\n onTab,\n setValueFocus,\n} = useAutoCompleteKeyboardNavigation<TItem>(\n {\n chips: () => chips,\n customValue: () => customValue,\n multiple,\n },\n {\n activator,\n applyHighlighted,\n clear: (): void => clear(),\n filteredOptions,\n getText,\n highlightedIndex: modelHighlightedIndex,\n internalSearch,\n isOpen,\n removeValue: (item: TItem): void => { setValue(item); },\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n updateInternalSearch,\n userNavigated: modelUserNavigated,\n value,\n },\n);\n\nconst { chipAttrs, selectChip } = useAutoCompleteChips<TItem>({\n focusInput: (): void => get(textInput)?.focus(),\n getIdentifier,\n setValue: (item: TItem): void => { setValue(item); },\n setValueFocus,\n});\n\n/** The selected chip's text, read out by the live region so the selection is heard, not only seen. */\nconst selectedChipAnnouncement = computed<string>(() => {\n const item = get(value)[get(focusedValueIndex)];\n return chips && item !== undefined ? `${getText(item) ?? ''}, press Backspace to remove` : '';\n});\n\nconst {\n anyFocused: focusAnyFocused,\n editing,\n inputClass: focusInputClass,\n onInputFocused: focusOnInputFocused,\n onSettledKeydown,\n setInputFocus: focusSetInputFocus,\n settleOnInput,\n unsettle,\n} = useAutoCompleteFocus(\n {\n customValue: () => customValue,\n disabled: () => disabled,\n shouldApplyValueAsSearch,\n },\n {\n activatorFocusedWithin,\n focusedValueIndex,\n internalSearch,\n isOpen,\n justOpened,\n menuWrapperFocusedWithin,\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n textInput,\n updateInternalSearch,\n },\n);\n\n/* eslint-enable @typescript-eslint/no-use-before-define -- the wiring above ends here */\n\nconst { clear, setSearchAsValue, setValue } = useAutoCompleteSelection<TItem>({\n getText,\n internalSearch,\n isOpen,\n itemIndexInValue,\n multiple,\n resetModel: (): void => set(modelValue, Array.isArray(get(modelValue)) ? [] : undefined),\n searchInputFocused,\n settleOnInput,\n shouldApplyValueAsSearch,\n textValueToProperValue,\n updateInternalSearch,\n value,\n});\n\nconst menuMinHeight = computed<number>(\n () => Math.min(5, get(optionsWithSelectedHidden).length) * resolvedItemHeight,\n);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\nconst detailsMode = useFormDetails(() => details, () => hideDetails);\n\nconst valueSet = computed<boolean>(() => get(value).length > 0);\n\nconst usedPlaceholder = computed<string>(() => {\n if (get(editing))\n return placeholder;\n return '';\n});\n\nconst labelId = useId();\nconst placement = useLabelPlacement(() => labelPlacement);\nconst { activeDescendant, optionIdPrefix } = useAutoCompleteCombobox(isOpen, modelHighlightedIndex);\n\n// An empty, unfocused field shows the placeholder where the collapsed search input sits\nconst restingPlaceholder = computed<boolean>(() =>\n !!placeholder && !get(valueSet) && !get(editing) && !slots.placeholder,\n);\n\nconst ui = computed<ReturnType<typeof autoCompleteStyles>>(() => autoCompleteStyles({\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n multiple: get(multiple),\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = autoCompleteStyles({}).highlighted();\n\nfunction updateSearchInput(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement))\n return;\n\n const value = target.value;\n unsettle();\n set(isOpen, true);\n updateInternalSearch(value);\n set(justOpened, false);\n}\n\n/**\n * Moves the highlight through the options, which also leaves the picked-value display for a search.\n *\n * @param up - whether to move towards the first option\n */\nfunction onArrow(up: boolean): void {\n unsettle();\n moveHighlight(up);\n}\n\nfunction setSelectionRange(start: number, end: number): void {\n set(searchInputFocused, true);\n get(textInput)?.setSelectionRange?.(start, end);\n}\n\nfunction arrowClicked(event: MouseEvent): void {\n if (get(isOpen)) {\n set(isOpen, false);\n event.stopPropagation();\n }\n}\n\nfunction openMenu(): void {\n set(isOpen, true);\n}\n\nfunction closeMenu(): void {\n set(isOpen, false);\n}\n\nconst menuFloatingOptions = computed<FloatingOptions>(() => ({\n placement: Placement.bottomStart,\n ...menuOptions?.options,\n}));\n\ndefineExpose({\n closeMenu,\n focus: focusSetInputFocus,\n openMenu,\n setSelectionRange,\n});\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n :class-names=\"{\n ...menuOptions?.classNames,\n details: ['px-0', cn(menuOptions?.classNames?.details) ?? ''],\n menu: [\n { hidden: optionsWithSelectedHidden.length === 0 && customValue && !slots['no-data'] },\n cn(menuOptions?.classNames?.menu) ?? '',\n ],\n }\"\n :options=\"menuFloatingOptions\"\n :close-on-content-click=\"false\"\n full-width\n persist-on-activator-click\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"detailsMode !== 'hidden'\"\n :details=\"detailsMode === 'auto' ? 'auto' : 'reserve'\"\n :disabled=\"disabled\"\n disable-auto-focus\n role=\"listbox\"\n >\n <template\n v-if=\"label\"\n #label\n >\n <RuiFieldLabel\n :id=\"labelId\"\n :text=\"label\"\n :hidden=\"placement === 'hidden'\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </template>\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <!--\n The visual box: it takes clicks and the keys that bubble from the input and the chips, but\n is no tab stop and carries no role. The input inside is the combobox (ARIA 1.2), so the\n chips sit beside it rather than nested in it.\n -->\n <div\n ref=\"activator\"\n :class=\"ui.activator({ class: cn([hideArrow && 'pr-3', classNames?.label]) })\"\n v-bind=\"{\n ...splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), false),\n ...(readOnly ? {} : activatorHandlers(attrs)),\n }\"\n data-id=\"activator\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @click=\"focusSetInputFocus()\"\n @keydown.enter=\"onEnter($event)\"\n @keydown.tab=\"onTab($event)\"\n @keydown.left=\"moveSelectedValueHighlight($event, false)\"\n @keydown.right=\"moveSelectedValueHighlight($event, true)\"\n @keydown.up.prevent=\"onArrow(true)\"\n @keydown.down.prevent=\"onArrow(false)\"\n @keydown.home.prevent=\"modelHighlightedIndex = 0\"\n @keydown.end.prevent=\"modelHighlightedIndex = optionsWithSelectedHidden.length - 1\"\n >\n <span\n v-if=\"prependIcon\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <RuiIcon\n :name=\"prependIcon\"\n :size=\"dense ? 16 : 18\"\n />\n </span>\n <div\n data-id=\"value\"\n :class=\"ui.value()\"\n >\n <!--\n Placeholder slot occupies the same flex space the input takes\n when focused, so transitioning into the focused state doesn't\n shift the activator's content. pointer-events-none is required\n so clicks pass through to the activator (otherwise the slot\n swallows the first click and the menu needs two taps to open).\n -->\n <span\n v-if=\"restingPlaceholder\"\n data-id=\"resting-placeholder\"\n class=\"truncate text-rui-text-secondary pointer-events-none\"\n >\n {{ placeholder }}\n </span>\n <div\n v-if=\"!valueSet && !editing && slots.placeholder\"\n data-id=\"placeholder\"\n class=\"flex-1 min-w-0 pointer-events-none\"\n >\n <slot\n name=\"placeholder\"\n v-bind=\"{ disabled, readOnly }\"\n />\n </div>\n <RuiAutoCompleteSelection\n :items=\"value\"\n :chips=\"chips\"\n :dense=\"dense\"\n :multiple=\"multiple\"\n :search-input-focused=\"editing\"\n :hide-selection-wrapper=\"hideSelectionWrapper\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :chip-attrs=\"chipAttrs\"\n :selected-index=\"focusedValueIndex\"\n :select-chip=\"selectChip\"\n >\n <template\n v-if=\"slots['selection.prepend']\"\n #prepend=\"slotProps\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.selection\"\n #default=\"slotProps\"\n >\n <slot\n name=\"selection\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteSelection>\n <!-- with hideSearchInput the input stays as a collapsed, read-only combobox, so the field keeps a focus target -->\n <input\n ref=\"textInput\"\n :disabled=\"disabled\"\n :readonly=\"readOnly || hideSearchInput\"\n :value=\"internalSearch\"\n class=\"bg-transparent outline-hidden\"\n type=\"text\"\n :placeholder=\"usedPlaceholder\"\n :class=\"hideSearchInput ? 'w-0 h-0 min-w-0 opacity-0' : focusInputClass\"\n role=\"combobox\"\n :tabindex=\"readOnly ? -1 : undefined\"\n :aria-labelledby=\"label ? labelId : undefined\"\n :aria-expanded=\"open\"\n aria-haspopup=\"listbox\"\n :aria-controls=\"attrs['aria-controls']\"\n :aria-activedescendant=\"activeDescendant\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n :aria-invalid=\"hasError\"\n aria-autocomplete=\"list\"\n data-id=\"search-input\"\n v-bind=\"splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), true)\"\n @keydown=\"onSettledKeydown($event); onInputKeydown($event)\"\n @keydown.delete=\"onInputDeletePressed($event)\"\n @input.stop=\"updateSearchInput($event)\"\n @focus=\"focusOnInputFocused()\"\n />\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n >\n {{ selectedChipAnnouncement }}\n </span>\n </div>\n\n <RuiButton\n v-if=\"clearable && valueSet && !disabled && !readOnly\"\n variant=\"text\"\n icon\n size=\"sm\"\n tabindex=\"-1\"\n data-id=\"clear\"\n aria-label=\"Clear\"\n :class=\"[\n ui.clear(),\n focusAnyFocused && 'visible!',\n { 'mr-2': !dense },\n ]\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"16\"\n />\n </RuiButton>\n\n <span\n v-if=\"!hideArrow\"\n :class=\"ui.iconWrapper()\"\n @click=\"arrowClicked($event)\"\n >\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 20\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"2\"\n variant=\"indeterminate\"\n />\n </div>\n <fieldset :class=\"ui.fieldset()\" />\n </slot>\n </template>\n <template #default=\"{ width }\">\n <div ref=\"menuWrapperRef\">\n <RuiAutoCompleteOptionList\n v-if=\"optionsWithSelectedHidden.length > 0\"\n :container-props=\"containerProps\"\n :wrapper-props=\"wrapperProps\"\n :set-menu-ref=\"setMenuRef\"\n :is-grouped=\"isGrouped\"\n :grouped-options=\"groupedOptions\"\n :rendered-data=\"renderedData\"\n :options=\"optionsWithSelectedHidden\"\n :highlighted-index=\"modelHighlightedIndex\"\n :highlighted-class=\"highlightedClass\"\n :dense=\"dense\"\n :menu-class=\"ui.menu({ class: cn(classNames?.menu) })\"\n :menu-style=\"{ width: `${width}px`, minWidth: menuWidth, minHeight: `${menuMinHeight}px` }\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :is-active-item=\"isActiveItem\"\n :is-item-disabled=\"isItemDisabled\"\n :option-id-prefix=\"optionIdPrefix\"\n @select=\"setValue($event)\"\n @move-highlight=\"moveHighlight($event)\"\n >\n <template\n v-if=\"slots['group-header']\"\n #group-header=\"slotProps\"\n >\n <slot\n name=\"group-header\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.prepend']\"\n #item.prepend=\"slotProps\"\n >\n <slot\n name=\"item.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.item\"\n #item=\"slotProps\"\n >\n <slot\n name=\"item\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.append']\"\n #item.append=\"slotProps\"\n >\n <slot\n name=\"item.append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteOptionList>\n\n <div\n v-else-if=\"!hideNoData\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu\"\n >\n <slot name=\"no-data\">\n <div\n v-if=\"!customValue\"\n class=\"p-4\"\n data-id=\"no-data\"\n >\n {{ noDataText }}\n </div>\n </slot>\n </div>\n <!--\n The scroll container above reserves ~15px on the right for the\n scrollbar gutter. We render an equivalent right-padding here so the\n footer's content aligns with the option rows' content rather than\n the menu's outer edge. `pr-(--rui-scrollbar-gutter,15px)`\n lets consumers override if their theme reserves a different width.\n -->\n <div\n v-if=\"slots.footer\"\n class=\"bg-rui-menu border-t border-rui-divider pr-(--rui-scrollbar-gutter,15px) -mb-2\"\n data-id=\"footer\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":""}
@@ -1,10 +1,16 @@
1
- import type { AutoCompleteModelValue, AutoCompleteProps } from './auto-complete-props.js';
1
+ import type { HTMLAttributes } from 'vue';
2
+ import type { AutoCompleteProps } from './auto-complete-props.js';
2
3
  declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
3
- props: import("vue").PublicProps & __VLS_PrettifyLocal<(AutoCompleteProps<TValue, TItem> & {
4
- modelValue: AutoCompleteModelValue<TValue>;
4
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(AutoCompleteProps<TValue, TItem> & Omit<HTMLAttributes, keyof AutoCompleteProps<TValue, TItem>> & {
5
+ /**
6
+ * The selected key, or keys in an array for a multiple select. Its type is the bound value's, so a
7
+ * `Ref<number>` takes the update as is. Clearing a single select sets it to `undefined`, and a
8
+ * multiple one to `[]`: the component writes through this wider ref.
9
+ */
10
+ modelValue: TValue;
5
11
  searchInput?: string;
6
12
  }) & {
7
- "onUpdate:modelValue"?: ((value: AutoCompleteModelValue<TValue>) => any) | undefined;
13
+ "onUpdate:modelValue"?: ((value: TValue) => any) | undefined;
8
14
  "onUpdate:searchInput"?: ((value: string) => any) | undefined;
9
15
  }> & (typeof globalThis extends {
10
16
  __VLS_PROPS_FALLBACK: infer P;
@@ -61,7 +67,7 @@ declare const __VLS_export: <TValue, TItem>(__VLS_props: NonNullable<Awaited<typ
61
67
  }) => any;
62
68
  footer?: () => any;
63
69
  };
64
- emit: ((event: "update:modelValue", value: AutoCompleteModelValue<TValue>) => void) & ((event: "update:searchInput", value: string) => void);
70
+ emit: ((event: "update:modelValue", value: TValue) => void) & ((event: "update:searchInput", value: string) => void);
65
71
  }>) => import("vue").VNode & {
66
72
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
67
73
  };
@@ -172,6 +172,11 @@ var RuiAutoComplete_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
172
172
  }),
173
173
  emits: ["update:modelValue", "update:searchInput"],
174
174
  setup(__props, { expose: __expose }) {
175
+ /**
176
+ * The selected key, or keys in an array for a multiple select. Its type is the bound value's, so a
177
+ * `Ref<number>` takes the update as is. Clearing a single select sets it to `undefined`, and a
178
+ * multiple one to `[]`: the component writes through this wider ref.
179
+ */
175
180
  const modelValue = useModel(__props, "modelValue");
176
181
  const searchInputModel = useModel(__props, "searchInput");
177
182
  const slots = useSlots();
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAutoComplete.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_useSlots","_openBlock","_createBlock","RuiMenu","_mergeProps","_unref","_isRef","_createSlots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_withKeys","_withModifiers","_createElementBlock","_normalizeClass","_createVNode","RuiIcon","_createCommentVNode","_toDisplayString","RuiAutoCompleteSelection","RuiButton","RuiProgress","RuiAutoCompleteOptionList","_normalizeStyle","RuiFieldLabel"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoComplete.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { AutoCompleteModelValue, AutoCompleteProps } from '@/components/forms/auto-complete/auto-complete-props';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { autoCompleteStyles } from '@/components/forms/auto-complete/auto-complete-styles';\nimport RuiAutoCompleteOptionList from '@/components/forms/auto-complete/RuiAutoCompleteOptionList.vue';\nimport RuiAutoCompleteSelection from '@/components/forms/auto-complete/RuiAutoCompleteSelection.vue';\nimport RuiFieldLabel from '@/components/forms/field-label/RuiFieldLabel.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { activatorHandlers } from '@/components/overlays/menu/activator-handlers';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { useLabelPlacement } from '@/composables/defaults/field';\nimport { getOptionHeight, useDropdownMenu, useDropdownOptionProperty } from '@/composables/dropdown-menu';\nimport { type FloatingOptions, Placement } from '@/composables/floating';\nimport {\n splitAriaAttrs,\n useAutoCompleteChips,\n useAutoCompleteCombobox,\n useAutoCompleteFocus,\n useAutoCompleteKeyboardNavigation,\n useAutoCompleteSearch,\n useAutoCompleteSelection,\n useAutoCompleteValue,\n} from '@/composables/forms/auto-complete';\nimport { useFormDetails, useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\ndefineOptions({\n name: 'RuiAutoComplete',\n inheritAttrs: false,\n});\n\nconst modelValue = defineModel<AutoCompleteModelValue<TValue>>({ required: true });\n\nconst searchInputModel = defineModel<string>('searchInput', { default: '' });\n\nconst {\n options = [],\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n details = undefined,\n hideDetails = false,\n chips = false,\n label = 'Select',\n labelPlacement = undefined,\n menuOptions,\n classNames,\n prependIcon,\n hideArrow = false,\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n prependWidth,\n appendWidth,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n noFilter = false,\n hideNoData = false,\n noDataText = 'No data available',\n filter,\n hideSelected = false,\n placeholder = '',\n returnObject = false,\n customValue = false,\n hideCustomValue = false,\n required = false,\n hideSearchInput = false,\n hideSelectionWrapper = false,\n groupBy,\n itemDisabled,\n searchIncludesGroupLabel = false,\n} = defineProps<AutoCompleteProps<TValue, TItem>>();\n\nconst slots = defineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem[];\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'selection.prepend'?: (props: { index: number; item: TItem }) => any;\n 'selection'?: (props: { index: number; item: TItem; chipAttrs: Record<string, unknown> }) => 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 'group-header'?: (props: { group: string; items: TItem[] }) => any;\n 'no-data'?: () => any;\n 'placeholder'?: (props: { disabled: boolean; readOnly: boolean }) => any;\n 'footer'?: () => any;\n}>();\n\nconst { getText, getIdentifier } = useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n});\n\nconst textInput = useTemplateRef<HTMLInputElement>('textInput');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\n// Owned by the option list, so it arrives through a ref callback rather than this template\nconst menuRef = shallowRef<HTMLElement | null>(null);\n\nfunction setMenuRef(element: Element | ComponentPublicInstance | null): void {\n set(menuRef, element instanceof HTMLElement ? element : null);\n}\nconst menuWrapperRef = useTemplateRef<HTMLDivElement>('menuWrapperRef');\n\nconst { focused: activatorFocusedWithin } = useFocusWithin(activator);\nconst { focused: menuWrapperFocusedWithin } = useFocusWithin(menuWrapperRef);\nconst { focused: searchInputFocused } = useFocus(textInput);\n\nconst {\n internalSearch,\n filteredOptions,\n justOpened,\n updateInternalSearch,\n textValueToProperValue,\n} = useAutoCompleteSearch<TItem>(\n () => options,\n searchInputModel,\n {\n keyAttr: () => keyAttr,\n textAttr: () => textAttr,\n noFilter: () => noFilter,\n filter: () => filter,\n customValue: () => customValue,\n hideCustomValue: () => hideCustomValue,\n returnObject: () => returnObject,\n groupBy: () => groupBy,\n searchIncludesGroupLabel: () => searchIncludesGroupLabel,\n },\n);\n\nconst isOpen = ref<boolean>(false);\nconst isHovered = ref<boolean>(false);\n\n// Calculate multiple from modelValue directly to avoid circular dependency\nconst multiple = computed<boolean>(() => Array.isArray(get(modelValue)));\n\nconst shouldApplyValueAsSearch = computed<boolean>(\n () => !(slots.selection || get(multiple) || chips),\n);\n\nconst { value } = useAutoCompleteValue<AutoCompleteModelValue<TValue>, TItem>(\n modelValue,\n () => options,\n {\n keyAttr: () => keyAttr,\n returnObject: () => returnObject,\n customValue: () => customValue,\n },\n {\n getIdentifier,\n getText,\n textValueToProperValue,\n shouldApplyValueAsSearch,\n isOpen,\n multiple,\n updateInternalSearch,\n },\n);\n\nconst resolvedItemHeight = itemHeight ?? getOptionHeight(dense);\n\n/* eslint-disable @typescript-eslint/no-use-before-define -- these call the selection composable below, which needs their helpers; the calls run after setup */\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n menuWidth,\n isActiveItem,\n itemIndexInValue,\n modelHighlightedIndex,\n moveHighlight,\n applyHighlighted,\n optionsWithSelectedHidden,\n modelUserNavigated,\n groupedOptions,\n isGrouped,\n isItemDisabled,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: resolvedItemHeight,\n keyAttr,\n textAttr,\n options: filteredOptions,\n dense: () => dense,\n value,\n menuRef,\n setValue: (item: TItem): void => { setValue(item); },\n autoSelectFirst,\n hideSelected,\n isOpen,\n getText,\n getIdentifier,\n groupBy: () => groupBy,\n itemDisabled: () => itemDisabled,\n prependWidth,\n appendWidth,\n});\n\nconst {\n focusedValueIndex,\n moveSelectedValueHighlight,\n onEnter,\n onInputDeletePressed,\n onInputKeydown,\n onTab,\n setValueFocus,\n} = useAutoCompleteKeyboardNavigation<TItem>(\n {\n chips: () => chips,\n customValue: () => customValue,\n multiple,\n },\n {\n activator,\n applyHighlighted,\n clear: (): void => clear(),\n filteredOptions,\n getText,\n highlightedIndex: modelHighlightedIndex,\n internalSearch,\n isOpen,\n removeValue: (item: TItem): void => { setValue(item); },\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n updateInternalSearch,\n userNavigated: modelUserNavigated,\n value,\n },\n);\n\nconst { chipAttrs, selectChip } = useAutoCompleteChips<TItem>({\n focusInput: (): void => get(textInput)?.focus(),\n getIdentifier,\n setValue: (item: TItem): void => { setValue(item); },\n setValueFocus,\n});\n\n/** The selected chip's text, read out by the live region so the selection is heard, not only seen. */\nconst selectedChipAnnouncement = computed<string>(() => {\n const item = get(value)[get(focusedValueIndex)];\n return chips && item !== undefined ? `${getText(item) ?? ''}, press Backspace to remove` : '';\n});\n\nconst {\n anyFocused: focusAnyFocused,\n editing,\n inputClass: focusInputClass,\n onInputFocused: focusOnInputFocused,\n onSettledKeydown,\n setInputFocus: focusSetInputFocus,\n settleOnInput,\n unsettle,\n} = useAutoCompleteFocus(\n {\n customValue: () => customValue,\n disabled: () => disabled,\n shouldApplyValueAsSearch,\n },\n {\n activatorFocusedWithin,\n focusedValueIndex,\n internalSearch,\n isOpen,\n justOpened,\n menuWrapperFocusedWithin,\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n textInput,\n updateInternalSearch,\n },\n);\n\n/* eslint-enable @typescript-eslint/no-use-before-define -- the wiring above ends here */\n\nconst { clear, setSearchAsValue, setValue } = useAutoCompleteSelection<TItem>({\n getText,\n internalSearch,\n isOpen,\n itemIndexInValue,\n multiple,\n resetModel: (): void => set(modelValue, (Array.isArray(get(modelValue)) ? [] : undefined) as AutoCompleteModelValue<TValue>),\n searchInputFocused,\n settleOnInput,\n shouldApplyValueAsSearch,\n textValueToProperValue,\n updateInternalSearch,\n value,\n});\n\nconst menuMinHeight = computed<number>(\n () => Math.min(5, get(optionsWithSelectedHidden).length) * resolvedItemHeight,\n);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\nconst detailsMode = useFormDetails(() => details, () => hideDetails);\n\nconst valueSet = computed<boolean>(() => get(value).length > 0);\n\nconst usedPlaceholder = computed<string>(() => {\n if (get(editing))\n return placeholder;\n return '';\n});\n\nconst labelId = useId();\nconst placement = useLabelPlacement(() => labelPlacement);\nconst { activeDescendant, optionIdPrefix } = useAutoCompleteCombobox(isOpen, modelHighlightedIndex);\n\n// An empty, unfocused field shows the placeholder where the collapsed search input sits\nconst restingPlaceholder = computed<boolean>(() =>\n !!placeholder && !get(valueSet) && !get(editing) && !slots.placeholder,\n);\n\nconst ui = computed<ReturnType<typeof autoCompleteStyles>>(() => autoCompleteStyles({\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n multiple: get(multiple),\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = autoCompleteStyles({}).highlighted();\n\nfunction updateSearchInput(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement))\n return;\n\n const value = target.value;\n unsettle();\n set(isOpen, true);\n updateInternalSearch(value);\n set(justOpened, false);\n}\n\n/**\n * Moves the highlight through the options, which also leaves the picked-value display for a search.\n *\n * @param up - whether to move towards the first option\n */\nfunction onArrow(up: boolean): void {\n unsettle();\n moveHighlight(up);\n}\n\nfunction setSelectionRange(start: number, end: number): void {\n set(searchInputFocused, true);\n get(textInput)?.setSelectionRange?.(start, end);\n}\n\nfunction arrowClicked(event: MouseEvent): void {\n if (get(isOpen)) {\n set(isOpen, false);\n event.stopPropagation();\n }\n}\n\nfunction openMenu(): void {\n set(isOpen, true);\n}\n\nfunction closeMenu(): void {\n set(isOpen, false);\n}\n\nconst menuFloatingOptions = computed<FloatingOptions>(() => ({\n placement: Placement.bottomStart,\n ...menuOptions?.options,\n}));\n\ndefineExpose({\n closeMenu,\n focus: focusSetInputFocus,\n openMenu,\n setSelectionRange,\n});\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n :class-names=\"{\n ...menuOptions?.classNames,\n details: ['px-0', cn(menuOptions?.classNames?.details) ?? ''],\n menu: [\n { hidden: optionsWithSelectedHidden.length === 0 && customValue && !slots['no-data'] },\n cn(menuOptions?.classNames?.menu) ?? '',\n ],\n }\"\n :options=\"menuFloatingOptions\"\n :close-on-content-click=\"false\"\n full-width\n persist-on-activator-click\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"detailsMode !== 'hidden'\"\n :details=\"detailsMode === 'auto' ? 'auto' : 'reserve'\"\n :disabled=\"disabled\"\n disable-auto-focus\n role=\"listbox\"\n >\n <template\n v-if=\"label\"\n #label\n >\n <RuiFieldLabel\n :id=\"labelId\"\n :text=\"label\"\n :hidden=\"placement === 'hidden'\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </template>\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <!--\n The visual box: it takes clicks and the keys that bubble from the input and the chips, but\n is no tab stop and carries no role. The input inside is the combobox (ARIA 1.2), so the\n chips sit beside it rather than nested in it.\n -->\n <div\n ref=\"activator\"\n :class=\"ui.activator({ class: cn([hideArrow && 'pr-3', classNames?.label]) })\"\n v-bind=\"{\n ...splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), false),\n ...(readOnly ? {} : activatorHandlers(attrs)),\n }\"\n data-id=\"activator\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @click=\"focusSetInputFocus()\"\n @keydown.enter=\"onEnter($event)\"\n @keydown.tab=\"onTab($event)\"\n @keydown.left=\"moveSelectedValueHighlight($event, false)\"\n @keydown.right=\"moveSelectedValueHighlight($event, true)\"\n @keydown.up.prevent=\"onArrow(true)\"\n @keydown.down.prevent=\"onArrow(false)\"\n @keydown.home.prevent=\"modelHighlightedIndex = 0\"\n @keydown.end.prevent=\"modelHighlightedIndex = optionsWithSelectedHidden.length - 1\"\n >\n <span\n v-if=\"prependIcon\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <RuiIcon\n :name=\"prependIcon\"\n :size=\"dense ? 16 : 18\"\n />\n </span>\n <div\n data-id=\"value\"\n :class=\"ui.value()\"\n >\n <!--\n Placeholder slot occupies the same flex space the input takes\n when focused, so transitioning into the focused state doesn't\n shift the activator's content. pointer-events-none is required\n so clicks pass through to the activator (otherwise the slot\n swallows the first click and the menu needs two taps to open).\n -->\n <span\n v-if=\"restingPlaceholder\"\n data-id=\"resting-placeholder\"\n class=\"truncate text-rui-text-secondary pointer-events-none\"\n >\n {{ placeholder }}\n </span>\n <div\n v-if=\"!valueSet && !editing && slots.placeholder\"\n data-id=\"placeholder\"\n class=\"flex-1 min-w-0 pointer-events-none\"\n >\n <slot\n name=\"placeholder\"\n v-bind=\"{ disabled, readOnly }\"\n />\n </div>\n <RuiAutoCompleteSelection\n :items=\"value\"\n :chips=\"chips\"\n :dense=\"dense\"\n :multiple=\"multiple\"\n :search-input-focused=\"editing\"\n :hide-selection-wrapper=\"hideSelectionWrapper\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :chip-attrs=\"chipAttrs\"\n :selected-index=\"focusedValueIndex\"\n :select-chip=\"selectChip\"\n >\n <template\n v-if=\"slots['selection.prepend']\"\n #prepend=\"slotProps\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.selection\"\n #default=\"slotProps\"\n >\n <slot\n name=\"selection\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteSelection>\n <!-- with hideSearchInput the input stays as a collapsed, read-only combobox, so the field keeps a focus target -->\n <input\n ref=\"textInput\"\n :disabled=\"disabled\"\n :readonly=\"readOnly || hideSearchInput\"\n :value=\"internalSearch\"\n class=\"bg-transparent outline-hidden\"\n type=\"text\"\n :placeholder=\"usedPlaceholder\"\n :class=\"hideSearchInput ? 'w-0 h-0 min-w-0 opacity-0' : focusInputClass\"\n role=\"combobox\"\n :tabindex=\"readOnly ? -1 : undefined\"\n :aria-labelledby=\"label ? labelId : undefined\"\n :aria-expanded=\"open\"\n aria-haspopup=\"listbox\"\n :aria-controls=\"attrs['aria-controls']\"\n :aria-activedescendant=\"activeDescendant\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n :aria-invalid=\"hasError\"\n aria-autocomplete=\"list\"\n data-id=\"search-input\"\n v-bind=\"splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), true)\"\n @keydown=\"onSettledKeydown($event); onInputKeydown($event)\"\n @keydown.delete=\"onInputDeletePressed($event)\"\n @input.stop=\"updateSearchInput($event)\"\n @focus=\"focusOnInputFocused()\"\n />\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n >\n {{ selectedChipAnnouncement }}\n </span>\n </div>\n\n <RuiButton\n v-if=\"clearable && valueSet && !disabled && !readOnly\"\n variant=\"text\"\n icon\n size=\"sm\"\n tabindex=\"-1\"\n data-id=\"clear\"\n aria-label=\"Clear\"\n :class=\"[\n ui.clear(),\n focusAnyFocused && 'visible!',\n { 'mr-2': !dense },\n ]\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"16\"\n />\n </RuiButton>\n\n <span\n v-if=\"!hideArrow\"\n :class=\"ui.iconWrapper()\"\n @click=\"arrowClicked($event)\"\n >\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 20\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"2\"\n variant=\"indeterminate\"\n />\n </div>\n <fieldset :class=\"ui.fieldset()\" />\n </slot>\n </template>\n <template #default=\"{ width }\">\n <div ref=\"menuWrapperRef\">\n <RuiAutoCompleteOptionList\n v-if=\"optionsWithSelectedHidden.length > 0\"\n :container-props=\"containerProps\"\n :wrapper-props=\"wrapperProps\"\n :set-menu-ref=\"setMenuRef\"\n :is-grouped=\"isGrouped\"\n :grouped-options=\"groupedOptions\"\n :rendered-data=\"renderedData\"\n :options=\"optionsWithSelectedHidden\"\n :highlighted-index=\"modelHighlightedIndex\"\n :highlighted-class=\"highlightedClass\"\n :dense=\"dense\"\n :menu-class=\"ui.menu({ class: cn(classNames?.menu) })\"\n :menu-style=\"{ width: `${width}px`, minWidth: menuWidth, minHeight: `${menuMinHeight}px` }\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :is-active-item=\"isActiveItem\"\n :is-item-disabled=\"isItemDisabled\"\n :option-id-prefix=\"optionIdPrefix\"\n @select=\"setValue($event)\"\n @move-highlight=\"moveHighlight($event)\"\n >\n <template\n v-if=\"slots['group-header']\"\n #group-header=\"slotProps\"\n >\n <slot\n name=\"group-header\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.prepend']\"\n #item.prepend=\"slotProps\"\n >\n <slot\n name=\"item.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.item\"\n #item=\"slotProps\"\n >\n <slot\n name=\"item\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.append']\"\n #item.append=\"slotProps\"\n >\n <slot\n name=\"item.append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteOptionList>\n\n <div\n v-else-if=\"!hideNoData\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu\"\n >\n <slot name=\"no-data\">\n <div\n v-if=\"!customValue\"\n class=\"p-4\"\n data-id=\"no-data\"\n >\n {{ noDataText }}\n </div>\n </slot>\n </div>\n <!--\n The scroll container above reserves ~15px on the right for the\n scrollbar gutter. We render an equivalent right-padding here so the\n footer's content aligns with the option rows' content rather than\n the menu's outer edge. `pr-(--rui-scrollbar-gutter,15px)`\n lets consumers override if their theme reserves a different width.\n -->\n <div\n v-if=\"slots.footer\"\n class=\"bg-rui-menu border-t border-rui-divider pr-(--rui-scrollbar-gutter,15px) -mb-2\"\n data-id=\"footer\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RuiAutoComplete.vue_vue_type_script_setup_true_lang.js","names":["$attrs","_useModel","_useSlots","_openBlock","_createBlock","RuiMenu","_mergeProps","_unref","_isRef","_createSlots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_createElementVNode","_withKeys","_withModifiers","_createElementBlock","_normalizeClass","_createVNode","RuiIcon","_createCommentVNode","_toDisplayString","RuiAutoCompleteSelection","RuiButton","RuiProgress","RuiAutoCompleteOptionList","_normalizeStyle","RuiFieldLabel"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoComplete.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TValue, TItem\">\nimport type { HTMLAttributes, Ref } from 'vue';\nimport type { AutoCompleteProps } from '@/components/forms/auto-complete/auto-complete-props';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\nimport { autoCompleteStyles } from '@/components/forms/auto-complete/auto-complete-styles';\nimport RuiAutoCompleteOptionList from '@/components/forms/auto-complete/RuiAutoCompleteOptionList.vue';\nimport RuiAutoCompleteSelection from '@/components/forms/auto-complete/RuiAutoCompleteSelection.vue';\nimport RuiFieldLabel from '@/components/forms/field-label/RuiFieldLabel.vue';\nimport RuiIcon from '@/components/icons/RuiIcon.vue';\nimport { activatorHandlers } from '@/components/overlays/menu/activator-handlers';\nimport RuiMenu from '@/components/overlays/menu/RuiMenu.vue';\nimport RuiProgress from '@/components/progress/RuiProgress.vue';\nimport { useLabelPlacement } from '@/composables/defaults/field';\nimport { getOptionHeight, useDropdownMenu, useDropdownOptionProperty } from '@/composables/dropdown-menu';\nimport { type FloatingOptions, Placement } from '@/composables/floating';\nimport {\n splitAriaAttrs,\n useAutoCompleteChips,\n useAutoCompleteCombobox,\n useAutoCompleteFocus,\n useAutoCompleteKeyboardNavigation,\n useAutoCompleteSearch,\n useAutoCompleteSelection,\n useAutoCompleteValue,\n} from '@/composables/forms/auto-complete';\nimport { useFormDetails, useFormTextDetail } from '@/utils/form-text-detail';\nimport { getNonRootAttrs, getRootAttrs } from '@/utils/helpers';\nimport { cn } from '@/utils/tv';\n\ndefineOptions({\n name: 'RuiAutoComplete',\n inheritAttrs: false,\n});\n\n/**\n * The selected key, or keys in an array for a multiple select. Its type is the bound value's, so a\n * `Ref<number>` takes the update as is. Clearing a single select sets it to `undefined`, and a\n * multiple one to `[]`: the component writes through this wider ref.\n */\nconst modelValue: Ref<TValue | unknown[] | undefined> = defineModel<TValue>({ required: true });\n\nconst searchInputModel = defineModel<string>('searchInput', { default: '' });\n\nconst {\n options = [],\n disabled = false,\n loading = false,\n readOnly = false,\n dense = false,\n clearable = false,\n details = undefined,\n hideDetails = false,\n chips = false,\n label = 'Select',\n labelPlacement = undefined,\n menuOptions,\n classNames,\n prependIcon,\n hideArrow = false,\n hint,\n keyAttr,\n textAttr,\n itemHeight,\n prependWidth,\n appendWidth,\n errorMessages = [],\n successMessages = [],\n autoSelectFirst = false,\n noFilter = false,\n hideNoData = false,\n noDataText = 'No data available',\n filter,\n hideSelected = false,\n placeholder = '',\n returnObject = false,\n customValue = false,\n hideCustomValue = false,\n required = false,\n hideSearchInput = false,\n hideSelectionWrapper = false,\n groupBy,\n itemDisabled,\n searchIncludesGroupLabel = false,\n} = defineProps<AutoCompleteProps<TValue, TItem> & /* @vue-ignore */ Omit<HTMLAttributes, keyof AutoCompleteProps<TValue, TItem>>>();\n\nconst slots = defineSlots<{\n 'activator'?: (props: {\n disabled: boolean;\n value: TItem[];\n readOnly: boolean;\n attrs: Record<string, unknown>;\n open: boolean;\n hasError: boolean;\n hasSuccess: boolean;\n }) => any;\n 'selection.prepend'?: (props: { index: number; item: TItem }) => any;\n 'selection'?: (props: { index: number; item: TItem; chipAttrs: Record<string, unknown> }) => 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 'group-header'?: (props: { group: string; items: TItem[] }) => any;\n 'no-data'?: () => any;\n 'placeholder'?: (props: { disabled: boolean; readOnly: boolean }) => any;\n 'footer'?: () => any;\n}>();\n\nconst { getText, getIdentifier } = useDropdownOptionProperty<TValue, TItem>({\n keyAttr,\n textAttr,\n});\n\nconst textInput = useTemplateRef<HTMLInputElement>('textInput');\nconst activator = useTemplateRef<HTMLDivElement>('activator');\n// Owned by the option list, so it arrives through a ref callback rather than this template\nconst menuRef = shallowRef<HTMLElement | null>(null);\n\nfunction setMenuRef(element: Element | ComponentPublicInstance | null): void {\n set(menuRef, element instanceof HTMLElement ? element : null);\n}\nconst menuWrapperRef = useTemplateRef<HTMLDivElement>('menuWrapperRef');\n\nconst { focused: activatorFocusedWithin } = useFocusWithin(activator);\nconst { focused: menuWrapperFocusedWithin } = useFocusWithin(menuWrapperRef);\nconst { focused: searchInputFocused } = useFocus(textInput);\n\nconst {\n internalSearch,\n filteredOptions,\n justOpened,\n updateInternalSearch,\n textValueToProperValue,\n} = useAutoCompleteSearch<TItem>(\n () => options,\n searchInputModel,\n {\n keyAttr: () => keyAttr,\n textAttr: () => textAttr,\n noFilter: () => noFilter,\n filter: () => filter,\n customValue: () => customValue,\n hideCustomValue: () => hideCustomValue,\n returnObject: () => returnObject,\n groupBy: () => groupBy,\n searchIncludesGroupLabel: () => searchIncludesGroupLabel,\n },\n);\n\nconst isOpen = ref<boolean>(false);\nconst isHovered = ref<boolean>(false);\n\n// Calculate multiple from modelValue directly to avoid circular dependency\nconst multiple = computed<boolean>(() => Array.isArray(get(modelValue)));\n\nconst shouldApplyValueAsSearch = computed<boolean>(\n () => !(slots.selection || get(multiple) || chips),\n);\n\nconst { value } = useAutoCompleteValue<TValue | unknown[], TItem>(\n modelValue,\n () => options,\n {\n keyAttr: () => keyAttr,\n returnObject: () => returnObject,\n customValue: () => customValue,\n },\n {\n getIdentifier,\n getText,\n textValueToProperValue,\n shouldApplyValueAsSearch,\n isOpen,\n multiple,\n updateInternalSearch,\n },\n);\n\nconst resolvedItemHeight = itemHeight ?? getOptionHeight(dense);\n\n/* eslint-disable @typescript-eslint/no-use-before-define -- these call the selection composable below, which needs their helpers; the calls run after setup */\nconst {\n containerProps,\n wrapperProps,\n renderedData,\n menuWidth,\n isActiveItem,\n itemIndexInValue,\n modelHighlightedIndex,\n moveHighlight,\n applyHighlighted,\n optionsWithSelectedHidden,\n modelUserNavigated,\n groupedOptions,\n isGrouped,\n isItemDisabled,\n} = useDropdownMenu<TValue, TItem>({\n itemHeight: resolvedItemHeight,\n keyAttr,\n textAttr,\n options: filteredOptions,\n dense: () => dense,\n value,\n menuRef,\n setValue: (item: TItem): void => { setValue(item); },\n autoSelectFirst,\n hideSelected,\n isOpen,\n getText,\n getIdentifier,\n groupBy: () => groupBy,\n itemDisabled: () => itemDisabled,\n prependWidth,\n appendWidth,\n});\n\nconst {\n focusedValueIndex,\n moveSelectedValueHighlight,\n onEnter,\n onInputDeletePressed,\n onInputKeydown,\n onTab,\n setValueFocus,\n} = useAutoCompleteKeyboardNavigation<TItem>(\n {\n chips: () => chips,\n customValue: () => customValue,\n multiple,\n },\n {\n activator,\n applyHighlighted,\n clear: (): void => clear(),\n filteredOptions,\n getText,\n highlightedIndex: modelHighlightedIndex,\n internalSearch,\n isOpen,\n removeValue: (item: TItem): void => { setValue(item); },\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n updateInternalSearch,\n userNavigated: modelUserNavigated,\n value,\n },\n);\n\nconst { chipAttrs, selectChip } = useAutoCompleteChips<TItem>({\n focusInput: (): void => get(textInput)?.focus(),\n getIdentifier,\n setValue: (item: TItem): void => { setValue(item); },\n setValueFocus,\n});\n\n/** The selected chip's text, read out by the live region so the selection is heard, not only seen. */\nconst selectedChipAnnouncement = computed<string>(() => {\n const item = get(value)[get(focusedValueIndex)];\n return chips && item !== undefined ? `${getText(item) ?? ''}, press Backspace to remove` : '';\n});\n\nconst {\n anyFocused: focusAnyFocused,\n editing,\n inputClass: focusInputClass,\n onInputFocused: focusOnInputFocused,\n onSettledKeydown,\n setInputFocus: focusSetInputFocus,\n settleOnInput,\n unsettle,\n} = useAutoCompleteFocus(\n {\n customValue: () => customValue,\n disabled: () => disabled,\n shouldApplyValueAsSearch,\n },\n {\n activatorFocusedWithin,\n focusedValueIndex,\n internalSearch,\n isOpen,\n justOpened,\n menuWrapperFocusedWithin,\n searchInputFocused,\n setSearchAsValue: (): void => setSearchAsValue(),\n textInput,\n updateInternalSearch,\n },\n);\n\n/* eslint-enable @typescript-eslint/no-use-before-define -- the wiring above ends here */\n\nconst { clear, setSearchAsValue, setValue } = useAutoCompleteSelection<TItem>({\n getText,\n internalSearch,\n isOpen,\n itemIndexInValue,\n multiple,\n resetModel: (): void => set(modelValue, Array.isArray(get(modelValue)) ? [] : undefined),\n searchInputFocused,\n settleOnInput,\n shouldApplyValueAsSearch,\n textValueToProperValue,\n updateInternalSearch,\n value,\n});\n\nconst menuMinHeight = computed<number>(\n () => Math.min(5, get(optionsWithSelectedHidden).length) * resolvedItemHeight,\n);\n\nconst { hasError, hasSuccess } = useFormTextDetail(\n () => errorMessages,\n () => successMessages,\n);\nconst detailsMode = useFormDetails(() => details, () => hideDetails);\n\nconst valueSet = computed<boolean>(() => get(value).length > 0);\n\nconst usedPlaceholder = computed<string>(() => {\n if (get(editing))\n return placeholder;\n return '';\n});\n\nconst labelId = useId();\nconst placement = useLabelPlacement(() => labelPlacement);\nconst { activeDescendant, optionIdPrefix } = useAutoCompleteCombobox(isOpen, modelHighlightedIndex);\n\n// An empty, unfocused field shows the placeholder where the collapsed search input sits\nconst restingPlaceholder = computed<boolean>(() =>\n !!placeholder && !get(valueSet) && !get(editing) && !slots.placeholder,\n);\n\nconst ui = computed<ReturnType<typeof autoCompleteStyles>>(() => autoCompleteStyles({\n opened: get(isOpen),\n hovered: get(isHovered),\n dense,\n disabled,\n readonly: readOnly,\n multiple: get(multiple),\n hasError: get(hasError),\n hasSuccess: get(hasSuccess) && !get(hasError),\n}));\n\nconst highlightedClass = autoCompleteStyles({}).highlighted();\n\nfunction updateSearchInput(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement))\n return;\n\n const value = target.value;\n unsettle();\n set(isOpen, true);\n updateInternalSearch(value);\n set(justOpened, false);\n}\n\n/**\n * Moves the highlight through the options, which also leaves the picked-value display for a search.\n *\n * @param up - whether to move towards the first option\n */\nfunction onArrow(up: boolean): void {\n unsettle();\n moveHighlight(up);\n}\n\nfunction setSelectionRange(start: number, end: number): void {\n set(searchInputFocused, true);\n get(textInput)?.setSelectionRange?.(start, end);\n}\n\nfunction arrowClicked(event: MouseEvent): void {\n if (get(isOpen)) {\n set(isOpen, false);\n event.stopPropagation();\n }\n}\n\nfunction openMenu(): void {\n set(isOpen, true);\n}\n\nfunction closeMenu(): void {\n set(isOpen, false);\n}\n\nconst menuFloatingOptions = computed<FloatingOptions>(() => ({\n placement: Placement.bottomStart,\n ...menuOptions?.options,\n}));\n\ndefineExpose({\n closeMenu,\n focus: focusSetInputFocus,\n openMenu,\n setSelectionRange,\n});\n</script>\n\n<template>\n <RuiMenu\n v-model=\"isOpen\"\n v-bind=\"{ ...getRootAttrs($attrs, []), ...menuOptions }\"\n :class=\"ui.wrapper({ class: cn($attrs.class) })\"\n :class-names=\"{\n ...menuOptions?.classNames,\n details: ['px-0', cn(menuOptions?.classNames?.details) ?? ''],\n menu: [\n { hidden: optionsWithSelectedHidden.length === 0 && customValue && !slots['no-data'] },\n cn(menuOptions?.classNames?.menu) ?? '',\n ],\n }\"\n :options=\"menuFloatingOptions\"\n :close-on-content-click=\"false\"\n full-width\n persist-on-activator-click\n :error-messages=\"errorMessages\"\n :success-messages=\"successMessages\"\n :hint=\"hint\"\n :dense=\"dense\"\n :show-details=\"detailsMode !== 'hidden'\"\n :details=\"detailsMode === 'auto' ? 'auto' : 'reserve'\"\n :disabled=\"disabled\"\n disable-auto-focus\n role=\"listbox\"\n >\n <template\n v-if=\"label\"\n #label\n >\n <RuiFieldLabel\n :id=\"labelId\"\n :text=\"label\"\n :hidden=\"placement === 'hidden'\"\n :required=\"required\"\n :disabled=\"disabled\"\n />\n </template>\n <template #activator=\"{ attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\">\n <slot\n name=\"activator\"\n v-bind=\"{ disabled, value, readOnly, attrs, open, hasError: slotHasError, hasSuccess: slotHasSuccess }\"\n >\n <!--\n The visual box: it takes clicks and the keys that bubble from the input and the chips, but\n is no tab stop and carries no role. The input inside is the combobox (ARIA 1.2), so the\n chips sit beside it rather than nested in it.\n -->\n <div\n ref=\"activator\"\n :class=\"ui.activator({ class: cn([hideArrow && 'pr-3', classNames?.label]) })\"\n v-bind=\"{\n ...splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), false),\n ...(readOnly ? {} : activatorHandlers(attrs)),\n }\"\n data-id=\"activator\"\n @mouseenter=\"isHovered = true\"\n @mouseleave=\"isHovered = false\"\n @click=\"focusSetInputFocus()\"\n @keydown.enter=\"onEnter($event)\"\n @keydown.tab=\"onTab($event)\"\n @keydown.left=\"moveSelectedValueHighlight($event, false)\"\n @keydown.right=\"moveSelectedValueHighlight($event, true)\"\n @keydown.up.prevent=\"onArrow(true)\"\n @keydown.down.prevent=\"onArrow(false)\"\n @keydown.home.prevent=\"modelHighlightedIndex = 0\"\n @keydown.end.prevent=\"modelHighlightedIndex = optionsWithSelectedHidden.length - 1\"\n >\n <span\n v-if=\"prependIcon\"\n :class=\"ui.prepend()\"\n data-id=\"prepend\"\n >\n <RuiIcon\n :name=\"prependIcon\"\n :size=\"dense ? 16 : 18\"\n />\n </span>\n <div\n data-id=\"value\"\n :class=\"ui.value()\"\n >\n <!--\n Placeholder slot occupies the same flex space the input takes\n when focused, so transitioning into the focused state doesn't\n shift the activator's content. pointer-events-none is required\n so clicks pass through to the activator (otherwise the slot\n swallows the first click and the menu needs two taps to open).\n -->\n <span\n v-if=\"restingPlaceholder\"\n data-id=\"resting-placeholder\"\n class=\"truncate text-rui-text-secondary pointer-events-none\"\n >\n {{ placeholder }}\n </span>\n <div\n v-if=\"!valueSet && !editing && slots.placeholder\"\n data-id=\"placeholder\"\n class=\"flex-1 min-w-0 pointer-events-none\"\n >\n <slot\n name=\"placeholder\"\n v-bind=\"{ disabled, readOnly }\"\n />\n </div>\n <RuiAutoCompleteSelection\n :items=\"value\"\n :chips=\"chips\"\n :dense=\"dense\"\n :multiple=\"multiple\"\n :search-input-focused=\"editing\"\n :hide-selection-wrapper=\"hideSelectionWrapper\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :chip-attrs=\"chipAttrs\"\n :selected-index=\"focusedValueIndex\"\n :select-chip=\"selectChip\"\n >\n <template\n v-if=\"slots['selection.prepend']\"\n #prepend=\"slotProps\"\n >\n <slot\n name=\"selection.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.selection\"\n #default=\"slotProps\"\n >\n <slot\n name=\"selection\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteSelection>\n <!-- with hideSearchInput the input stays as a collapsed, read-only combobox, so the field keeps a focus target -->\n <input\n ref=\"textInput\"\n :disabled=\"disabled\"\n :readonly=\"readOnly || hideSearchInput\"\n :value=\"internalSearch\"\n class=\"bg-transparent outline-hidden\"\n type=\"text\"\n :placeholder=\"usedPlaceholder\"\n :class=\"hideSearchInput ? 'w-0 h-0 min-w-0 opacity-0' : focusInputClass\"\n role=\"combobox\"\n :tabindex=\"readOnly ? -1 : undefined\"\n :aria-labelledby=\"label ? labelId : undefined\"\n :aria-expanded=\"open\"\n aria-haspopup=\"listbox\"\n :aria-controls=\"attrs['aria-controls']\"\n :aria-activedescendant=\"activeDescendant\"\n :aria-readonly=\"readOnly || undefined\"\n :aria-required=\"required || undefined\"\n :aria-busy=\"loading || undefined\"\n :aria-invalid=\"hasError\"\n aria-autocomplete=\"list\"\n data-id=\"search-input\"\n v-bind=\"splitAriaAttrs(getNonRootAttrs($attrs, ['onClick', 'class']), true)\"\n @keydown=\"onSettledKeydown($event); onInputKeydown($event)\"\n @keydown.delete=\"onInputDeletePressed($event)\"\n @input.stop=\"updateSearchInput($event)\"\n @focus=\"focusOnInputFocused()\"\n />\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n >\n {{ selectedChipAnnouncement }}\n </span>\n </div>\n\n <RuiButton\n v-if=\"clearable && valueSet && !disabled && !readOnly\"\n variant=\"text\"\n icon\n size=\"sm\"\n tabindex=\"-1\"\n data-id=\"clear\"\n aria-label=\"Clear\"\n :class=\"[\n ui.clear(),\n focusAnyFocused && 'visible!',\n { 'mr-2': !dense },\n ]\"\n @click.stop.prevent=\"clear()\"\n >\n <RuiIcon\n name=\"lu-x\"\n size=\"16\"\n />\n </RuiButton>\n\n <span\n v-if=\"!hideArrow\"\n :class=\"ui.iconWrapper()\"\n @click=\"arrowClicked($event)\"\n >\n <RuiIcon\n :class=\"ui.icon()\"\n :size=\"dense ? 16 : 20\"\n name=\"lu-chevron-down\"\n />\n </span>\n\n <RuiProgress\n v-if=\"loading\"\n :class=\"ui.progress()\"\n color=\"primary\"\n thickness=\"2\"\n variant=\"indeterminate\"\n />\n </div>\n <fieldset :class=\"ui.fieldset()\" />\n </slot>\n </template>\n <template #default=\"{ width }\">\n <div ref=\"menuWrapperRef\">\n <RuiAutoCompleteOptionList\n v-if=\"optionsWithSelectedHidden.length > 0\"\n :container-props=\"containerProps\"\n :wrapper-props=\"wrapperProps\"\n :set-menu-ref=\"setMenuRef\"\n :is-grouped=\"isGrouped\"\n :grouped-options=\"groupedOptions\"\n :rendered-data=\"renderedData\"\n :options=\"optionsWithSelectedHidden\"\n :highlighted-index=\"modelHighlightedIndex\"\n :highlighted-class=\"highlightedClass\"\n :dense=\"dense\"\n :menu-class=\"ui.menu({ class: cn(classNames?.menu) })\"\n :menu-style=\"{ width: `${width}px`, minWidth: menuWidth, minHeight: `${menuMinHeight}px` }\"\n :get-identifier=\"getIdentifier\"\n :get-text=\"getText\"\n :is-active-item=\"isActiveItem\"\n :is-item-disabled=\"isItemDisabled\"\n :option-id-prefix=\"optionIdPrefix\"\n @select=\"setValue($event)\"\n @move-highlight=\"moveHighlight($event)\"\n >\n <template\n v-if=\"slots['group-header']\"\n #group-header=\"slotProps\"\n >\n <slot\n name=\"group-header\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.prepend']\"\n #item.prepend=\"slotProps\"\n >\n <slot\n name=\"item.prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots.item\"\n #item=\"slotProps\"\n >\n <slot\n name=\"item\"\n v-bind=\"slotProps\"\n />\n </template>\n <template\n v-if=\"slots['item.append']\"\n #item.append=\"slotProps\"\n >\n <slot\n name=\"item.append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiAutoCompleteOptionList>\n\n <div\n v-else-if=\"!hideNoData\"\n :style=\"{ width: `${width}px`, minWidth: menuWidth }\"\n :class=\"classNames?.menu\"\n >\n <slot name=\"no-data\">\n <div\n v-if=\"!customValue\"\n class=\"p-4\"\n data-id=\"no-data\"\n >\n {{ noDataText }}\n </div>\n </slot>\n </div>\n <!--\n The scroll container above reserves ~15px on the right for the\n scrollbar gutter. We render an equivalent right-padding here so the\n footer's content aligns with the option rows' content rather than\n the menu's outer edge. `pr-(--rui-scrollbar-gutter,15px)`\n lets consumers override if their theme reserves a different width.\n -->\n <div\n v-if=\"slots.footer\"\n class=\"bg-rui-menu border-t border-rui-divider pr-(--rui-scrollbar-gutter,15px) -mb-2\"\n data-id=\"footer\"\n >\n <slot name=\"footer\" />\n </div>\n </div>\n </template>\n </RuiMenu>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAutoCompleteOption.js","names":["_sfc_main"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoCompleteOption.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TItem\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\n\nexport interface AutoCompleteOptionProps<TItem> {\n item: TItem;\n text: string | undefined;\n active: boolean;\n disabled: boolean;\n dense: boolean;\n highlighted: boolean;\n highlightedClass: string;\n}\n\nconst {\n active,\n dense,\n disabled,\n highlighted,\n highlightedClass,\n item,\n text,\n} = defineProps<AutoCompleteOptionProps<TItem>>();\n\nconst emit = defineEmits<{\n select: [item: TItem];\n}>();\n\ndefineSlots<{\n prepend?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n default?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n append?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n}>();\n\nconst slotProps = computed<{ disabled: boolean; item: TItem; active: boolean }>(() => ({\n active,\n disabled,\n item,\n}));\n\nfunction onClick(): void {\n if (!disabled)\n emit('select', item);\n}\n</script>\n\n<template>\n <RuiButton\n :active=\"active\"\n role=\"option\"\n :aria-selected=\"active\"\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n variant=\"list\"\n :data-highlighted=\"highlighted\"\n :data-disabled=\"disabled || undefined\"\n :class=\"{ [highlightedClass]: !active && highlighted }\"\n @click=\"onClick()\"\n >\n <template #prepend>\n <slot\n name=\"prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <slot v-bind=\"slotProps\">\n {{ text }}\n </slot>\n <template #append>\n <slot\n name=\"append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiButton>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"RuiAutoCompleteOption.js","names":["_sfc_main"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoCompleteOption.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TItem\">\nimport type { ButtonHTMLAttributes } from 'vue';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\n\nexport interface AutoCompleteOptionProps<TItem> {\n item: TItem;\n text: string | undefined;\n active: boolean;\n disabled: boolean;\n dense: boolean;\n highlighted: boolean;\n highlightedClass: string;\n}\n\nconst {\n active,\n dense,\n disabled,\n highlighted,\n highlightedClass,\n item,\n text,\n} = defineProps<AutoCompleteOptionProps<TItem> & /* @vue-ignore */ Omit<ButtonHTMLAttributes, keyof AutoCompleteOptionProps<TItem> | 'onSelect'>>();\n\nconst emit = defineEmits<{\n select: [item: TItem];\n}>();\n\ndefineSlots<{\n prepend?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n default?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n append?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n}>();\n\nconst slotProps = computed<{ disabled: boolean; item: TItem; active: boolean }>(() => ({\n active,\n disabled,\n item,\n}));\n\nfunction onClick(): void {\n if (!disabled)\n emit('select', item);\n}\n</script>\n\n<template>\n <RuiButton\n :active=\"active\"\n role=\"option\"\n :aria-selected=\"active\"\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n variant=\"list\"\n :data-highlighted=\"highlighted\"\n :data-disabled=\"disabled || undefined\"\n :class=\"{ [highlightedClass]: !active && highlighted }\"\n @click=\"onClick()\"\n >\n <template #prepend>\n <slot\n name=\"prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <slot v-bind=\"slotProps\">\n {{ text }}\n </slot>\n <template #append>\n <slot\n name=\"append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiButton>\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { ButtonHTMLAttributes } from 'vue';
1
2
  export interface AutoCompleteOptionProps<TItem> {
2
3
  item: TItem;
3
4
  text: string | undefined;
@@ -8,7 +9,7 @@ export interface AutoCompleteOptionProps<TItem> {
8
9
  highlightedClass: string;
9
10
  }
10
11
  declare const __VLS_export: <TItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
11
- props: import("vue").PublicProps & __VLS_PrettifyLocal<AutoCompleteOptionProps<TItem> & {
12
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(AutoCompleteOptionProps<TItem> & Omit<ButtonHTMLAttributes, "onSelect" | keyof AutoCompleteOptionProps<TItem>>) & {
12
13
  onSelect?: ((item: TItem) => any) | undefined;
13
14
  }> & (typeof globalThis extends {
14
15
  __VLS_PROPS_FALLBACK: infer P;
@@ -1 +1 @@
1
- {"version":3,"file":"RuiAutoCompleteOption.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","RuiButton","_normalizeClass","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_unref","_createTextVNode","_toDisplayString"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoCompleteOption.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TItem\">\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\n\nexport interface AutoCompleteOptionProps<TItem> {\n item: TItem;\n text: string | undefined;\n active: boolean;\n disabled: boolean;\n dense: boolean;\n highlighted: boolean;\n highlightedClass: string;\n}\n\nconst {\n active,\n dense,\n disabled,\n highlighted,\n highlightedClass,\n item,\n text,\n} = defineProps<AutoCompleteOptionProps<TItem>>();\n\nconst emit = defineEmits<{\n select: [item: TItem];\n}>();\n\ndefineSlots<{\n prepend?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n default?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n append?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n}>();\n\nconst slotProps = computed<{ disabled: boolean; item: TItem; active: boolean }>(() => ({\n active,\n disabled,\n item,\n}));\n\nfunction onClick(): void {\n if (!disabled)\n emit('select', item);\n}\n</script>\n\n<template>\n <RuiButton\n :active=\"active\"\n role=\"option\"\n :aria-selected=\"active\"\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n variant=\"list\"\n :data-highlighted=\"highlighted\"\n :data-disabled=\"disabled || undefined\"\n :class=\"{ [highlightedClass]: !active && highlighted }\"\n @click=\"onClick()\"\n >\n <template #prepend>\n <slot\n name=\"prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <slot v-bind=\"slotProps\">\n {{ text }}\n </slot>\n <template #append>\n <slot\n name=\"append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAuBA,MAAM,OAAO;EAUb,MAAM,YAAY,gBAAqE;GACrF,QAAK,QAAA;GACL,UAAO,QAAA;GACP,MAAG,QAAA;EACL,EAAE;EAEF,SAAS,UAAgB;GACvB,IAAI,CAAC,QAAA,UACH,KAAK,UAAU,QAAA,IAAI;EACvB;;GAIE,OAAAA,UAAA,GAAAC,YA4BYC,mBAAA;IA3BT,QAAQ,QAAA;IACT,MAAK;IACJ,iBAAe,QAAA;IACf,MAAM,QAAA,QAAK,OAAU,KAAA;IACrB,UAAU,QAAA;IACX,UAAS;IACT,SAAQ;IACP,oBAAkB,QAAA;IAClB,iBAAe,QAAA,YAAY,KAAA;IAC3B,OAAKC,eAAA,GAAK,QAAA,mBAAgB,CAAI,QAAA,UAAU,QAAA,YAAW,CAAA;IACnD,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAO;;IAEJ,SAAOC,cAId,CAHFC,WAGE,KAAA,QAAA,WAAAC,eAAAC,mBADQC,MAAA,SAAA,CAAS,CAAA,CAAA,CAAA,CAAA;IAMV,QAAMJ,cAIb,CAHFC,WAGE,KAAA,QAAA,UAAAC,eAAAC,mBADQC,MAAA,SAAA,CAAS,CAAA,CAAA,CAAA,CAAA;IANrB,SAAAJ,cAEO,CAFPC,WAEO,KAAA,QAAA,WAAAC,eAAAC,mBAFOC,MAAA,SAAA,CAAS,CAAA,SAEhB,CADFC,gBAAAC,gBAAA,QAAA,IAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"RuiAutoCompleteOption.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","RuiButton","_normalizeClass","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","_unref","_createTextVNode","_toDisplayString"],"sources":["../../../../src/components/forms/auto-complete/RuiAutoCompleteOption.vue"],"sourcesContent":["<script lang=\"ts\" setup generic=\"TItem\">\nimport type { ButtonHTMLAttributes } from 'vue';\nimport RuiButton from '@/components/buttons/button/RuiButton.vue';\n\nexport interface AutoCompleteOptionProps<TItem> {\n item: TItem;\n text: string | undefined;\n active: boolean;\n disabled: boolean;\n dense: boolean;\n highlighted: boolean;\n highlightedClass: string;\n}\n\nconst {\n active,\n dense,\n disabled,\n highlighted,\n highlightedClass,\n item,\n text,\n} = defineProps<AutoCompleteOptionProps<TItem> & /* @vue-ignore */ Omit<ButtonHTMLAttributes, keyof AutoCompleteOptionProps<TItem> | 'onSelect'>>();\n\nconst emit = defineEmits<{\n select: [item: TItem];\n}>();\n\ndefineSlots<{\n prepend?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n default?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n append?: (props: { disabled: boolean; item: TItem; active: boolean }) => any;\n}>();\n\nconst slotProps = computed<{ disabled: boolean; item: TItem; active: boolean }>(() => ({\n active,\n disabled,\n item,\n}));\n\nfunction onClick(): void {\n if (!disabled)\n emit('select', item);\n}\n</script>\n\n<template>\n <RuiButton\n :active=\"active\"\n role=\"option\"\n :aria-selected=\"active\"\n :size=\"dense ? 'sm' : undefined\"\n :disabled=\"disabled\"\n tabindex=\"0\"\n variant=\"list\"\n :data-highlighted=\"highlighted\"\n :data-disabled=\"disabled || undefined\"\n :class=\"{ [highlightedClass]: !active && highlighted }\"\n @click=\"onClick()\"\n >\n <template #prepend>\n <slot\n name=\"prepend\"\n v-bind=\"slotProps\"\n />\n </template>\n <slot v-bind=\"slotProps\">\n {{ text }}\n </slot>\n <template #append>\n <slot\n name=\"append\"\n v-bind=\"slotProps\"\n />\n </template>\n </RuiButton>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAwBA,MAAM,OAAO;EAUb,MAAM,YAAY,gBAAqE;GACrF,QAAK,QAAA;GACL,UAAO,QAAA;GACP,MAAG,QAAA;EACL,EAAE;EAEF,SAAS,UAAgB;GACvB,IAAI,CAAC,QAAA,UACH,KAAK,UAAU,QAAA,IAAI;EACvB;;GAIE,OAAAA,UAAA,GAAAC,YA4BYC,mBAAA;IA3BT,QAAQ,QAAA;IACT,MAAK;IACJ,iBAAe,QAAA;IACf,MAAM,QAAA,QAAK,OAAU,KAAA;IACrB,UAAU,QAAA;IACX,UAAS;IACT,SAAQ;IACP,oBAAkB,QAAA;IAClB,iBAAe,QAAA,YAAY,KAAA;IAC3B,OAAKC,eAAA,GAAK,QAAA,mBAAgB,CAAI,QAAA,UAAU,QAAA,YAAW,CAAA;IACnD,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAO;;IAEJ,SAAOC,cAId,CAHFC,WAGE,KAAA,QAAA,WAAAC,eAAAC,mBADQC,MAAA,SAAA,CAAS,CAAA,CAAA,CAAA,CAAA;IAMV,QAAMJ,cAIb,CAHFC,WAGE,KAAA,QAAA,UAAAC,eAAAC,mBADQC,MAAA,SAAA,CAAS,CAAA,CAAA,CAAA,CAAA;IANrB,SAAAJ,cAEO,CAFPC,WAEO,KAAA,QAAA,WAAAC,eAAAC,mBAFOC,MAAA,SAAA,CAAS,CAAA,SAEhB,CADFC,gBAAAC,gBAAA,QAAA,IAAI,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}