vectis-ui 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/dist/components/VAccordion/VAccordion.css +1 -1
  2. package/dist/components/VAccordion/VAccordion.d.ts +6 -5
  3. package/dist/components/VAccordion/VAccordion.js.map +1 -1
  4. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/VAccordion/VAccordionItem.css +1 -1
  6. package/dist/components/VAccordion/VAccordionItem.d.ts +1 -1
  7. package/dist/components/VAccordion/VAccordionItem.js.map +1 -1
  8. package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/VAlert/VAlert.css +2 -0
  10. package/dist/components/VAlert/VAlert.d.ts +73 -0
  11. package/dist/components/VAlert/VAlert.js +9 -0
  12. package/dist/components/VAlert/VAlert.js.map +1 -0
  13. package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js +96 -0
  14. package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
  15. package/dist/components/VAvatar/VAvatar.d.ts +2 -2
  16. package/dist/components/VAvatar/VAvatarGroup.d.ts +1 -1
  17. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +8 -8
  18. package/dist/components/VBadge/VBadge.d.ts +3 -3
  19. package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js +9 -9
  20. package/dist/components/VButton/VButton.d.ts +4 -4
  21. package/dist/components/VButton/VButtonGroup.css +1 -1
  22. package/dist/components/VButton/VButtonGroup.d.ts +2 -2
  23. package/dist/components/VButton/VButtonGroup.js.map +1 -1
  24. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/VCalendar/VCalendar.css +1 -1
  26. package/dist/components/VCalendar/VCalendar.d.ts +7 -1
  27. package/dist/components/VCalendar/VCalendar.js.map +1 -1
  28. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js +20 -18
  29. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/VCalendar/VCalendarEvent.js.map +1 -1
  31. package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/components/VCalendar/VCalendarMonth.css +1 -1
  33. package/dist/components/VCalendar/VCalendarMonth.d.ts +2 -2
  34. package/dist/components/VCalendar/VCalendarMonth.js.map +1 -1
  35. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/VCalendar/VCalendarTimeGrid.css +1 -1
  37. package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +3 -3
  38. package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -1
  39. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/VCalendar/VCalendarYear.css +1 -1
  41. package/dist/components/VCalendar/VCalendarYear.js.map +1 -1
  42. package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/VCalendar/gesture.d.ts +1 -16
  44. package/dist/components/VCalendar/gesture.js +1 -1
  45. package/dist/components/VCalendar/gesture.js.map +1 -1
  46. package/dist/components/VCalendar/types.d.ts +2 -0
  47. package/dist/components/VCard/VCard.css +2 -0
  48. package/dist/components/VCard/VCard.d.ts +87 -0
  49. package/dist/components/VCard/VCard.js +9 -0
  50. package/dist/components/VCard/VCard.js.map +1 -0
  51. package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js +103 -0
  52. package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  53. package/dist/components/VCarousel/VCarousel.d.ts +1 -1
  54. package/dist/components/VCarousel/VCarousel.js.map +1 -1
  55. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +18 -18
  56. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/VCheckbox/VCheckMark.css +2 -0
  58. package/dist/components/VCheckbox/VCheckMark.js +9 -0
  59. package/dist/components/VCheckbox/VCheckMark.js.map +1 -0
  60. package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js +33 -0
  61. package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js.map +1 -0
  62. package/dist/components/VCheckbox/VCheckbox.css +1 -1
  63. package/dist/components/VCheckbox/VCheckbox.d.ts +8 -3
  64. package/dist/components/VCheckbox/VCheckbox.js.map +1 -1
  65. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js +54 -69
  66. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/VChip/VChip.d.ts +6 -6
  68. package/dist/components/VChip/VChip.js.map +1 -1
  69. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +26 -26
  70. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/components/VColorInput/VColorInput.css +2 -0
  72. package/dist/components/VColorInput/VColorInput.d.ts +113 -0
  73. package/dist/components/VColorInput/VColorInput.js +9 -0
  74. package/dist/components/VColorInput/VColorInput.js.map +1 -0
  75. package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js +230 -0
  76. package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  77. package/dist/components/VColorPicker/VColorPicker.css +2 -0
  78. package/dist/components/VColorPicker/VColorPicker.d.ts +67 -0
  79. package/dist/components/VColorPicker/VColorPicker.js +9 -0
  80. package/dist/components/VColorPicker/VColorPicker.js.map +1 -0
  81. package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js +390 -0
  82. package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  83. package/dist/components/VColorPicker/color.d.ts +42 -0
  84. package/dist/components/VColorPicker/color.js +158 -0
  85. package/dist/components/VColorPicker/color.js.map +1 -0
  86. package/dist/components/VCombobox/VCombobox.css +1 -1
  87. package/dist/components/VCombobox/VCombobox.d.ts +46 -60
  88. package/dist/components/VCombobox/VCombobox.js.map +1 -1
  89. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +271 -372
  90. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  91. package/dist/components/VCommandPalette/VCommandPalette.css +2 -0
  92. package/dist/components/VCommandPalette/VCommandPalette.d.ts +163 -0
  93. package/dist/components/VCommandPalette/VCommandPalette.js +9 -0
  94. package/dist/components/VCommandPalette/VCommandPalette.js.map +1 -0
  95. package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js +321 -0
  96. package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js.map +1 -0
  97. package/dist/components/VCommandPalette/VCommandPaletteItem.css +2 -0
  98. package/dist/components/VCommandPalette/VCommandPaletteItem.d.ts +38 -0
  99. package/dist/components/VCommandPalette/VCommandPaletteItem.js +9 -0
  100. package/dist/components/VCommandPalette/VCommandPaletteItem.js.map +1 -0
  101. package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js +69 -0
  102. package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  103. package/dist/components/VContextMenu/VContextMenu.css +2 -0
  104. package/dist/components/VContextMenu/VContextMenu.d.ts +66 -0
  105. package/dist/components/VContextMenu/VContextMenu.js +9 -0
  106. package/dist/components/VContextMenu/VContextMenu.js.map +1 -0
  107. package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js +148 -0
  108. package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  109. package/dist/components/VDataTable/VDataTable.css +1 -1
  110. package/dist/components/VDataTable/VDataTable.d.ts +41 -23
  111. package/dist/components/VDataTable/VDataTable.js.map +1 -1
  112. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +291 -186
  113. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/VDateInput/VDateInput.d.ts +27 -7
  115. package/dist/components/VDateInput/VDateInput.js.map +1 -1
  116. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +170 -162
  117. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/VDatePicker/VDatePicker.d.ts +3 -3
  119. package/dist/components/VDatePicker/VDatePicker.js.map +1 -1
  120. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +228 -227
  121. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/VDatePicker/keyboard.d.ts +7 -7
  123. package/dist/components/VDatePicker/keyboard.js +8 -6
  124. package/dist/components/VDatePicker/keyboard.js.map +1 -1
  125. package/dist/components/VDatePicker/names.js +16 -20
  126. package/dist/components/VDatePicker/names.js.map +1 -1
  127. package/dist/components/VDialog/VDialog.d.ts +2 -4
  128. package/dist/components/VDialog/VDialog.js.map +1 -1
  129. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +46 -77
  130. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/components/VDrawer/VDrawer.css +2 -0
  132. package/dist/components/VDrawer/VDrawer.d.ts +102 -0
  133. package/dist/components/VDrawer/VDrawer.js +9 -0
  134. package/dist/components/VDrawer/VDrawer.js.map +1 -0
  135. package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js +128 -0
  136. package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  137. package/dist/components/VEmptyState/VEmptyState.css +2 -0
  138. package/dist/components/VEmptyState/VEmptyState.d.ts +43 -0
  139. package/dist/components/VEmptyState/VEmptyState.js +9 -0
  140. package/dist/components/VEmptyState/VEmptyState.js.map +1 -0
  141. package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js +48 -0
  142. package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  143. package/dist/components/VField/VField.css +2 -0
  144. package/dist/components/VField/VField.d.ts +84 -0
  145. package/dist/components/VField/VField.js +9 -0
  146. package/dist/components/VField/VField.js.map +1 -0
  147. package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js +99 -0
  148. package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  149. package/dist/components/VField/VFieldAnnouncer.d.ts +7 -0
  150. package/dist/components/VField/VFieldAnnouncer.js +7 -0
  151. package/dist/components/VField/VFieldAnnouncer.js.map +1 -0
  152. package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js +19 -0
  153. package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  154. package/dist/components/VField/VFieldMessage.d.ts +11 -0
  155. package/dist/components/VField/VFieldMessage.js +7 -0
  156. package/dist/components/VField/VFieldMessage.js.map +1 -0
  157. package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js +32 -0
  158. package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js.map +1 -0
  159. package/dist/components/VFieldset/VFieldset.css +2 -0
  160. package/dist/components/VFieldset/VFieldset.d.ts +52 -0
  161. package/dist/components/VFieldset/VFieldset.js +9 -0
  162. package/dist/components/VFieldset/VFieldset.js.map +1 -0
  163. package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js +63 -0
  164. package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -0
  165. package/dist/components/VFileInput/VFileInput.css +1 -1
  166. package/dist/components/VFileInput/VFileInput.d.ts +31 -7
  167. package/dist/components/VFileInput/VFileInput.js.map +1 -1
  168. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +168 -161
  169. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  170. package/dist/components/VFilePicker/VFilePicker.d.ts +4 -4
  171. package/dist/components/VHotkeys/VHotkeys.css +1 -1
  172. package/dist/components/VHotkeys/VHotkeys.js.map +1 -1
  173. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +27 -30
  174. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  175. package/dist/components/VHotkeys/platform.d.ts +2 -0
  176. package/dist/components/VHotkeys/platform.js +24 -5
  177. package/dist/components/VHotkeys/platform.js.map +1 -1
  178. package/dist/components/VHoverCard/VHoverCard.css +2 -0
  179. package/dist/components/VHoverCard/VHoverCard.d.ts +62 -0
  180. package/dist/components/VHoverCard/VHoverCard.js +9 -0
  181. package/dist/components/VHoverCard/VHoverCard.js.map +1 -0
  182. package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js +97 -0
  183. package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  184. package/dist/components/VIcon/icons/add.d.ts +5 -0
  185. package/dist/components/VIcon/icons/add.js +9 -0
  186. package/dist/components/VIcon/icons/add.js.map +1 -0
  187. package/dist/components/VIcon/icons/colorize.d.ts +5 -0
  188. package/dist/components/VIcon/icons/colorize.js +9 -0
  189. package/dist/components/VIcon/icons/colorize.js.map +1 -0
  190. package/dist/components/VIcon/icons/inbox.d.ts +5 -0
  191. package/dist/components/VIcon/icons/inbox.js +9 -0
  192. package/dist/components/VIcon/icons/inbox.js.map +1 -0
  193. package/dist/components/VIcon/icons/index.d.ts +42 -2
  194. package/dist/components/VIcon/icons/index.js +88 -72
  195. package/dist/components/VIcon/icons/index.js.map +1 -1
  196. package/dist/components/VIcon/icons/names.d.ts +2 -2
  197. package/dist/components/VIcon/icons/names.js +1 -1
  198. package/dist/components/VIcon/icons/names.js.map +1 -1
  199. package/dist/components/VIcon/icons/open_in_new.d.ts +5 -0
  200. package/dist/components/VIcon/icons/open_in_new.js +9 -0
  201. package/dist/components/VIcon/icons/open_in_new.js.map +1 -0
  202. package/dist/components/VIcon/icons/priority_high.d.ts +5 -0
  203. package/dist/components/VIcon/icons/priority_high.js +9 -0
  204. package/dist/components/VIcon/icons/priority_high.js.map +1 -0
  205. package/dist/components/VIcon/icons/remove.d.ts +5 -0
  206. package/dist/components/VIcon/icons/remove.js +9 -0
  207. package/dist/components/VIcon/icons/remove.js.map +1 -0
  208. package/dist/components/VIcon/icons/search_off.d.ts +5 -0
  209. package/dist/components/VIcon/icons/search_off.js +9 -0
  210. package/dist/components/VIcon/icons/search_off.js.map +1 -0
  211. package/dist/components/VIcon/icons/star.d.ts +5 -0
  212. package/dist/components/VIcon/icons/star.js +9 -0
  213. package/dist/components/VIcon/icons/star.js.map +1 -0
  214. package/dist/components/VIconButton/VIconButton.d.ts +4 -4
  215. package/dist/components/VInput/VInput.css +1 -1
  216. package/dist/components/VInput/VInput.d.ts +51 -2
  217. package/dist/components/VInput/VInput.js.map +1 -1
  218. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +129 -106
  219. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  220. package/dist/components/VInput/VInputGroup.css +1 -1
  221. package/dist/components/VInput/VInputGroup.d.ts +20 -0
  222. package/dist/components/VInput/VInputGroup.js.map +1 -1
  223. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js +50 -51
  224. package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/components/VInputOTP/VInputOTP.css +1 -1
  226. package/dist/components/VInputOTP/VInputOTP.d.ts +27 -4
  227. package/dist/components/VInputOTP/VInputOTP.js.map +1 -1
  228. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +131 -113
  229. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  230. package/dist/components/VLink/VLink.css +2 -0
  231. package/dist/components/VLink/VLink.d.ts +53 -0
  232. package/dist/components/VLink/VLink.js +9 -0
  233. package/dist/components/VLink/VLink.js.map +1 -0
  234. package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js +58 -0
  235. package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  236. package/dist/components/VListbox/VListboxChevron.css +2 -0
  237. package/dist/components/VListbox/VListboxChevron.d.ts +12 -0
  238. package/dist/components/VListbox/VListboxChevron.js +9 -0
  239. package/dist/components/VListbox/VListboxChevron.js.map +1 -0
  240. package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js +25 -0
  241. package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js.map +1 -0
  242. package/dist/components/VListbox/VListboxGroup.css +2 -0
  243. package/dist/components/VListbox/VListboxGroup.d.ts +27 -0
  244. package/dist/components/VListbox/VListboxGroup.js +9 -0
  245. package/dist/components/VListbox/VListboxGroup.js.map +1 -0
  246. package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js +21 -0
  247. package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  248. package/dist/components/VListbox/VListboxOption.css +2 -0
  249. package/dist/components/{VCombobox/VComboboxOption.d.ts → VListbox/VListboxOption.d.ts} +4 -4
  250. package/dist/components/VListbox/VListboxOption.js +9 -0
  251. package/dist/components/VListbox/VListboxOption.js.map +1 -0
  252. package/dist/components/{VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js → VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js} +6 -6
  253. package/dist/components/VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -0
  254. package/dist/components/VListbox/VListboxPanel.css +2 -0
  255. package/dist/components/VListbox/VListboxPanel.d.ts +59 -0
  256. package/dist/components/VListbox/VListboxPanel.js +9 -0
  257. package/dist/components/VListbox/VListboxPanel.js.map +1 -0
  258. package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js +123 -0
  259. package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  260. package/dist/components/VListbox/VListboxSeparator.css +2 -0
  261. package/dist/components/VListbox/VListboxSeparator.d.ts +3 -0
  262. package/dist/components/VListbox/VListboxSeparator.js +9 -0
  263. package/dist/components/VListbox/VListboxSeparator.js.map +1 -0
  264. package/dist/components/{VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js → VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js} +4 -4
  265. package/dist/components/VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  266. package/dist/components/VListbox/VListboxValues.css +2 -0
  267. package/dist/components/VListbox/VListboxValues.d.ts +52 -0
  268. package/dist/components/VListbox/VListboxValues.js +9 -0
  269. package/dist/components/VListbox/VListboxValues.js.map +1 -0
  270. package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js +103 -0
  271. package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js.map +1 -0
  272. package/dist/components/VMenu/VMenu.d.ts +1 -1
  273. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +9 -9
  274. package/dist/components/VMenu/VMenuItem.d.ts +1 -1
  275. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +16 -16
  276. package/dist/components/VMenu/VMenuPanel.d.ts +2 -2
  277. package/dist/components/VMenu/VMenuPanel.js.map +1 -1
  278. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +7 -7
  279. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  280. package/dist/components/VMeter/VMeter.css +2 -0
  281. package/dist/components/VMeter/VMeter.d.ts +77 -0
  282. package/dist/components/VMeter/VMeter.js +9 -0
  283. package/dist/components/VMeter/VMeter.js.map +1 -0
  284. package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js +113 -0
  285. package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js.map +1 -0
  286. package/dist/components/VNumberInput/VNumberInput.css +2 -0
  287. package/dist/components/VNumberInput/VNumberInput.d.ts +114 -0
  288. package/dist/components/VNumberInput/VNumberInput.js +9 -0
  289. package/dist/components/VNumberInput/VNumberInput.js.map +1 -0
  290. package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js +251 -0
  291. package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  292. package/dist/components/VNumberInput/number.d.ts +30 -0
  293. package/dist/components/VNumberInput/number.js +38 -0
  294. package/dist/components/VNumberInput/number.js.map +1 -0
  295. package/dist/components/VPagination/VPagination.css +1 -1
  296. package/dist/components/VPagination/VPagination.d.ts +4 -12
  297. package/dist/components/VPagination/VPagination.js.map +1 -1
  298. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +89 -96
  299. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  300. package/dist/components/VProgressCircular/VProgressCircular.d.ts +2 -2
  301. package/dist/components/VProgressLinear/VProgressLinear.css +1 -1
  302. package/dist/components/VProgressLinear/VProgressLinear.d.ts +10 -7
  303. package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -1
  304. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js +52 -34
  305. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -1
  306. package/dist/components/VRadio/VRadio.d.ts +8 -3
  307. package/dist/components/VRadio/VRadio.js.map +1 -1
  308. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js +52 -46
  309. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/components/VRating/VRating.css +2 -0
  311. package/dist/components/VRating/VRating.d.ts +92 -0
  312. package/dist/components/VRating/VRating.js +9 -0
  313. package/dist/components/VRating/VRating.js.map +1 -0
  314. package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js +158 -0
  315. package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js.map +1 -0
  316. package/dist/components/VResizable/VResizable.css +2 -0
  317. package/dist/components/VResizable/VResizable.d.ts +50 -0
  318. package/dist/components/VResizable/VResizable.js +9 -0
  319. package/dist/components/VResizable/VResizable.js.map +1 -0
  320. package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js +225 -0
  321. package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  322. package/dist/components/VResizable/VResizablePanel.css +2 -0
  323. package/dist/components/VResizable/VResizablePanel.d.ts +60 -0
  324. package/dist/components/VResizable/VResizablePanel.js +9 -0
  325. package/dist/components/VResizable/VResizablePanel.js.map +1 -0
  326. package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js +83 -0
  327. package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  328. package/dist/components/VResizable/context.d.ts +24 -0
  329. package/dist/components/VResizable/context.js +6 -0
  330. package/dist/components/VResizable/context.js.map +1 -0
  331. package/dist/components/VResizable/layout.d.ts +28 -0
  332. package/dist/components/VResizable/layout.js +41 -0
  333. package/dist/components/VResizable/layout.js.map +1 -0
  334. package/dist/components/VSelect/VSelect.css +2 -0
  335. package/dist/components/VSelect/VSelect.d.ts +193 -0
  336. package/dist/components/VSelect/VSelect.js +9 -0
  337. package/dist/components/VSelect/VSelect.js.map +1 -0
  338. package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js +424 -0
  339. package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
  340. package/dist/components/VSeparator/VSeparator.js.map +1 -1
  341. package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  342. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +8 -8
  343. package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +2 -2
  344. package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -1
  345. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +3 -3
  346. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  347. package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +3 -3
  348. package/dist/components/VSlider/VSlider.css +1 -1
  349. package/dist/components/VSlider/VSlider.d.ts +34 -8
  350. package/dist/components/VSlider/VSlider.js.map +1 -1
  351. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +236 -215
  352. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  353. package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js +4 -4
  354. package/dist/components/VSnackbar/state.js.map +1 -1
  355. package/dist/components/VSplitButton/VSplitButton.css +2 -0
  356. package/dist/components/VSplitButton/VSplitButton.d.ts +114 -0
  357. package/dist/components/VSplitButton/VSplitButton.js +9 -0
  358. package/dist/components/VSplitButton/VSplitButton.js.map +1 -0
  359. package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js +148 -0
  360. package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  361. package/dist/components/VStepper/VStepper.css +2 -0
  362. package/dist/components/VStepper/VStepper.d.ts +73 -0
  363. package/dist/components/VStepper/VStepper.js +9 -0
  364. package/dist/components/VStepper/VStepper.js.map +1 -0
  365. package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js +96 -0
  366. package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
  367. package/dist/components/VSwitch/VSwitch.d.ts +8 -3
  368. package/dist/components/VSwitch/VSwitch.js.map +1 -1
  369. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js +53 -47
  370. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  371. package/dist/components/VTabs/VTab.css +1 -1
  372. package/dist/components/VTabs/VTab.d.ts +1 -1
  373. package/dist/components/VTabs/VTab.js.map +1 -1
  374. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  375. package/dist/components/VTabs/VTabs.css +1 -1
  376. package/dist/components/VTabs/VTabs.d.ts +13 -5
  377. package/dist/components/VTabs/VTabs.js.map +1 -1
  378. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +20 -20
  379. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  380. package/dist/components/VTextarea/VTextarea.css +1 -1
  381. package/dist/components/VTextarea/VTextarea.d.ts +22 -2
  382. package/dist/components/VTextarea/VTextarea.js.map +1 -1
  383. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +108 -100
  384. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  385. package/dist/components/VTimeInput/VTimeInput.d.ts +27 -7
  386. package/dist/components/VTimeInput/VTimeInput.js.map +1 -1
  387. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +187 -171
  388. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  389. package/dist/components/VTimePicker/VTimePicker.d.ts +2 -2
  390. package/dist/components/VTimePicker/VTimePicker.js.map +1 -1
  391. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +15 -15
  392. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  393. package/dist/components/VTimeline/VTimeline.css +2 -0
  394. package/dist/components/VTimeline/VTimeline.d.ts +59 -0
  395. package/dist/components/VTimeline/VTimeline.js +9 -0
  396. package/dist/components/VTimeline/VTimeline.js.map +1 -0
  397. package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js +53 -0
  398. package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  399. package/dist/components/VTimeline/VTimelineItem.css +2 -0
  400. package/dist/components/VTimeline/VTimelineItem.d.ts +48 -0
  401. package/dist/components/VTimeline/VTimelineItem.js +9 -0
  402. package/dist/components/VTimeline/VTimelineItem.js.map +1 -0
  403. package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js +70 -0
  404. package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  405. package/dist/components/VTimeline/context.d.ts +11 -0
  406. package/dist/components/VTimeline/context.js +6 -0
  407. package/dist/components/VTimeline/context.js.map +1 -0
  408. package/dist/components/VTimeline/datetime.d.ts +8 -0
  409. package/dist/components/VTimeline/datetime.js +36 -0
  410. package/dist/components/VTimeline/datetime.js.map +1 -0
  411. package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js +8 -8
  412. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +12 -12
  413. package/dist/components/VToggle/VToggle.d.ts +4 -4
  414. package/dist/components/VToggle/VToggleItem.d.ts +1 -1
  415. package/dist/components/VTooltip/VTooltip.d.ts +8 -2
  416. package/dist/components/VTooltip/VTooltip.js.map +1 -1
  417. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +45 -43
  418. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  419. package/dist/components/VTreeView/VTreeView.css +2 -0
  420. package/dist/components/VTreeView/VTreeView.d.ts +112 -0
  421. package/dist/components/VTreeView/VTreeView.js +9 -0
  422. package/dist/components/VTreeView/VTreeView.js.map +1 -0
  423. package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js +321 -0
  424. package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
  425. package/dist/components/VTypography/VTypography.d.ts +1 -1
  426. package/dist/components/VVirtualList/VVirtualList.css +2 -0
  427. package/dist/components/VVirtualList/VVirtualList.d.ts +78 -0
  428. package/dist/components/VVirtualList/VVirtualList.js +9 -0
  429. package/dist/components/VVirtualList/VVirtualList.js.map +1 -0
  430. package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js +114 -0
  431. package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js.map +1 -0
  432. package/dist/composables/useChoice.d.ts +28 -0
  433. package/dist/composables/useChoice.js +28 -0
  434. package/dist/composables/useChoice.js.map +1 -0
  435. package/dist/composables/useDebouncedSearch.d.ts +17 -0
  436. package/dist/composables/useDebouncedSearch.js +18 -0
  437. package/dist/composables/useDebouncedSearch.js.map +1 -0
  438. package/dist/composables/useEscapeDismiss.d.ts +8 -0
  439. package/dist/composables/useEscapeDismiss.js +16 -0
  440. package/dist/composables/useEscapeDismiss.js.map +1 -0
  441. package/dist/composables/useFieldIds.d.ts +2 -1
  442. package/dist/composables/useFieldIds.js +7 -6
  443. package/dist/composables/useFieldIds.js.map +1 -1
  444. package/dist/composables/useFieldPanel.d.ts +1 -0
  445. package/dist/composables/useFieldPanel.js +52 -42
  446. package/dist/composables/useFieldPanel.js.map +1 -1
  447. package/dist/composables/useFileField.d.ts +1 -3
  448. package/dist/composables/useFileField.js +48 -50
  449. package/dist/composables/useFileField.js.map +1 -1
  450. package/dist/composables/useHotkeyListener.d.ts +17 -0
  451. package/dist/composables/useHotkeyListener.js +26 -0
  452. package/dist/composables/useHotkeyListener.js.map +1 -0
  453. package/dist/composables/useIconClickHandlers.d.ts +2 -10
  454. package/dist/composables/useIconClickHandlers.js +1 -1
  455. package/dist/composables/useIconClickHandlers.js.map +1 -1
  456. package/dist/{components/VCombobox/infiniteScroll.d.ts → composables/useInfiniteScroll.d.ts} +6 -0
  457. package/dist/{components/VCombobox/infiniteScroll.js → composables/useInfiniteScroll.js} +7 -7
  458. package/dist/composables/useInfiniteScroll.js.map +1 -0
  459. package/dist/composables/useListbox.d.ts +132 -0
  460. package/dist/composables/useListbox.js +227 -0
  461. package/dist/composables/useListbox.js.map +1 -0
  462. package/dist/composables/useModalDialog.d.ts +28 -0
  463. package/dist/composables/useModalDialog.js +60 -0
  464. package/dist/composables/useModalDialog.js.map +1 -0
  465. package/dist/composables/useRootAttrs.d.ts +2 -3
  466. package/dist/composables/useRootAttrs.js.map +1 -1
  467. package/dist/composables/useVirtualList.d.ts +46 -0
  468. package/dist/composables/useVirtualList.js +145 -0
  469. package/dist/composables/useVirtualList.js.map +1 -0
  470. package/dist/i18n/en.js +50 -0
  471. package/dist/i18n/en.js.map +1 -1
  472. package/dist/i18n/fr.js +50 -0
  473. package/dist/i18n/fr.js.map +1 -1
  474. package/dist/i18n/types.d.ts +103 -2
  475. package/dist/icons.js +45 -37
  476. package/dist/index.d.ts +50 -4
  477. package/dist/index.js +80 -56
  478. package/dist/styles.css +1 -1
  479. package/dist/tokens/index.d.ts +43 -0
  480. package/dist/tokens/semantic.d.ts +42 -0
  481. package/dist/tokens/semantic.js +43 -1
  482. package/dist/tokens/semantic.js.map +1 -1
  483. package/dist/tokens/themes/dark.d.ts +1 -0
  484. package/dist/tokens/themes/dark.js +1 -0
  485. package/dist/tokens/themes/dark.js.map +1 -1
  486. package/dist/tokens.json +215 -1
  487. package/dist/types.d.ts +57 -4
  488. package/dist/utils/arrowNav.js.map +1 -1
  489. package/dist/utils/attrs.d.ts +9 -0
  490. package/dist/utils/attrs.js +14 -0
  491. package/dist/utils/attrs.js.map +1 -0
  492. package/dist/utils/date.d.ts +1 -0
  493. package/dist/utils/date.js +2 -2
  494. package/dist/utils/date.js.map +1 -1
  495. package/package.json +1 -1
  496. package/dist/components/VCombobox/VComboboxGroup.css +0 -2
  497. package/dist/components/VCombobox/VComboboxGroup.d.ts +0 -17
  498. package/dist/components/VCombobox/VComboboxGroup.js +0 -9
  499. package/dist/components/VCombobox/VComboboxGroup.js.map +0 -1
  500. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js +0 -21
  501. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  502. package/dist/components/VCombobox/VComboboxOption.css +0 -2
  503. package/dist/components/VCombobox/VComboboxOption.js +0 -9
  504. package/dist/components/VCombobox/VComboboxOption.js.map +0 -1
  505. package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +0 -1
  506. package/dist/components/VCombobox/VComboboxSeparator.css +0 -2
  507. package/dist/components/VCombobox/VComboboxSeparator.js +0 -9
  508. package/dist/components/VCombobox/VComboboxSeparator.js.map +0 -1
  509. package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  510. package/dist/components/VCombobox/infiniteScroll.js.map +0 -1
  511. /package/dist/components/{VCombobox/VComboboxSeparator.d.ts → VCheckbox/VCheckMark.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VContextMenu.js","names":[],"sources":["../../../src/components/VContextMenu/VContextMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @a11y @core\n/**\n * The native `contextmenu` event covers the right click, the long press on Android and the\n * Menu key. JavaScript places a zero-size anchor at the pointer so CSS anchoring can position\n * the panel and flip it near the viewport edges, and adds Shift+F10 where the platform lacks it.\n */\n\nimport { computed, provide, ref, shallowRef, useId } from 'vue'\n\nimport VMenuPanel from '../VMenu/VMenuPanel.vue'\nimport { menuAnchor, menuKey } from '../VMenu/context'\nimport type { MenuSize } from '../VMenu/context'\nimport { usePopoverModel } from '../../composables/usePopover'\nimport { isRtl } from '../../utils/direction'\nimport { clamp } from '../../utils/number'\n\ninterface ContextMenuProps {\n /** The element wrapping the zone. Any element able to hold the default slot's content. */\n as?: string\n /** How tall the rows are: 32, 40 or 48 pixels. Submenus inherit it. */\n size?: MenuSize\n /** Takes 4px off the height of every row, submenus included. */\n compact?: boolean\n /**\n * A width for the panel: a number is read as pixels, a string as any CSS length or\n * keyword. Submenus keep the default width.\n */\n width?: number | string\n /** Leaves the zone to the browser's own context menu. */\n disabled?: boolean\n}\n\n// The attributes belong on the zone, the one element of the three this component renders that\n// the consumer sees.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<ContextMenuProps>(), {\n as: 'div',\n size: 'sm',\n compact: false,\n width: undefined,\n disabled: false,\n})\n\n/**\n * Whether the menu is showing. The browser's own dismissal (a click outside, Escape,\n * choosing a command) writes back to it. Opened from the model, the menu appears under\n * the focused element of the zone, or under the zone itself.\n */\nconst open = defineModel<boolean>('open', { default: false })\n\ndefineSlots<{\n /** The zone the menu belongs to. */\n default(): unknown\n /**\n * The contents of the menu: VMenuItem, VMenuGroup and VMenuSeparator. `target` is the\n * element the menu was opened on, so one menu can serve every item of a list.\n */\n menu(props: { target: Element | null }): unknown\n}>()\n\nconst zoneEl = ref<HTMLElement | null>(null)\nconst anchorEl = ref<HTMLElement | null>(null)\nconst panelRef = ref<InstanceType<typeof VMenuPanel> | null>(null)\nconst menuId = useId()\nconst anchor = menuAnchor(menuId)\n\n/** The element the menu was opened on, handed to the `menu` slot. */\nconst target = shallowRef<Element | null>(null)\n\n/** Where the focus goes back when the menu closes. */\nlet returnFocus: HTMLElement | null = null\nlet fromKeyboard = false\n\nprovide(menuKey, { closeAll: () => panelRef.value?.close() })\n\n/** Moves the invisible anchor the panel is positioned against. */\nfunction placeAnchor(x: number, y: number) {\n const el = anchorEl.value\n if (!el) return\n el.style.left = `${x}px`\n el.style.top = `${y}px`\n}\n\n/**\n * Puts the anchor under an element's start edge, kept inside the viewport so a zone taller\n * than the screen still opens a visible menu.\n */\nfunction placeUnder(el: Element) {\n const rect = el.getBoundingClientRect()\n const x = isRtl(el) ? rect.right : rect.left\n placeAnchor(clamp(x, 0, window.innerWidth), clamp(rect.bottom, 0, window.innerHeight))\n}\n\nfunction openMenu(on: Element | null, keyboard: boolean) {\n const panel = panelRef.value\n if (!panel) return\n target.value = on\n fromKeyboard = keyboard\n // Reopening at another spot must not take the focus inside the old panel as the place to\n // return to.\n const active = document.activeElement\n if (!panel.el?.contains(active)) {\n returnFocus = active instanceof HTMLElement && active !== document.body ? active : null\n }\n if (panel.shown) panel.close()\n panel.show()\n}\n\n/** The element of the zone holding the focus, or the zone itself. */\nfunction focusedInZone(): Element | null {\n const active = document.activeElement\n return active && zoneEl.value?.contains(active) ? active : zoneEl.value\n}\n\n// @keyboard\n// Keyboard openings carry no pointer position: the spec gives them an empty pointer type. Where\n// `contextmenu` is still a plain MouseEvent, no button is pressed or released for them; a\n// Control-click on macOS holds the primary button down.\nfunction isKeyboardEvent(event: MouseEvent): boolean {\n if ('pointerType' in event) return (event as PointerEvent).pointerType === ''\n return event.button !== 2 && event.buttons === 0\n}\n\nfunction onContextmenu(event: MouseEvent) {\n // A nested context menu, or the consumer's own handler, already answered this event.\n if (props.disabled || event.defaultPrevented) return\n const keyboard = isKeyboardEvent(event)\n // Shift is the way through to the browser's own menu, as Firefox already does by itself.\n if (event.shiftKey && !keyboard) return\n event.preventDefault()\n // Shift+F10 also fires a native `contextmenu` on some platforms, after the keydown below\n // has already opened the menu.\n if (keyboard && panelRef.value?.shown) return\n const on = event.target instanceof Element ? event.target : zoneEl.value\n if (keyboard) {\n if (on) placeUnder(on)\n openMenu(on, true)\n return\n }\n placeAnchor(event.clientX, event.clientY)\n // @core\n // macOS and Linux fire the event on the press, not the release. An auto popover opened while\n // the button is still down is dismissed by that release, so the opening waits until the\n // release has been dispatched.\n const pointer = (event as Partial<PointerEvent>).pointerType\n if (event.buttons !== 0 && pointer !== 'touch') {\n const release = () => {\n window.removeEventListener('pointerup', release, true)\n window.removeEventListener('pointercancel', release, true)\n setTimeout(() => openMenu(on, false))\n }\n window.addEventListener('pointerup', release, true)\n window.addEventListener('pointercancel', release, true)\n return\n }\n openMenu(on, false)\n}\n\n// @keyboard\n// Windows and Linux turn Shift+F10 into a `contextmenu` event by themselves; macOS does not.\nfunction onKeydown(event: KeyboardEvent) {\n if (props.disabled || event.defaultPrevented) return\n if (event.key !== 'F10' || !event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)\n return\n event.preventDefault()\n const on = focusedInZone()\n if (on) placeUnder(on)\n openMenu(on, true)\n}\n\n// @a11y\n// The keyboard lands on the first command, the pointer on the panel itself, as in VMenu. On\n// closing, the focus returns where it was unless it has deliberately moved elsewhere.\nfunction onToggle(value: boolean) {\n open.value = value\n if (value) {\n if (fromKeyboard) panelRef.value?.focusFirst()\n else panelRef.value?.focusPanel()\n return\n }\n const active = document.activeElement\n if (!active || active === document.body || panelRef.value?.el?.contains(active)) {\n if (returnFocus?.isConnected) returnFocus.focus()\n }\n}\n\n/** Opening from the model or from code without an event. */\nfunction showFromCode() {\n const on = focusedInZone()\n if (on) placeUnder(on)\n openMenu(on, false)\n}\n\nusePopoverModel(\n open,\n () => panelRef.value?.shown ?? false,\n showFromCode,\n () => panelRef.value?.close(),\n)\n\ndefineExpose({\n /**\n * Opens the menu. Given a mouse event, it opens at the pointer on the event's target;\n * otherwise under the focused element of the zone.\n */\n show(event?: MouseEvent) {\n if (!event) return showFromCode()\n placeAnchor(event.clientX, event.clientY)\n openMenu(event.target instanceof Element ? event.target : zoneEl.value, false)\n },\n /** Closes the menu, submenus included. */\n close: () => panelRef.value?.close(),\n /** The panel element. */\n el: computed(() => panelRef.value?.el ?? null),\n})\n</script>\n\n<template>\n <component\n :is=\"as\"\n ref=\"zoneEl\"\n v-bind=\"$attrs\"\n class=\"v-context-menu\"\n @contextmenu=\"onContextmenu\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </component>\n <span\n ref=\"anchorEl\"\n class=\"v-context-menu-anchor\"\n aria-hidden=\"true\"\n :style=\"{ 'anchor-name': anchor }\"\n />\n <!-- The browser's menu is kept off the panel: a context menu opened on top of this one\n would hide it, and a keyboard opening that already moved the focus inside must not be\n answered by the browser too -->\n <VMenuPanel\n :id=\"menuId\"\n ref=\"panelRef\"\n class=\"v-context-menu-panel\"\n placement=\"bottom-start\"\n :anchor=\"anchor\"\n :size=\"size\"\n :compact=\"compact\"\n :width=\"width\"\n @toggle=\"onToggle\"\n @contextmenu.prevent\n >\n <slot name=\"menu\" :target=\"target\" />\n </VMenuPanel>\n</template>\n\n<style>\n@layer vectis.components {\n /* A point, not a box: the panel's corner sits on it. */\n .v-context-menu-anchor {\n /* Physical, like the pointer coordinates written into it. */\n position: fixed;\n top: 0;\n left: 0;\n inline-size: 0;\n block-size: 0;\n pointer-events: none;\n }\n\n /*\n * Native context menus open against the pointer, with no gap. The gutter on the opposite side\n * stays, so a flipped panel keeps its distance from the viewport edge.\n */\n .v-context-menu-panel.v-floating {\n margin-block-start: 0;\n /* A pointer can sit in a corner of the viewport, where both directions must flip at once. */\n position-try-fallbacks:\n flip-block,\n flip-inline,\n flip-block flip-inline;\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,148 @@
1
+ import { usePopoverModel as e } from "../../composables/usePopover.js";
2
+ import { isRtl as t } from "../../utils/direction.js";
3
+ import { clamp as n } from "../../utils/number.js";
4
+ import { menuAnchor as r, menuKey as i } from "../VMenu/context.js";
5
+ import a from "../VMenu/VMenuPanel.js";
6
+ import { Fragment as o, computed as s, createBlock as c, createElementBlock as l, createElementVNode as u, createVNode as d, defineComponent as f, mergeModels as p, mergeProps as m, normalizeStyle as h, openBlock as g, provide as _, ref as v, renderSlot as y, resolveDynamicComponent as b, shallowRef as x, unref as S, useId as C, useModel as w, withCtx as T, withModifiers as E } from "vue";
7
+ //#region src/components/VContextMenu/VContextMenu.vue?vue&type=script&setup=true&lang.ts
8
+ var D = /*@__PURE__*/ f({
9
+ inheritAttrs: !1,
10
+ __name: "VContextMenu",
11
+ props: /*@__PURE__*/ p({
12
+ as: { default: "div" },
13
+ size: { default: "sm" },
14
+ compact: {
15
+ type: Boolean,
16
+ default: !1
17
+ },
18
+ width: { default: void 0 },
19
+ disabled: {
20
+ type: Boolean,
21
+ default: !1
22
+ }
23
+ }, {
24
+ open: {
25
+ type: Boolean,
26
+ default: !1
27
+ },
28
+ openModifiers: {}
29
+ }),
30
+ emits: ["update:open"],
31
+ setup(f, { expose: p }) {
32
+ let D = f, O = w(f, "open"), k = v(null), A = v(null), j = v(null), M = C(), N = r(M), P = x(null), F = null, I = !1;
33
+ _(i, { closeAll: () => j.value?.close() });
34
+ function L(e, t) {
35
+ let n = A.value;
36
+ n && (n.style.left = `${e}px`, n.style.top = `${t}px`);
37
+ }
38
+ function R(e) {
39
+ let r = e.getBoundingClientRect();
40
+ L(n(t(e) ? r.right : r.left, 0, window.innerWidth), n(r.bottom, 0, window.innerHeight));
41
+ }
42
+ function z(e, t) {
43
+ let n = j.value;
44
+ if (!n) return;
45
+ P.value = e, I = t;
46
+ let r = document.activeElement;
47
+ n.el?.contains(r) || (F = r instanceof HTMLElement && r !== document.body ? r : null), n.shown && n.close(), n.show();
48
+ }
49
+ function B() {
50
+ let e = document.activeElement;
51
+ return e && k.value?.contains(e) ? e : k.value;
52
+ }
53
+ function V(e) {
54
+ return "pointerType" in e ? e.pointerType === "" : e.button !== 2 && e.buttons === 0;
55
+ }
56
+ function H(e) {
57
+ if (D.disabled || e.defaultPrevented) return;
58
+ let t = V(e);
59
+ if (e.shiftKey && !t || (e.preventDefault(), t && j.value?.shown)) return;
60
+ let n = e.target instanceof Element ? e.target : k.value;
61
+ if (t) {
62
+ n && R(n), z(n, !0);
63
+ return;
64
+ }
65
+ L(e.clientX, e.clientY);
66
+ let r = e.pointerType;
67
+ if (e.buttons !== 0 && r !== "touch") {
68
+ let e = () => {
69
+ window.removeEventListener("pointerup", e, !0), window.removeEventListener("pointercancel", e, !0), setTimeout(() => z(n, !1));
70
+ };
71
+ window.addEventListener("pointerup", e, !0), window.addEventListener("pointercancel", e, !0);
72
+ return;
73
+ }
74
+ z(n, !1);
75
+ }
76
+ function U(e) {
77
+ if (D.disabled || e.defaultPrevented || e.key !== "F10" || !e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) return;
78
+ e.preventDefault();
79
+ let t = B();
80
+ t && R(t), z(t, !0);
81
+ }
82
+ function W(e) {
83
+ if (O.value = e, e) {
84
+ I ? j.value?.focusFirst() : j.value?.focusPanel();
85
+ return;
86
+ }
87
+ let t = document.activeElement;
88
+ (!t || t === document.body || j.value?.el?.contains(t)) && F?.isConnected && F.focus();
89
+ }
90
+ function G() {
91
+ let e = B();
92
+ e && R(e), z(e, !1);
93
+ }
94
+ return e(O, () => j.value?.shown ?? !1, G, () => j.value?.close()), p({
95
+ show(e) {
96
+ if (!e) return G();
97
+ L(e.clientX, e.clientY), z(e.target instanceof Element ? e.target : k.value, !1);
98
+ },
99
+ close: () => j.value?.close(),
100
+ el: s(() => j.value?.el ?? null)
101
+ }), (e, t) => (g(), l(o, null, [
102
+ (g(), c(b(f.as), m({
103
+ ref_key: "zoneEl",
104
+ ref: k
105
+ }, e.$attrs, {
106
+ class: "v-context-menu",
107
+ onContextmenu: H,
108
+ onKeydown: U
109
+ }), {
110
+ default: T(() => [y(e.$slots, "default")]),
111
+ _: 3
112
+ }, 16)),
113
+ u("span", {
114
+ ref_key: "anchorEl",
115
+ ref: A,
116
+ class: "v-context-menu-anchor",
117
+ "aria-hidden": "true",
118
+ style: h({ "anchor-name": S(N) })
119
+ }, null, 4),
120
+ d(a, {
121
+ id: S(M),
122
+ ref_key: "panelRef",
123
+ ref: j,
124
+ class: "v-context-menu-panel",
125
+ placement: "bottom-start",
126
+ anchor: S(N),
127
+ size: f.size,
128
+ compact: f.compact,
129
+ width: f.width,
130
+ onToggle: W,
131
+ onContextmenu: t[0] ||= E(() => {}, ["prevent"])
132
+ }, {
133
+ default: T(() => [y(e.$slots, "menu", { target: P.value })]),
134
+ _: 3
135
+ }, 8, [
136
+ "id",
137
+ "anchor",
138
+ "size",
139
+ "compact",
140
+ "width"
141
+ ])
142
+ ], 64));
143
+ }
144
+ });
145
+ //#endregion
146
+ export { D as default };
147
+
148
+ //# sourceMappingURL=VContextMenu.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VContextMenu.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../src/components/VContextMenu/VContextMenu.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @a11y @core\n/**\n * The native `contextmenu` event covers the right click, the long press on Android and the\n * Menu key. JavaScript places a zero-size anchor at the pointer so CSS anchoring can position\n * the panel and flip it near the viewport edges, and adds Shift+F10 where the platform lacks it.\n */\n\nimport { computed, provide, ref, shallowRef, useId } from 'vue'\n\nimport VMenuPanel from '../VMenu/VMenuPanel.vue'\nimport { menuAnchor, menuKey } from '../VMenu/context'\nimport type { MenuSize } from '../VMenu/context'\nimport { usePopoverModel } from '../../composables/usePopover'\nimport { isRtl } from '../../utils/direction'\nimport { clamp } from '../../utils/number'\n\ninterface ContextMenuProps {\n /** The element wrapping the zone. Any element able to hold the default slot's content. */\n as?: string\n /** How tall the rows are: 32, 40 or 48 pixels. Submenus inherit it. */\n size?: MenuSize\n /** Takes 4px off the height of every row, submenus included. */\n compact?: boolean\n /**\n * A width for the panel: a number is read as pixels, a string as any CSS length or\n * keyword. Submenus keep the default width.\n */\n width?: number | string\n /** Leaves the zone to the browser's own context menu. */\n disabled?: boolean\n}\n\n// The attributes belong on the zone, the one element of the three this component renders that\n// the consumer sees.\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<ContextMenuProps>(), {\n as: 'div',\n size: 'sm',\n compact: false,\n width: undefined,\n disabled: false,\n})\n\n/**\n * Whether the menu is showing. The browser's own dismissal (a click outside, Escape,\n * choosing a command) writes back to it. Opened from the model, the menu appears under\n * the focused element of the zone, or under the zone itself.\n */\nconst open = defineModel<boolean>('open', { default: false })\n\ndefineSlots<{\n /** The zone the menu belongs to. */\n default(): unknown\n /**\n * The contents of the menu: VMenuItem, VMenuGroup and VMenuSeparator. `target` is the\n * element the menu was opened on, so one menu can serve every item of a list.\n */\n menu(props: { target: Element | null }): unknown\n}>()\n\nconst zoneEl = ref<HTMLElement | null>(null)\nconst anchorEl = ref<HTMLElement | null>(null)\nconst panelRef = ref<InstanceType<typeof VMenuPanel> | null>(null)\nconst menuId = useId()\nconst anchor = menuAnchor(menuId)\n\n/** The element the menu was opened on, handed to the `menu` slot. */\nconst target = shallowRef<Element | null>(null)\n\n/** Where the focus goes back when the menu closes. */\nlet returnFocus: HTMLElement | null = null\nlet fromKeyboard = false\n\nprovide(menuKey, { closeAll: () => panelRef.value?.close() })\n\n/** Moves the invisible anchor the panel is positioned against. */\nfunction placeAnchor(x: number, y: number) {\n const el = anchorEl.value\n if (!el) return\n el.style.left = `${x}px`\n el.style.top = `${y}px`\n}\n\n/**\n * Puts the anchor under an element's start edge, kept inside the viewport so a zone taller\n * than the screen still opens a visible menu.\n */\nfunction placeUnder(el: Element) {\n const rect = el.getBoundingClientRect()\n const x = isRtl(el) ? rect.right : rect.left\n placeAnchor(clamp(x, 0, window.innerWidth), clamp(rect.bottom, 0, window.innerHeight))\n}\n\nfunction openMenu(on: Element | null, keyboard: boolean) {\n const panel = panelRef.value\n if (!panel) return\n target.value = on\n fromKeyboard = keyboard\n // Reopening at another spot must not take the focus inside the old panel as the place to\n // return to.\n const active = document.activeElement\n if (!panel.el?.contains(active)) {\n returnFocus = active instanceof HTMLElement && active !== document.body ? active : null\n }\n if (panel.shown) panel.close()\n panel.show()\n}\n\n/** The element of the zone holding the focus, or the zone itself. */\nfunction focusedInZone(): Element | null {\n const active = document.activeElement\n return active && zoneEl.value?.contains(active) ? active : zoneEl.value\n}\n\n// @keyboard\n// Keyboard openings carry no pointer position: the spec gives them an empty pointer type. Where\n// `contextmenu` is still a plain MouseEvent, no button is pressed or released for them; a\n// Control-click on macOS holds the primary button down.\nfunction isKeyboardEvent(event: MouseEvent): boolean {\n if ('pointerType' in event) return (event as PointerEvent).pointerType === ''\n return event.button !== 2 && event.buttons === 0\n}\n\nfunction onContextmenu(event: MouseEvent) {\n // A nested context menu, or the consumer's own handler, already answered this event.\n if (props.disabled || event.defaultPrevented) return\n const keyboard = isKeyboardEvent(event)\n // Shift is the way through to the browser's own menu, as Firefox already does by itself.\n if (event.shiftKey && !keyboard) return\n event.preventDefault()\n // Shift+F10 also fires a native `contextmenu` on some platforms, after the keydown below\n // has already opened the menu.\n if (keyboard && panelRef.value?.shown) return\n const on = event.target instanceof Element ? event.target : zoneEl.value\n if (keyboard) {\n if (on) placeUnder(on)\n openMenu(on, true)\n return\n }\n placeAnchor(event.clientX, event.clientY)\n // @core\n // macOS and Linux fire the event on the press, not the release. An auto popover opened while\n // the button is still down is dismissed by that release, so the opening waits until the\n // release has been dispatched.\n const pointer = (event as Partial<PointerEvent>).pointerType\n if (event.buttons !== 0 && pointer !== 'touch') {\n const release = () => {\n window.removeEventListener('pointerup', release, true)\n window.removeEventListener('pointercancel', release, true)\n setTimeout(() => openMenu(on, false))\n }\n window.addEventListener('pointerup', release, true)\n window.addEventListener('pointercancel', release, true)\n return\n }\n openMenu(on, false)\n}\n\n// @keyboard\n// Windows and Linux turn Shift+F10 into a `contextmenu` event by themselves; macOS does not.\nfunction onKeydown(event: KeyboardEvent) {\n if (props.disabled || event.defaultPrevented) return\n if (event.key !== 'F10' || !event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)\n return\n event.preventDefault()\n const on = focusedInZone()\n if (on) placeUnder(on)\n openMenu(on, true)\n}\n\n// @a11y\n// The keyboard lands on the first command, the pointer on the panel itself, as in VMenu. On\n// closing, the focus returns where it was unless it has deliberately moved elsewhere.\nfunction onToggle(value: boolean) {\n open.value = value\n if (value) {\n if (fromKeyboard) panelRef.value?.focusFirst()\n else panelRef.value?.focusPanel()\n return\n }\n const active = document.activeElement\n if (!active || active === document.body || panelRef.value?.el?.contains(active)) {\n if (returnFocus?.isConnected) returnFocus.focus()\n }\n}\n\n/** Opening from the model or from code without an event. */\nfunction showFromCode() {\n const on = focusedInZone()\n if (on) placeUnder(on)\n openMenu(on, false)\n}\n\nusePopoverModel(\n open,\n () => panelRef.value?.shown ?? false,\n showFromCode,\n () => panelRef.value?.close(),\n)\n\ndefineExpose({\n /**\n * Opens the menu. Given a mouse event, it opens at the pointer on the event's target;\n * otherwise under the focused element of the zone.\n */\n show(event?: MouseEvent) {\n if (!event) return showFromCode()\n placeAnchor(event.clientX, event.clientY)\n openMenu(event.target instanceof Element ? event.target : zoneEl.value, false)\n },\n /** Closes the menu, submenus included. */\n close: () => panelRef.value?.close(),\n /** The panel element. */\n el: computed(() => panelRef.value?.el ?? null),\n})\n</script>\n\n<template>\n <component\n :is=\"as\"\n ref=\"zoneEl\"\n v-bind=\"$attrs\"\n class=\"v-context-menu\"\n @contextmenu=\"onContextmenu\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </component>\n <span\n ref=\"anchorEl\"\n class=\"v-context-menu-anchor\"\n aria-hidden=\"true\"\n :style=\"{ 'anchor-name': anchor }\"\n />\n <!-- The browser's menu is kept off the panel: a context menu opened on top of this one\n would hide it, and a keyboard opening that already moved the focus inside must not be\n answered by the browser too -->\n <VMenuPanel\n :id=\"menuId\"\n ref=\"panelRef\"\n class=\"v-context-menu-panel\"\n placement=\"bottom-start\"\n :anchor=\"anchor\"\n :size=\"size\"\n :compact=\"compact\"\n :width=\"width\"\n @toggle=\"onToggle\"\n @contextmenu.prevent\n >\n <slot name=\"menu\" :target=\"target\" />\n </VMenuPanel>\n</template>\n\n<style>\n@layer vectis.components {\n /* A point, not a box: the panel's corner sits on it. */\n .v-context-menu-anchor {\n /* Physical, like the pointer coordinates written into it. */\n position: fixed;\n top: 0;\n left: 0;\n inline-size: 0;\n block-size: 0;\n pointer-events: none;\n }\n\n /*\n * Native context menus open against the pointer, with no gap. The gutter on the opposite side\n * stays, so a flipped panel keeps its distance from the viewport edge.\n */\n .v-context-menu-panel.v-floating {\n margin-block-start: 0;\n /* A pointer can sit in a corner of the viewport, where both directions must flip at once. */\n position-try-fallbacks:\n flip-block,\n flip-inline,\n flip-block flip-inline;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCA,IAAM,IAAQ,GAaR,IAAO,EAAoB,GAAC,MAA0B,GAYtD,IAAS,EAAwB,IAAI,GACrC,IAAW,EAAwB,IAAI,GACvC,IAAW,EAA4C,IAAI,GAC3D,IAAS,EAAM,GACf,IAAS,EAAW,CAAM,GAG1B,IAAS,EAA2B,IAAI,GAG1C,IAAkC,MAClC,IAAe;EAEnB,EAAQ,GAAS,EAAE,gBAAgB,EAAS,OAAO,MAAM,EAAE,CAAC;EAG5D,SAAS,EAAY,GAAW,GAAW;GACzC,IAAM,IAAK,EAAS;GACf,MACL,EAAG,MAAM,OAAO,GAAG,EAAE,KACrB,EAAG,MAAM,MAAM,GAAG,EAAE;EACtB;EAMA,SAAS,EAAW,GAAa;GAC/B,IAAM,IAAO,EAAG,sBAAsB;GAEtC,EAAY,EADF,EAAM,CAAE,IAAI,EAAK,QAAQ,EAAK,MACnB,GAAG,OAAO,UAAU,GAAG,EAAM,EAAK,QAAQ,GAAG,OAAO,WAAW,CAAC;EACvF;EAEA,SAAS,EAAS,GAAoB,GAAmB;GACvD,IAAM,IAAQ,EAAS;GACvB,IAAI,CAAC,GAAO;GAEZ,AADA,EAAO,QAAQ,GACf,IAAe;GAGf,IAAM,IAAS,SAAS;GAKxB,AAJK,EAAM,IAAI,SAAS,CAAM,MAC5B,IAAc,aAAkB,eAAe,MAAW,SAAS,OAAO,IAAS,OAEjF,EAAM,SAAO,EAAM,MAAM,GAC7B,EAAM,KAAK;EACb;EAGA,SAAS,IAAgC;GACvC,IAAM,IAAS,SAAS;GACxB,OAAO,KAAU,EAAO,OAAO,SAAS,CAAM,IAAI,IAAS,EAAO;EACpE;EAMA,SAAS,EAAgB,GAA4B;GAEnD,OADI,iBAAiB,IAAe,EAAuB,gBAAgB,KACpE,EAAM,WAAW,KAAK,EAAM,YAAY;EACjD;EAEA,SAAS,EAAc,GAAmB;GAExC,IAAI,EAAM,YAAY,EAAM,kBAAkB;GAC9C,IAAM,IAAW,EAAgB,CAAK;GAMtC,IAJI,EAAM,YAAY,CAAC,MACvB,EAAM,eAAe,GAGjB,KAAY,EAAS,OAAO,QAAO;GACvC,IAAM,IAAK,EAAM,kBAAkB,UAAU,EAAM,SAAS,EAAO;GACnE,IAAI,GAAU;IAEZ,AADI,KAAI,EAAW,CAAE,GACrB,EAAS,GAAI,EAAI;IACjB;GACF;GACA,EAAY,EAAM,SAAS,EAAM,OAAO;GAKxC,IAAM,IAAW,EAAgC;GACjD,IAAI,EAAM,YAAY,KAAK,MAAY,SAAS;IAC9C,IAAM,UAAgB;KAGpB,AAFA,OAAO,oBAAoB,aAAa,GAAS,EAAI,GACrD,OAAO,oBAAoB,iBAAiB,GAAS,EAAI,GACzD,iBAAiB,EAAS,GAAI,EAAK,CAAC;IACtC;IAEA,AADA,OAAO,iBAAiB,aAAa,GAAS,EAAI,GAClD,OAAO,iBAAiB,iBAAiB,GAAS,EAAI;IACtD;GACF;GACA,EAAS,GAAI,EAAK;EACpB;EAIA,SAAS,EAAU,GAAsB;GAEvC,IADI,EAAM,YAAY,EAAM,oBACxB,EAAM,QAAQ,SAAS,CAAC,EAAM,YAAY,EAAM,UAAU,EAAM,WAAW,EAAM,SACnF;GACF,EAAM,eAAe;GACrB,IAAM,IAAK,EAAc;GAEzB,AADI,KAAI,EAAW,CAAE,GACrB,EAAS,GAAI,EAAI;EACnB;EAKA,SAAS,EAAS,GAAgB;GAEhC,IADA,EAAK,QAAQ,GACT,GAAO;IACT,AAAI,IAAc,EAAS,OAAO,WAAW,IACxC,EAAS,OAAO,WAAW;IAChC;GACF;GACA,IAAM,IAAS,SAAS;GACxB,CAAI,CAAC,KAAU,MAAW,SAAS,QAAQ,EAAS,OAAO,IAAI,SAAS,CAAM,MACxE,GAAa,eAAa,EAAY,MAAM;EAEpD;EAGA,SAAS,IAAe;GACtB,IAAM,IAAK,EAAc;GAEzB,AADI,KAAI,EAAW,CAAE,GACrB,EAAS,GAAI,EAAK;EACpB;SAEA,EACE,SACM,EAAS,OAAO,SAAS,IAC/B,SACM,EAAS,OAAO,MAAM,CAC9B,GAEA,EAAa;GAKX,KAAK,GAAoB;IACvB,IAAI,CAAC,GAAO,OAAO,EAAa;IAEhC,AADA,EAAY,EAAM,SAAS,EAAM,OAAO,GACxC,EAAS,EAAM,kBAAkB,UAAU,EAAM,SAAS,EAAO,OAAO,EAAK;GAC/E;GAEA,aAAa,EAAS,OAAO,MAAM;GAEnC,IAAI,QAAe,EAAS,OAAO,MAAM,IAAI;EAC/C,CAAC;SAIC,EASY,EARL,EAAA,EAAE,GADT,EASY;aAPN;IAAJ,KAAI;MACIA,EAAAA,QAAM;IACd,OAAM;IACQ;IACJ;;qBAEF,CAAR,EAAQ,EAAA,QAAA,SAAA,CAAA,CAAA;;;GAEV,EAKE,QAAA;aAJI;IAAJ,KAAI;IACJ,OAAM;IACN,eAAY;IACX,OAAK,EAAA,EAAA,eAAmB,EAAA,CAAA,EAAM,CAAA;;GAKjC,EAaa,GAAA;IAZV,IAAI,EAAA,CAAA;aACD;IAAJ,KAAI;IACJ,OAAM;IACN,WAAU;IACT,QAAQ,EAAA,CAAA;IACR,MAAM,EAAA;IACN,SAAS,EAAA;IACT,OAAO,EAAA;IACC;IACR,eAAW,AAAA,EAAA,OAAA,QAAZ,CAAA,GAAoB,CAAA,SAAA,CAAA;;qBAEiB,CAArC,EAAqC,EAAA,QAAA,QAAA,EAAlB,QAAQ,EAAA,MAAM,CAAA,CAAA,CAAA"}
@@ -1,2 +1,2 @@
1
1
  @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
- @layer vectis.components{.v-data-table{--data-table-pad-block:var(--vectis-space-3);--data-table-pad-inline:var(--vectis-space-3);--data-table-head-pad-block:var(--vectis-space-2);--data-table-frame-pad:0px;font-family:var(--vectis-text-family);flex-direction:column;block-size:100%;display:flex;container-type:inline-size}.v-data-table[data-compact]{--data-table-pad-block:var(--vectis-space-2);--data-table-pad-inline:var(--vectis-space-2);--data-table-head-pad-block:var(--vectis-space-1)}.v-data-table[data-variant=outlined]{--data-table-frame-pad:var(--data-table-pad-inline);background:var(--vectis-color-surface-raised);border:1px solid var(--vectis-color-border);border-radius:var(--vectis-radius-surface);overflow:clip}.v-data-table-scroller{flex:auto;min-block-size:0;overflow:auto}.v-data-table-toolbar{justify-content:space-between;align-items:center;gap:var(--vectis-space-3);padding-block-start:var(--data-table-frame-pad);padding-block-end:var(--vectis-space-3);padding-inline:var(--data-table-frame-pad);flex-wrap:wrap;flex:none;display:flex}.v-data-table-title{--typography-color:var(--vectis-color-text)}.v-data-table-toolbar .v-input{inline-size:var(--vectis-control-size-table-search);max-inline-size:100%}.v-data-table-table{border-collapse:collapse;width:100%;font-size:var(--vectis-text-body-md-size);color:var(--vectis-color-text)}.v-data-table-caption{padding-block-end:var(--vectis-space-3);padding-inline:var(--data-table-frame-pad);text-align:start;font-size:var(--vectis-text-body-md-size);color:var(--vectis-color-text-muted)}.v-data-table-table th{padding:var(--data-table-head-pad-block) var(--data-table-pad-inline);text-align:start;font-size:var(--vectis-text-body-md-size);font-weight:var(--vectis-font-weight-semibold);color:var(--vectis-color-text-muted);background-color:var(--vectis-color-surface-muted);border-block-end:1px solid var(--vectis-color-border)}.v-data-table-table td{padding:var(--data-table-pad-block) var(--data-table-pad-inline);border-block-end:1px solid var(--vectis-color-border)}.v-data-table-table tbody tr:last-child td{border-block-end:none}.v-data-table-table [data-align=end]{text-align:end}.v-data-table-table [data-align=center]{text-align:center}.v-data-table-stack-label{display:none}.v-data-table-table .v-data-table-select{inline-size:0}.v-data-table[data-striped] tbody tr:nth-child(2n){background-color:var(--vectis-color-surface-sunken)}.v-data-table[data-selectable] tbody tr[data-selected]{background-color:var(--vectis-color-accent-surface)}@media (forced-colors:active){.v-data-table[data-selectable] tbody tr[data-selected]{outline:var(--vectis-focus-ring-width) solid Highlight;outline-offset:calc(-1 * var(--vectis-focus-ring-width))}}.v-data-table[data-sticky-header] th{z-index:1;position:sticky;inset-block-start:0}.v-data-table-sort{--vectis-icon-size:var(--vectis-icon-size-md);--vectis-icon-opsz:20;align-items:center;gap:var(--vectis-space-1);color:inherit;font:inherit;cursor:pointer;border-radius:min(var(--vectis-radius-interactive), .5lh);background:0 0;border:none;padding:0;display:inline-flex}.v-data-table-sort:hover{color:var(--vectis-color-text)}.v-data-table-sort:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}.v-data-table-sort-icon{opacity:.35}.v-data-table-sort[data-direction] .v-data-table-sort-icon{opacity:1}.v-data-table-state{padding:var(--vectis-space-6);text-align:center;color:var(--vectis-color-text-muted)}.v-data-table-state-loading{align-items:center;gap:var(--vectis-space-2);display:inline-flex}.v-data-table-footer{justify-content:flex-end;align-items:center;gap:var(--vectis-space-4);padding-block-start:var(--vectis-space-3);padding-block-end:var(--data-table-frame-pad);padding-inline:var(--data-table-frame-pad);flex-wrap:wrap;flex:none;display:flex}.v-data-table-footer-end{justify-content:flex-end;align-items:center;gap:var(--vectis-space-4);flex-wrap:wrap;margin-inline-start:auto;display:flex}.v-data-table-selection,.v-data-table-range,.v-data-table-per-page-label{font-size:var(--vectis-text-body-md-size);color:var(--vectis-color-text-muted)}.v-data-table-per-page{align-items:center;gap:var(--vectis-space-2);display:flex}@container (width<=640px){.v-data-table[data-responsive=stack] .v-data-table-head{clip-path:inset(50%);width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.v-data-table[data-responsive=stack] .v-data-table-head :is(.v-data-table-sort,.v-checkbox){visibility:hidden}.v-data-table[data-responsive=stack] .v-data-table-stack-label{display:inline}.v-data-table[data-responsive=stack] tbody tr{padding-block:var(--vectis-space-2);border-block-end:1px solid var(--vectis-color-border);display:block}.v-data-table[data-responsive=stack] tbody tr:last-child{border-block-end:none}.v-data-table[data-responsive=stack] td{justify-content:space-between;align-items:baseline;gap:var(--vectis-space-4);padding:var(--vectis-space-1) var(--vectis-space-2);text-align:end;border:none;display:flex}.v-data-table[data-responsive=stack] td:before{content:attr(data-label);font-size:var(--vectis-text-overline-size);font-weight:var(--vectis-text-overline-weight);letter-spacing:var(--vectis-text-overline-tracking);color:var(--vectis-color-text-muted)}.v-data-table[data-responsive=stack] td.v-data-table-select{justify-content:flex-start}.v-data-table[data-responsive=stack] td.v-data-table-select:before{content:none}.v-data-table-search{flex:100%}}}
2
+ @layer vectis.components{.v-data-table{--data-table-pad-block:var(--vectis-space-3);--data-table-pad-inline:var(--vectis-space-3);--data-table-head-pad-block:var(--vectis-space-2);--data-table-frame-pad:0px;font-family:var(--vectis-text-family);flex-direction:column;block-size:100%;display:flex}.v-data-table[data-compact]{--data-table-pad-block:var(--vectis-space-2);--data-table-pad-inline:var(--vectis-space-2);--data-table-head-pad-block:var(--vectis-space-1)}.v-data-table-frame{flex-direction:column;flex:auto;min-block-size:0;display:flex}.v-data-table:is([data-variant=outline],[data-variant=elevated],[data-variant=filled])>.v-data-table-frame{--data-table-frame-pad:var(--data-table-pad-inline);border-radius:var(--vectis-radius-surface);border:1px solid #0000;overflow:clip}.v-data-table[data-variant=outline]>.v-data-table-frame{background:var(--vectis-color-surface);border-color:var(--vectis-color-border)}.v-data-table[data-variant=elevated]>.v-data-table-frame{background:var(--vectis-color-surface-raised);box-shadow:var(--vectis-shadow-sm);border:none}.v-data-table[data-variant=filled]{--data-table-head-bg:color-mix(in oklab, var(--vectis-color-surface-muted), var(--vectis-color-text) 4%)}.v-data-table[data-variant=filled]>.v-data-table-frame{background:var(--vectis-color-surface-muted)}.v-data-table-scroller{flex:auto;min-block-size:0;position:relative;overflow:auto}.v-data-table[data-variant=flat]>.v-data-table-frame>.v-data-table-scroller{border-radius:var(--vectis-radius-surface)}.v-data-table-header,.v-data-table-toolbar{align-items:center;gap:var(--vectis-space-3);flex-wrap:wrap;flex:none;padding-block-end:var(--vectis-space-3);display:flex}.v-data-table-titles{flex-direction:column;min-inline-size:0;display:flex}.v-data-table-title{--typography-color:var(--vectis-color-text)}.v-data-table-header>.v-data-table-search{inline-size:var(--vectis-control-size-table-search);max-inline-size:100%;margin-inline-start:auto}.v-data-table-table{border-collapse:collapse;width:100%;font-size:var(--vectis-text-body-md-size);color:var(--vectis-color-text)}.v-data-table-table th{padding:var(--data-table-head-pad-block) var(--data-table-pad-inline);text-align:start;font-size:var(--vectis-text-body-md-size);font-weight:var(--vectis-font-weight-semibold);color:var(--vectis-color-text-muted);background-color:var(--data-table-head-bg,var(--vectis-color-surface-muted));border-block-end:1px solid var(--vectis-color-border)}.v-data-table-table td{padding:var(--data-table-pad-block) var(--data-table-pad-inline);border-block-end:1px solid var(--vectis-color-border)}.v-data-table-table tbody tr:last-child td{border-block-end:none}.v-data-table-table [data-align=end]{text-align:end}.v-data-table-table [data-align=center]{text-align:center}.v-data-table-table .v-data-table-select{inline-size:0}.v-data-table[data-striped] tbody tr[data-stripe]{background-color:var(--vectis-color-surface-sunken)}.v-data-table[data-selectable] tbody tr[data-selected]{background-color:var(--vectis-color-accent-surface)}@media (forced-colors:active){.v-data-table[data-selectable] tbody tr[data-selected]{outline:var(--vectis-focus-ring-width) solid Highlight;outline-offset:calc(-1 * var(--vectis-focus-ring-width))}}.v-data-table[data-sticky-header] th{z-index:1;position:sticky;inset-block-start:0}.v-data-table-sort{--vectis-icon-size:var(--vectis-icon-size-md);--vectis-icon-opsz:20;align-items:center;gap:var(--vectis-space-1);color:inherit;font:inherit;cursor:pointer;border-radius:min(var(--vectis-radius-interactive), .5lh);background:0 0;border:none;padding:0;display:inline-flex}.v-data-table-sort:hover{color:var(--vectis-color-text)}.v-data-table-sort:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}.v-data-table-sort-icon{opacity:.35}.v-data-table-sort[data-direction] .v-data-table-sort-icon{opacity:1}.v-data-table[data-virtual] .v-data-table-scroller{overflow-anchor:none}.v-data-table-table .v-data-table-spacer td{border:none;padding:0}.v-data-table-table .v-data-table-more td{block-size:var(--vectis-control-height-md);padding:var(--vectis-space-2);text-align:center;color:var(--vectis-color-text-muted);border:none}.v-data-table-state{padding:var(--vectis-space-6);text-align:center;color:var(--vectis-color-text-muted)}.v-data-table-state>.v-empty-state[data-size]{padding:0}.v-data-table-state-loading{align-items:center;gap:var(--vectis-space-2);display:inline-flex}.v-data-table-footer{justify-content:flex-end;align-items:center;gap:var(--vectis-space-4);padding-block-start:var(--vectis-space-3);padding-block-end:var(--data-table-frame-pad);padding-inline:var(--data-table-frame-pad);flex-wrap:wrap;flex:none;display:flex}.v-data-table-footer-end{justify-content:flex-end;align-items:center;gap:var(--vectis-space-4);flex-wrap:wrap;margin-inline-start:auto;display:flex}.v-data-table-selection,.v-data-table-range,.v-data-table-per-page-label{font-size:var(--vectis-text-body-md-size);color:var(--vectis-color-text-muted)}.v-data-table-per-page{align-items:center;gap:var(--vectis-space-2);display:flex}}
@@ -68,10 +68,8 @@ export interface DataTableRange {
68
68
  /** How many rows there are in all. */
69
69
  total: number;
70
70
  }
71
- /** How much decoration the table carries. */
72
- export type DataTableVariant = 'flat' | 'outlined';
73
- /** What a narrow container does to the rows. */
74
- export type DataTableResponsive = 'scroll' | 'stack';
71
+ /** How the rows are set off from the page: nothing, a border, a shadow, or a muted fill. */
72
+ export type DataTableVariant = 'flat' | 'outline' | 'elevated' | 'filled';
75
73
  export interface DataTableProps<Row extends Record<string, unknown>> {
76
74
  /** The columns to show, in order. */
77
75
  columns: DataTableColumn[];
@@ -80,20 +78,12 @@ export interface DataTableProps<Row extends Record<string, unknown>> {
80
78
  /** Which field identifies a row. */
81
79
  rowKey?: string;
82
80
  /**
83
- * A sentence describing what the table holds. It is announced before the table itself,
84
- * and is what tells a screen reader user whether it is worth exploring.
85
- */
86
- caption?: string;
87
- /**
88
- * How the table is framed: nothing at all, or a card with a raised background, a border
89
- * and rounded corners.
81
+ * How the rows and the footer are framed: nothing at all (`flat`, the default), or a card
82
+ * with rounded corners set off by a border on the page surface (`outline`), a shadow over a
83
+ * raised surface (`elevated`), or a muted fill (`filled`). The header and the toolbar stay
84
+ * outside the frame.
90
85
  */
91
86
  variant?: DataTableVariant;
92
- /**
93
- * What happens when the component is too narrow: the table scrolls sideways, or each
94
- * row becomes a card with its column headings repeated inside it.
95
- */
96
- responsive?: DataTableResponsive;
97
87
  /** Shows that the rows are being loaded. */
98
88
  loading?: boolean;
99
89
  /**
@@ -101,11 +91,22 @@ export interface DataTableProps<Row extends Record<string, unknown>> {
101
91
  * system dictionary.
102
92
  */
103
93
  loadingText?: string;
104
- /** What is said when there is no row to show. It falls back to the design system dictionary. */
94
+ /**
95
+ * The title of the empty state shown when there is no row to show. It falls back to the design
96
+ * system dictionary, which words a table with no data and a search with no match differently.
97
+ */
105
98
  emptyText?: string;
106
- /** A title above the table, on the left of its toolbar. */
99
+ /**
100
+ * A title above the table, which also names it for assistive technology. It is ignored when
101
+ * the `#header` slot replaces the title and subtitle.
102
+ */
107
103
  title?: string;
108
- /** Adds a search field to the toolbar. */
104
+ /**
105
+ * A line under the title saying what the table holds. It also describes the table for
106
+ * assistive technology.
107
+ */
108
+ subtitle?: string;
109
+ /** Adds a search field to the header. */
109
110
  searchable?: boolean;
110
111
  /** What that field says while empty. It falls back to the design system dictionary. */
111
112
  searchPlaceholder?: string;
@@ -130,7 +131,7 @@ export interface DataTableProps<Row extends Record<string, unknown>> {
130
131
  /** Tightens the cells by one step, and everything the table renders with them. */
131
132
  compact?: boolean;
132
133
  /**
133
- * The height of the whole component, toolbar and pagination included: a number is read as
134
+ * The height of the whole component, header, toolbar and pagination included: a number is read as
134
135
  * pixels, anything else as a CSS length. Left out, the table takes its parent's height
135
136
  * whenever the parent has one.
136
137
  */
@@ -181,6 +182,17 @@ export interface DataTableProps<Row extends Record<string, unknown>> {
181
182
  * the server can answer it.
182
183
  */
183
184
  serverSide?: boolean;
185
+ /**
186
+ * Renders only the rows near the visible part of the table, for tables of thousands of rows.
187
+ * It needs a bounded height, like `stickyHeader`. Rows are measured as they render, so they
188
+ * may vary in height, and each one is announced with its place in the whole table.
189
+ */
190
+ virtual?: boolean;
191
+ /**
192
+ * Says that more rows are to come, which makes the table ask for them through `load-more` as
193
+ * the end of its rows comes into view. While `loading`, the rows already there stay on show.
194
+ */
195
+ hasMore?: boolean;
184
196
  }
185
197
  declare const __VLS_export: <Row extends Record<string, unknown>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
186
198
  props: import('vue').PublicProps & __VLS_PrettifyLocal<(DataTableProps<Row> & {
@@ -203,6 +215,7 @@ declare const __VLS_export: <Row extends Record<string, unknown>>(__VLS_props: N
203
215
  search?: string;
204
216
  }) & {
205
217
  "onUpdate:selected"?: ((value: DataTableRowId[]) => any) | undefined;
218
+ "onLoad-more"?: (() => any) | undefined;
206
219
  "onUpdate:params"?: ((params: DataTableParams) => any) | undefined;
207
220
  "onUpdate:sort"?: ((value: DataTableSort | null) => any) | undefined;
208
221
  "onUpdate:page"?: ((value: number) => any) | undefined;
@@ -219,8 +232,13 @@ declare const __VLS_export: <Row extends Record<string, unknown>>(__VLS_props: N
219
232
  slots: {
220
233
  [name: `cell-${string}`]: (scope: DataTableCellSlotProps<Row>) => unknown;
221
234
  [name: `head-${string}`]: (scope: DataTableHeadSlotProps) => unknown;
222
- /** The left side of the toolbar, replacing the `title` prop. */
223
- title?(): unknown;
235
+ /**
236
+ * Replaces the title and subtitle with content of your own; the search field stays beside it.
237
+ * Name the table with `aria-label` or `aria-labelledby` then.
238
+ */
239
+ header?(): unknown;
240
+ /** A row between the header and the table, for actions and filters. */
241
+ toolbar?(): unknown;
224
242
  /** What the table shows while its rows are loading, replacing the spinner and its text. */
225
243
  loading?(): unknown;
226
244
  /**
@@ -229,7 +247,7 @@ declare const __VLS_export: <Row extends Record<string, unknown>>(__VLS_props: N
229
247
  */
230
248
  empty?(scope: DataTableEmptySlotProps): unknown;
231
249
  };
232
- emit: ((evt: "update:params", params: DataTableParams) => void) & (((event: "update:selected", value: DataTableRowId[]) => void) & ((event: "update:sort", value: DataTableSort | null) => void) & ((event: "update:page", value: number) => void) & ((event: "update:perPage", value: number | undefined) => void) & ((event: "update:search", value: string) => void));
250
+ emit: (((evt: "load-more") => void) & ((evt: "update:params", params: DataTableParams) => void)) & (((event: "update:selected", value: DataTableRowId[]) => void) & ((event: "update:sort", value: DataTableSort | null) => void) & ((event: "update:page", value: number) => void) & ((event: "update:perPage", value: number | undefined) => void) & ((event: "update:search", value: string) => void));
233
251
  }>) => import('vue').VNode & {
234
252
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
235
253
  };