vectis-ui 0.14.0 → 0.16.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 (442) hide show
  1. package/dist/components/VAccordion/VAccordion.css +1 -1
  2. package/dist/components/VAccordion/VAccordion.d.ts +0 -6
  3. package/dist/components/VAccordion/VAccordion.js.map +1 -1
  4. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js +3 -8
  5. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/VAccordion/VAccordionItem.js.map +1 -1
  7. package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  8. package/dist/components/VAccordion/context.js.map +1 -1
  9. package/dist/components/VAlert/VAlert.js.map +1 -1
  10. package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/components/VAvatar/VAvatar.d.ts +0 -3
  12. package/dist/components/VAvatar/VAvatar.js.map +1 -1
  13. package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js +21 -27
  14. package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  15. package/dist/components/VAvatar/VAvatarGroup.d.ts +0 -6
  16. package/dist/components/VAvatar/VAvatarGroup.js.map +1 -1
  17. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +5 -19
  18. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/VAvatar/context.d.ts +0 -1
  20. package/dist/components/VAvatar/context.js.map +1 -1
  21. package/dist/components/VBadge/VBadge.js.map +1 -1
  22. package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js +1 -1
  23. package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/components/VBreadcrumb/VBreadcrumb.js.map +1 -1
  25. package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/components/VButton/VButton.d.ts +0 -6
  27. package/dist/components/VButton/VButton.js.map +1 -1
  28. package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js +11 -17
  29. package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/VButton/VButtonGroup.d.ts +0 -6
  31. package/dist/components/VButton/VButtonGroup.js.map +1 -1
  32. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js +0 -7
  33. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  34. package/dist/components/VButton/context.d.ts +0 -2
  35. package/dist/components/VButton/context.js.map +1 -1
  36. package/dist/components/VCalendar/VCalendar.js.map +1 -1
  37. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/components/VCalendar/VCalendarEvent.js.map +1 -1
  39. package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/VCalendar/VCalendarMonth.js.map +1 -1
  41. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js +5 -17
  42. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -1
  44. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js +19 -31
  45. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/VCalendar/VCalendarYear.js.map +1 -1
  47. package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/components/VCalendar/color.js.map +1 -1
  49. package/dist/components/VCalendar/edgeStep.js +1 -5
  50. package/dist/components/VCalendar/edgeStep.js.map +1 -1
  51. package/dist/components/VCalendar/gesture.js +4 -12
  52. package/dist/components/VCalendar/gesture.js.map +1 -1
  53. package/dist/components/VCalendar/keyboard.js.map +1 -1
  54. package/dist/components/VCalendar/layout.js +8 -12
  55. package/dist/components/VCalendar/layout.js.map +1 -1
  56. package/dist/components/VCalendar/timeGrid.js +5 -5
  57. package/dist/components/VCalendar/timeGrid.js.map +1 -1
  58. package/dist/components/VCard/VCard.js.map +1 -1
  59. package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  60. package/dist/components/VCarousel/VCarousel.js.map +1 -1
  61. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  62. package/dist/components/VCarousel/VCarouselItem.js.map +1 -1
  63. package/dist/components/VCarousel/VCarouselItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  64. package/dist/components/VCarousel/context.js.map +1 -1
  65. package/dist/components/VCheckbox/VCheckMark.js.map +1 -1
  66. package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/VCheckbox/VCheckbox.js.map +1 -1
  68. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/VChip/VChip.d.ts +0 -3
  70. package/dist/components/VChip/VChip.js.map +1 -1
  71. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +0 -6
  72. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/VColorInput/VColorInput.d.ts +0 -3
  74. package/dist/components/VColorInput/VColorInput.js.map +1 -1
  75. package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js +3 -9
  76. package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/VColorPicker/VColorPicker.js.map +1 -1
  78. package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js +1 -5
  79. package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  80. package/dist/components/VColorPicker/color.js.map +1 -1
  81. package/dist/components/VCombobox/VCombobox.d.ts +0 -3
  82. package/dist/components/VCombobox/VCombobox.js.map +1 -1
  83. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +100 -119
  84. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  85. package/dist/components/VCommandPalette/VCommandPalette.js.map +1 -1
  86. package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js +0 -1
  87. package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/VCommandPalette/VCommandPaletteItem.js.map +1 -1
  89. package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js +1 -5
  90. package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/components/VContextMenu/VContextMenu.d.ts +0 -3
  92. package/dist/components/VContextMenu/VContextMenu.js.map +1 -1
  93. package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js +3 -11
  94. package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  95. package/dist/components/VDataTable/VDataTable.css +1 -1
  96. package/dist/components/VDataTable/VDataTable.d.ts +0 -2
  97. package/dist/components/VDataTable/VDataTable.js.map +1 -1
  98. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +69 -88
  99. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  100. package/dist/components/VDateInput/VDateInput.d.ts +0 -3
  101. package/dist/components/VDateInput/VDateInput.js.map +1 -1
  102. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +5 -10
  103. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  104. package/dist/components/VDateInput/mask.js.map +1 -1
  105. package/dist/components/VDatePicker/VDatePicker.js.map +1 -1
  106. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +2 -1
  107. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/components/VDatePicker/keyboard.js.map +1 -1
  109. package/dist/components/VDatePicker/names.js.map +1 -1
  110. package/dist/components/VDialog/VDialog.js.map +1 -1
  111. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/components/VDialog/VDialogAlert.js.map +1 -1
  113. package/dist/components/VDialog/VDialogAlert.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/VDrawer/VDrawer.js.map +1 -1
  115. package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/VEmptyState/VEmptyState.js.map +1 -1
  117. package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/VField/VField.js.map +1 -1
  119. package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/VField/VFieldAnnouncer.js.map +1 -1
  121. package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/VField/VFieldMessage.js.map +1 -1
  123. package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/VFieldset/VFieldset.js.map +1 -1
  125. package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/VFileInput/VFileInput.d.ts +0 -5
  127. package/dist/components/VFileInput/VFileInput.js.map +1 -1
  128. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +54 -65
  129. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/VFileInput/truncate.js.map +1 -1
  131. package/dist/components/VFilePicker/VFilePicker.js.map +1 -1
  132. package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js +1 -1
  133. package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  134. package/dist/components/VFilePicker/fileKind.js.map +1 -1
  135. package/dist/components/VHotkeys/VHotkeys.d.ts +0 -3
  136. package/dist/components/VHotkeys/VHotkeys.js.map +1 -1
  137. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +0 -6
  138. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/VHotkeys/platform.js +1 -1
  140. package/dist/components/VHotkeys/platform.js.map +1 -1
  141. package/dist/components/VHoverCard/VHoverCard.js.map +1 -1
  142. package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js +2 -12
  143. package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/components/VIcon/VIcon.js.map +1 -1
  145. package/dist/components/VIcon/VIcon.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/VIcon/iconProps.js.map +1 -1
  147. package/dist/components/VIcon/icons/add.js.map +1 -1
  148. package/dist/components/VIcon/icons/arrow_downward.js.map +1 -1
  149. package/dist/components/VIcon/icons/arrow_downward_alt.js.map +1 -1
  150. package/dist/components/VIcon/icons/arrow_drop_down.js.map +1 -1
  151. package/dist/components/VIcon/icons/arrow_drop_up.js.map +1 -1
  152. package/dist/components/VIcon/icons/arrow_left_alt.js.map +1 -1
  153. package/dist/components/VIcon/icons/arrow_right_alt.js.map +1 -1
  154. package/dist/components/VIcon/icons/arrow_upward.js.map +1 -1
  155. package/dist/components/VIcon/icons/arrow_upward_alt.js.map +1 -1
  156. package/dist/components/VIcon/icons/attach_file.js.map +1 -1
  157. package/dist/components/VIcon/icons/audio_file.js.map +1 -1
  158. package/dist/components/VIcon/icons/calendar_today.js.map +1 -1
  159. package/dist/components/VIcon/icons/check.js.map +1 -1
  160. package/dist/components/VIcon/icons/check_circle.js.map +1 -1
  161. package/dist/components/VIcon/icons/chevron_left.js.map +1 -1
  162. package/dist/components/VIcon/icons/chevron_right.js.map +1 -1
  163. package/dist/components/VIcon/icons/close.js.map +1 -1
  164. package/dist/components/VIcon/icons/cloud_upload.js.map +1 -1
  165. package/dist/components/VIcon/icons/code.js.map +1 -1
  166. package/dist/components/VIcon/icons/colorize.js.map +1 -1
  167. package/dist/components/VIcon/icons/description.js.map +1 -1
  168. package/dist/components/VIcon/icons/error.js.map +1 -1
  169. package/dist/components/VIcon/icons/expand_less.js.map +1 -1
  170. package/dist/components/VIcon/icons/expand_more.js.map +1 -1
  171. package/dist/components/VIcon/icons/first_page.js.map +1 -1
  172. package/dist/components/VIcon/icons/folder_zip.js.map +1 -1
  173. package/dist/components/VIcon/icons/image.js.map +1 -1
  174. package/dist/components/VIcon/icons/inbox.js.map +1 -1
  175. package/dist/components/VIcon/icons/index.js.map +1 -1
  176. package/dist/components/VIcon/icons/info.js.map +1 -1
  177. package/dist/components/VIcon/icons/last_page.js.map +1 -1
  178. package/dist/components/VIcon/icons/more_horiz.js.map +1 -1
  179. package/dist/components/VIcon/icons/names.js.map +1 -1
  180. package/dist/components/VIcon/icons/notifications.js.map +1 -1
  181. package/dist/components/VIcon/icons/open_in_new.js.map +1 -1
  182. package/dist/components/VIcon/icons/picture_as_pdf.js.map +1 -1
  183. package/dist/components/VIcon/icons/priority_high.js.map +1 -1
  184. package/dist/components/VIcon/icons/remove.js.map +1 -1
  185. package/dist/components/VIcon/icons/schedule.js.map +1 -1
  186. package/dist/components/VIcon/icons/search.js.map +1 -1
  187. package/dist/components/VIcon/icons/search_off.js.map +1 -1
  188. package/dist/components/VIcon/icons/star.js.map +1 -1
  189. package/dist/components/VIcon/icons/swap_vert.js.map +1 -1
  190. package/dist/components/VIcon/icons/table_chart.js.map +1 -1
  191. package/dist/components/VIcon/icons/video_file.js.map +1 -1
  192. package/dist/components/VIcon/icons/viewBox.js.map +1 -1
  193. package/dist/components/VIcon/icons/warning.js.map +1 -1
  194. package/dist/components/VIcon/resolver.js.map +1 -1
  195. package/dist/components/VIconButton/VIconButton.d.ts +0 -3
  196. package/dist/components/VIconButton/VIconButton.js.map +1 -1
  197. package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js +0 -6
  198. package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/components/VInput/VInput.css +1 -1
  200. package/dist/components/VInput/VInput.d.ts +0 -3
  201. package/dist/components/VInput/VInput.js.map +1 -1
  202. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +2 -8
  203. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  204. package/dist/components/VInput/VInputGroup.d.ts +0 -3
  205. package/dist/components/VInput/VInputGroup.js.map +1 -1
  206. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js +0 -7
  207. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  208. package/dist/components/VInput/context.d.ts +0 -2
  209. package/dist/components/VInput/context.js.map +1 -1
  210. package/dist/components/VInputOTP/VInputOTP.d.ts +0 -3
  211. package/dist/components/VInputOTP/VInputOTP.js.map +1 -1
  212. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +2 -14
  213. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/VLink/VLink.js.map +1 -1
  215. package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  216. package/dist/components/VListbox/VListboxChevron.js.map +1 -1
  217. package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js.map +1 -1
  218. package/dist/components/VListbox/VListboxGroup.js.map +1 -1
  219. package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  220. package/dist/components/VListbox/VListboxOption.js.map +1 -1
  221. package/dist/components/VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -1
  222. package/dist/components/VListbox/VListboxPanel.d.ts +0 -3
  223. package/dist/components/VListbox/VListboxPanel.js.map +1 -1
  224. package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js +0 -6
  225. package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/VListbox/VListboxSeparator.js.map +1 -1
  227. package/dist/components/VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  228. package/dist/components/VListbox/VListboxValues.js.map +1 -1
  229. package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js +4 -14
  230. package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js.map +1 -1
  231. package/dist/components/VMenu/VMenu.d.ts +0 -3
  232. package/dist/components/VMenu/VMenu.js.map +1 -1
  233. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +0 -6
  234. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/VMenu/VMenuGroup.js.map +1 -1
  236. package/dist/components/VMenu/VMenuGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/components/VMenu/VMenuItem.js.map +1 -1
  238. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +6 -12
  239. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/components/VMenu/VMenuPanel.d.ts +0 -3
  241. package/dist/components/VMenu/VMenuPanel.js.map +1 -1
  242. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +9 -16
  243. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  244. package/dist/components/VMenu/VMenuSeparator.js.map +1 -1
  245. package/dist/components/VMenu/VMenuSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  246. package/dist/components/VMenu/context.js.map +1 -1
  247. package/dist/components/VMeter/VMeter.js.map +1 -1
  248. package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  249. package/dist/components/VNumberInput/VNumberInput.d.ts +0 -3
  250. package/dist/components/VNumberInput/VNumberInput.js.map +1 -1
  251. package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js +85 -90
  252. package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  253. package/dist/components/VNumberInput/number.js.map +1 -1
  254. package/dist/components/VPagination/VPagination.d.ts +0 -3
  255. package/dist/components/VPagination/VPagination.js.map +1 -1
  256. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +0 -6
  257. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  258. package/dist/components/VPopover/VPopover.js.map +1 -1
  259. package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js.map +1 -1
  260. package/dist/components/VProgressCircular/VProgressCircular.js.map +1 -1
  261. package/dist/components/VProgressCircular/VProgressCircular.vue_vue_type_script_setup_true_lang.js.map +1 -1
  262. package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -1
  263. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  264. package/dist/components/VRadio/VRadio.js.map +1 -1
  265. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  266. package/dist/components/VRating/VRating.js.map +1 -1
  267. package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js.map +1 -1
  268. package/dist/components/VResizable/VResizable.js.map +1 -1
  269. package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js +8 -6
  270. package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/components/VResizable/VResizablePanel.js.map +1 -1
  272. package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  273. package/dist/components/VResizable/context.js.map +1 -1
  274. package/dist/components/VResizable/layout.js.map +1 -1
  275. package/dist/components/VSelect/VSelect.d.ts +0 -3
  276. package/dist/components/VSelect/VSelect.js.map +1 -1
  277. package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js +80 -90
  278. package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  279. package/dist/components/VSeparator/VSeparator.js.map +1 -1
  280. package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  281. package/dist/components/VSideNavigation/VSideNavigation.d.ts +0 -6
  282. package/dist/components/VSideNavigation/VSideNavigation.js.map +1 -1
  283. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +2 -11
  284. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js.map +1 -1
  285. package/dist/components/VSideNavigation/VSideNavigationGroup.js.map +1 -1
  286. package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  287. package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -1
  288. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +1 -5
  289. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  290. package/dist/components/VSideNavigation/VSideNavigationSeparator.js.map +1 -1
  291. package/dist/components/VSideNavigation/context.js.map +1 -1
  292. package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +0 -3
  293. package/dist/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
  294. package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js +0 -6
  295. package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  296. package/dist/components/VSlider/VSlider.js.map +1 -1
  297. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +107 -112
  298. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  299. package/dist/components/VSnackbar/VSnackbar.js.map +1 -1
  300. package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  301. package/dist/components/VSnackbar/state.js.map +1 -1
  302. package/dist/components/VSpinner/VSpinner.js.map +1 -1
  303. package/dist/components/VSpinner/VSpinner.vue_vue_type_script_setup_true_lang.js.map +1 -1
  304. package/dist/components/VSplitButton/VSplitButton.d.ts +0 -3
  305. package/dist/components/VSplitButton/VSplitButton.js.map +1 -1
  306. package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js +0 -6
  307. package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  308. package/dist/components/VStepper/VStepper.js.map +1 -1
  309. package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/components/VSwitch/VSwitch.js.map +1 -1
  311. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  312. package/dist/components/VTabs/VTab.js.map +1 -1
  313. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js +0 -2
  314. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  315. package/dist/components/VTabs/VTabPanel.js.map +1 -1
  316. package/dist/components/VTabs/VTabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  317. package/dist/components/VTabs/VTabs.css +1 -1
  318. package/dist/components/VTabs/VTabs.d.ts +0 -3
  319. package/dist/components/VTabs/VTabs.js.map +1 -1
  320. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +2 -15
  321. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  322. package/dist/components/VTabs/context.d.ts +0 -2
  323. package/dist/components/VTabs/context.js.map +1 -1
  324. package/dist/components/VTextarea/VTextarea.d.ts +0 -6
  325. package/dist/components/VTextarea/VTextarea.js.map +1 -1
  326. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +0 -6
  327. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  328. package/dist/components/VTimeInput/VTimeInput.d.ts +0 -3
  329. package/dist/components/VTimeInput/VTimeInput.js.map +1 -1
  330. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +197 -204
  331. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  332. package/dist/components/VTimeInput/search.js.map +1 -1
  333. package/dist/components/VTimePicker/VTimePicker.js.map +1 -1
  334. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +9 -9
  335. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  336. package/dist/components/VTimePicker/limits.js.map +1 -1
  337. package/dist/components/VTimeline/VTimeline.js.map +1 -1
  338. package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js.map +1 -1
  339. package/dist/components/VTimeline/VTimelineItem.js.map +1 -1
  340. package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  341. package/dist/components/VTimeline/context.js.map +1 -1
  342. package/dist/components/VTimeline/datetime.js.map +1 -1
  343. package/dist/components/VToast/VToast.js.map +1 -1
  344. package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  345. package/dist/components/VToast/VToaster.js.map +1 -1
  346. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +1 -1
  347. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
  348. package/dist/components/VToast/state.js.map +1 -1
  349. package/dist/components/VToggle/VToggle.d.ts +0 -3
  350. package/dist/components/VToggle/VToggle.js.map +1 -1
  351. package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js +1 -13
  352. package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/components/VToggle/VToggleItem.js.map +1 -1
  354. package/dist/components/VToggle/VToggleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  355. package/dist/components/VToggle/context.js.map +1 -1
  356. package/dist/components/VTooltip/VTooltip.js.map +1 -1
  357. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  358. package/dist/components/VTreeView/VTreeView.js.map +1 -1
  359. package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js +1 -5
  360. package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  361. package/dist/components/VTypography/VTypography.js.map +1 -1
  362. package/dist/components/VTypography/VTypography.vue_vue_type_script_setup_true_lang.js.map +1 -1
  363. package/dist/components/VVirtualList/VVirtualList.js.map +1 -1
  364. package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  365. package/dist/composables/useAriaLabel.js.map +1 -1
  366. package/dist/composables/useChoice.js.map +1 -1
  367. package/dist/composables/useClearable.js.map +1 -1
  368. package/dist/composables/useControlShape.d.ts +1 -5
  369. package/dist/composables/useControlShape.js +0 -1
  370. package/dist/composables/useControlShape.js.map +1 -1
  371. package/dist/composables/useDebouncedSearch.js.map +1 -1
  372. package/dist/composables/useDetailsOpen.js.map +1 -1
  373. package/dist/composables/useEscapeDismiss.js.map +1 -1
  374. package/dist/composables/useFieldIds.js.map +1 -1
  375. package/dist/composables/useFieldPanel.js +3 -7
  376. package/dist/composables/useFieldPanel.js.map +1 -1
  377. package/dist/composables/useFileDrop.js.map +1 -1
  378. package/dist/composables/useFileField.js +2 -2
  379. package/dist/composables/useFileField.js.map +1 -1
  380. package/dist/composables/useFocusoutDismiss.js.map +1 -1
  381. package/dist/composables/useHotkeyListener.js.map +1 -1
  382. package/dist/composables/useIconClickHandlers.js.map +1 -1
  383. package/dist/composables/useInertLink.js.map +1 -1
  384. package/dist/composables/useInfiniteScroll.js +2 -2
  385. package/dist/composables/useInfiniteScroll.js.map +1 -1
  386. package/dist/composables/useListbox.d.ts +0 -1
  387. package/dist/composables/useListbox.js +4 -10
  388. package/dist/composables/useListbox.js.map +1 -1
  389. package/dist/composables/useLiveAnnouncer.js.map +1 -1
  390. package/dist/composables/useMaskedField.js +28 -48
  391. package/dist/composables/useMaskedField.js.map +1 -1
  392. package/dist/composables/useModalDialog.js +1 -1
  393. package/dist/composables/useModalDialog.js.map +1 -1
  394. package/dist/composables/usePopover.js +1 -1
  395. package/dist/composables/usePopover.js.map +1 -1
  396. package/dist/composables/useProgressValue.js.map +1 -1
  397. package/dist/composables/useRootAttrs.js.map +1 -1
  398. package/dist/composables/useSlotNodes.js.map +1 -1
  399. package/dist/composables/useTextLimit.js.map +1 -1
  400. package/dist/composables/useTimer.js.map +1 -1
  401. package/dist/composables/useTypeahead.js.map +1 -1
  402. package/dist/composables/useVirtualList.js.map +1 -1
  403. package/dist/i18n/en.js.map +1 -1
  404. package/dist/i18n/fr.js.map +1 -1
  405. package/dist/i18n/state.js.map +1 -1
  406. package/dist/styles.css +1 -1
  407. package/dist/tokens/css.js.map +1 -1
  408. package/dist/tokens/index.d.ts +3 -0
  409. package/dist/tokens/index.js.map +1 -1
  410. package/dist/tokens/primitives.js.map +1 -1
  411. package/dist/tokens/semantic.d.ts +3 -0
  412. package/dist/tokens/semantic.js +6 -5
  413. package/dist/tokens/semantic.js.map +1 -1
  414. package/dist/tokens/themes/dark.js.map +1 -1
  415. package/dist/tokens/types.js.map +1 -1
  416. package/dist/tokens.json +12 -5
  417. package/dist/types.d.ts +0 -2
  418. package/dist/utils/array.js.map +1 -1
  419. package/dist/utils/arrowNav.js.map +1 -1
  420. package/dist/utils/attrs.js.map +1 -1
  421. package/dist/utils/chip.d.ts +4 -6
  422. package/dist/utils/chip.js +8 -5
  423. package/dist/utils/chip.js.map +1 -1
  424. package/dist/utils/clock.js +3 -1
  425. package/dist/utils/clock.js.map +1 -1
  426. package/dist/utils/css.js +1 -1
  427. package/dist/utils/css.js.map +1 -1
  428. package/dist/utils/date.js.map +1 -1
  429. package/dist/utils/direction.js.map +1 -1
  430. package/dist/utils/env.js.map +1 -1
  431. package/dist/utils/file.js +13 -31
  432. package/dist/utils/file.js.map +1 -1
  433. package/dist/utils/focus.js.map +1 -1
  434. package/dist/utils/hostWarns.js.map +1 -1
  435. package/dist/utils/ids.js.map +1 -1
  436. package/dist/utils/matcher.js.map +1 -1
  437. package/dist/utils/memo.js.map +1 -1
  438. package/dist/utils/number.js.map +1 -1
  439. package/dist/utils/text.js.map +1 -1
  440. package/dist/utils/time.js.map +1 -1
  441. package/dist/utils/vnode.js.map +1 -1
  442. package/package.json +19 -19
