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.
- package/dist/components/VAccordion/VAccordion.css +1 -1
- package/dist/components/VAccordion/VAccordion.d.ts +6 -5
- package/dist/components/VAccordion/VAccordion.js.map +1 -1
- package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VAccordion/VAccordionItem.css +1 -1
- package/dist/components/VAccordion/VAccordionItem.d.ts +1 -1
- package/dist/components/VAccordion/VAccordionItem.js.map +1 -1
- package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VAlert/VAlert.css +2 -0
- package/dist/components/VAlert/VAlert.d.ts +73 -0
- package/dist/components/VAlert/VAlert.js +9 -0
- package/dist/components/VAlert/VAlert.js.map +1 -0
- package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/VAlert/VAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VAvatar/VAvatar.d.ts +2 -2
- package/dist/components/VAvatar/VAvatarGroup.d.ts +1 -1
- package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/VBadge/VBadge.d.ts +3 -3
- package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/components/VButton/VButton.d.ts +4 -4
- package/dist/components/VButton/VButtonGroup.css +1 -1
- package/dist/components/VButton/VButtonGroup.d.ts +2 -2
- package/dist/components/VButton/VButtonGroup.js.map +1 -1
- package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendar.css +1 -1
- package/dist/components/VCalendar/VCalendar.d.ts +7 -1
- package/dist/components/VCalendar/VCalendar.js.map +1 -1
- package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js +20 -18
- package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarEvent.js.map +1 -1
- package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarMonth.css +1 -1
- package/dist/components/VCalendar/VCalendarMonth.d.ts +2 -2
- package/dist/components/VCalendar/VCalendarMonth.js.map +1 -1
- package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarTimeGrid.css +1 -1
- package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +3 -3
- package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -1
- package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/VCalendarYear.css +1 -1
- package/dist/components/VCalendar/VCalendarYear.js.map +1 -1
- package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCalendar/gesture.d.ts +1 -16
- package/dist/components/VCalendar/gesture.js +1 -1
- package/dist/components/VCalendar/gesture.js.map +1 -1
- package/dist/components/VCalendar/types.d.ts +2 -0
- package/dist/components/VCard/VCard.css +2 -0
- package/dist/components/VCard/VCard.d.ts +87 -0
- package/dist/components/VCard/VCard.js +9 -0
- package/dist/components/VCard/VCard.js.map +1 -0
- package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/VCard/VCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCarousel/VCarousel.d.ts +1 -1
- package/dist/components/VCarousel/VCarousel.js.map +1 -1
- package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +18 -18
- package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCheckbox/VCheckMark.css +2 -0
- package/dist/components/VCheckbox/VCheckMark.js +9 -0
- package/dist/components/VCheckbox/VCheckMark.js.map +1 -0
- package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/components/VCheckbox/VCheckMark.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCheckbox/VCheckbox.css +1 -1
- package/dist/components/VCheckbox/VCheckbox.d.ts +8 -3
- package/dist/components/VCheckbox/VCheckbox.js.map +1 -1
- package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js +54 -69
- package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VChip/VChip.d.ts +6 -6
- package/dist/components/VChip/VChip.js.map +1 -1
- package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +26 -26
- package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VColorInput/VColorInput.css +2 -0
- package/dist/components/VColorInput/VColorInput.d.ts +113 -0
- package/dist/components/VColorInput/VColorInput.js +9 -0
- package/dist/components/VColorInput/VColorInput.js.map +1 -0
- package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js +230 -0
- package/dist/components/VColorInput/VColorInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VColorPicker/VColorPicker.css +2 -0
- package/dist/components/VColorPicker/VColorPicker.d.ts +67 -0
- package/dist/components/VColorPicker/VColorPicker.js +9 -0
- package/dist/components/VColorPicker/VColorPicker.js.map +1 -0
- package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js +390 -0
- package/dist/components/VColorPicker/VColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VColorPicker/color.d.ts +42 -0
- package/dist/components/VColorPicker/color.js +158 -0
- package/dist/components/VColorPicker/color.js.map +1 -0
- package/dist/components/VCombobox/VCombobox.css +1 -1
- package/dist/components/VCombobox/VCombobox.d.ts +46 -60
- package/dist/components/VCombobox/VCombobox.js.map +1 -1
- package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +271 -372
- package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VCommandPalette/VCommandPalette.css +2 -0
- package/dist/components/VCommandPalette/VCommandPalette.d.ts +163 -0
- package/dist/components/VCommandPalette/VCommandPalette.js +9 -0
- package/dist/components/VCommandPalette/VCommandPalette.js.map +1 -0
- package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js +321 -0
- package/dist/components/VCommandPalette/VCommandPalette.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.css +2 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.d.ts +38 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.js +9 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.js.map +1 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js +69 -0
- package/dist/components/VCommandPalette/VCommandPaletteItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VContextMenu/VContextMenu.css +2 -0
- package/dist/components/VContextMenu/VContextMenu.d.ts +66 -0
- package/dist/components/VContextMenu/VContextMenu.js +9 -0
- package/dist/components/VContextMenu/VContextMenu.js.map +1 -0
- package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js +148 -0
- package/dist/components/VContextMenu/VContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VDataTable/VDataTable.css +1 -1
- package/dist/components/VDataTable/VDataTable.d.ts +41 -23
- package/dist/components/VDataTable/VDataTable.js.map +1 -1
- package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +291 -186
- package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDateInput/VDateInput.d.ts +27 -7
- package/dist/components/VDateInput/VDateInput.js.map +1 -1
- package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +170 -162
- package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDatePicker/VDatePicker.d.ts +3 -3
- package/dist/components/VDatePicker/VDatePicker.js.map +1 -1
- package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +228 -227
- package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDatePicker/keyboard.d.ts +7 -7
- package/dist/components/VDatePicker/keyboard.js +8 -6
- package/dist/components/VDatePicker/keyboard.js.map +1 -1
- package/dist/components/VDatePicker/names.js +16 -20
- package/dist/components/VDatePicker/names.js.map +1 -1
- package/dist/components/VDialog/VDialog.d.ts +2 -4
- package/dist/components/VDialog/VDialog.js.map +1 -1
- package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +46 -77
- package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VDrawer/VDrawer.css +2 -0
- package/dist/components/VDrawer/VDrawer.d.ts +102 -0
- package/dist/components/VDrawer/VDrawer.js +9 -0
- package/dist/components/VDrawer/VDrawer.js.map +1 -0
- package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js +128 -0
- package/dist/components/VDrawer/VDrawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VEmptyState/VEmptyState.css +2 -0
- package/dist/components/VEmptyState/VEmptyState.d.ts +43 -0
- package/dist/components/VEmptyState/VEmptyState.js +9 -0
- package/dist/components/VEmptyState/VEmptyState.js.map +1 -0
- package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js +48 -0
- package/dist/components/VEmptyState/VEmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VField/VField.css +2 -0
- package/dist/components/VField/VField.d.ts +84 -0
- package/dist/components/VField/VField.js +9 -0
- package/dist/components/VField/VField.js.map +1 -0
- package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/components/VField/VField.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VField/VFieldAnnouncer.d.ts +7 -0
- package/dist/components/VField/VFieldAnnouncer.js +7 -0
- package/dist/components/VField/VFieldAnnouncer.js.map +1 -0
- package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js +19 -0
- package/dist/components/VField/VFieldAnnouncer.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VField/VFieldMessage.d.ts +11 -0
- package/dist/components/VField/VFieldMessage.js +7 -0
- package/dist/components/VField/VFieldMessage.js.map +1 -0
- package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/components/VField/VFieldMessage.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFieldset/VFieldset.css +2 -0
- package/dist/components/VFieldset/VFieldset.d.ts +52 -0
- package/dist/components/VFieldset/VFieldset.js +9 -0
- package/dist/components/VFieldset/VFieldset.js.map +1 -0
- package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/components/VFieldset/VFieldset.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VFileInput/VFileInput.css +1 -1
- package/dist/components/VFileInput/VFileInput.d.ts +31 -7
- package/dist/components/VFileInput/VFileInput.js.map +1 -1
- package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +168 -161
- package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VFilePicker/VFilePicker.d.ts +4 -4
- package/dist/components/VHotkeys/VHotkeys.css +1 -1
- package/dist/components/VHotkeys/VHotkeys.js.map +1 -1
- package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +27 -30
- package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VHotkeys/platform.d.ts +2 -0
- package/dist/components/VHotkeys/platform.js +24 -5
- package/dist/components/VHotkeys/platform.js.map +1 -1
- package/dist/components/VHoverCard/VHoverCard.css +2 -0
- package/dist/components/VHoverCard/VHoverCard.d.ts +62 -0
- package/dist/components/VHoverCard/VHoverCard.js +9 -0
- package/dist/components/VHoverCard/VHoverCard.js.map +1 -0
- package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js +97 -0
- package/dist/components/VHoverCard/VHoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VIcon/icons/add.d.ts +5 -0
- package/dist/components/VIcon/icons/add.js +9 -0
- package/dist/components/VIcon/icons/add.js.map +1 -0
- package/dist/components/VIcon/icons/colorize.d.ts +5 -0
- package/dist/components/VIcon/icons/colorize.js +9 -0
- package/dist/components/VIcon/icons/colorize.js.map +1 -0
- package/dist/components/VIcon/icons/inbox.d.ts +5 -0
- package/dist/components/VIcon/icons/inbox.js +9 -0
- package/dist/components/VIcon/icons/inbox.js.map +1 -0
- package/dist/components/VIcon/icons/index.d.ts +42 -2
- package/dist/components/VIcon/icons/index.js +88 -72
- package/dist/components/VIcon/icons/index.js.map +1 -1
- package/dist/components/VIcon/icons/names.d.ts +2 -2
- package/dist/components/VIcon/icons/names.js +1 -1
- package/dist/components/VIcon/icons/names.js.map +1 -1
- package/dist/components/VIcon/icons/open_in_new.d.ts +5 -0
- package/dist/components/VIcon/icons/open_in_new.js +9 -0
- package/dist/components/VIcon/icons/open_in_new.js.map +1 -0
- package/dist/components/VIcon/icons/priority_high.d.ts +5 -0
- package/dist/components/VIcon/icons/priority_high.js +9 -0
- package/dist/components/VIcon/icons/priority_high.js.map +1 -0
- package/dist/components/VIcon/icons/remove.d.ts +5 -0
- package/dist/components/VIcon/icons/remove.js +9 -0
- package/dist/components/VIcon/icons/remove.js.map +1 -0
- package/dist/components/VIcon/icons/search_off.d.ts +5 -0
- package/dist/components/VIcon/icons/search_off.js +9 -0
- package/dist/components/VIcon/icons/search_off.js.map +1 -0
- package/dist/components/VIcon/icons/star.d.ts +5 -0
- package/dist/components/VIcon/icons/star.js +9 -0
- package/dist/components/VIcon/icons/star.js.map +1 -0
- package/dist/components/VIconButton/VIconButton.d.ts +4 -4
- package/dist/components/VInput/VInput.css +1 -1
- package/dist/components/VInput/VInput.d.ts +51 -2
- package/dist/components/VInput/VInput.js.map +1 -1
- package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +129 -106
- package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VInput/VInputGroup.css +1 -1
- package/dist/components/VInput/VInputGroup.d.ts +20 -0
- package/dist/components/VInput/VInputGroup.js.map +1 -1
- package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js +50 -51
- package/dist/components/VInput/VInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VInputOTP/VInputOTP.css +1 -1
- package/dist/components/VInputOTP/VInputOTP.d.ts +27 -4
- package/dist/components/VInputOTP/VInputOTP.js.map +1 -1
- package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +131 -113
- package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VLink/VLink.css +2 -0
- package/dist/components/VLink/VLink.d.ts +53 -0
- package/dist/components/VLink/VLink.js +9 -0
- package/dist/components/VLink/VLink.js.map +1 -0
- package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js +58 -0
- package/dist/components/VLink/VLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxChevron.css +2 -0
- package/dist/components/VListbox/VListboxChevron.d.ts +12 -0
- package/dist/components/VListbox/VListboxChevron.js +9 -0
- package/dist/components/VListbox/VListboxChevron.js.map +1 -0
- package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js +25 -0
- package/dist/components/VListbox/VListboxChevron.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxGroup.css +2 -0
- package/dist/components/VListbox/VListboxGroup.d.ts +27 -0
- package/dist/components/VListbox/VListboxGroup.js +9 -0
- package/dist/components/VListbox/VListboxGroup.js.map +1 -0
- package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js +21 -0
- package/dist/components/VListbox/VListboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxOption.css +2 -0
- package/dist/components/{VCombobox/VComboboxOption.d.ts → VListbox/VListboxOption.d.ts} +4 -4
- package/dist/components/VListbox/VListboxOption.js +9 -0
- package/dist/components/VListbox/VListboxOption.js.map +1 -0
- 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
- package/dist/components/VListbox/VListboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxPanel.css +2 -0
- package/dist/components/VListbox/VListboxPanel.d.ts +59 -0
- package/dist/components/VListbox/VListboxPanel.js +9 -0
- package/dist/components/VListbox/VListboxPanel.js.map +1 -0
- package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/components/VListbox/VListboxPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxSeparator.css +2 -0
- package/dist/components/VListbox/VListboxSeparator.d.ts +3 -0
- package/dist/components/VListbox/VListboxSeparator.js +9 -0
- package/dist/components/VListbox/VListboxSeparator.js.map +1 -0
- 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
- package/dist/components/VListbox/VListboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VListbox/VListboxValues.css +2 -0
- package/dist/components/VListbox/VListboxValues.d.ts +52 -0
- package/dist/components/VListbox/VListboxValues.js +9 -0
- package/dist/components/VListbox/VListboxValues.js.map +1 -0
- package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js +103 -0
- package/dist/components/VListbox/VListboxValues.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VMenu/VMenu.d.ts +1 -1
- package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/components/VMenu/VMenuItem.d.ts +1 -1
- package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +16 -16
- package/dist/components/VMenu/VMenuPanel.d.ts +2 -2
- package/dist/components/VMenu/VMenuPanel.js.map +1 -1
- package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VMeter/VMeter.css +2 -0
- package/dist/components/VMeter/VMeter.d.ts +77 -0
- package/dist/components/VMeter/VMeter.js +9 -0
- package/dist/components/VMeter/VMeter.js.map +1 -0
- package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js +113 -0
- package/dist/components/VMeter/VMeter.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VNumberInput/VNumberInput.css +2 -0
- package/dist/components/VNumberInput/VNumberInput.d.ts +114 -0
- package/dist/components/VNumberInput/VNumberInput.js +9 -0
- package/dist/components/VNumberInput/VNumberInput.js.map +1 -0
- package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js +251 -0
- package/dist/components/VNumberInput/VNumberInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VNumberInput/number.d.ts +30 -0
- package/dist/components/VNumberInput/number.js +38 -0
- package/dist/components/VNumberInput/number.js.map +1 -0
- package/dist/components/VPagination/VPagination.css +1 -1
- package/dist/components/VPagination/VPagination.d.ts +4 -12
- package/dist/components/VPagination/VPagination.js.map +1 -1
- package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +89 -96
- package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VProgressCircular/VProgressCircular.d.ts +2 -2
- package/dist/components/VProgressLinear/VProgressLinear.css +1 -1
- package/dist/components/VProgressLinear/VProgressLinear.d.ts +10 -7
- package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js +52 -34
- package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VRadio/VRadio.d.ts +8 -3
- package/dist/components/VRadio/VRadio.js.map +1 -1
- package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js +52 -46
- package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VRating/VRating.css +2 -0
- package/dist/components/VRating/VRating.d.ts +92 -0
- package/dist/components/VRating/VRating.js +9 -0
- package/dist/components/VRating/VRating.js.map +1 -0
- package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js +158 -0
- package/dist/components/VRating/VRating.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VResizable/VResizable.css +2 -0
- package/dist/components/VResizable/VResizable.d.ts +50 -0
- package/dist/components/VResizable/VResizable.js +9 -0
- package/dist/components/VResizable/VResizable.js.map +1 -0
- package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js +225 -0
- package/dist/components/VResizable/VResizable.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VResizable/VResizablePanel.css +2 -0
- package/dist/components/VResizable/VResizablePanel.d.ts +60 -0
- package/dist/components/VResizable/VResizablePanel.js +9 -0
- package/dist/components/VResizable/VResizablePanel.js.map +1 -0
- package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js +83 -0
- package/dist/components/VResizable/VResizablePanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VResizable/context.d.ts +24 -0
- package/dist/components/VResizable/context.js +6 -0
- package/dist/components/VResizable/context.js.map +1 -0
- package/dist/components/VResizable/layout.d.ts +28 -0
- package/dist/components/VResizable/layout.js +41 -0
- package/dist/components/VResizable/layout.js.map +1 -0
- package/dist/components/VSelect/VSelect.css +2 -0
- package/dist/components/VSelect/VSelect.d.ts +193 -0
- package/dist/components/VSelect/VSelect.js +9 -0
- package/dist/components/VSelect/VSelect.js.map +1 -0
- package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js +424 -0
- package/dist/components/VSelect/VSelect.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSeparator/VSeparator.js.map +1 -1
- package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +2 -2
- package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -1
- package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +3 -3
- package/dist/components/VSlider/VSlider.css +1 -1
- package/dist/components/VSlider/VSlider.d.ts +34 -8
- package/dist/components/VSlider/VSlider.js.map +1 -1
- package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +236 -215
- package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/VSnackbar/state.js.map +1 -1
- package/dist/components/VSplitButton/VSplitButton.css +2 -0
- package/dist/components/VSplitButton/VSplitButton.d.ts +114 -0
- package/dist/components/VSplitButton/VSplitButton.js +9 -0
- package/dist/components/VSplitButton/VSplitButton.js.map +1 -0
- package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js +148 -0
- package/dist/components/VSplitButton/VSplitButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VStepper/VStepper.css +2 -0
- package/dist/components/VStepper/VStepper.d.ts +73 -0
- package/dist/components/VStepper/VStepper.js +9 -0
- package/dist/components/VStepper/VStepper.js.map +1 -0
- package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js +96 -0
- package/dist/components/VStepper/VStepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VSwitch/VSwitch.d.ts +8 -3
- package/dist/components/VSwitch/VSwitch.js.map +1 -1
- package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js +53 -47
- package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTabs/VTab.css +1 -1
- package/dist/components/VTabs/VTab.d.ts +1 -1
- package/dist/components/VTabs/VTab.js.map +1 -1
- package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTabs/VTabs.css +1 -1
- package/dist/components/VTabs/VTabs.d.ts +13 -5
- package/dist/components/VTabs/VTabs.js.map +1 -1
- package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +20 -20
- package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTextarea/VTextarea.css +1 -1
- package/dist/components/VTextarea/VTextarea.d.ts +22 -2
- package/dist/components/VTextarea/VTextarea.js.map +1 -1
- package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +108 -100
- package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTimeInput/VTimeInput.d.ts +27 -7
- package/dist/components/VTimeInput/VTimeInput.js.map +1 -1
- package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +187 -171
- package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTimePicker/VTimePicker.d.ts +2 -2
- package/dist/components/VTimePicker/VTimePicker.js.map +1 -1
- package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTimeline/VTimeline.css +2 -0
- package/dist/components/VTimeline/VTimeline.d.ts +59 -0
- package/dist/components/VTimeline/VTimeline.js +9 -0
- package/dist/components/VTimeline/VTimeline.js.map +1 -0
- package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js +53 -0
- package/dist/components/VTimeline/VTimeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTimeline/VTimelineItem.css +2 -0
- package/dist/components/VTimeline/VTimelineItem.d.ts +48 -0
- package/dist/components/VTimeline/VTimelineItem.js +9 -0
- package/dist/components/VTimeline/VTimelineItem.js.map +1 -0
- package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js +70 -0
- package/dist/components/VTimeline/VTimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTimeline/context.d.ts +11 -0
- package/dist/components/VTimeline/context.js +6 -0
- package/dist/components/VTimeline/context.js.map +1 -0
- package/dist/components/VTimeline/datetime.d.ts +8 -0
- package/dist/components/VTimeline/datetime.js +36 -0
- package/dist/components/VTimeline/datetime.js.map +1 -0
- package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/components/VToggle/VToggle.d.ts +4 -4
- package/dist/components/VToggle/VToggleItem.d.ts +1 -1
- package/dist/components/VTooltip/VTooltip.d.ts +8 -2
- package/dist/components/VTooltip/VTooltip.js.map +1 -1
- package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +45 -43
- package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/VTreeView/VTreeView.css +2 -0
- package/dist/components/VTreeView/VTreeView.d.ts +112 -0
- package/dist/components/VTreeView/VTreeView.js +9 -0
- package/dist/components/VTreeView/VTreeView.js.map +1 -0
- package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js +321 -0
- package/dist/components/VTreeView/VTreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/VTypography/VTypography.d.ts +1 -1
- package/dist/components/VVirtualList/VVirtualList.css +2 -0
- package/dist/components/VVirtualList/VVirtualList.d.ts +78 -0
- package/dist/components/VVirtualList/VVirtualList.js +9 -0
- package/dist/components/VVirtualList/VVirtualList.js.map +1 -0
- package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js +114 -0
- package/dist/components/VVirtualList/VVirtualList.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/composables/useChoice.d.ts +28 -0
- package/dist/composables/useChoice.js +28 -0
- package/dist/composables/useChoice.js.map +1 -0
- package/dist/composables/useDebouncedSearch.d.ts +17 -0
- package/dist/composables/useDebouncedSearch.js +18 -0
- package/dist/composables/useDebouncedSearch.js.map +1 -0
- package/dist/composables/useEscapeDismiss.d.ts +8 -0
- package/dist/composables/useEscapeDismiss.js +16 -0
- package/dist/composables/useEscapeDismiss.js.map +1 -0
- package/dist/composables/useFieldIds.d.ts +2 -1
- package/dist/composables/useFieldIds.js +7 -6
- package/dist/composables/useFieldIds.js.map +1 -1
- package/dist/composables/useFieldPanel.d.ts +1 -0
- package/dist/composables/useFieldPanel.js +52 -42
- package/dist/composables/useFieldPanel.js.map +1 -1
- package/dist/composables/useFileField.d.ts +1 -3
- package/dist/composables/useFileField.js +48 -50
- package/dist/composables/useFileField.js.map +1 -1
- package/dist/composables/useHotkeyListener.d.ts +17 -0
- package/dist/composables/useHotkeyListener.js +26 -0
- package/dist/composables/useHotkeyListener.js.map +1 -0
- package/dist/composables/useIconClickHandlers.d.ts +2 -10
- package/dist/composables/useIconClickHandlers.js +1 -1
- package/dist/composables/useIconClickHandlers.js.map +1 -1
- package/dist/{components/VCombobox/infiniteScroll.d.ts → composables/useInfiniteScroll.d.ts} +6 -0
- package/dist/{components/VCombobox/infiniteScroll.js → composables/useInfiniteScroll.js} +7 -7
- package/dist/composables/useInfiniteScroll.js.map +1 -0
- package/dist/composables/useListbox.d.ts +132 -0
- package/dist/composables/useListbox.js +227 -0
- package/dist/composables/useListbox.js.map +1 -0
- package/dist/composables/useModalDialog.d.ts +28 -0
- package/dist/composables/useModalDialog.js +60 -0
- package/dist/composables/useModalDialog.js.map +1 -0
- package/dist/composables/useRootAttrs.d.ts +2 -3
- package/dist/composables/useRootAttrs.js.map +1 -1
- package/dist/composables/useVirtualList.d.ts +46 -0
- package/dist/composables/useVirtualList.js +145 -0
- package/dist/composables/useVirtualList.js.map +1 -0
- package/dist/i18n/en.js +50 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.js +50 -0
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/types.d.ts +103 -2
- package/dist/icons.js +45 -37
- package/dist/index.d.ts +50 -4
- package/dist/index.js +80 -56
- package/dist/styles.css +1 -1
- package/dist/tokens/index.d.ts +43 -0
- package/dist/tokens/semantic.d.ts +42 -0
- package/dist/tokens/semantic.js +43 -1
- package/dist/tokens/semantic.js.map +1 -1
- package/dist/tokens/themes/dark.d.ts +1 -0
- package/dist/tokens/themes/dark.js +1 -0
- package/dist/tokens/themes/dark.js.map +1 -1
- package/dist/tokens.json +215 -1
- package/dist/types.d.ts +57 -4
- package/dist/utils/arrowNav.js.map +1 -1
- package/dist/utils/attrs.d.ts +9 -0
- package/dist/utils/attrs.js +14 -0
- package/dist/utils/attrs.js.map +1 -0
- package/dist/utils/date.d.ts +1 -0
- package/dist/utils/date.js +2 -2
- package/dist/utils/date.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/VCombobox/VComboboxGroup.css +0 -2
- package/dist/components/VCombobox/VComboboxGroup.d.ts +0 -17
- package/dist/components/VCombobox/VComboboxGroup.js +0 -9
- package/dist/components/VCombobox/VComboboxGroup.js.map +0 -1
- package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js +0 -21
- package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/VCombobox/VComboboxOption.css +0 -2
- package/dist/components/VCombobox/VComboboxOption.js +0 -9
- package/dist/components/VCombobox/VComboboxOption.js.map +0 -1
- package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/VCombobox/VComboboxSeparator.css +0 -2
- package/dist/components/VCombobox/VComboboxSeparator.js +0 -9
- package/dist/components/VCombobox/VComboboxSeparator.js.map +0 -1
- package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +0 -1
- package/dist/components/VCombobox/infiniteScroll.js.map +0 -1
- /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
|
|
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
|
|
72
|
-
export type DataTableVariant = 'flat' | '
|
|
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
|
-
*
|
|
84
|
-
*
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
223
|
-
|
|
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
|
};
|