@@ -67,10 +67,6 @@ var Te = [
67
67
  },
68
68
  labelPosition: { default: "top" },
69
69
  size: { default: "md" },
70
- compact: {
71
- type: Boolean,
72
- default: !1
73
- },
74
70
  placeholder: { default: void 0 },
75
71
  disabled: {
76
72
  type: Boolean,
@@ -104,77 +100,58 @@ var Te = [
104
100
  }),
105
101
  emits: /*@__PURE__*/ p(["clear", "click:icon-start"], ["update:modelValue"]),
106
102
  setup(r, { expose: d, emit: p }) {
107
- let w = r, je = e(), Me = i(() => w.clearLabel ?? je.value.select.clear), T = p, { size: E, compact: D, disabled: O } = t(w, _e(oe, null)), k = i(() => fe(E.value, D.value)), A = we(r, "modelValue"), { rootClass: Ne, rootStyle: Pe, forwardedAttrs: Fe } = ee(), Ie = [
103
+ let w = r, je = e(), Me = i(() => w.clearLabel ?? je.value.select.clear), T = p, Ne = _e(oe, null), { size: E, disabled: D } = t(w, Ne), O = i(() => fe(E.value)), k = we(r, "modelValue"), { rootClass: Pe, rootStyle: Fe, forwardedAttrs: Ie } = ee(), Le = [
108
104
  "name",
109
105
  "form",
110
106
  "autocomplete"
111
- ], j = i(() => ce(Fe.value, Ie)), Le = i(() => j.value.picked), Re = ie((e) => T("click:icon-start", e)), ze = i(() => ({
112
- ...j.value.rest,
113
- ...Re
114
- })), M = _(null), N = _(null), P = _(null), F = _(null), I = Ce(), L = _(!1), R = _(!1), z = i(() => me(A.value, w.multiple)), { allOptions: B, visible: V, optionOf: Be, labelOf: H, remember: Ve, activeIndex: U, optionId: He, highlightFirst: Ue, highlightLast: We, highlightSelected: Ge, move: Ke, page: qe, hover: Je, blocks: Ye, measureRow: Xe } = he({
107
+ ], A = i(() => ce(Ie.value, Le)), Re = i(() => A.value.picked), ze = ie((e) => T("click:icon-start", e)), Be = i(() => ({
108
+ ...A.value.rest,
109
+ ...ze
110
+ })), j = _(null), M = _(null), N = _(null), P = _(null), F = Ce(), I = _(!1), L = _(!1), R = i(() => me(k.value, w.multiple)), { allOptions: z, visible: B, optionOf: Ve, labelOf: V, remember: He, activeIndex: H, optionId: Ue, highlightFirst: U, highlightLast: We, highlightSelected: Ge, move: Ke, page: qe, hover: Je, blocks: Ye, measureRow: Xe } = he({
115
111
  items: () => w.options,
116
- selected: () => z.value,
117
- open: () => L.value,
118
- id: I,
119
- panelEl: () => F.value?.el ?? null,
112
+ selected: () => R.value,
113
+ open: () => I.value,
114
+ id: F,
115
+ panelEl: () => P.value?.el ?? null,
120
116
  virtual: () => !1,
121
- size: () => E.value,
122
- compact: () => D.value
123
- }), Ze = i(() => z.value.map(H).join(", ")), Qe = i(() => w.multiple && w.display === "text"), $e = i(() => w.multiple && !R.value && !L.value), et = i(() => ae(w, O.value, z.value.length > 0)), W = _(!1);
117
+ size: () => E.value
118
+ }), Ze = i(() => R.value.map(V).join(", ")), Qe = i(() => w.multiple && w.display === "text"), $e = i(() => w.multiple && !L.value && !I.value), et = i(() => ae(w, D.value, R.value.length > 0)), W = _(!1);
124
119
  function G() {
125
- O.value || w.readonly || L.value || (L.value = !0, Ge());
120
+ D.value || w.readonly || I.value || (I.value = !0, Ge());
126
121
  }
127
122
  function K() {
128
- L.value && (L.value = !1, U.value = -1);
123
+ I.value && (I.value = !1, H.value = -1);
129
124
  }
130
125
  function tt() {
131
- L.value ? K() : G();
126
+ I.value ? K() : G();
132
127
  }
133
- let nt = pe(M, () => {
134
- R.value = !1, K();
128
+ let nt = pe(j, () => {
129
+ L.value = !1, K();
135
130
  });
136
131
  function rt(e) {
137
- e.disabled || w.readonly || O.value || (Ve(e), w.multiple ? A.value = re(z.value, e.value) : (A.value !== e.value && (A.value = e.value), K()));
132
+ e.disabled || w.readonly || D.value || (He(e), w.multiple ? k.value = re(R.value, e.value) : (k.value !== e.value && (k.value = e.value), K()));
138
133
  }
139
134
  function q() {
140
- let e = V.value[U.value];
135
+ let e = B.value[H.value];
141
136
  e && rt(e);
142
137
  }
143
138
  function it(e) {
144
- !w.multiple || w.readonly || O.value || (A.value = z.value.filter((t) => t !== e), N.value?.focus());
139
+ !w.multiple || w.readonly || D.value || (k.value = R.value.filter((t) => t !== e), M.value?.focus());
145
140
  }
146
141
  function at() {
147
- A.value = w.multiple ? [] : "", N.value?.focus(), T("clear");
142
+ k.value = w.multiple ? [] : "", M.value?.focus(), T("clear");
148
143
  }
149
144
  let ot = te(), { find: st, typing: ct } = ne();
150
145
  function J(e) {
151
- let t = V.value, n = st(e, t.length, U.value, (e) => {
146
+ let t = B.value, n = st(e, t.length, H.value, (e) => {
152
147
  let n = t[e];
153
148
  return n.disabled ? void 0 : ot(n, n.label);
154
149
  });
155
- n >= 0 && (U.value = n);
150
+ n >= 0 && (H.value = n);
156
151
  }
157
152
  let Y = (e) => e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey;
158
153
  function lt(e) {
159
- if (!L.value) {
160
- switch (e.key) {
161
- case "ArrowDown":
162
- case "ArrowUp":
163
- case "Enter":
164
- case " ":
165
- e.preventDefault(), G();
166
- return;
167
- case "Home":
168
- e.preventDefault(), G(), L.value && Ue();
169
- return;
170
- case "End":
171
- e.preventDefault(), G(), L.value && We();
172
- return;
173
- }
174
- Y(e) && (G(), L.value && J(e.key));
175
- return;
176
- }
177
- switch (e.key) {
154
+ if (I.value) switch (e.key) {
178
155
  case "ArrowDown":
179
156
  e.preventDefault(), Ke(1);
180
157
  break;
@@ -182,7 +159,7 @@ var Te = [
182
159
  e.preventDefault(), e.altKey ? (q(), K()) : Ke(-1);
183
160
  break;
184
161
  case "Home":
185
- e.preventDefault(), Ue();
162
+ e.preventDefault(), U();
186
163
  break;
187
164
  case "End":
188
165
  e.preventDefault(), We();
@@ -207,6 +184,23 @@ var Te = [
207
184
  break;
208
185
  default: Y(e) && J(e.key);
209
186
  }
187
+ else {
188
+ switch (e.key) {
189
+ case "ArrowDown":
190
+ case "ArrowUp":
191
+ case "Enter":
192
+ case " ":
193
+ e.preventDefault(), G();
194
+ return;
195
+ case "Home":
196
+ e.preventDefault(), G(), I.value && U();
197
+ return;
198
+ case "End":
199
+ e.preventDefault(), G(), I.value && We();
200
+ return;
201
+ }
202
+ Y(e) && (G(), I.value && J(e.key));
203
+ }
210
204
  }
211
205
  function ut(e) {
212
206
  let t = e.target;
@@ -214,49 +208,49 @@ var Te = [
214
208
  }
215
209
  function dt(e) {
216
210
  let t = e.target;
217
- O.value || !t.closest(".v-input-field") || t.closest(C) || (N.value?.focus(), tt());
211
+ D.value || !t.closest(".v-input-field") || t.closest(C) || (M.value?.focus(), tt());
218
212
  }
219
213
  function X() {
220
- let e = P.value;
214
+ let e = N.value;
221
215
  if (e) {
222
216
  for (let t of e.options) t.selected = t.value !== "" && ft.value.has(t.value);
223
- !w.multiple && z.value.length === 0 && (e.value = "");
217
+ !w.multiple && R.value.length === 0 && (e.value = "");
224
218
  }
225
219
  }
226
- let ft = i(() => new Set(z.value.map(String)));
227
- x([z, B], X, { flush: "post" }), x(z, () => {
228
- W.value &&= !P.value?.checkValidity();
220
+ let ft = i(() => new Set(R.value.map(String)));
221
+ x([R, z], X, { flush: "post" }), x(R, () => {
222
+ W.value &&= !N.value?.checkValidity();
229
223
  }, { flush: "post" });
230
224
  function pt() {
231
- let e = P.value;
225
+ let e = N.value;
232
226
  if (!e) return;
233
- let t = [...e.selectedOptions].map((e) => B.value.find((t) => String(t.value) === e.value)).filter((e) => e !== void 0).map((e) => e.value);
234
- A.value = w.multiple ? t : t[0] ?? "";
227
+ let t = [...e.selectedOptions].map((e) => z.value.find((t) => String(t.value) === e.value)).filter((e) => e !== void 0).map((e) => e.value);
228
+ k.value = w.multiple ? t : t[0] ?? "";
235
229
  }
236
230
  let Z = "", Q = null;
237
231
  function $() {
238
- A.value = Array.isArray(Z) ? [...Z] : Z, W.value = !1, setTimeout(X);
232
+ k.value = Array.isArray(Z) ? [...Z] : Z, W.value = !1, setTimeout(X);
239
233
  }
240
234
  return xe(() => {
241
- Z = Array.isArray(A.value) ? [...A.value] : A.value, X(), Q = P.value?.form ?? null, Q?.addEventListener("reset", $);
235
+ Z = Array.isArray(k.value) ? [...k.value] : k.value, X(), Q = N.value?.form ?? null, Q?.addEventListener("reset", $);
242
236
  }), be(() => Q?.removeEventListener("reset", $)), d({
243
- focus: (e) => N.value?.focus(e),
244
- el: N
237
+ focus: (e) => M.value?.focus(e),
238
+ el: M
245
239
  }), (e, t) => (g(), s("div", {
246
240
  ref_key: "rootEl",
247
- ref: M,
248
- class: ve(["v-select", b(Ne)]),
249
- style: ye([{ "--chip-height": k.value.height }, b(Pe)]),
241
+ ref: j,
242
+ class: ve(["v-select", b(Pe)]),
243
+ style: ye([{ "--chip-height": O.value.height }, b(Fe)]),
250
244
  "data-size": b(E),
251
245
  "data-multiple": r.multiple ? "" : void 0,
252
- "data-open": L.value ? "" : void 0,
253
- onFocusin: t[3] ||= (e) => R.value = !0,
246
+ "data-open": I.value ? "" : void 0,
247
+ onFocusin: t[3] ||= (e) => L.value = !0,
254
248
  onFocusout: t[4] ||= (...e) => b(nt) && b(nt)(...e)
255
249
  }, [c("div", {
256
250
  class: "v-select-control",
257
251
  onMousedown: ut,
258
252
  onClick: dt
259
- }, [u(se, m({ class: ["v-input-end-pinned", { "v-input-chips": r.multiple && !Qe.value }] }, ze.value, {
253
+ }, [u(se, m({ class: ["v-input-end-pinned", { "v-input-chips": r.multiple && !Qe.value }] }, Be.value, {
260
254
  label: r.label,
261
255
  hint: r.hint,
262
256
  error: r.error,
@@ -264,9 +258,8 @@ var Te = [
264
258
  "hide-label": r.hideLabel,
265
259
  "label-position": r.labelPosition,
266
260
  size: b(E),
267
- compact: b(D),
268
261
  invalid: r.invalid || W.value,
269
- disabled: b(O),
262
+ disabled: b(D),
270
263
  readonly: r.readonly,
271
264
  "icon-start": r.iconStart,
272
265
  "icon-start-label": r.iconStartLabel,
@@ -277,12 +270,12 @@ var Te = [
277
270
  }), l({
278
271
  control: S(({ controlProps: e }) => [c("button", m({
279
272
  ref_key: "triggerEl",
280
- ref: N,
273
+ ref: M,
281
274
  type: "button",
282
275
  role: "combobox",
283
- "aria-expanded": L.value,
284
- "aria-controls": b(I),
285
- "aria-activedescendant": L.value && b(U) >= 0 ? b(He)(b(U)) : void 0,
276
+ "aria-expanded": I.value,
277
+ "aria-controls": b(F),
278
+ "aria-activedescendant": I.value && b(H) >= 0 ? b(Ue)(b(H)) : void 0,
286
279
  "aria-required": r.required || void 0,
287
280
  "aria-readonly": r.readonly || void 0
288
281
  }, e, {
@@ -294,18 +287,18 @@ var Te = [
294
287
  class: ve(["v-select-value", { "v-visually-hidden": r.multiple }])
295
288
  }, y(Ze.value), 3)) : r.placeholder ? (g(), s("span", De, y(r.placeholder), 1)) : o("", !0)], 16, Ee), c("select", m({
296
289
  ref_key: "nativeEl",
297
- ref: P
298
- }, Le.value, {
290
+ ref: N
291
+ }, Re.value, {
299
292
  class: "v-select-native v-hidden-input",
300
293
  tabindex: "-1",
301
294
  "aria-hidden": "true",
302
295
  multiple: r.multiple || void 0,
303
296
  required: r.required || void 0,
304
- disabled: b(O) || void 0,
297
+ disabled: b(D) || void 0,
305
298
  onChange: pt,
306
- onFocus: t[0] ||= (e) => N.value?.focus(),
299
+ onFocus: t[0] ||= (e) => M.value?.focus(),
307
300
  onInvalid: t[1] ||= (e) => W.value = !0
308
- }), [r.multiple ? o("", !0) : (g(), s("option", ke)), (g(!0), s(ge, null, Se(b(B), (e, t) => (g(), s("option", {
301
+ }), [r.multiple ? o("", !0) : (g(), s("option", ke)), (g(!0), s(ge, null, Se(b(z), (e, t) => (g(), s("option", {
309
302
  key: t,
310
303
  value: String(e.value),
311
304
  disabled: e.disabled
@@ -317,24 +310,24 @@ var Te = [
317
310
  }, null, 8, ["label"])) : (g(), a(le, {
318
311
  key: 1,
319
312
  icon: r.expandIcon,
320
- open: L.value
313
+ open: I.value
321
314
  }, null, 8, ["icon", "open"]))]),
322
315
  _: 2
323
316
  }, [r.multiple || e.$slots.start ? {
324
317
  name: "start",
325
318
  fn: S(() => [r.multiple ? (g(), a(de, {
326
319
  key: 0,
327
- values: z.value,
320
+ values: R.value,
328
321
  display: r.display,
329
322
  max: r.max,
330
323
  collapsed: $e.value,
331
324
  "overflow-text": r.overflowText,
332
- scale: k.value,
325
+ scale: O.value,
333
326
  removable: !r.readonly,
334
- disabled: b(O),
327
+ disabled: b(D),
335
328
  "hide-text": "",
336
- "label-of": b(H),
337
- "option-of": b(Be),
329
+ "label-of": b(V),
330
+ "option-of": b(Ve),
338
331
  onRemove: it
339
332
  }, l({ _: 2 }, [e.$slots.chip ? {
340
333
  name: "chip",
@@ -370,7 +363,6 @@ var Te = [
370
363
  "hide-label",
371
364
  "label-position",
372
365
  "size",
373
- "compact",
374
366
  "invalid",
375
367
  "disabled",
376
368
  "readonly",
@@ -380,16 +372,15 @@ var Te = [
380
372
  "clear-visible",
381
373
  "clear-label"
382
374
  ])], 32), u(ue, {
383
- id: b(I),
375
+ id: b(F),
384
376
  ref_key: "panelRef",
385
- ref: F,
386
- open: L.value,
387
- "onUpdate:open": t[2] ||= (e) => L.value = e,
377
+ ref: P,
378
+ open: I.value,
379
+ "onUpdate:open": t[2] ||= (e) => I.value = e,
388
380
  anchor: "--select-anchor",
389
381
  placement: r.placement,
390
382
  class: "v-select-panel",
391
383
  size: b(E),
392
- compact: b(D),
393
384
  multiple: r.multiple,
394
385
  blocks: b(Ye),
395
386
  measure: b(Xe),
@@ -404,7 +395,6 @@ var Te = [
404
395
  "open",
405
396
  "placement",
406
397
  "size",
407
- "compact",
408
398
  "multiple",
409
399
  "blocks",
410
400
  "measure",
@@ -1 +1 @@
1
- {"version":3,"file":"VSelect.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/VSelect/VSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @a11y @core\n/**\n * A select-only combobox: a native button keeps DOM focus and moves aria-activedescendant through\n * the options, since a native `<select>` cannot draw its list with the design system on every\n * engine. A hidden native `<select>` carries the value into forms, with its constraint\n * validation, autofill and reset.\n */\n\nimport { computed, inject, onBeforeUnmount, onMounted, ref, useId, watch } from 'vue'\n\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport type { FieldLabelPosition } from '../VField/VField.vue'\nimport VInput from '../VInput/VInput.vue'\nimport { inputGroupKey } from '../VInput/context'\nimport VListboxChevron from '../VListbox/VListboxChevron.vue'\nimport VListboxPanel from '../VListbox/VListboxPanel.vue'\nimport VListboxValues from '../VListbox/VListboxValues.vue'\nimport VSpinner from '../VSpinner/VSpinner.vue'\n\nimport type {\n ItemValue,\n ListboxGroup,\n ListboxItem,\n ListboxChipSlotProps,\n ListboxOption,\n ListboxOptionSlotProps,\n ListboxOverflowSlotProps,\n ListboxSeparator,\n} from '../../types'\nimport { toggleValue } from '../../utils/array'\nimport { partitionAttrs } from '../../utils/attrs'\nimport { chipScaleFor } from '../../utils/chip'\nimport { createNormalizedCache } from '../../utils/text'\n\nimport { canClear } from '../../composables/useClearable'\nimport { useControlShape } from '../../composables/useControlShape'\nimport { useFocusoutDismiss } from '../../composables/useFocusoutDismiss'\nimport { iconStartListener } from '../../composables/useIconClickHandlers'\nimport { selectionOf, useListbox } from '../../composables/useListbox'\nimport { useRootAttrs } from '../../composables/useRootAttrs'\nimport { useTypeahead } from '../../composables/useTypeahead'\nimport { useMessages } from '../../i18n/state'\n\n/** One thing that can be chosen. */\nexport type SelectOption = ListboxOption\n\n/** A named block of options, the equivalent of a native `<optgroup>`. */\nexport type SelectGroup = ListboxGroup\n\n/** A rule drawn between two blocks of options, purely decorative. */\nexport type SelectSeparator = ListboxSeparator\n\n/** Anything the list may hold: an option, a named block, or a separator. */\nexport type SelectItem = ListboxItem\n\n/** Where the list opens relative to the field. */\nexport type SelectPlacement =\n 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end'\n\n/** The height of the field: 32, 40 or 48 pixels. */\nexport type SelectSize = 'sm' | 'md' | 'lg'\n\n/**\n * How the chosen values are shown in a multiple field: one chip each, or their labels\n * joined by commas.\n */\nexport type SelectDisplay = 'chip' | 'text'\n\n/** What the `#option` slot receives. */\nexport type SelectOptionSlotProps = ListboxOptionSlotProps\n\n/** What the `#chip` slot receives. */\nexport type SelectChipSlotProps = ListboxChipSlotProps\n\n/** What the `#overflow` slot receives. */\nexport type SelectOverflowSlotProps = ListboxOverflowSlotProps\n\ninterface SelectProps {\n /**\n * What the list offers. An entry may be an option, a named block of options, or a\n * separator; a plain list of options remains perfectly valid.\n */\n options: SelectItem[]\n /**\n * Allows several values to be chosen, which makes the value a list and shows what has been\n * chosen inside the field, as chips or as text depending on `display`. The list then stays\n * open while options are toggled.\n */\n multiple?: boolean\n /**\n * How the chosen values are shown when several can be chosen: one dismissible chip each, or\n * their labels joined by commas on a single line, cut short with an ellipsis when they run\n * out of room.\n */\n display?: SelectDisplay\n /**\n * How many chosen values to show while the field is not focused, before the rest are summed\n * up as \"+X\". Left out, or set to 0, every value is shown.\n */\n max?: number\n /**\n * Rephrases the \"+X\" standing for the values beyond `max`, \"+5 products\" for instance.\n * It receives the number of values being hidden.\n */\n overflowText?: (count: number) => string\n /** The label above the field, tied to it so that clicking it focuses the field. */\n label?: string\n /**\n * A line of help under the field. It is tied to the field for assistive technology,\n * so it is read out along with the label.\n */\n hint?: string\n /**\n * A message saying what is wrong with the value, shown in place of the hint so that the field\n * does not grow. It marks the field invalid, is read along with it, and is announced when it\n * appears or changes.\n */\n error?: string\n /**\n * Marks the field as required: an asterisk follows the label, the combobox is announced as\n * required, and the hidden `<select>` a form reads is `required`.\n */\n required?: boolean\n /** Hides the label visually. It still names the field for assistive technology. */\n hideLabel?: boolean\n /**\n * Where the label sits: above the field (`top`, the default), or at its start, in a column of\n * its own, moving back above when there is not room for both.\n */\n labelPosition?: FieldLabelPosition\n /** The height of the field: 32, 40 or 48 pixels. */\n size?: SelectSize\n /** Takes 4px off the height, as everywhere else in the design system. */\n compact?: boolean\n /** What the field says while nothing is chosen. */\n placeholder?: string\n /** Makes the field unusable, greyed out through the colour tokens. Its value is not submitted. */\n disabled?: boolean\n /**\n * Shows what has been chosen without letting it be changed: the field stays focusable and its\n * value is submitted, but the list never opens, the chips lose their crosses and no clear\n * cross is offered.\n */\n readonly?: boolean\n /** Marks the field as invalid, for a rule of your own. */\n invalid?: boolean\n /**\n * An icon inside the field, at the start, before the chips when several values can\n * be chosen. It is decorative by default and becomes a real button as soon as a\n * `@click:icon-start` listener is attached, in which case it needs `iconStartLabel`.\n */\n iconStart?: IconSource\n /** What the start icon does, in words, once it is clickable. */\n iconStartLabel?: string\n /**\n * The chevron at the end of the field, which turns as the list opens: an icon name, or an\n * explicit render.\n */\n expandIcon?: IconSource\n /**\n * Says that the options are being loaded: a spinner takes the chevron's place. The list still\n * opens.\n */\n loading?: boolean\n /** What the spinner is announced as. It falls back to the design system dictionary. */\n loadingText?: string\n /** Offers a cross that empties the selection. */\n clearable?: boolean\n /** What that cross does, in words. It falls back to the design system dictionary. */\n clearLabel?: string\n /** Where the list opens relative to the field. */\n placement?: SelectPlacement\n}\n\nconst props = withDefaults(defineProps<SelectProps>(), {\n multiple: false,\n display: 'chip',\n max: undefined,\n overflowText: undefined,\n label: undefined,\n hint: undefined,\n error: undefined,\n required: false,\n hideLabel: false,\n labelPosition: 'top',\n size: 'md',\n compact: false,\n placeholder: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n iconStart: undefined,\n iconStartLabel: undefined,\n expandIcon: () => expandMoreIcon,\n loading: false,\n loadingText: undefined,\n clearable: false,\n clearLabel: undefined,\n placement: 'bottom-start',\n})\n\nconst m = useMessages()\nconst resolvedClearLabel = computed(() => props.clearLabel ?? m.value.select.clear)\n\nconst emit = defineEmits<{\n /** The clear cross emptied the selection. */\n clear: []\n /** The start icon was clicked. Attaching this listener is what makes it a button. */\n 'click:icon-start': [event: MouseEvent]\n}>()\n\ndefineSlots<{\n /**\n * Content at the start of the field, rendered after the chips standing for the chosen\n * values rather than in their place.\n */\n start?(): unknown\n /**\n * Controls of your own inside the field, placed before the ones the field owns: the clear\n * cross and the chevron.\n */\n 'value-end'?(): unknown\n /** What a row of the list shows, in place of the plain label: a subtitle, an avatar, a badge. */\n option?(props: SelectOptionSlotProps): unknown\n /** Replaces the chip standing for one chosen value. */\n chip?(props: SelectChipSlotProps): unknown\n /** Replaces the \"+X\" standing for the values beyond `max`. */\n overflow?(props: SelectOverflowSlotProps): unknown\n}>()\n\nconst group = inject(inputGroupKey, null)\nconst {\n size: resolvedSize,\n compact: resolvedCompact,\n disabled: resolvedDisabled,\n} = useControlShape(props, group)\n\nconst chipScale = computed(() => chipScaleFor(resolvedSize.value, resolvedCompact.value))\n\n/** The chosen option's `value`, `''` while nothing is chosen, or the list of them when `multiple` is set. */\nconst model = defineModel<ItemValue | ItemValue[]>({ default: '' })\n\n// `class` and `style` stay on the wrapper; the form attributes go to the hidden `<select>`, which\n// is what a form reads; everything else goes down to the button, the element assistive\n// technology treats as the combobox.\ndefineOptions({ inheritAttrs: false })\nconst { rootClass, rootStyle, forwardedAttrs } = useRootAttrs()\n\nconst NATIVE_ONLY = ['name', 'form', 'autocomplete']\nconst split = computed(() => partitionAttrs(forwardedAttrs.value, NATIVE_ONLY))\nconst nativeAttrs = computed(() => split.value.picked)\n\n// Declared as this component's own event, `click:icon-start` is out of `$attrs`, so the\n// listener is relayed to the field by hand; and only when the consumer wrote one.\nconst iconStartClick = iconStartListener((event) => emit('click:icon-start', event))\nconst fieldAttrs = computed(() => ({ ...split.value.rest, ...iconStartClick }))\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLButtonElement | null>(null)\nconst nativeEl = ref<HTMLSelectElement | null>(null)\nconst panelRef = ref<InstanceType<typeof VListboxPanel> | null>(null)\nconst optionsId = useId()\n\nconst open = ref(false)\nconst focused = ref(false)\n\nconst selectedValues = computed(() => selectionOf(model.value, props.multiple))\n\nconst {\n allOptions,\n visible,\n optionOf,\n labelOf,\n remember,\n activeIndex,\n optionId,\n highlightFirst,\n highlightLast,\n highlightSelected,\n move,\n page,\n hover,\n blocks,\n measureRow,\n} = useListbox({\n items: () => props.options,\n selected: () => selectedValues.value,\n open: () => open.value,\n id: optionsId,\n panelEl: () => panelRef.value?.el ?? null,\n virtual: () => false,\n size: () => resolvedSize.value,\n compact: () => resolvedCompact.value,\n})\n\n// @a11y\n// What the button says, which assistive technology reads as the combobox's value: the chosen\n// label, or every chosen label when the chips beside it show them.\nconst valueText = computed(() => selectedValues.value.map(labelOf).join(', '))\n\nconst textDisplay = computed(() => props.multiple && props.display === 'text')\n\n// Folded, the values beyond `max` are summed up; under the focus, every value is there to be\n// seen and taken back.\nconst collapsed = computed(() => props.multiple && !focused.value && !open.value)\n\nconst clearVisible = computed(() =>\n canClear(props, resolvedDisabled.value, selectedValues.value.length > 0),\n)\n\n/** Whether the hidden `<select>` failed validation since the value last changed. */\nconst nativeInvalid = ref(false)\n\nfunction openPanel() {\n if (resolvedDisabled.value || props.readonly || open.value) return\n open.value = true\n highlightSelected()\n}\n\nfunction closePanel() {\n if (!open.value) return\n open.value = false\n activeIndex.value = -1\n}\n\nfunction togglePanel() {\n if (open.value) closePanel()\n else openPanel()\n}\n\nconst onFocusout = useFocusoutDismiss(rootEl, () => {\n focused.value = false\n closePanel()\n})\n\nfunction choose(option: SelectOption) {\n if (option.disabled || props.readonly || resolvedDisabled.value) return\n remember(option)\n if (props.multiple) {\n model.value = toggleValue(selectedValues.value, option.value)\n } else {\n // Choosing the option already chosen (Tab without moving, for one) changes nothing.\n if (model.value !== option.value) model.value = option.value\n closePanel()\n }\n}\n\nfunction chooseActive() {\n const option = visible.value[activeIndex.value]\n if (option) choose(option)\n}\n\nfunction removeValue(value: ItemValue) {\n if (!props.multiple || props.readonly || resolvedDisabled.value) return\n model.value = selectedValues.value.filter((v) => v !== value)\n // The cross disappears along with its chip, so the focus would fall back to the page.\n triggerEl.value?.focus()\n}\n\n/** The cross was pressed. It disappears with the selection, so the focus goes back to the button. */\nfunction onClear() {\n model.value = props.multiple ? [] : ''\n triggerEl.value?.focus()\n emit('clear')\n}\n\nconst normalizedOf = createNormalizedCache<SelectOption>()\nconst { find: findTyped, typing } = useTypeahead()\n\n// @keyboard\n// Typing a label's first letters highlights it.\nfunction typeahead(key: string) {\n const list = visible.value\n const index = findTyped(key, list.length, activeIndex.value, (i) => {\n const option = list[i]!\n return option.disabled ? undefined : normalizedOf(option, option.label)\n })\n if (index >= 0) activeIndex.value = index\n}\n\nconst printable = (event: KeyboardEvent) =>\n event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey\n\n// @keyboard\n// The keys of the select-only combobox pattern. Enter and Space are consumed on the closed button\n// too, so the click they would synthesise does not toggle the list a second time.\nfunction onKeydown(event: KeyboardEvent) {\n if (!open.value) {\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter':\n case ' ':\n event.preventDefault()\n openPanel()\n return\n case 'Home':\n event.preventDefault()\n openPanel()\n if (open.value) highlightFirst()\n return\n case 'End':\n event.preventDefault()\n openPanel()\n if (open.value) highlightLast()\n return\n }\n if (printable(event)) {\n openPanel()\n if (open.value) typeahead(event.key)\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n move(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n if (event.altKey) {\n chooseActive()\n closePanel()\n } else move(-1)\n break\n case 'Home':\n event.preventDefault()\n highlightFirst()\n break\n case 'End':\n event.preventDefault()\n highlightLast()\n break\n case 'PageDown':\n event.preventDefault()\n page(10)\n break\n case 'PageUp':\n event.preventDefault()\n page(-10)\n break\n case ' ':\n event.preventDefault()\n // While letters are being typed, a space belongs to the prefix: \"New York\".\n if (typing()) typeahead(' ')\n else chooseActive()\n break\n case 'Enter':\n event.preventDefault()\n chooseActive()\n break\n case 'Escape':\n // Consumed only when it closes the list, so a surrounding VDialog stays open.\n event.preventDefault()\n closePanel()\n break\n case 'Tab':\n // Leaving a single list takes the highlighted option, as the pattern prescribes.\n if (!props.multiple) chooseActive()\n closePanel()\n break\n default:\n if (printable(event)) typeahead(event.key)\n }\n}\n\nconst interactive = 'a, button, input, select, textarea, [tabindex]'\n\n// @core\n/*\n * The rest of the field is not focusable, so pressing it would hand the focus to the page: the\n * root's `focusout` then closes the list, and the click that follows reopens it.\n */\nfunction onControlMousedown(event: MouseEvent) {\n const target = event.target as Element\n if (target.closest('.v-input-field') && !target.closest(interactive)) event.preventDefault()\n}\n\n/**\n * A click anywhere in the box of the field toggles the list, as one on the button does. The\n * field's own controls keep their clicks, and the label's reaches the button by itself.\n */\nfunction onControlClick(event: MouseEvent) {\n const target = event.target as Element\n if (resolvedDisabled.value || !target.closest('.v-input-field') || target.closest(interactive))\n return\n triggerEl.value?.focus()\n togglePanel()\n}\n\n/*\n * The hidden `<select>` is written by hand rather than through `selected` bindings: a form reset\n * changes it behind the virtual DOM's back, which would then consider unchanged options already\n * in the right state.\n */\nfunction syncNative() {\n const el = nativeEl.value\n if (!el) return\n for (const option of el.options) {\n option.selected = option.value !== '' && wantedValues.value.has(option.value)\n }\n if (!props.multiple && selectedValues.value.length === 0) el.value = ''\n}\n\nconst wantedValues = computed(() => new Set(selectedValues.value.map(String)))\n\nwatch([selectedValues, allOptions], syncNative, { flush: 'post' })\n\n// A choice that satisfies the constraint clears the error the last submission raised; one that\n// does not raises it again, `checkValidity` firing `invalid`.\nwatch(\n selectedValues,\n () => {\n if (nativeInvalid.value) nativeInvalid.value = !nativeEl.value?.checkValidity()\n },\n { flush: 'post' },\n)\n\n/** Autofill writes the hidden `<select>`; the strings it holds are read back as option values. */\nfunction onNativeChange() {\n const el = nativeEl.value\n if (!el) return\n const values = [...el.selectedOptions]\n .map((native) => allOptions.value.find((option) => String(option.value) === native.value))\n .filter((option): option is SelectOption => option !== undefined)\n .map((option) => option.value)\n model.value = props.multiple ? values : (values[0] ?? '')\n}\n\n// @core\n// A form reset restores the value the field was created with. The browser resets the hidden\n// `<select>` after the event, so it is rewritten on the next task.\nlet initial: ItemValue | ItemValue[] = ''\nlet formEl: HTMLFormElement | null = null\n\nfunction onFormReset() {\n model.value = Array.isArray(initial) ? [...initial] : initial\n nativeInvalid.value = false\n setTimeout(syncNative)\n}\n\nonMounted(() => {\n initial = Array.isArray(model.value) ? [...model.value] : model.value\n syncNative()\n formEl = nativeEl.value?.form ?? null\n formEl?.addEventListener('reset', onFormReset)\n})\n\nonBeforeUnmount(() => formEl?.removeEventListener('reset', onFormReset))\n\ndefineExpose({\n /** Moves the focus to the field. */\n focus: (options?: FocusOptions) => triggerEl.value?.focus(options),\n /** The button that acts as the combobox. */\n el: triggerEl,\n})\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"v-select\"\n :class=\"rootClass\"\n :style=\"[{ '--chip-height': chipScale.height }, rootStyle]\"\n :data-size=\"resolvedSize\"\n :data-multiple=\"multiple ? '' : undefined\"\n :data-open=\"open ? '' : undefined\"\n @focusin=\"focused = true\"\n @focusout=\"onFocusout\"\n >\n <div class=\"v-select-control\" @mousedown=\"onControlMousedown\" @click=\"onControlClick\">\n <VInput\n class=\"v-input-end-pinned\"\n :class=\"{ 'v-input-chips': multiple && !textDisplay }\"\n v-bind=\"fieldAttrs\"\n :label=\"label\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :hide-label=\"hideLabel\"\n :label-position=\"labelPosition\"\n :size=\"resolvedSize\"\n :compact=\"resolvedCompact\"\n :invalid=\"invalid || nativeInvalid\"\n :disabled=\"resolvedDisabled\"\n :readonly=\"readonly\"\n :icon-start=\"iconStart\"\n :icon-start-label=\"iconStartLabel\"\n :clearable=\"clearable\"\n :clear-visible=\"clearVisible\"\n :clear-label=\"resolvedClearLabel\"\n @clear=\"onClear\"\n >\n <template v-if=\"multiple || $slots.start\" #start>\n <VListboxValues\n v-if=\"multiple\"\n :values=\"selectedValues\"\n :display=\"display\"\n :max=\"max\"\n :collapsed=\"collapsed\"\n :overflow-text=\"overflowText\"\n :scale=\"chipScale\"\n :removable=\"!readonly\"\n :disabled=\"resolvedDisabled\"\n hide-text\n :label-of=\"labelOf\"\n :option-of=\"optionOf\"\n @remove=\"removeValue\"\n >\n <template v-if=\"$slots.chip\" #chip=\"chipProps\">\n <slot name=\"chip\" v-bind=\"chipProps\" />\n </template>\n <template v-if=\"$slots.overflow\" #overflow=\"overflowProps\">\n <slot name=\"overflow\" v-bind=\"overflowProps\" />\n </template>\n </VListboxValues>\n <slot name=\"start\" />\n </template>\n\n <template #control=\"{ controlProps }\">\n <button\n ref=\"triggerEl\"\n type=\"button\"\n role=\"combobox\"\n :aria-expanded=\"open\"\n :aria-controls=\"optionsId\"\n :aria-activedescendant=\"open && activeIndex >= 0 ? optionId(activeIndex) : undefined\"\n :aria-required=\"required || undefined\"\n :aria-readonly=\"readonly || undefined\"\n v-bind=\"controlProps\"\n class=\"v-select-trigger\"\n @click=\"togglePanel\"\n @keydown=\"onKeydown\"\n >\n <span\n v-if=\"valueText\"\n class=\"v-select-value\"\n :class=\"{ 'v-visually-hidden': multiple }\"\n >{{ valueText }}</span\n >\n <span v-else-if=\"placeholder\" class=\"v-select-placeholder\">{{ placeholder }}</span>\n </button>\n <!--\n Out of the tab order and hidden from screen readers, it leaves the button as the\n single stop and the single announcement. Its options mirror the flat list: a form\n needs no groups.\n -->\n <select\n ref=\"nativeEl\"\n v-bind=\"nativeAttrs\"\n class=\"v-select-native v-hidden-input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n :multiple=\"multiple || undefined\"\n :required=\"required || undefined\"\n :disabled=\"resolvedDisabled || undefined\"\n @change=\"onNativeChange\"\n @focus=\"triggerEl?.focus()\"\n @invalid=\"nativeInvalid = true\"\n >\n <option v-if=\"!multiple\" value=\"\" />\n <option\n v-for=\"(option, index) in allOptions\"\n :key=\"index\"\n :value=\"String(option.value)\"\n :disabled=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n </template>\n\n <template v-if=\"$slots['value-end']\" #value-end><slot name=\"value-end\" /></template>\n\n <!-- The spinner takes the chevron's place: the field sizes either as an icon. -->\n <template #end>\n <VSpinner v-if=\"loading\" class=\"v-select-spinner v-input-icon-end\" :label=\"loadingText\" />\n <VListboxChevron v-else :icon=\"expandIcon\" :open=\"open\" />\n </template>\n </VInput>\n </div>\n\n <VListboxPanel\n :id=\"optionsId\"\n ref=\"panelRef\"\n v-model:open=\"open\"\n anchor=\"--select-anchor\"\n :placement=\"placement\"\n class=\"v-select-panel\"\n :size=\"resolvedSize\"\n :compact=\"resolvedCompact\"\n :multiple=\"multiple\"\n :blocks=\"blocks\"\n :measure=\"measureRow\"\n @select=\"choose\"\n @highlight=\"hover\"\n >\n <template v-if=\"$slots.option\" #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps\" />\n </template>\n </VListboxPanel>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-select {\n /*\n * Declared on the root, the common ancestor of the field and the panel; a panel drawn above\n * the page remains a descendant of it in the document.\n */\n anchor-scope: --select-anchor;\n width: 100%;\n font-family: var(--vectis-text-family);\n }\n\n .v-select-control {\n display: block;\n }\n\n /* The panel opens against the box of the field, not against its label and hint. */\n .v-select-control .v-input-field {\n anchor-name: --select-anchor;\n }\n\n .v-select-panel {\n max-block-size: var(--vectis-control-size-select-list-max-block);\n }\n\n /*\n * VInput's `.v-input-control` gives the button the input's box: it fills the field and draws\n * no border of its own, the field drawing the focus around it.\n */\n .v-select-trigger {\n display: flex;\n align-items: center;\n text-align: start;\n cursor: pointer;\n }\n\n /*\n * Beside chips the button takes what is left of the last row, down to nothing, rather than\n * wrapping onto a row of its own.\n */\n .v-select[data-multiple] .v-select-trigger {\n flex: 1 1 0;\n }\n\n .v-select-value,\n .v-select-placeholder {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-select-placeholder {\n color: var(--vectis-color-text-subtle);\n }\n\n .v-select-spinner {\n color: var(--vectis-color-text-muted);\n }\n\n /*\n * An unbroken line has the whole of its text as its min-content width; without this, a grid\n * track or a flex row sized `auto` widens to fit every label and the ellipsis never shows.\n */\n .v-select:has(.v-listbox-text) {\n min-inline-size: 0;\n }\n}\n</style>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSelect.vue_vue_type_script_setup_true_lang.js","names":["$slots","expandMoreIcon","_useModel","_openBlock","_createElementBlock","_normalizeClass","_unref","_normalizeStyle","_createElementVNode","_createVNode","VInput","_mergeProps","_createSlots","_withCtx","_toDisplayString","_createCommentVNode","_Fragment","_renderList","_createBlock","VSpinner","VListboxChevron","VListboxValues","_renderSlot","_normalizeProps","_guardReactiveProps","VListboxPanel","VSpinner_default","VInput_default","VListboxChevron_default","VListboxPanel_default","VListboxValues_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","interactive","VSelect_vue_vue_type_script_setup_true_lang_default","expand_more","\"modelValue\"","\"modelModifiers\"","__expose","__emit","props","__props","m","useMessages","resolvedClearLabel","computed","emit","group","inject","inputGroupKey","resolvedSize","resolvedDisabled","useControlShape","chipScale","chipScaleFor","model","useModel","useRootAttrs","NATIVE_ONLY","split","partitionAttrs","forwardedAttrs","nativeAttrs","iconStartClick","iconStartListener","event","fieldAttrs","rootEl","ref","triggerEl","nativeEl","panelRef","optionsId","useId","open","focused","selectedValues","selectionOf","useListbox","valueText","labelOf","textDisplay","collapsed","clearVisible","canClear","nativeInvalid","openPanel","highlightSelected","closePanel","togglePanel","onFocusout","useFocusoutDismiss","choose","option","remember","toggleValue","chooseActive","visible","activeIndex","removeValue","v","value","onClear","normalizedOf","createNormalizedCache","findTyped","useTypeahead","typeahead","list","index","key","i","printable","onKeydown","move","highlightFirst","highlightLast","page","typing","onControlMousedown","target","onControlClick","syncNative","el","wantedValues","watch","allOptions","onNativeChange","values","native","initial","formEl","onFormReset","onMounted","onBeforeUnmount","options","openBlock","createElementBlock","normalizeClass","unref","rootClass","normalizeStyle","rootStyle","_cache","args","createElementVNode","createVNode","mergeProps","createSlots","withCtx","optionId","controlProps","toDisplayString","createCommentVNode","Fragment","renderList","createBlock","_ctx","optionOf","renderSlot","normalizeProps","guardReactiveProps","chipProps","overflowProps","$event","blocks","measureRow","hover","slotProps"],"sources":["../../../src/components/VSelect/VSelect.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @a11y @core\n/**\n * A select-only combobox: a native button keeps DOM focus and moves aria-activedescendant through\n * the options, since a native `<select>` cannot draw its list with the design system on every\n * engine. A hidden native `<select>` carries the value into forms, with its constraint\n * validation, autofill and reset.\n */\n\nimport { computed, inject, onBeforeUnmount, onMounted, ref, useId, watch } from 'vue'\n\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport type { FieldLabelPosition } from '../VField/VField.vue'\nimport VInput from '../VInput/VInput.vue'\nimport { inputGroupKey } from '../VInput/context'\nimport VListboxChevron from '../VListbox/VListboxChevron.vue'\nimport VListboxPanel from '../VListbox/VListboxPanel.vue'\nimport VListboxValues from '../VListbox/VListboxValues.vue'\nimport VSpinner from '../VSpinner/VSpinner.vue'\n\nimport type {\n ItemValue,\n ListboxGroup,\n ListboxItem,\n ListboxChipSlotProps,\n ListboxOption,\n ListboxOptionSlotProps,\n ListboxOverflowSlotProps,\n ListboxSeparator,\n} from '../../types'\nimport { toggleValue } from '../../utils/array'\nimport { partitionAttrs } from '../../utils/attrs'\nimport { chipScaleFor } from '../../utils/chip'\nimport { createNormalizedCache } from '../../utils/text'\n\nimport { canClear } from '../../composables/useClearable'\nimport { useControlShape } from '../../composables/useControlShape'\nimport { useFocusoutDismiss } from '../../composables/useFocusoutDismiss'\nimport { iconStartListener } from '../../composables/useIconClickHandlers'\nimport { selectionOf, useListbox } from '../../composables/useListbox'\nimport { useRootAttrs } from '../../composables/useRootAttrs'\nimport { useTypeahead } from '../../composables/useTypeahead'\nimport { useMessages } from '../../i18n/state'\n\n/** One thing that can be chosen. */\nexport type SelectOption = ListboxOption\n\n/** A named block of options, the equivalent of a native `<optgroup>`. */\nexport type SelectGroup = ListboxGroup\n\n/** A rule drawn between two blocks of options, purely decorative. */\nexport type SelectSeparator = ListboxSeparator\n\n/** Anything the list may hold: an option, a named block, or a separator. */\nexport type SelectItem = ListboxItem\n\n/** Where the list opens relative to the field. */\nexport type SelectPlacement =\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'top'\n | 'top-start'\n | 'top-end'\n\n/** The height of the field: 32, 40 or 48 pixels. */\nexport type SelectSize = 'sm' | 'md' | 'lg'\n\n/**\n * How the chosen values are shown in a multiple field: one chip each, or their labels\n * joined by commas.\n */\nexport type SelectDisplay = 'chip' | 'text'\n\n/** What the `#option` slot receives. */\nexport type SelectOptionSlotProps = ListboxOptionSlotProps\n\n/** What the `#chip` slot receives. */\nexport type SelectChipSlotProps = ListboxChipSlotProps\n\n/** What the `#overflow` slot receives. */\nexport type SelectOverflowSlotProps = ListboxOverflowSlotProps\n\ninterface SelectProps {\n /**\n * What the list offers. An entry may be an option, a named block of options, or a\n * separator; a plain list of options remains perfectly valid.\n */\n options: SelectItem[]\n /**\n * Allows several values to be chosen, which makes the value a list and shows what has been\n * chosen inside the field, as chips or as text depending on `display`. The list then stays\n * open while options are toggled.\n */\n multiple?: boolean\n /**\n * How the chosen values are shown when several can be chosen: one dismissible chip each, or\n * their labels joined by commas on a single line, cut short with an ellipsis when they run\n * out of room.\n */\n display?: SelectDisplay\n /**\n * How many chosen values to show while the field is not focused, before the rest are summed\n * up as \"+X\". Left out, or set to 0, every value is shown.\n */\n max?: number\n /**\n * Rephrases the \"+X\" standing for the values beyond `max`, \"+5 products\" for instance.\n * It receives the number of values being hidden.\n */\n overflowText?: (count: number) => string\n /** The label above the field, tied to it so that clicking it focuses the field. */\n label?: string\n /**\n * A line of help under the field. It is tied to the field for assistive technology,\n * so it is read out along with the label.\n */\n hint?: string\n /**\n * A message saying what is wrong with the value, shown in place of the hint so that the field\n * does not grow. It marks the field invalid, is read along with it, and is announced when it\n * appears or changes.\n */\n error?: string\n /**\n * Marks the field as required: an asterisk follows the label, the combobox is announced as\n * required, and the hidden `<select>` a form reads is `required`.\n */\n required?: boolean\n /** Hides the label visually. It still names the field for assistive technology. */\n hideLabel?: boolean\n /**\n * Where the label sits: above the field (`top`, the default), or at its start, in a column of\n * its own, moving back above when there is not room for both.\n */\n labelPosition?: FieldLabelPosition\n /** The height of the field: 32, 40 or 48 pixels. */\n size?: SelectSize\n /** What the field says while nothing is chosen. */\n placeholder?: string\n /** Makes the field unusable, greyed out through the colour tokens. Its value is not submitted. */\n disabled?: boolean\n /**\n * Shows what has been chosen without letting it be changed: the field stays focusable and its\n * value is submitted, but the list never opens, the chips lose their crosses and no clear\n * cross is offered.\n */\n readonly?: boolean\n /** Marks the field as invalid, for a rule of your own. */\n invalid?: boolean\n /**\n * An icon inside the field, at the start, before the chips when several values can\n * be chosen. It is decorative by default and becomes a real button as soon as a\n * `@click:icon-start` listener is attached, in which case it needs `iconStartLabel`.\n */\n iconStart?: IconSource\n /** What the start icon does, in words, once it is clickable. */\n iconStartLabel?: string\n /**\n * The chevron at the end of the field, which turns as the list opens: an icon name, or an\n * explicit render.\n */\n expandIcon?: IconSource\n /**\n * Says that the options are being loaded: a spinner takes the chevron's place. The list still\n * opens.\n */\n loading?: boolean\n /** What the spinner is announced as. It falls back to the design system dictionary. */\n loadingText?: string\n /** Offers a cross that empties the selection. */\n clearable?: boolean\n /** What that cross does, in words. It falls back to the design system dictionary. */\n clearLabel?: string\n /** Where the list opens relative to the field. */\n placement?: SelectPlacement\n}\n\nconst props = withDefaults(defineProps<SelectProps>(), {\n multiple: false,\n display: 'chip',\n max: undefined,\n overflowText: undefined,\n label: undefined,\n hint: undefined,\n error: undefined,\n required: false,\n hideLabel: false,\n labelPosition: 'top',\n size: 'md',\n placeholder: undefined,\n disabled: false,\n readonly: false,\n invalid: false,\n iconStart: undefined,\n iconStartLabel: undefined,\n expandIcon: () => expandMoreIcon,\n loading: false,\n loadingText: undefined,\n clearable: false,\n clearLabel: undefined,\n placement: 'bottom-start',\n})\n\nconst m = useMessages()\nconst resolvedClearLabel = computed(() => props.clearLabel ?? m.value.select.clear)\n\nconst emit = defineEmits<{\n /** The clear cross emptied the selection. */\n clear: []\n /** The start icon was clicked. Attaching this listener is what makes it a button. */\n 'click:icon-start': [event: MouseEvent]\n}>()\n\ndefineSlots<{\n /**\n * Content at the start of the field, rendered after the chips standing for the chosen\n * values rather than in their place.\n */\n start?(): unknown\n /**\n * Controls of your own inside the field, placed before the ones the field owns: the clear\n * cross and the chevron.\n */\n 'value-end'?(): unknown\n /** What a row of the list shows, in place of the plain label: a subtitle, an avatar, a badge. */\n option?(props: SelectOptionSlotProps): unknown\n /** Replaces the chip standing for one chosen value. */\n chip?(props: SelectChipSlotProps): unknown\n /** Replaces the \"+X\" standing for the values beyond `max`. */\n overflow?(props: SelectOverflowSlotProps): unknown\n}>()\n\nconst group = inject(inputGroupKey, null)\nconst { size: resolvedSize, disabled: resolvedDisabled } = useControlShape(props, group)\n\nconst chipScale = computed(() => chipScaleFor(resolvedSize.value))\n\n/** The chosen option's `value`, `''` while nothing is chosen, or the list of them when `multiple` is set. */\nconst model = defineModel<ItemValue | ItemValue[]>({ default: '' })\n\n// `class` and `style` stay on the wrapper; the form attributes go to the hidden `<select>`, which\n// is what a form reads; everything else goes down to the button, the element assistive\n// technology treats as the combobox.\ndefineOptions({ inheritAttrs: false })\nconst { rootClass, rootStyle, forwardedAttrs } = useRootAttrs()\n\nconst NATIVE_ONLY = ['name', 'form', 'autocomplete']\nconst split = computed(() => partitionAttrs(forwardedAttrs.value, NATIVE_ONLY))\nconst nativeAttrs = computed(() => split.value.picked)\n\n// Declared as this component's own event, `click:icon-start` is out of `$attrs`, so the\n// listener is relayed to the field by hand; and only when the consumer wrote one.\nconst iconStartClick = iconStartListener((event) => emit('click:icon-start', event))\nconst fieldAttrs = computed(() => ({ ...split.value.rest, ...iconStartClick }))\n\nconst rootEl = ref<HTMLElement | null>(null)\nconst triggerEl = ref<HTMLButtonElement | null>(null)\nconst nativeEl = ref<HTMLSelectElement | null>(null)\nconst panelRef = ref<InstanceType<typeof VListboxPanel> | null>(null)\nconst optionsId = useId()\n\nconst open = ref(false)\nconst focused = ref(false)\n\nconst selectedValues = computed(() => selectionOf(model.value, props.multiple))\n\nconst {\n allOptions,\n visible,\n optionOf,\n labelOf,\n remember,\n activeIndex,\n optionId,\n highlightFirst,\n highlightLast,\n highlightSelected,\n move,\n page,\n hover,\n blocks,\n measureRow,\n} = useListbox({\n items: () => props.options,\n selected: () => selectedValues.value,\n open: () => open.value,\n id: optionsId,\n panelEl: () => panelRef.value?.el ?? null,\n virtual: () => false,\n size: () => resolvedSize.value,\n})\n\n// @a11y\n// What the button says, which assistive technology reads as the combobox's value: the chosen\n// label, or every chosen label when the chips beside it show them.\nconst valueText = computed(() => selectedValues.value.map(labelOf).join(', '))\n\nconst textDisplay = computed(() => props.multiple && props.display === 'text')\n\n// Folded, the values beyond `max` are summed up; under the focus, every value is there to be\n// seen and taken back.\nconst collapsed = computed(() => props.multiple && !focused.value && !open.value)\n\nconst clearVisible = computed(() =>\n canClear(props, resolvedDisabled.value, selectedValues.value.length > 0),\n)\n\n/** Whether the hidden `<select>` failed validation since the value last changed. */\nconst nativeInvalid = ref(false)\n\nfunction openPanel() {\n if (resolvedDisabled.value || props.readonly || open.value) return\n open.value = true\n highlightSelected()\n}\n\nfunction closePanel() {\n if (!open.value) return\n open.value = false\n activeIndex.value = -1\n}\n\nfunction togglePanel() {\n if (open.value) closePanel()\n else openPanel()\n}\n\nconst onFocusout = useFocusoutDismiss(rootEl, () => {\n focused.value = false\n closePanel()\n})\n\nfunction choose(option: SelectOption) {\n if (option.disabled || props.readonly || resolvedDisabled.value) return\n remember(option)\n if (props.multiple) {\n model.value = toggleValue(selectedValues.value, option.value)\n } else {\n // Choosing the option already chosen (Tab without moving, for one) changes nothing.\n if (model.value !== option.value) model.value = option.value\n closePanel()\n }\n}\n\nfunction chooseActive() {\n const option = visible.value[activeIndex.value]\n if (option) choose(option)\n}\n\nfunction removeValue(value: ItemValue) {\n if (!props.multiple || props.readonly || resolvedDisabled.value) return\n model.value = selectedValues.value.filter((v) => v !== value)\n // The cross disappears along with its chip, so the focus would fall back to the page.\n triggerEl.value?.focus()\n}\n\n/** The cross was pressed. It disappears with the selection, so the focus goes back to the button. */\nfunction onClear() {\n model.value = props.multiple ? [] : ''\n triggerEl.value?.focus()\n emit('clear')\n}\n\nconst normalizedOf = createNormalizedCache<SelectOption>()\nconst { find: findTyped, typing } = useTypeahead()\n\n// @keyboard\n// Typing a label's first letters highlights it.\nfunction typeahead(key: string) {\n const list = visible.value\n const index = findTyped(key, list.length, activeIndex.value, (i) => {\n const option = list[i]!\n return option.disabled ? undefined : normalizedOf(option, option.label)\n })\n if (index >= 0) activeIndex.value = index\n}\n\nconst printable = (event: KeyboardEvent) =>\n event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey\n\n// @keyboard\n// The keys of the select-only combobox pattern. Enter and Space are consumed on the closed button\n// too, so the click they would synthesise does not toggle the list a second time.\nfunction onKeydown(event: KeyboardEvent) {\n if (!open.value) {\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Enter':\n case ' ':\n event.preventDefault()\n openPanel()\n return\n case 'Home':\n event.preventDefault()\n openPanel()\n if (open.value) highlightFirst()\n return\n case 'End':\n event.preventDefault()\n openPanel()\n if (open.value) highlightLast()\n return\n }\n if (printable(event)) {\n openPanel()\n if (open.value) typeahead(event.key)\n }\n return\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault()\n move(1)\n break\n case 'ArrowUp':\n event.preventDefault()\n if (event.altKey) {\n chooseActive()\n closePanel()\n } else move(-1)\n break\n case 'Home':\n event.preventDefault()\n highlightFirst()\n break\n case 'End':\n event.preventDefault()\n highlightLast()\n break\n case 'PageDown':\n event.preventDefault()\n page(10)\n break\n case 'PageUp':\n event.preventDefault()\n page(-10)\n break\n case ' ':\n event.preventDefault()\n // While letters are being typed, a space belongs to the prefix: \"New York\".\n if (typing()) typeahead(' ')\n else chooseActive()\n break\n case 'Enter':\n event.preventDefault()\n chooseActive()\n break\n case 'Escape':\n // Consumed only when it closes the list, so a surrounding VDialog stays open.\n event.preventDefault()\n closePanel()\n break\n case 'Tab':\n // Leaving a single list takes the highlighted option, as the pattern prescribes.\n if (!props.multiple) chooseActive()\n closePanel()\n break\n default:\n if (printable(event)) typeahead(event.key)\n }\n}\n\nconst interactive = 'a, button, input, select, textarea, [tabindex]'\n\n// @core\n/*\n * The rest of the field is not focusable, so pressing it would hand the focus to the page: the\n * root's `focusout` then closes the list, and the click that follows reopens it.\n */\nfunction onControlMousedown(event: MouseEvent) {\n const target = event.target as Element\n if (target.closest('.v-input-field') && !target.closest(interactive)) event.preventDefault()\n}\n\n/**\n * A click anywhere in the box of the field toggles the list, as one on the button does. The\n * field's own controls keep their clicks, and the label's reaches the button by itself.\n */\nfunction onControlClick(event: MouseEvent) {\n const target = event.target as Element\n if (resolvedDisabled.value || !target.closest('.v-input-field') || target.closest(interactive))\n return\n triggerEl.value?.focus()\n togglePanel()\n}\n\n/*\n * The hidden `<select>` is written by hand rather than through `selected` bindings: a form reset\n * changes it behind the virtual DOM's back, which would then consider unchanged options already\n * in the right state.\n */\nfunction syncNative() {\n const el = nativeEl.value\n if (!el) return\n for (const option of el.options) {\n option.selected = option.value !== '' && wantedValues.value.has(option.value)\n }\n if (!props.multiple && selectedValues.value.length === 0) el.value = ''\n}\n\nconst wantedValues = computed(() => new Set(selectedValues.value.map(String)))\n\nwatch([selectedValues, allOptions], syncNative, { flush: 'post' })\n\n// A choice that satisfies the constraint clears the error the last submission raised; one that\n// does not raises it again, `checkValidity` firing `invalid`.\nwatch(\n selectedValues,\n () => {\n if (nativeInvalid.value) nativeInvalid.value = !nativeEl.value?.checkValidity()\n },\n { flush: 'post' },\n)\n\n/** Autofill writes the hidden `<select>`; the strings it holds are read back as option values. */\nfunction onNativeChange() {\n const el = nativeEl.value\n if (!el) return\n const values = [...el.selectedOptions]\n .map((native) => allOptions.value.find((option) => String(option.value) === native.value))\n .filter((option): option is SelectOption => option !== undefined)\n .map((option) => option.value)\n model.value = props.multiple ? values : (values[0] ?? '')\n}\n\n// @core\n// A form reset restores the value the field was created with. The browser resets the hidden\n// `<select>` after the event, so it is rewritten on the next task.\nlet initial: ItemValue | ItemValue[] = ''\nlet formEl: HTMLFormElement | null = null\n\nfunction onFormReset() {\n model.value = Array.isArray(initial) ? [...initial] : initial\n nativeInvalid.value = false\n setTimeout(syncNative)\n}\n\nonMounted(() => {\n initial = Array.isArray(model.value) ? [...model.value] : model.value\n syncNative()\n formEl = nativeEl.value?.form ?? null\n formEl?.addEventListener('reset', onFormReset)\n})\n\nonBeforeUnmount(() => formEl?.removeEventListener('reset', onFormReset))\n\ndefineExpose({\n /** Moves the focus to the field. */\n focus: (options?: FocusOptions) => triggerEl.value?.focus(options),\n /** The button that acts as the combobox. */\n el: triggerEl,\n})\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"v-select\"\n :class=\"rootClass\"\n :style=\"[{ '--chip-height': chipScale.height }, rootStyle]\"\n :data-size=\"resolvedSize\"\n :data-multiple=\"multiple ? '' : undefined\"\n :data-open=\"open ? '' : undefined\"\n @focusin=\"focused = true\"\n @focusout=\"onFocusout\"\n >\n <div class=\"v-select-control\" @mousedown=\"onControlMousedown\" @click=\"onControlClick\">\n <VInput\n class=\"v-input-end-pinned\"\n :class=\"{ 'v-input-chips': multiple && !textDisplay }\"\n v-bind=\"fieldAttrs\"\n :label=\"label\"\n :hint=\"hint\"\n :error=\"error\"\n :required=\"required\"\n :hide-label=\"hideLabel\"\n :label-position=\"labelPosition\"\n :size=\"resolvedSize\"\n :invalid=\"invalid || nativeInvalid\"\n :disabled=\"resolvedDisabled\"\n :readonly=\"readonly\"\n :icon-start=\"iconStart\"\n :icon-start-label=\"iconStartLabel\"\n :clearable=\"clearable\"\n :clear-visible=\"clearVisible\"\n :clear-label=\"resolvedClearLabel\"\n @clear=\"onClear\"\n >\n <template v-if=\"multiple || $slots.start\" #start>\n <VListboxValues\n v-if=\"multiple\"\n :values=\"selectedValues\"\n :display=\"display\"\n :max=\"max\"\n :collapsed=\"collapsed\"\n :overflow-text=\"overflowText\"\n :scale=\"chipScale\"\n :removable=\"!readonly\"\n :disabled=\"resolvedDisabled\"\n hide-text\n :label-of=\"labelOf\"\n :option-of=\"optionOf\"\n @remove=\"removeValue\"\n >\n <template v-if=\"$slots.chip\" #chip=\"chipProps\">\n <slot name=\"chip\" v-bind=\"chipProps\" />\n </template>\n <template v-if=\"$slots.overflow\" #overflow=\"overflowProps\">\n <slot name=\"overflow\" v-bind=\"overflowProps\" />\n </template>\n </VListboxValues>\n <slot name=\"start\" />\n </template>\n\n <template #control=\"{ controlProps }\">\n <button\n ref=\"triggerEl\"\n type=\"button\"\n role=\"combobox\"\n :aria-expanded=\"open\"\n :aria-controls=\"optionsId\"\n :aria-activedescendant=\"open && activeIndex >= 0 ? optionId(activeIndex) : undefined\"\n :aria-required=\"required || undefined\"\n :aria-readonly=\"readonly || undefined\"\n v-bind=\"controlProps\"\n class=\"v-select-trigger\"\n @click=\"togglePanel\"\n @keydown=\"onKeydown\"\n >\n <span\n v-if=\"valueText\"\n class=\"v-select-value\"\n :class=\"{ 'v-visually-hidden': multiple }\"\n >{{ valueText }}</span\n >\n <span v-else-if=\"placeholder\" class=\"v-select-placeholder\">{{ placeholder }}</span>\n </button>\n <!--\n Out of the tab order and hidden from screen readers, it leaves the button as the\n single stop and the single announcement. Its options mirror the flat list: a form\n needs no groups.\n -->\n <select\n ref=\"nativeEl\"\n v-bind=\"nativeAttrs\"\n class=\"v-select-native v-hidden-input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n :multiple=\"multiple || undefined\"\n :required=\"required || undefined\"\n :disabled=\"resolvedDisabled || undefined\"\n @change=\"onNativeChange\"\n @focus=\"triggerEl?.focus()\"\n @invalid=\"nativeInvalid = true\"\n >\n <option v-if=\"!multiple\" value=\"\" />\n <option\n v-for=\"(option, index) in allOptions\"\n :key=\"index\"\n :value=\"String(option.value)\"\n :disabled=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n </template>\n\n <template v-if=\"$slots['value-end']\" #value-end><slot name=\"value-end\" /></template>\n\n <!-- The spinner takes the chevron's place: the field sizes either as an icon. -->\n <template #end>\n <VSpinner v-if=\"loading\" class=\"v-select-spinner v-input-icon-end\" :label=\"loadingText\" />\n <VListboxChevron v-else :icon=\"expandIcon\" :open=\"open\" />\n </template>\n </VInput>\n </div>\n\n <VListboxPanel\n :id=\"optionsId\"\n ref=\"panelRef\"\n v-model:open=\"open\"\n anchor=\"--select-anchor\"\n :placement=\"placement\"\n class=\"v-select-panel\"\n :size=\"resolvedSize\"\n :multiple=\"multiple\"\n :blocks=\"blocks\"\n :measure=\"measureRow\"\n @select=\"choose\"\n @highlight=\"hover\"\n >\n <template v-if=\"$slots.option\" #option=\"slotProps\">\n <slot name=\"option\" v-bind=\"slotProps\" />\n </template>\n </VListboxPanel>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-select {\n /*\n * Declared on the root, the common ancestor of the field and the panel; a panel drawn above\n * the page remains a descendant of it in the document.\n */\n anchor-scope: --select-anchor;\n width: 100%;\n font-family: var(--vectis-text-family);\n }\n\n .v-select-control {\n display: block;\n }\n\n /* The panel opens against the box of the field, not against its label and hint. */\n .v-select-control .v-input-field {\n anchor-name: --select-anchor;\n }\n\n .v-select-panel {\n max-block-size: var(--vectis-control-size-select-list-max-block);\n }\n\n /*\n * VInput's `.v-input-control` gives the button the input's box: it fills the field and draws\n * no border of its own, the field drawing the focus around it.\n */\n .v-select-trigger {\n display: flex;\n align-items: center;\n text-align: start;\n cursor: pointer;\n }\n\n /*\n * Beside chips the button takes what is left of the last row, down to nothing, rather than\n * wrapping onto a row of its own.\n */\n .v-select[data-multiple] .v-select-trigger {\n flex: 1 1 0;\n }\n\n .v-select-value,\n .v-select-placeholder {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-select-placeholder {\n color: var(--vectis-color-text-subtle);\n }\n\n .v-select-spinner {\n color: var(--vectis-color-text-muted);\n }\n\n /*\n * An unbroken line has the whole of its text as its min-content width; without this, a grid\n * track or a flex row sized `auto` widens to fit every label and the ellipsis never shows.\n */\n .v-select:has(.v-listbox-text) {\n min-inline-size: 0;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VSeparator.js","names":[],"sources":["../../../src/components/VSeparator/VSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/** Use a native hr for separator semantics and borders for visibility in forced colours. */\n/** Which way the rule runs. */\nexport type SeparatorOrientation = 'horizontal' | 'vertical'\n\ninterface SeparatorProps {\n /** The direction the rule runs in: across by default, or down the page under `vertical`. */\n orientation?: SeparatorOrientation\n}\n\nwithDefaults(defineProps<SeparatorProps>(), {\n orientation: 'horizontal',\n})\n</script>\n\n<template>\n <!--\n Aria-orientation is emitted only when it CONTRADICTS what the role already implies: a\n separator is horizontal by default, so stating it would merely restate the role. This is the\n same convention the VTabs tablist follows.\n -->\n <hr\n class=\"v-separator\"\n :data-orientation=\"orientation\"\n :aria-orientation=\"orientation === 'vertical' ? 'vertical' : undefined\"\n />\n</template>\n\n<style>\n@layer vectis.components {\n .v-separator {\n flex: none;\n /*\n * `.v-menu-separator` and `.v-listbox-separator` override that margin from THEIR own\n * sheet, and which of the two sheets the consumer's bundler puts last is not ours to\n * decide. Both are therefore written as the compound `.v-separator.v-x-separator`, and\n * every declaration added here falls under the same obligation.\n */\n margin: 0;\n border: 0 solid var(--vectis-color-border);\n }\n\n .v-separator[data-orientation='horizontal'] {\n border-block-start-width: 1px;\n }\n\n /*\n * In ordinary flow it collapses to nothing, silently and with no error; there it is up to the\n * consumer to give it a block-size.\n */\n .v-separator[data-orientation='vertical'] {\n align-self: stretch;\n border-inline-start-width: 1px;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"VSeparator.js","names":["_sfc_main","VSeparator_vue_vue_type_script_setup_true_lang_default","VSeparator_default"],"sources":["../../../src/components/VSeparator/VSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/** Use a native hr for separator semantics and borders for visibility in forced colours. */\n/** Which way the rule runs. */\nexport type SeparatorOrientation = 'horizontal' | 'vertical'\n\ninterface SeparatorProps {\n /** The direction the rule runs in: across by default, or down the page under `vertical`. */\n orientation?: SeparatorOrientation\n}\n\nwithDefaults(defineProps<SeparatorProps>(), {\n orientation: 'horizontal',\n})\n</script>\n\n<template>\n <!--\n Aria-orientation is emitted only when it CONTRADICTS what the role already implies: a\n separator is horizontal by default, so stating it would merely restate the role. This is the\n same convention the VTabs tablist follows.\n -->\n <hr\n class=\"v-separator\"\n :data-orientation=\"orientation\"\n :aria-orientation=\"orientation === 'vertical' ? 'vertical' : undefined\"\n />\n</template>\n\n<style>\n@layer vectis.components {\n .v-separator {\n flex: none;\n /*\n * `.v-menu-separator` and `.v-listbox-separator` override that margin from THEIR own\n * sheet, and which of the two sheets the consumer's bundler puts last is not ours to\n * decide. Both are therefore written as the compound `.v-separator.v-x-separator`, and\n * every declaration added here falls under the same obligation.\n */\n margin: 0;\n border: 0 solid var(--vectis-color-border);\n }\n\n .v-separator[data-orientation='horizontal'] {\n border-block-start-width: 1px;\n }\n\n /*\n * In ordinary flow it collapses to nothing, silently and with no error; there it is up to the\n * consumer to give it a block-size.\n */\n .v-separator[data-orientation='vertical'] {\n align-self: stretch;\n border-inline-start-width: 1px;\n }\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"VSeparator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VSeparator/VSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/** Use a native hr for separator semantics and borders for visibility in forced colours. */\n/** Which way the rule runs. */\nexport type SeparatorOrientation = 'horizontal' | 'vertical'\n\ninterface SeparatorProps {\n /** The direction the rule runs in: across by default, or down the page under `vertical`. */\n orientation?: SeparatorOrientation\n}\n\nwithDefaults(defineProps<SeparatorProps>(), {\n orientation: 'horizontal',\n})\n</script>\n\n<template>\n <!--\n Aria-orientation is emitted only when it CONTRADICTS what the role already implies: a\n separator is horizontal by default, so stating it would merely restate the role. This is the\n same convention the VTabs tablist follows.\n -->\n <hr\n class=\"v-separator\"\n :data-orientation=\"orientation\"\n :aria-orientation=\"orientation === 'vertical' ? 'vertical' : undefined\"\n />\n</template>\n\n<style>\n@layer vectis.components {\n .v-separator {\n flex: none;\n /*\n * `.v-menu-separator` and `.v-listbox-separator` override that margin from THEIR own\n * sheet, and which of the two sheets the consumer's bundler puts last is not ours to\n * decide. Both are therefore written as the compound `.v-separator.v-x-separator`, and\n * every declaration added here falls under the same obligation.\n */\n margin: 0;\n border: 0 solid var(--vectis-color-border);\n }\n\n .v-separator[data-orientation='horizontal'] {\n border-block-start-width: 1px;\n }\n\n /*\n * In ordinary flow it collapses to nothing, silently and with no error; there it is up to the\n * consumer to give it a block-size.\n */\n .v-separator[data-orientation='vertical'] {\n align-self: stretch;\n border-inline-start-width: 1px;\n }\n}\n</style>\n"],"mappings":";;;;;;yBAqBE,EAIE,MAAA;GAHA,OAAM;GACL,oBAAkB,EAAA;GAClB,oBAAkB,EAAA,gBAAW,aAAA,aAA+B,KAAA"}
1
+ {"version":3,"file":"VSeparator.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_hoisted_1","VSeparator_vue_vue_type_script_setup_true_lang_default","openBlock","createElementBlock","__props"],"sources":["../../../src/components/VSeparator/VSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/** Use a native hr for separator semantics and borders for visibility in forced colours. */\n/** Which way the rule runs. */\nexport type SeparatorOrientation = 'horizontal' | 'vertical'\n\ninterface SeparatorProps {\n /** The direction the rule runs in: across by default, or down the page under `vertical`. */\n orientation?: SeparatorOrientation\n}\n\nwithDefaults(defineProps<SeparatorProps>(), {\n orientation: 'horizontal',\n})\n</script>\n\n<template>\n <!--\n Aria-orientation is emitted only when it CONTRADICTS what the role already implies: a\n separator is horizontal by default, so stating it would merely restate the role. This is the\n same convention the VTabs tablist follows.\n -->\n <hr\n class=\"v-separator\"\n :data-orientation=\"orientation\"\n :aria-orientation=\"orientation === 'vertical' ? 'vertical' : undefined\"\n />\n</template>\n\n<style>\n@layer vectis.components {\n .v-separator {\n flex: none;\n /*\n * `.v-menu-separator` and `.v-listbox-separator` override that margin from THEIR own\n * sheet, and which of the two sheets the consumer's bundler puts last is not ours to\n * decide. Both are therefore written as the compound `.v-separator.v-x-separator`, and\n * every declaration added here falls under the same obligation.\n */\n margin: 0;\n border: 0 solid var(--vectis-color-border);\n }\n\n .v-separator[data-orientation='horizontal'] {\n border-block-start-width: 1px;\n }\n\n /*\n * In ordinary flow it collapses to nothing, silently and with no error; there it is up to the\n * consumer to give it a block-size.\n */\n .v-separator[data-orientation='vertical'] {\n align-self: stretch;\n border-inline-start-width: 1px;\n }\n}\n</style>\n"],"mappings":";;;;;;oBAqBEA,EAAA,GAAAC,EAIE,MAAA;GAHA,OAAM;GACL,oBAAkBK,EAAA;GAClB,oBAAkBA,EAAA,gBAAW,aAAA,aAA+B,KAAA"}
@@ -10,11 +10,6 @@ interface SideNavigationProps {
10
10
  label?: string;
11
11
  /** The height of the rows, 32 or 40 pixels, inherited by every level. */
12
12
  size?: SideNavigationSize;
13
- /**
14
- * Takes 4px off the height of every row. It is a density setting and not a collapsed
15
- * icon-only rail, which this component does not offer.
16
- */
17
- compact?: boolean;
18
13
  /**
19
14
  * Keeps a single section open at a time WITHIN EACH LEVEL, which the browser does on
20
15
  * its own. It is off by default: a sidebar normally lets several sections stay open.
@@ -35,7 +30,6 @@ type __VLS_Slots = {
35
30
  declare const __VLS_base: import('vue').DefineComponent<SideNavigationProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<SideNavigationProps> & Readonly<{}>, {
36
31
  label: string;
37
32
  size: SideNavigationSize;
38
- compact: boolean;
39
33
  expandIcon: IconSource;
40
34
  collapseIcon: IconSource;
41
35
  exclusive: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"VSideNavigation.js","names":[],"sources":["../../../src/components/VSideNavigation/VSideNavigation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @core\n/**\n * Native details folds branches; JavaScript bridges open models and adds arrow navigation\n * without replacing native links or buttons.\n */\n\nimport { provide, ref, useId } from 'vue'\n\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport { sideNavigationKey } from './context'\n\nimport { arrowNavigate } from '../../utils/arrowNav'\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useMessages } from '../../i18n/state'\n\n/** The height of the rows: 32 or 40 pixels. */\nexport type SideNavigationSize = 'sm' | 'md'\n\ninterface SideNavigationProps {\n /**\n * What screen readers announce for this navigation. A page often has several (a\n * main one, a sidebar, a footer) and this is what tells them apart. It falls back\n * to the design system dictionary.\n */\n label?: string\n /** The height of the rows, 32 or 40 pixels, inherited by every level. */\n size?: SideNavigationSize\n /**\n * Takes 4px off the height of every row. It is a density setting and not a collapsed\n * icon-only rail, which this component does not offer.\n */\n compact?: boolean\n /**\n * Keeps a single section open at a time WITHIN EACH LEVEL, which the browser does on\n * its own. It is off by default: a sidebar normally lets several sections stay open.\n */\n exclusive?: boolean\n /** The chevron of a closed section: an icon name, or an explicit render. */\n expandIcon?: IconSource\n /**\n * The chevron of an open section. Leave it out and the closed one is simply rotated\n * by 180°.\n */\n collapseIcon?: IconSource\n}\n\nconst props = withDefaults(defineProps<SideNavigationProps>(), {\n label: undefined,\n size: 'md',\n compact: false,\n exclusive: false,\n expandIcon: () => expandMoreIcon,\n collapseIcon: undefined,\n})\n\ndefineSlots<{\n /** The first level of the tree: items, groups and separators. */\n default(): unknown\n}>()\n\nconst m = useMessages()\nconst ariaLabel = useAriaLabel(() => props.label ?? m.value.sideNavigation.label)\n\n// The name shared by the first level's sections. Each item mints another for its own children,\n// which keeps the exclusivity local to a level (see context.ts).\nconst rootName = useId()\n\nprovide(sideNavigationKey, {\n get name() {\n return props.exclusive ? rootName : undefined\n },\n get exclusive() {\n return props.exclusive\n },\n get expandIcon() {\n return props.expandIcon\n },\n get collapseIcon() {\n return props.collapseIcon\n },\n})\n\nconst rootEl = ref<HTMLElement | null>(null)\n\n// @keyboard @a11y\n/**\n * What the arrow keys may move to: the header of a branch, and the link of a leaf. Both forms\n * of disabling have to be excluded, since `:disabled` only ever matches a button; an inert link\n * and a disabled branch header are marked with `aria-disabled` instead, exactly as in VMenu's\n * panel.\n */\nconst ROW_SELECTOR = ':is(summary, .v-side-nav-action):not(:disabled):not([aria-disabled=\"true\"])'\n\n// @keyboard @a11y\n/**\n * This cannot be left to the shared helper, which skips whatever is not displayed. The content\n * of a closed disclosure element is not hidden that way: the browser passes over it by a rule\n * of its own, and it still reports itself as displayed.\n */\nfunction reachable(el: HTMLElement, root: HTMLElement): boolean {\n for (\n let child: HTMLElement = el, parent = el.parentElement;\n parent && child !== root;\n child = parent, parent = parent.parentElement\n ) {\n if (parent.tagName === 'DETAILS' && !(parent as HTMLDetailsElement).open) {\n if (child.tagName !== 'SUMMARY') return false\n }\n }\n return true\n}\n\n// @keyboard @a11y\n/*\n * The component's only behavioural JavaScript, and it exists because nothing native moves the\n * focus from one link to the next. It follows the design system's contract: the arrows MOVE the\n * focus and never activate anything.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const root = rootEl.value\n if (!root || event.defaultPrevented) return\n // Only a key pressed on a row: a field or a menu in a row's `#end` slot is a descendant too,\n // and its caret or its own list must keep the arrows and Home/End.\n if (!(event.target as Element | null)?.matches(ROW_SELECTOR)) return\n arrowNavigate(\n event,\n root,\n () => [...root.querySelectorAll<HTMLElement>(ROW_SELECTOR)].filter((el) => reachable(el, root)),\n { vertical: true },\n )\n}\n</script>\n\n<template>\n <nav\n ref=\"rootEl\"\n class=\"v-side-nav v-control\"\n :data-size=\"size\"\n :data-compact=\"compact ? '' : undefined\"\n :aria-label=\"ariaLabel\"\n @keydown=\"onKeydown\"\n >\n <ul class=\"v-side-nav-list\">\n <slot />\n </ul>\n </nav>\n</template>\n\n<style>\n@layer vectis.components {\n .v-side-nav {\n /* Every level inherits it. */\n --side-nav-indent: calc(var(--vectis-icon-size) + var(--control-gap));\n\n font-family: var(--vectis-text-family);\n }\n\n /*\n * They are laid out as flex columns and not as ordinary blocks, which removes margin\n * collapsing entirely; otherwise a group's margin could escape a branch that is closed, and\n * therefore of zero height, and push the rows apart under it.\n */\n .v-side-nav-list,\n .v-side-nav-children,\n .v-side-nav-group-list {\n display: flex;\n flex-direction: column;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"VSideNavigation.js","names":["_sfc_main","VSideNavigation_vue_vue_type_script_setup_true_lang_default","VSideNavigation_default"],"sources":["../../../src/components/VSideNavigation/VSideNavigation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @core\n/**\n * Native details folds branches; JavaScript bridges open models and adds arrow navigation\n * without replacing native links or buttons.\n */\n\nimport { provide, ref, useId } from 'vue'\n\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport { sideNavigationKey } from './context'\n\nimport { arrowNavigate } from '../../utils/arrowNav'\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useMessages } from '../../i18n/state'\n\n/** The height of the rows: 32 or 40 pixels. */\nexport type SideNavigationSize = 'sm' | 'md'\n\ninterface SideNavigationProps {\n /**\n * What screen readers announce for this navigation. A page often has several (a\n * main one, a sidebar, a footer) and this is what tells them apart. It falls back\n * to the design system dictionary.\n */\n label?: string\n /** The height of the rows, 32 or 40 pixels, inherited by every level. */\n size?: SideNavigationSize\n /**\n * Keeps a single section open at a time WITHIN EACH LEVEL, which the browser does on\n * its own. It is off by default: a sidebar normally lets several sections stay open.\n */\n exclusive?: boolean\n /** The chevron of a closed section: an icon name, or an explicit render. */\n expandIcon?: IconSource\n /**\n * The chevron of an open section. Leave it out and the closed one is simply rotated\n * by 180°.\n */\n collapseIcon?: IconSource\n}\n\nconst props = withDefaults(defineProps<SideNavigationProps>(), {\n label: undefined,\n size: 'md',\n exclusive: false,\n expandIcon: () => expandMoreIcon,\n collapseIcon: undefined,\n})\n\ndefineSlots<{\n /** The first level of the tree: items, groups and separators. */\n default(): unknown\n}>()\n\nconst m = useMessages()\nconst ariaLabel = useAriaLabel(() => props.label ?? m.value.sideNavigation.label)\n\n// The name shared by the first level's sections. Each item mints another for its own children,\n// which keeps the exclusivity local to a level (see context.ts).\nconst rootName = useId()\n\nprovide(sideNavigationKey, {\n get name() {\n return props.exclusive ? rootName : undefined\n },\n get exclusive() {\n return props.exclusive\n },\n get expandIcon() {\n return props.expandIcon\n },\n get collapseIcon() {\n return props.collapseIcon\n },\n})\n\nconst rootEl = ref<HTMLElement | null>(null)\n\n// @keyboard @a11y\n/**\n * What the arrow keys may move to: the header of a branch, and the link of a leaf. Both forms\n * of disabling have to be excluded, since `:disabled` only ever matches a button; an inert link\n * and a disabled branch header are marked with `aria-disabled` instead, exactly as in VMenu's\n * panel.\n */\nconst ROW_SELECTOR = ':is(summary, .v-side-nav-action):not(:disabled):not([aria-disabled=\"true\"])'\n\n// @keyboard @a11y\n/**\n * This cannot be left to the shared helper, which skips whatever is not displayed. The content\n * of a closed disclosure element is not hidden that way: the browser passes over it by a rule\n * of its own, and it still reports itself as displayed.\n */\nfunction reachable(el: HTMLElement, root: HTMLElement): boolean {\n for (\n let child: HTMLElement = el, parent = el.parentElement;\n parent && child !== root;\n child = parent, parent = parent.parentElement\n ) {\n if (parent.tagName === 'DETAILS' && !(parent as HTMLDetailsElement).open) {\n if (child.tagName !== 'SUMMARY') return false\n }\n }\n return true\n}\n\n// @keyboard @a11y\n/*\n * The component's only behavioural JavaScript, and it exists because nothing native moves the\n * focus from one link to the next. It follows the design system's contract: the arrows MOVE the\n * focus and never activate anything.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const root = rootEl.value\n if (!root || event.defaultPrevented) return\n // Only a key pressed on a row: a field or a menu in a row's `#end` slot is a descendant too,\n // and its caret or its own list must keep the arrows and Home/End.\n if (!(event.target as Element | null)?.matches(ROW_SELECTOR)) return\n arrowNavigate(\n event,\n root,\n () => [...root.querySelectorAll<HTMLElement>(ROW_SELECTOR)].filter((el) => reachable(el, root)),\n { vertical: true },\n )\n}\n</script>\n\n<template>\n <nav\n ref=\"rootEl\"\n class=\"v-side-nav v-control\"\n :data-size=\"size\"\n :aria-label=\"ariaLabel\"\n @keydown=\"onKeydown\"\n >\n <ul class=\"v-side-nav-list\">\n <slot />\n </ul>\n </nav>\n</template>\n\n<style>\n@layer vectis.components {\n .v-side-nav {\n /* Every level inherits it. */\n --side-nav-indent: calc(var(--vectis-icon-size) + var(--control-gap));\n\n font-family: var(--vectis-text-family);\n }\n\n /*\n * They are laid out as flex columns and not as ordinary blocks, which removes margin\n * collapsing entirely; otherwise a group's margin could escape a branch that is closed, and\n * therefore of zero height, and push the rows apart under it.\n */\n .v-side-nav-list,\n .v-side-nav-children,\n .v-side-nav-group-list {\n display: flex;\n flex-direction: column;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n}\n</style>\n"],"mappings":""}