vuetify 3.9.0-beta.0 → 3.9.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/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +3590 -3502
- package/dist/json/importMap-labs.json +16 -12
- package/dist/json/importMap.json +186 -186
- package/dist/json/tags.json +31 -4
- package/dist/json/web-types.json +6626 -6392
- package/dist/vuetify-labs.cjs +1082 -195
- package/dist/vuetify-labs.css +4654 -4339
- package/dist/vuetify-labs.d.ts +2027 -493
- package/dist/vuetify-labs.esm.js +1082 -196
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1082 -195
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +663 -170
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4744 -4671
- package/dist/vuetify.d.ts +1575 -267
- package/dist/vuetify.esm.js +663 -171
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +663 -170
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1182 -1126
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.d.ts +39 -14
- package/lib/components/VAutocomplete/VAutocomplete.js +2 -2
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBtn/VBtn.sass +3 -1
- package/lib/components/VCarousel/VCarousel.css +0 -1
- package/lib/components/VCarousel/VCarousel.js +1 -0
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VCarousel/VCarousel.sass +0 -1
- package/lib/components/VCombobox/VCombobox.d.ts +39 -14
- package/lib/components/VCombobox/VCombobox.js +2 -2
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataIterator/composables/items.d.ts +2 -1
- package/lib/components/VDataIterator/composables/items.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +12 -1
- package/lib/components/VDataTable/VDataTable.d.ts +20 -38
- package/lib/components/VDataTable/VDataTable.sass +12 -2
- package/lib/components/VDataTable/VDataTableColumn.d.ts +9 -3
- package/lib/components/VDataTable/VDataTableColumn.js +12 -4
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.d.ts +0 -13
- package/lib/components/VDataTable/VDataTableHeaders.js +10 -9
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableRow.js +2 -0
- package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.d.ts +10 -23
- package/lib/components/VDataTable/VDataTableVirtual.d.ts +10 -23
- package/lib/components/VDataTable/composables/headers.d.ts +22 -14
- package/lib/components/VDataTable/composables/headers.js +51 -22
- package/lib/components/VDataTable/composables/headers.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.js +2 -1
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VDataTable/types.d.ts +4 -2
- package/lib/components/VDataTable/types.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.js +2 -1
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerControls.css +1 -0
- package/lib/components/VDatePicker/VDatePickerControls.sass +1 -0
- package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
- package/lib/components/VDatePicker/VDatePickerMonth.js +7 -3
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
- package/lib/components/VField/VField.js +2 -10
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VKbd/VKbd.css +14 -5
- package/lib/components/VKbd/VKbd.js.map +1 -1
- package/lib/components/VKbd/VKbd.scss +26 -0
- package/lib/components/VKbd/_variables.scss +12 -6
- package/lib/components/VKbd/index.js.map +1 -1
- package/lib/components/VList/VList.d.ts +24 -27
- package/lib/components/VList/VList.js +1 -5
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListGroup.d.ts +13 -0
- package/lib/components/VList/VListGroup.js +2 -1
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +6 -3
- package/lib/components/VList/VListItem.js +1 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +4 -10
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VNumberInput/hold.js +4 -0
- package/lib/components/VNumberInput/hold.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +17 -14
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +1 -1
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VSelect/VSelect.d.ts +58 -22
- package/lib/components/VSelect/VSelect.js +2 -2
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +1 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VTimePicker/VTimePicker.css +1 -6
- package/lib/components/VTimePicker/VTimePicker.sass +1 -6
- package/lib/components/VTimePicker/VTimePickerClock.css +5 -4
- package/lib/components/VTimePicker/VTimePickerClock.sass +5 -4
- package/lib/components/VTimePicker/VTimePickerControls.css +2 -1
- package/lib/components/VTimePicker/VTimePickerControls.sass +2 -3
- package/lib/components/VTreeview/VTreeview.d.ts +235 -188
- package/lib/components/VTreeview/VTreeview.js +13 -12
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewChildren.d.ts +94 -10
- package/lib/components/VTreeview/VTreeviewChildren.js +61 -17
- package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewGroup.d.ts +13 -0
- package/lib/components/VTreeview/VTreeviewItem.css +57 -0
- package/lib/components/VTreeview/VTreeviewItem.d.ts +1334 -97
- package/lib/components/VTreeview/VTreeviewItem.js +25 -16
- package/lib/components/VTreeview/VTreeviewItem.js.map +1 -1
- package/lib/components/VTreeview/VTreeviewItem.sass +60 -0
- package/lib/components/VTreeview/_variables.scss +15 -0
- package/lib/composables/calendar.d.ts +2 -1
- package/lib/composables/calendar.js +8 -8
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.js +1 -1
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/filter.d.ts +1 -0
- package/lib/composables/filter.js +1 -1
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/hotkey/hotkey-parsing.d.ts +15 -0
- package/lib/composables/hotkey/hotkey-parsing.js +154 -0
- package/lib/composables/hotkey/hotkey-parsing.js.map +1 -0
- package/lib/composables/hotkey/hotkey.d.ts +9 -0
- package/lib/composables/{hotkey.js → hotkey/hotkey.js} +31 -39
- package/lib/composables/hotkey/hotkey.js.map +1 -0
- package/lib/composables/hotkey/index.d.ts +1 -0
- package/lib/composables/hotkey/index.js +2 -0
- package/lib/composables/hotkey/index.js.map +1 -0
- package/lib/composables/hotkey/key-aliases.d.ts +14 -0
- package/lib/composables/hotkey/key-aliases.js +38 -0
- package/lib/composables/hotkey/key-aliases.js.map +1 -0
- package/lib/composables/icons.d.ts +11 -0
- package/lib/composables/icons.js.map +1 -1
- package/lib/composables/index.d.ts +1 -0
- package/lib/composables/index.js +1 -0
- package/lib/composables/index.js.map +1 -1
- package/lib/composables/list-items.d.ts +14 -1
- package/lib/composables/list-items.js +9 -3
- package/lib/composables/list-items.js.map +1 -1
- package/lib/composables/nested/nested.d.ts +7 -4
- package/lib/composables/nested/nested.js +24 -14
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/nested/selectStrategies.d.ts +2 -1
- package/lib/composables/nested/selectStrategies.js +22 -11
- package/lib/composables/nested/selectStrategies.js.map +1 -1
- package/lib/composables/virtual.js +1 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/entry-bundler.js.map +1 -1
- package/lib/framework.d.ts +91 -66
- package/lib/framework.js +1 -1
- package/lib/framework.js.map +1 -1
- package/lib/iconsets/fa.js +12 -1
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +12 -1
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +12 -1
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +12 -1
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/iconsets/mdi.js +12 -1
- package/lib/iconsets/mdi.js.map +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendar.js +10 -10
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendarDay.js +1 -1
- package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
- package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
- package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
- package/lib/labs/VHotkey/VHotkey.css +242 -0
- package/lib/labs/VHotkey/VHotkey.d.ts +387 -0
- package/lib/labs/VHotkey/VHotkey.js +432 -0
- package/lib/labs/VHotkey/VHotkey.js.map +1 -0
- package/lib/labs/VHotkey/VHotkey.scss +253 -0
- package/lib/labs/VHotkey/_variables.scss +43 -0
- package/lib/labs/VHotkey/index.d.ts +1 -0
- package/lib/labs/VHotkey/index.js +2 -0
- package/lib/labs/VHotkey/index.js.map +1 -0
- package/lib/labs/VIconBtn/VIconBtn.js +1 -0
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/VPicker/VPicker.css +4 -0
- package/lib/labs/VPicker/VPicker.sass +4 -0
- package/lib/labs/components.d.ts +1 -0
- package/lib/labs/components.js +1 -0
- package/lib/labs/components.js.map +1 -1
- package/lib/locale/af.d.ts +18 -0
- package/lib/locale/af.js +18 -0
- package/lib/locale/af.js.map +1 -1
- package/lib/locale/ar.d.ts +18 -0
- package/lib/locale/ar.js +18 -0
- package/lib/locale/ar.js.map +1 -1
- package/lib/locale/az.d.ts +18 -0
- package/lib/locale/az.js +18 -0
- package/lib/locale/az.js.map +1 -1
- package/lib/locale/bg.d.ts +18 -0
- package/lib/locale/bg.js +18 -0
- package/lib/locale/bg.js.map +1 -1
- package/lib/locale/ca.d.ts +18 -0
- package/lib/locale/ca.js +18 -0
- package/lib/locale/ca.js.map +1 -1
- package/lib/locale/ckb.d.ts +18 -0
- package/lib/locale/ckb.js +18 -0
- package/lib/locale/ckb.js.map +1 -1
- package/lib/locale/cs.d.ts +18 -0
- package/lib/locale/cs.js +18 -0
- package/lib/locale/cs.js.map +1 -1
- package/lib/locale/da.d.ts +18 -0
- package/lib/locale/da.js +18 -0
- package/lib/locale/da.js.map +1 -1
- package/lib/locale/de.d.ts +18 -0
- package/lib/locale/de.js +18 -0
- package/lib/locale/de.js.map +1 -1
- package/lib/locale/el.d.ts +18 -0
- package/lib/locale/el.js +18 -0
- package/lib/locale/el.js.map +1 -1
- package/lib/locale/en.d.ts +18 -0
- package/lib/locale/en.js +18 -0
- package/lib/locale/en.js.map +1 -1
- package/lib/locale/es.d.ts +18 -0
- package/lib/locale/es.js +18 -0
- package/lib/locale/es.js.map +1 -1
- package/lib/locale/et.d.ts +18 -0
- package/lib/locale/et.js +18 -0
- package/lib/locale/et.js.map +1 -1
- package/lib/locale/fa.d.ts +18 -0
- package/lib/locale/fa.js +18 -0
- package/lib/locale/fa.js.map +1 -1
- package/lib/locale/fi.d.ts +18 -0
- package/lib/locale/fi.js +18 -0
- package/lib/locale/fi.js.map +1 -1
- package/lib/locale/fr.d.ts +18 -0
- package/lib/locale/fr.js +18 -0
- package/lib/locale/fr.js.map +1 -1
- package/lib/locale/he.d.ts +18 -0
- package/lib/locale/he.js +18 -0
- package/lib/locale/he.js.map +1 -1
- package/lib/locale/hr.d.ts +18 -0
- package/lib/locale/hr.js +18 -0
- package/lib/locale/hr.js.map +1 -1
- package/lib/locale/hu.d.ts +18 -0
- package/lib/locale/hu.js +18 -0
- package/lib/locale/hu.js.map +1 -1
- package/lib/locale/id.d.ts +18 -0
- package/lib/locale/id.js +18 -0
- package/lib/locale/id.js.map +1 -1
- package/lib/locale/it.d.ts +18 -0
- package/lib/locale/it.js +18 -0
- package/lib/locale/it.js.map +1 -1
- package/lib/locale/ja.d.ts +18 -0
- package/lib/locale/ja.js +18 -0
- package/lib/locale/ja.js.map +1 -1
- package/lib/locale/km.d.ts +18 -0
- package/lib/locale/km.js +18 -0
- package/lib/locale/km.js.map +1 -1
- package/lib/locale/ko.d.ts +18 -0
- package/lib/locale/ko.js +18 -0
- package/lib/locale/ko.js.map +1 -1
- package/lib/locale/lt.d.ts +18 -0
- package/lib/locale/lt.js +18 -0
- package/lib/locale/lt.js.map +1 -1
- package/lib/locale/lv.d.ts +18 -0
- package/lib/locale/lv.js +18 -0
- package/lib/locale/lv.js.map +1 -1
- package/lib/locale/nl.d.ts +18 -0
- package/lib/locale/nl.js +18 -0
- package/lib/locale/nl.js.map +1 -1
- package/lib/locale/no.d.ts +18 -0
- package/lib/locale/no.js +18 -0
- package/lib/locale/no.js.map +1 -1
- package/lib/locale/pl.d.ts +18 -0
- package/lib/locale/pl.js +18 -0
- package/lib/locale/pl.js.map +1 -1
- package/lib/locale/pt.d.ts +18 -0
- package/lib/locale/pt.js +18 -0
- package/lib/locale/pt.js.map +1 -1
- package/lib/locale/ro.d.ts +18 -0
- package/lib/locale/ro.js +18 -0
- package/lib/locale/ro.js.map +1 -1
- package/lib/locale/ru.d.ts +18 -0
- package/lib/locale/ru.js +18 -0
- package/lib/locale/ru.js.map +1 -1
- package/lib/locale/sk.d.ts +18 -0
- package/lib/locale/sk.js +18 -0
- package/lib/locale/sk.js.map +1 -1
- package/lib/locale/sl.d.ts +18 -0
- package/lib/locale/sl.js +18 -0
- package/lib/locale/sl.js.map +1 -1
- package/lib/locale/sr-Cyrl.d.ts +18 -0
- package/lib/locale/sr-Cyrl.js +18 -0
- package/lib/locale/sr-Cyrl.js.map +1 -1
- package/lib/locale/sr-Latn.d.ts +18 -0
- package/lib/locale/sr-Latn.js +18 -0
- package/lib/locale/sr-Latn.js.map +1 -1
- package/lib/locale/sv.d.ts +18 -0
- package/lib/locale/sv.js +18 -0
- package/lib/locale/sv.js.map +1 -1
- package/lib/locale/th.d.ts +18 -0
- package/lib/locale/th.js +18 -0
- package/lib/locale/th.js.map +1 -1
- package/lib/locale/tr.d.ts +18 -0
- package/lib/locale/tr.js +18 -0
- package/lib/locale/tr.js.map +1 -1
- package/lib/locale/uk.d.ts +18 -0
- package/lib/locale/uk.js +18 -0
- package/lib/locale/uk.js.map +1 -1
- package/lib/locale/vi.d.ts +18 -0
- package/lib/locale/vi.js +18 -0
- package/lib/locale/vi.js.map +1 -1
- package/lib/locale/zh-Hans.d.ts +18 -0
- package/lib/locale/zh-Hans.js +18 -0
- package/lib/locale/zh-Hans.js.map +1 -1
- package/lib/locale/zh-Hant.d.ts +18 -0
- package/lib/locale/zh-Hant.js +18 -0
- package/lib/locale/zh-Hant.js.map +1 -1
- package/lib/util/helpers.d.ts +3 -0
- package/lib/util/helpers.js +4 -0
- package/lib/util/helpers.js.map +1 -1
- package/lib/util/indentLines.d.ts +17 -0
- package/lib/util/indentLines.js +34 -0
- package/lib/util/indentLines.js.map +1 -0
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/package.json +2 -2
- package/lib/components/VKbd/VKbd.sass +0 -15
- package/lib/composables/hotkey.d.ts +0 -9
- package/lib/composables/hotkey.js.map +0 -1
package/dist/vuetify.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.9.0
|
|
2
|
+
* Vuetify v3.9.0
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -469,6 +469,10 @@ function ensureValidVNode(vnodes) {
|
|
|
469
469
|
return child.type !== Fragment || ensureValidVNode(child.children);
|
|
470
470
|
}) ? vnodes : null;
|
|
471
471
|
}
|
|
472
|
+
function renderSlot(slot, props, fallback) {
|
|
473
|
+
// TODO: check if slot returns elements: #18308
|
|
474
|
+
return slot?.(props) ?? fallback?.(props);
|
|
475
|
+
}
|
|
472
476
|
function defer(timeout, cb) {
|
|
473
477
|
if (!IN_BROWSER || timeout === 0) {
|
|
474
478
|
cb();
|
|
@@ -1614,6 +1618,40 @@ function isPotentiallyScrollable(el) {
|
|
|
1614
1618
|
return ['scroll', 'auto'].includes(style.overflowY);
|
|
1615
1619
|
}
|
|
1616
1620
|
|
|
1621
|
+
// Types
|
|
1622
|
+
|
|
1623
|
+
function getIndentLines(_ref) {
|
|
1624
|
+
let {
|
|
1625
|
+
depth,
|
|
1626
|
+
isLast,
|
|
1627
|
+
isLastGroup,
|
|
1628
|
+
leafLinks,
|
|
1629
|
+
separateRoots,
|
|
1630
|
+
parentIndentLines,
|
|
1631
|
+
variant
|
|
1632
|
+
} = _ref;
|
|
1633
|
+
if (!parentIndentLines || !depth) {
|
|
1634
|
+
return {
|
|
1635
|
+
leaf: undefined,
|
|
1636
|
+
node: undefined,
|
|
1637
|
+
children: parentIndentLines
|
|
1638
|
+
};
|
|
1639
|
+
}
|
|
1640
|
+
if (variant === 'simple') {
|
|
1641
|
+
return {
|
|
1642
|
+
leaf: [...parentIndentLines, 'line'],
|
|
1643
|
+
node: [...parentIndentLines, 'line'],
|
|
1644
|
+
children: [...parentIndentLines, 'line']
|
|
1645
|
+
};
|
|
1646
|
+
}
|
|
1647
|
+
const isLastLeaf = isLast && (!isLastGroup || separateRoots || depth > 1);
|
|
1648
|
+
return {
|
|
1649
|
+
leaf: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf', ...(leafLinks ? ['leaf-link'] : [])],
|
|
1650
|
+
node: [...parentIndentLines, isLastLeaf ? 'last-leaf' : 'leaf'],
|
|
1651
|
+
children: [...parentIndentLines, isLastLeaf ? 'none' : 'line']
|
|
1652
|
+
};
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1617
1655
|
function isFixedPosition(el) {
|
|
1618
1656
|
while (el) {
|
|
1619
1657
|
if (window.getComputedStyle(el).position === 'fixed') {
|
|
@@ -1832,7 +1870,18 @@ const aliases = {
|
|
|
1832
1870
|
treeviewExpand: 'mdi-menu-right',
|
|
1833
1871
|
eyeDropper: 'mdi-eyedropper',
|
|
1834
1872
|
upload: 'mdi-cloud-upload',
|
|
1835
|
-
color: 'mdi-palette'
|
|
1873
|
+
color: 'mdi-palette',
|
|
1874
|
+
command: 'mdi-apple-keyboard-command',
|
|
1875
|
+
ctrl: 'mdi-apple-keyboard-control',
|
|
1876
|
+
space: 'mdi-keyboard-space',
|
|
1877
|
+
shift: 'mdi-apple-keyboard-shift',
|
|
1878
|
+
alt: 'mdi-apple-keyboard-option',
|
|
1879
|
+
enter: 'mdi-keyboard-return',
|
|
1880
|
+
arrowup: 'mdi-arrow-up',
|
|
1881
|
+
arrowdown: 'mdi-arrow-down',
|
|
1882
|
+
arrowleft: 'mdi-arrow-left',
|
|
1883
|
+
arrowright: 'mdi-arrow-right',
|
|
1884
|
+
backspace: 'mdi-backspace'
|
|
1836
1885
|
};
|
|
1837
1886
|
const mdi = {
|
|
1838
1887
|
// Not using mergeProps here, functional components merge props by default (?)
|
|
@@ -2628,6 +2677,24 @@ var en = {
|
|
|
2628
2677
|
exclude: 'The {0} character is not allowed',
|
|
2629
2678
|
notEmpty: 'Please choose at least one value',
|
|
2630
2679
|
pattern: 'Invalid format'
|
|
2680
|
+
},
|
|
2681
|
+
hotkey: {
|
|
2682
|
+
then: 'then',
|
|
2683
|
+
ctrl: 'Ctrl',
|
|
2684
|
+
command: 'Command',
|
|
2685
|
+
space: 'Space',
|
|
2686
|
+
shift: 'Shift',
|
|
2687
|
+
alt: 'Alt',
|
|
2688
|
+
enter: 'Enter',
|
|
2689
|
+
escape: 'Escape',
|
|
2690
|
+
upArrow: 'Up Arrow',
|
|
2691
|
+
downArrow: 'Down Arrow',
|
|
2692
|
+
leftArrow: 'Left Arrow',
|
|
2693
|
+
rightArrow: 'Right Arrow',
|
|
2694
|
+
backspace: 'Backspace',
|
|
2695
|
+
option: 'Option',
|
|
2696
|
+
plus: 'plus',
|
|
2697
|
+
shortcut: 'Keyboard shortcut: {0}'
|
|
2631
2698
|
}
|
|
2632
2699
|
};
|
|
2633
2700
|
|
|
@@ -9071,7 +9138,7 @@ const independentSelectStrategy = mandatory => {
|
|
|
9071
9138
|
selected.set(id, value ? 'on' : 'off');
|
|
9072
9139
|
return selected;
|
|
9073
9140
|
},
|
|
9074
|
-
in: (v, children, parents) => {
|
|
9141
|
+
in: (v, children, parents, disabled) => {
|
|
9075
9142
|
const map = new Map();
|
|
9076
9143
|
for (const id of v || []) {
|
|
9077
9144
|
strategy.select({
|
|
@@ -9079,7 +9146,8 @@ const independentSelectStrategy = mandatory => {
|
|
|
9079
9146
|
value: true,
|
|
9080
9147
|
selected: map,
|
|
9081
9148
|
children,
|
|
9082
|
-
parents
|
|
9149
|
+
parents,
|
|
9150
|
+
disabled
|
|
9083
9151
|
});
|
|
9084
9152
|
}
|
|
9085
9153
|
return map;
|
|
@@ -9111,9 +9179,9 @@ const independentSingleSelectStrategy = mandatory => {
|
|
|
9111
9179
|
selected: singleSelected
|
|
9112
9180
|
});
|
|
9113
9181
|
},
|
|
9114
|
-
in: (v, children, parents) => {
|
|
9182
|
+
in: (v, children, parents, disabled) => {
|
|
9115
9183
|
if (v?.length) {
|
|
9116
|
-
return parentStrategy.in(v.slice(0, 1), children, parents);
|
|
9184
|
+
return parentStrategy.in(v.slice(0, 1), children, parents, disabled);
|
|
9117
9185
|
}
|
|
9118
9186
|
return new Map();
|
|
9119
9187
|
},
|
|
@@ -9179,23 +9247,32 @@ const classicSelectStrategy = mandatory => {
|
|
|
9179
9247
|
value,
|
|
9180
9248
|
selected,
|
|
9181
9249
|
children,
|
|
9182
|
-
parents
|
|
9250
|
+
parents,
|
|
9251
|
+
disabled
|
|
9183
9252
|
} = _ref6;
|
|
9184
9253
|
id = toRaw(id);
|
|
9185
9254
|
const original = new Map(selected);
|
|
9186
9255
|
const items = [id];
|
|
9187
9256
|
while (items.length) {
|
|
9188
9257
|
const item = items.shift();
|
|
9189
|
-
|
|
9258
|
+
if (!disabled.has(item)) {
|
|
9259
|
+
selected.set(toRaw(item), value ? 'on' : 'off');
|
|
9260
|
+
}
|
|
9190
9261
|
if (children.has(item)) {
|
|
9191
9262
|
items.push(...children.get(item));
|
|
9192
9263
|
}
|
|
9193
9264
|
}
|
|
9194
9265
|
let parent = toRaw(parents.get(id));
|
|
9195
9266
|
while (parent) {
|
|
9196
|
-
|
|
9197
|
-
|
|
9198
|
-
|
|
9267
|
+
let everySelected = true;
|
|
9268
|
+
let noneSelected = true;
|
|
9269
|
+
for (const child of children.get(parent)) {
|
|
9270
|
+
const cid = toRaw(child);
|
|
9271
|
+
if (disabled.has(cid)) continue;
|
|
9272
|
+
if (selected.get(cid) !== 'on') everySelected = false;
|
|
9273
|
+
if (selected.has(cid) && selected.get(cid) !== 'off') noneSelected = false;
|
|
9274
|
+
if (!everySelected && !noneSelected) break;
|
|
9275
|
+
}
|
|
9199
9276
|
selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate');
|
|
9200
9277
|
parent = toRaw(parents.get(parent));
|
|
9201
9278
|
}
|
|
@@ -9212,7 +9289,7 @@ const classicSelectStrategy = mandatory => {
|
|
|
9212
9289
|
}
|
|
9213
9290
|
return selected;
|
|
9214
9291
|
},
|
|
9215
|
-
in: (v, children, parents) => {
|
|
9292
|
+
in: (v, children, parents, disabled) => {
|
|
9216
9293
|
let map = new Map();
|
|
9217
9294
|
for (const id of v || []) {
|
|
9218
9295
|
map = strategy.select({
|
|
@@ -9220,7 +9297,8 @@ const classicSelectStrategy = mandatory => {
|
|
|
9220
9297
|
value: true,
|
|
9221
9298
|
selected: map,
|
|
9222
9299
|
children,
|
|
9223
|
-
parents
|
|
9300
|
+
parents,
|
|
9301
|
+
disabled
|
|
9224
9302
|
});
|
|
9225
9303
|
}
|
|
9226
9304
|
return map;
|
|
@@ -9267,8 +9345,9 @@ const emptyNested = {
|
|
|
9267
9345
|
root: {
|
|
9268
9346
|
register: () => null,
|
|
9269
9347
|
unregister: () => null,
|
|
9270
|
-
parents: ref(new Map()),
|
|
9271
9348
|
children: ref(new Map()),
|
|
9349
|
+
parents: ref(new Map()),
|
|
9350
|
+
disabled: ref(new Set()),
|
|
9272
9351
|
open: () => null,
|
|
9273
9352
|
openOnSelect: () => null,
|
|
9274
9353
|
activate: () => null,
|
|
@@ -9295,9 +9374,10 @@ const makeNestedProps = propsFactory({
|
|
|
9295
9374
|
}, 'nested');
|
|
9296
9375
|
const useNested = props => {
|
|
9297
9376
|
let isUnmounted = false;
|
|
9298
|
-
const children =
|
|
9299
|
-
const parents =
|
|
9300
|
-
const
|
|
9377
|
+
const children = shallowRef(new Map());
|
|
9378
|
+
const parents = shallowRef(new Map());
|
|
9379
|
+
const disabled = shallowRef(new Set());
|
|
9380
|
+
const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(Array.isArray(v) ? v.map(i => toRaw(i)) : v), v => [...v.values()]);
|
|
9301
9381
|
const activeStrategy = computed(() => {
|
|
9302
9382
|
if (typeof props.activeStrategy === 'object') return props.activeStrategy;
|
|
9303
9383
|
if (typeof props.activeStrategy === 'function') return props.activeStrategy(props.mandatory);
|
|
@@ -9345,13 +9425,13 @@ const useNested = props => {
|
|
|
9345
9425
|
}
|
|
9346
9426
|
});
|
|
9347
9427
|
const activated = useProxiedModel(props, 'activated', props.activated, v => activeStrategy.value.in(v, children.value, parents.value), v => activeStrategy.value.out(v, children.value, parents.value));
|
|
9348
|
-
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
|
9428
|
+
const selected = useProxiedModel(props, 'selected', props.selected, v => selectStrategy.value.in(v, children.value, parents.value, disabled.value), v => selectStrategy.value.out(v, children.value, parents.value));
|
|
9349
9429
|
onBeforeUnmount(() => {
|
|
9350
9430
|
isUnmounted = true;
|
|
9351
9431
|
});
|
|
9352
9432
|
function getPath(id) {
|
|
9353
9433
|
const path = [];
|
|
9354
|
-
let parent = id;
|
|
9434
|
+
let parent = toRaw(id);
|
|
9355
9435
|
while (parent != null) {
|
|
9356
9436
|
path.unshift(parent);
|
|
9357
9437
|
parent = parents.value.get(parent);
|
|
@@ -9375,7 +9455,7 @@ const useNested = props => {
|
|
|
9375
9455
|
}
|
|
9376
9456
|
return arr;
|
|
9377
9457
|
}),
|
|
9378
|
-
register: (id, parentId, isGroup) => {
|
|
9458
|
+
register: (id, parentId, isDisabled, isGroup) => {
|
|
9379
9459
|
if (nodeIds.has(id)) {
|
|
9380
9460
|
const path = getPath(id).map(String).join(' -> ');
|
|
9381
9461
|
const newPath = getPath(parentId).concat(id).map(String).join(' -> ');
|
|
@@ -9385,6 +9465,7 @@ const useNested = props => {
|
|
|
9385
9465
|
nodeIds.add(id);
|
|
9386
9466
|
}
|
|
9387
9467
|
parentId && id !== parentId && parents.value.set(id, parentId);
|
|
9468
|
+
isDisabled && disabled.value.add(id);
|
|
9388
9469
|
isGroup && children.value.set(id, []);
|
|
9389
9470
|
if (parentId != null) {
|
|
9390
9471
|
children.value.set(parentId, [...(children.value.get(parentId) || []), id]);
|
|
@@ -9394,6 +9475,7 @@ const useNested = props => {
|
|
|
9394
9475
|
if (isUnmounted) return;
|
|
9395
9476
|
nodeIds.delete(id);
|
|
9396
9477
|
children.value.delete(id);
|
|
9478
|
+
disabled.value.delete(id);
|
|
9397
9479
|
const parent = parents.value.get(id);
|
|
9398
9480
|
if (parent) {
|
|
9399
9481
|
const list = children.value.get(parent) ?? [];
|
|
@@ -9443,6 +9525,7 @@ const useNested = props => {
|
|
|
9443
9525
|
selected: new Map(selected.value),
|
|
9444
9526
|
children: children.value,
|
|
9445
9527
|
parents: parents.value,
|
|
9528
|
+
disabled: disabled.value,
|
|
9446
9529
|
event
|
|
9447
9530
|
});
|
|
9448
9531
|
newSelected && (selected.value = newSelected);
|
|
@@ -9485,16 +9568,17 @@ const useNested = props => {
|
|
|
9485
9568
|
},
|
|
9486
9569
|
children,
|
|
9487
9570
|
parents,
|
|
9571
|
+
disabled,
|
|
9488
9572
|
getPath
|
|
9489
9573
|
}
|
|
9490
9574
|
};
|
|
9491
9575
|
provide(VNestedSymbol, nested);
|
|
9492
9576
|
return nested.root;
|
|
9493
9577
|
};
|
|
9494
|
-
const useNestedItem = (id, isGroup) => {
|
|
9578
|
+
const useNestedItem = (id, isDisabled, isGroup) => {
|
|
9495
9579
|
const parent = inject$1(VNestedSymbol, emptyNested);
|
|
9496
9580
|
const uidSymbol = Symbol('nested item');
|
|
9497
|
-
const computedId = computed(() => toValue(id) ?? uidSymbol);
|
|
9581
|
+
const computedId = computed(() => toRaw(toValue(id)) ?? uidSymbol);
|
|
9498
9582
|
const item = {
|
|
9499
9583
|
...parent,
|
|
9500
9584
|
id: computedId,
|
|
@@ -9503,18 +9587,22 @@ const useNestedItem = (id, isGroup) => {
|
|
|
9503
9587
|
isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
|
|
9504
9588
|
parent: computed(() => parent.root.parents.value.get(computedId.value)),
|
|
9505
9589
|
activate: (activated, e) => parent.root.activate(computedId.value, activated, e),
|
|
9506
|
-
isActivated: computed(() => parent.root.activated.value.has(
|
|
9590
|
+
isActivated: computed(() => parent.root.activated.value.has(computedId.value)),
|
|
9507
9591
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
9508
|
-
isSelected: computed(() => parent.root.selected.value.get(
|
|
9509
|
-
isIndeterminate: computed(() => parent.root.selected.value.get(
|
|
9592
|
+
isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
|
9593
|
+
isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
9510
9594
|
isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),
|
|
9511
9595
|
isGroupActivator: parent.isGroupActivator
|
|
9512
9596
|
};
|
|
9513
9597
|
onBeforeMount(() => {
|
|
9514
|
-
!parent.isGroupActivator
|
|
9598
|
+
if (!parent.isGroupActivator) {
|
|
9599
|
+
parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup);
|
|
9600
|
+
}
|
|
9515
9601
|
});
|
|
9516
9602
|
onBeforeUnmount(() => {
|
|
9517
|
-
!parent.isGroupActivator
|
|
9603
|
+
if (!parent.isGroupActivator) {
|
|
9604
|
+
parent.root.unregister(computedId.value);
|
|
9605
|
+
}
|
|
9518
9606
|
});
|
|
9519
9607
|
isGroup && provide(VNestedSymbol, item);
|
|
9520
9608
|
return item;
|
|
@@ -9546,6 +9634,7 @@ const makeVListGroupProps = propsFactory({
|
|
|
9546
9634
|
type: IconValue,
|
|
9547
9635
|
default: '$collapse'
|
|
9548
9636
|
},
|
|
9637
|
+
disabled: Boolean,
|
|
9549
9638
|
expandIcon: {
|
|
9550
9639
|
type: IconValue,
|
|
9551
9640
|
default: '$expand'
|
|
@@ -9571,7 +9660,7 @@ const VListGroup = genericComponent()({
|
|
|
9571
9660
|
isOpen,
|
|
9572
9661
|
open,
|
|
9573
9662
|
id: _id
|
|
9574
|
-
} = useNestedItem(() => props.value, true);
|
|
9663
|
+
} = useNestedItem(() => props.value, () => props.disabled, true);
|
|
9575
9664
|
const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`);
|
|
9576
9665
|
const list = useList();
|
|
9577
9666
|
const {
|
|
@@ -9741,7 +9830,7 @@ const VListItem = genericComponent()({
|
|
|
9741
9830
|
parent,
|
|
9742
9831
|
openOnSelect,
|
|
9743
9832
|
id: uid
|
|
9744
|
-
} = useNestedItem(id, false);
|
|
9833
|
+
} = useNestedItem(id, () => props.disabled, false);
|
|
9745
9834
|
const list = useList();
|
|
9746
9835
|
const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value)));
|
|
9747
9836
|
const isLink = toRef(() => props.link !== false && link.isLink.value);
|
|
@@ -10093,6 +10182,10 @@ const makeItemsProps = propsFactory({
|
|
|
10093
10182
|
type: [Boolean, String, Array, Function],
|
|
10094
10183
|
default: 'props'
|
|
10095
10184
|
},
|
|
10185
|
+
itemType: {
|
|
10186
|
+
type: [Boolean, String, Array, Function],
|
|
10187
|
+
default: 'type'
|
|
10188
|
+
},
|
|
10096
10189
|
returnObject: Boolean,
|
|
10097
10190
|
valueComparator: Function
|
|
10098
10191
|
}, 'list-items');
|
|
@@ -10100,6 +10193,7 @@ function transformItem$3(props, item) {
|
|
|
10100
10193
|
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
10101
10194
|
const value = getPropertyFromItem(item, props.itemValue, title);
|
|
10102
10195
|
const children = getPropertyFromItem(item, props.itemChildren);
|
|
10196
|
+
const type = getPropertyFromItem(item, props.itemType, 'item');
|
|
10103
10197
|
const itemProps = props.itemProps === true ? typeof item === 'object' && item != null && !Array.isArray(item) ? 'children' in item ? omit(item, ['children']) : item : undefined : getPropertyFromItem(item, props.itemProps);
|
|
10104
10198
|
const _props = {
|
|
10105
10199
|
title,
|
|
@@ -10107,15 +10201,16 @@ function transformItem$3(props, item) {
|
|
|
10107
10201
|
...itemProps
|
|
10108
10202
|
};
|
|
10109
10203
|
return {
|
|
10204
|
+
type,
|
|
10110
10205
|
title: String(_props.title ?? ''),
|
|
10111
10206
|
value: _props.value,
|
|
10112
10207
|
props: _props,
|
|
10113
|
-
children: Array.isArray(children) ? transformItems$3(props, children) : undefined,
|
|
10208
|
+
children: type === 'item' && Array.isArray(children) ? transformItems$3(props, children) : undefined,
|
|
10114
10209
|
raw: item
|
|
10115
10210
|
};
|
|
10116
10211
|
}
|
|
10117
10212
|
function transformItems$3(props, items) {
|
|
10118
|
-
const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
|
|
10213
|
+
const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'itemType', 'returnObject', 'valueComparator']);
|
|
10119
10214
|
const array = [];
|
|
10120
10215
|
for (const item of items) {
|
|
10121
10216
|
array.push(transformItem$3(_props, item));
|
|
@@ -10157,7 +10252,7 @@ function useItems(props) {
|
|
|
10157
10252
|
const _returnObject = props.returnObject;
|
|
10158
10253
|
const hasValueComparator = !!props.valueComparator;
|
|
10159
10254
|
const valueComparator = props.valueComparator || deepEqual;
|
|
10160
|
-
const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'returnObject', 'valueComparator']);
|
|
10255
|
+
const _props = pick(props, ['itemTitle', 'itemValue', 'itemChildren', 'itemProps', 'itemType', 'returnObject', 'valueComparator']);
|
|
10161
10256
|
const returnValue = [];
|
|
10162
10257
|
main: for (const v of value) {
|
|
10163
10258
|
// When the model value is null, return an InternalItem
|
|
@@ -10219,7 +10314,7 @@ function useItems(props) {
|
|
|
10219
10314
|
function transformItem$2(props, item) {
|
|
10220
10315
|
const type = getPropertyFromItem(item, props.itemType, 'item');
|
|
10221
10316
|
const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle);
|
|
10222
|
-
const value = getPropertyFromItem(item, props.itemValue, undefined);
|
|
10317
|
+
const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, undefined);
|
|
10223
10318
|
const children = getPropertyFromItem(item, props.itemChildren);
|
|
10224
10319
|
const itemProps = props.itemProps === true ? omit(item, ['children']) : getPropertyFromItem(item, props.itemProps);
|
|
10225
10320
|
const _props = {
|
|
@@ -10277,10 +10372,6 @@ const makeVListProps = propsFactory({
|
|
|
10277
10372
|
...makeDensityProps(),
|
|
10278
10373
|
...makeDimensionProps(),
|
|
10279
10374
|
...makeElevationProps(),
|
|
10280
|
-
itemType: {
|
|
10281
|
-
type: String,
|
|
10282
|
-
default: 'type'
|
|
10283
|
-
},
|
|
10284
10375
|
...makeItemsProps(),
|
|
10285
10376
|
...makeRoundedProps(),
|
|
10286
10377
|
...makeTagProps(),
|
|
@@ -10701,7 +10792,7 @@ function connectedLocationStrategy(data, props, contentStyles) {
|
|
|
10701
10792
|
});
|
|
10702
10793
|
if (flipped.isFull) {
|
|
10703
10794
|
const values = flipped.values();
|
|
10704
|
-
if (deepEqual(values.at(-1), values.at(-3))) {
|
|
10795
|
+
if (deepEqual(values.at(-1), values.at(-3)) && !deepEqual(values.at(-1), values.at(-2))) {
|
|
10705
10796
|
// Flipping is causing a container resize loop
|
|
10706
10797
|
return;
|
|
10707
10798
|
}
|
|
@@ -12371,11 +12462,7 @@ const VField = genericComponent()({
|
|
|
12371
12462
|
default: slots.loader
|
|
12372
12463
|
}), hasPrepend && createElementVNode("div", {
|
|
12373
12464
|
"key": "prepend",
|
|
12374
|
-
"class": "v-field__prepend-inner"
|
|
12375
|
-
"onMousedown": e => {
|
|
12376
|
-
e.preventDefault();
|
|
12377
|
-
e.stopPropagation();
|
|
12378
|
-
}
|
|
12465
|
+
"class": "v-field__prepend-inner"
|
|
12379
12466
|
}, [props.prependInnerIcon && createVNode(InputIcon, {
|
|
12380
12467
|
"key": "prepend-icon",
|
|
12381
12468
|
"name": "prependInner",
|
|
@@ -12444,11 +12531,7 @@ const VField = genericComponent()({
|
|
|
12444
12531
|
})]), [[vShow, props.dirty]])]
|
|
12445
12532
|
}), hasAppend && createElementVNode("div", {
|
|
12446
12533
|
"key": "append",
|
|
12447
|
-
"class": "v-field__append-inner"
|
|
12448
|
-
"onMousedown": e => {
|
|
12449
|
-
e.preventDefault();
|
|
12450
|
-
e.stopPropagation();
|
|
12451
|
-
}
|
|
12534
|
+
"class": "v-field__append-inner"
|
|
12452
12535
|
}, [slots['append-inner']?.(slotProps.value), props.appendInnerIcon && createVNode(InputIcon, {
|
|
12453
12536
|
"key": "append-icon",
|
|
12454
12537
|
"name": "appendInner",
|
|
@@ -12559,7 +12642,7 @@ const VTextField = genericComponent()({
|
|
|
12559
12642
|
if (!isFocused.value) focus();
|
|
12560
12643
|
nextTick(() => {
|
|
12561
12644
|
if (inputRef.value !== document.activeElement) {
|
|
12562
|
-
inputRef.value?.focus();
|
|
12645
|
+
nextTick(() => inputRef.value?.focus());
|
|
12563
12646
|
}
|
|
12564
12647
|
});
|
|
12565
12648
|
}
|
|
@@ -12898,7 +12981,7 @@ function useVirtual(props, items) {
|
|
|
12898
12981
|
raf = requestAnimationFrame(_calculateVisibleItems);
|
|
12899
12982
|
}
|
|
12900
12983
|
function _calculateVisibleItems() {
|
|
12901
|
-
if (!containerRef.value || !viewportHeight.value) return;
|
|
12984
|
+
if (!containerRef.value || !viewportHeight.value || !itemHeight.value) return;
|
|
12902
12985
|
const scrollTop = lastScrollTop - markerOffset;
|
|
12903
12986
|
const direction = Math.sign(scrollVelocity);
|
|
12904
12987
|
const startPx = Math.max(0, scrollTop - BUFFER_PX);
|
|
@@ -13507,7 +13590,7 @@ const VSelect = genericComponent()({
|
|
|
13507
13590
|
key: item.value,
|
|
13508
13591
|
onClick: () => select(item, null)
|
|
13509
13592
|
});
|
|
13510
|
-
if (item.
|
|
13593
|
+
if (item.type === 'divider') {
|
|
13511
13594
|
return slots.divider?.({
|
|
13512
13595
|
props: item.raw,
|
|
13513
13596
|
index
|
|
@@ -13515,7 +13598,7 @@ const VSelect = genericComponent()({
|
|
|
13515
13598
|
"key": `divider-${index}`
|
|
13516
13599
|
}), null);
|
|
13517
13600
|
}
|
|
13518
|
-
if (item.
|
|
13601
|
+
if (item.type === 'subheader') {
|
|
13519
13602
|
return slots.subheader?.({
|
|
13520
13603
|
props: item.raw,
|
|
13521
13604
|
index
|
|
@@ -13683,7 +13766,7 @@ function filterItems(items, query, options) {
|
|
|
13683
13766
|
let match = -1;
|
|
13684
13767
|
if ((query || customFiltersLength > 0) && !options?.noFilter) {
|
|
13685
13768
|
if (typeof item === 'object') {
|
|
13686
|
-
if (
|
|
13769
|
+
if (item.type === 'divider' || item.type === 'subheader') {
|
|
13687
13770
|
continue;
|
|
13688
13771
|
}
|
|
13689
13772
|
const filterKeys = keys || Object.keys(transformed);
|
|
@@ -14125,7 +14208,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14125
14208
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
14126
14209
|
onClick: () => select(item, null)
|
|
14127
14210
|
});
|
|
14128
|
-
if (item.
|
|
14211
|
+
if (item.type === 'divider') {
|
|
14129
14212
|
return slots.divider?.({
|
|
14130
14213
|
props: item.raw,
|
|
14131
14214
|
index
|
|
@@ -14133,7 +14216,7 @@ const VAutocomplete = genericComponent()({
|
|
|
14133
14216
|
"key": `divider-${index}`
|
|
14134
14217
|
}), null);
|
|
14135
14218
|
}
|
|
14136
|
-
if (item.
|
|
14219
|
+
if (item.type === 'subheader') {
|
|
14137
14220
|
return slots.subheader?.({
|
|
14138
14221
|
props: item.raw,
|
|
14139
14222
|
index
|
|
@@ -15694,6 +15777,7 @@ const VCarousel = genericComponent()({
|
|
|
15694
15777
|
}) : createVNode(VBtn, mergeProps(item, props), null);
|
|
15695
15778
|
})]
|
|
15696
15779
|
})]), props.progress && createVNode(VProgressLinear, {
|
|
15780
|
+
"absolute": true,
|
|
15697
15781
|
"class": "v-carousel__progress",
|
|
15698
15782
|
"color": typeof props.progress === 'string' ? props.progress : undefined,
|
|
15699
15783
|
"modelValue": (group.getItemIndex(model.value) + 1) / group.items.value.length * 100
|
|
@@ -17780,7 +17864,7 @@ function format(value, formatString, locale, formats) {
|
|
|
17780
17864
|
case 'fullDate':
|
|
17781
17865
|
options = {
|
|
17782
17866
|
year: 'numeric',
|
|
17783
|
-
month: '
|
|
17867
|
+
month: 'short',
|
|
17784
17868
|
day: 'numeric'
|
|
17785
17869
|
};
|
|
17786
17870
|
break;
|
|
@@ -18358,6 +18442,317 @@ function useDate() {
|
|
|
18358
18442
|
return createInstance(options, locale);
|
|
18359
18443
|
}
|
|
18360
18444
|
|
|
18445
|
+
/**
|
|
18446
|
+
* Centralized key alias mapping for consistent key normalization across the hotkey system.
|
|
18447
|
+
*
|
|
18448
|
+
* This maps various user-friendly aliases to canonical key names that match
|
|
18449
|
+
* KeyboardEvent.key values (in lowercase) where possible.
|
|
18450
|
+
*/
|
|
18451
|
+
const keyAliasMap = {
|
|
18452
|
+
// Modifier aliases (from vue-use, other libraries, and current implementation)
|
|
18453
|
+
control: 'ctrl',
|
|
18454
|
+
command: 'cmd',
|
|
18455
|
+
option: 'alt',
|
|
18456
|
+
// Arrow key aliases (common abbreviations)
|
|
18457
|
+
up: 'arrowup',
|
|
18458
|
+
down: 'arrowdown',
|
|
18459
|
+
left: 'arrowleft',
|
|
18460
|
+
right: 'arrowright',
|
|
18461
|
+
// Other common key aliases
|
|
18462
|
+
esc: 'escape',
|
|
18463
|
+
spacebar: ' ',
|
|
18464
|
+
space: ' ',
|
|
18465
|
+
return: 'enter',
|
|
18466
|
+
del: 'delete',
|
|
18467
|
+
// Symbol aliases (existing from hotkey-parsing.ts)
|
|
18468
|
+
minus: '-',
|
|
18469
|
+
hyphen: '-'
|
|
18470
|
+
};
|
|
18471
|
+
|
|
18472
|
+
/**
|
|
18473
|
+
* Normalizes a key string to its canonical form using the alias map.
|
|
18474
|
+
*
|
|
18475
|
+
* @param key - The key string to normalize
|
|
18476
|
+
* @returns The canonical key name in lowercase
|
|
18477
|
+
*/
|
|
18478
|
+
function normalizeKey(key) {
|
|
18479
|
+
const lowerKey = key.toLowerCase();
|
|
18480
|
+
return keyAliasMap[lowerKey] || lowerKey;
|
|
18481
|
+
}
|
|
18482
|
+
|
|
18483
|
+
// Utilities
|
|
18484
|
+
|
|
18485
|
+
/**
|
|
18486
|
+
* Splits a single combination string into individual key parts.
|
|
18487
|
+
*
|
|
18488
|
+
* A combination is a set of keys that must be pressed simultaneously.
|
|
18489
|
+
* e.g. `ctrl+k`, `shift--`
|
|
18490
|
+
*/
|
|
18491
|
+
function splitKeyCombination(combination) {
|
|
18492
|
+
let isInternal = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
18493
|
+
if (!combination) {
|
|
18494
|
+
if (!isInternal) consoleWarn('Invalid hotkey combination: empty string provided');
|
|
18495
|
+
return [];
|
|
18496
|
+
}
|
|
18497
|
+
|
|
18498
|
+
// --- VALIDATION ---
|
|
18499
|
+
const startsWithPlusOrUnderscore = combination.startsWith('+') || combination.startsWith('_');
|
|
18500
|
+
const hasInvalidLeadingSeparator =
|
|
18501
|
+
// Starts with a single '+' or '_' followed by a non-separator character (e.g. '+a', '_a')
|
|
18502
|
+
startsWithPlusOrUnderscore && !(combination.startsWith('++') || combination.startsWith('__'));
|
|
18503
|
+
const hasInvalidStructure =
|
|
18504
|
+
// Invalid leading separator patterns
|
|
18505
|
+
combination.length > 1 && hasInvalidLeadingSeparator ||
|
|
18506
|
+
// Disallow literal + or _ keys (they require shift)
|
|
18507
|
+
combination.includes('++') || combination.includes('__') || combination === '+' || combination === '_' ||
|
|
18508
|
+
// Ends with a separator that is not part of a doubled literal
|
|
18509
|
+
combination.length > 1 && (combination.endsWith('+') || combination.endsWith('_')) && combination.at(-2) !== combination.at(-1) ||
|
|
18510
|
+
// Stand-alone doubled separators (dangling)
|
|
18511
|
+
combination === '++' || combination === '--' || combination === '__';
|
|
18512
|
+
if (hasInvalidStructure) {
|
|
18513
|
+
if (!isInternal) consoleWarn(`Invalid hotkey combination: "${combination}" has invalid structure`);
|
|
18514
|
+
return [];
|
|
18515
|
+
}
|
|
18516
|
+
const keys = [];
|
|
18517
|
+
let buffer = '';
|
|
18518
|
+
const flushBuffer = () => {
|
|
18519
|
+
if (buffer) {
|
|
18520
|
+
keys.push(normalizeKey(buffer));
|
|
18521
|
+
buffer = '';
|
|
18522
|
+
}
|
|
18523
|
+
};
|
|
18524
|
+
for (let i = 0; i < combination.length; i++) {
|
|
18525
|
+
const char = combination[i];
|
|
18526
|
+
const nextChar = combination[i + 1];
|
|
18527
|
+
if (char === '+' || char === '_' || char === '-') {
|
|
18528
|
+
if (char === nextChar) {
|
|
18529
|
+
flushBuffer();
|
|
18530
|
+
keys.push(char);
|
|
18531
|
+
i++;
|
|
18532
|
+
} else if (char === '+' || char === '_') {
|
|
18533
|
+
flushBuffer();
|
|
18534
|
+
} else {
|
|
18535
|
+
buffer += char;
|
|
18536
|
+
}
|
|
18537
|
+
} else {
|
|
18538
|
+
buffer += char;
|
|
18539
|
+
}
|
|
18540
|
+
}
|
|
18541
|
+
flushBuffer();
|
|
18542
|
+
|
|
18543
|
+
// Within a combination, `-` is only valid as a literal key (e.g., `ctrl+-`).
|
|
18544
|
+
// `-` cannot be part of a longer key name within a combination.
|
|
18545
|
+
const hasInvalidMinus = keys.some(key => key.length > 1 && key.includes('-') && key !== '--');
|
|
18546
|
+
if (hasInvalidMinus) {
|
|
18547
|
+
if (!isInternal) consoleWarn(`Invalid hotkey combination: "${combination}" has invalid structure`);
|
|
18548
|
+
return [];
|
|
18549
|
+
}
|
|
18550
|
+
if (keys.length === 0 && combination) {
|
|
18551
|
+
return [normalizeKey(combination)];
|
|
18552
|
+
}
|
|
18553
|
+
return keys;
|
|
18554
|
+
}
|
|
18555
|
+
|
|
18556
|
+
/**
|
|
18557
|
+
* Splits a hotkey string into its constituent combination groups.
|
|
18558
|
+
*
|
|
18559
|
+
* A sequence is a series of combinations that must be pressed in order.
|
|
18560
|
+
* e.g. `a-b`, `ctrl+k-p`
|
|
18561
|
+
*/
|
|
18562
|
+
function splitKeySequence(str) {
|
|
18563
|
+
if (!str) {
|
|
18564
|
+
consoleWarn('Invalid hotkey sequence: empty string provided');
|
|
18565
|
+
return [];
|
|
18566
|
+
}
|
|
18567
|
+
|
|
18568
|
+
// A sequence is invalid if it starts or ends with a separator,
|
|
18569
|
+
// unless it is part of a combination (e.g., `shift+-`).
|
|
18570
|
+
const hasInvalidStart = str.startsWith('-') && !['---', '--+'].includes(str);
|
|
18571
|
+
const hasInvalidEnd = str.endsWith('-') && !str.endsWith('+-') && !str.endsWith('_-') && str !== '-' && str !== '---';
|
|
18572
|
+
if (hasInvalidStart || hasInvalidEnd) {
|
|
18573
|
+
consoleWarn(`Invalid hotkey sequence: "${str}" contains invalid combinations`);
|
|
18574
|
+
return [];
|
|
18575
|
+
}
|
|
18576
|
+
const result = [];
|
|
18577
|
+
let buffer = '';
|
|
18578
|
+
let i = 0;
|
|
18579
|
+
while (i < str.length) {
|
|
18580
|
+
const char = str[i];
|
|
18581
|
+
if (char === '-') {
|
|
18582
|
+
// Determine if this hyphen is part of the current combination
|
|
18583
|
+
const prevChar = str[i - 1];
|
|
18584
|
+
const prevPrevChar = i > 1 ? str[i - 2] : undefined;
|
|
18585
|
+
const precededBySinglePlusOrUnderscore = (prevChar === '+' || prevChar === '_') && prevPrevChar !== '+';
|
|
18586
|
+
if (precededBySinglePlusOrUnderscore) {
|
|
18587
|
+
// Treat as part of the combination (e.g., 'ctrl+-')
|
|
18588
|
+
buffer += char;
|
|
18589
|
+
i++;
|
|
18590
|
+
} else {
|
|
18591
|
+
// Treat as sequence separator
|
|
18592
|
+
if (buffer) {
|
|
18593
|
+
result.push(buffer);
|
|
18594
|
+
buffer = '';
|
|
18595
|
+
} else {
|
|
18596
|
+
// Empty buffer means we have a literal '-' key
|
|
18597
|
+
result.push('-');
|
|
18598
|
+
}
|
|
18599
|
+
i++;
|
|
18600
|
+
}
|
|
18601
|
+
} else {
|
|
18602
|
+
buffer += char;
|
|
18603
|
+
i++;
|
|
18604
|
+
}
|
|
18605
|
+
}
|
|
18606
|
+
|
|
18607
|
+
// Add final buffer if it exists
|
|
18608
|
+
if (buffer) {
|
|
18609
|
+
result.push(buffer);
|
|
18610
|
+
}
|
|
18611
|
+
|
|
18612
|
+
// Collapse runs of '-' so that every second '-' is removed
|
|
18613
|
+
const collapsed = [];
|
|
18614
|
+
let minusCount = 0;
|
|
18615
|
+
for (const part of result) {
|
|
18616
|
+
if (part === '-') {
|
|
18617
|
+
if (minusCount % 2 === 0) collapsed.push('-');
|
|
18618
|
+
minusCount++;
|
|
18619
|
+
} else {
|
|
18620
|
+
minusCount = 0;
|
|
18621
|
+
collapsed.push(part);
|
|
18622
|
+
}
|
|
18623
|
+
}
|
|
18624
|
+
|
|
18625
|
+
// Validate that each part of the sequence is a valid combination
|
|
18626
|
+
const areAllValid = collapsed.every(s => splitKeyCombination(s, true).length > 0);
|
|
18627
|
+
if (!areAllValid) {
|
|
18628
|
+
consoleWarn(`Invalid hotkey sequence: "${str}" contains invalid combinations`);
|
|
18629
|
+
return [];
|
|
18630
|
+
}
|
|
18631
|
+
return collapsed;
|
|
18632
|
+
}
|
|
18633
|
+
|
|
18634
|
+
// Composables
|
|
18635
|
+
|
|
18636
|
+
// Types
|
|
18637
|
+
|
|
18638
|
+
function useHotkey(keys, callback) {
|
|
18639
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
18640
|
+
if (!IN_BROWSER) return function () {};
|
|
18641
|
+
const {
|
|
18642
|
+
event = 'keydown',
|
|
18643
|
+
inputs = false,
|
|
18644
|
+
preventDefault = true,
|
|
18645
|
+
sequenceTimeout = 1000
|
|
18646
|
+
} = options;
|
|
18647
|
+
const isMac = navigator?.userAgent?.includes('Macintosh') ?? false;
|
|
18648
|
+
let timeout = 0;
|
|
18649
|
+
let keyGroups;
|
|
18650
|
+
let isSequence = false;
|
|
18651
|
+
let groupIndex = 0;
|
|
18652
|
+
function clearTimer() {
|
|
18653
|
+
if (!timeout) return;
|
|
18654
|
+
clearTimeout(timeout);
|
|
18655
|
+
timeout = 0;
|
|
18656
|
+
}
|
|
18657
|
+
function isInputFocused() {
|
|
18658
|
+
if (toValue(inputs)) return false;
|
|
18659
|
+
const activeElement = document.activeElement;
|
|
18660
|
+
return activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable || activeElement.contentEditable === 'true');
|
|
18661
|
+
}
|
|
18662
|
+
function resetSequence() {
|
|
18663
|
+
groupIndex = 0;
|
|
18664
|
+
clearTimer();
|
|
18665
|
+
}
|
|
18666
|
+
function handler(e) {
|
|
18667
|
+
const group = keyGroups[groupIndex];
|
|
18668
|
+
if (!group || isInputFocused()) return;
|
|
18669
|
+
if (!matchesKeyGroup(e, group)) {
|
|
18670
|
+
if (isSequence) resetSequence();
|
|
18671
|
+
return;
|
|
18672
|
+
}
|
|
18673
|
+
if (toValue(preventDefault)) e.preventDefault();
|
|
18674
|
+
if (!isSequence) {
|
|
18675
|
+
callback(e);
|
|
18676
|
+
return;
|
|
18677
|
+
}
|
|
18678
|
+
clearTimer();
|
|
18679
|
+
groupIndex++;
|
|
18680
|
+
if (groupIndex === keyGroups.length) {
|
|
18681
|
+
callback(e);
|
|
18682
|
+
resetSequence();
|
|
18683
|
+
return;
|
|
18684
|
+
}
|
|
18685
|
+
timeout = window.setTimeout(resetSequence, toValue(sequenceTimeout));
|
|
18686
|
+
}
|
|
18687
|
+
function cleanup() {
|
|
18688
|
+
window.removeEventListener(toValue(event), handler);
|
|
18689
|
+
clearTimer();
|
|
18690
|
+
}
|
|
18691
|
+
watch(() => toValue(keys), function (unrefKeys) {
|
|
18692
|
+
cleanup();
|
|
18693
|
+
if (unrefKeys) {
|
|
18694
|
+
const groups = splitKeySequence(unrefKeys.toLowerCase());
|
|
18695
|
+
isSequence = groups.length > 1;
|
|
18696
|
+
keyGroups = groups;
|
|
18697
|
+
resetSequence();
|
|
18698
|
+
window.addEventListener(toValue(event), handler);
|
|
18699
|
+
}
|
|
18700
|
+
}, {
|
|
18701
|
+
immediate: true
|
|
18702
|
+
});
|
|
18703
|
+
|
|
18704
|
+
// Watch for changes in the event type to re-register the listener
|
|
18705
|
+
watch(() => toValue(event), function (newEvent, oldEvent) {
|
|
18706
|
+
if (oldEvent && keyGroups && keyGroups.length > 0) {
|
|
18707
|
+
window.removeEventListener(oldEvent, handler);
|
|
18708
|
+
window.addEventListener(newEvent, handler);
|
|
18709
|
+
}
|
|
18710
|
+
});
|
|
18711
|
+
try {
|
|
18712
|
+
getCurrentInstance('useHotkey');
|
|
18713
|
+
onBeforeUnmount(cleanup);
|
|
18714
|
+
} catch {
|
|
18715
|
+
// Not in Vue setup context
|
|
18716
|
+
}
|
|
18717
|
+
function parseKeyGroup(group) {
|
|
18718
|
+
const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd'];
|
|
18719
|
+
|
|
18720
|
+
// Use the shared combination splitting logic
|
|
18721
|
+
const parts = splitKeyCombination(group.toLowerCase());
|
|
18722
|
+
|
|
18723
|
+
// If the combination is invalid, return empty result
|
|
18724
|
+
if (parts.length === 0) {
|
|
18725
|
+
return {
|
|
18726
|
+
modifiers: Object.fromEntries(MODIFIERS.map(m => [m, false])),
|
|
18727
|
+
actualKey: undefined
|
|
18728
|
+
};
|
|
18729
|
+
}
|
|
18730
|
+
const modifiers = Object.fromEntries(MODIFIERS.map(m => [m, false]));
|
|
18731
|
+
let actualKey;
|
|
18732
|
+
for (const part of parts) {
|
|
18733
|
+
if (MODIFIERS.includes(part)) {
|
|
18734
|
+
modifiers[part] = true;
|
|
18735
|
+
} else {
|
|
18736
|
+
actualKey = part;
|
|
18737
|
+
}
|
|
18738
|
+
}
|
|
18739
|
+
return {
|
|
18740
|
+
modifiers,
|
|
18741
|
+
actualKey
|
|
18742
|
+
};
|
|
18743
|
+
}
|
|
18744
|
+
function matchesKeyGroup(e, group) {
|
|
18745
|
+
const {
|
|
18746
|
+
modifiers,
|
|
18747
|
+
actualKey
|
|
18748
|
+
} = parseKeyGroup(group);
|
|
18749
|
+
const expectCtrl = modifiers.ctrl || !isMac && (modifiers.cmd || modifiers.meta);
|
|
18750
|
+
const expectMeta = isMac && (modifiers.cmd || modifiers.meta);
|
|
18751
|
+
return e.ctrlKey === expectCtrl && e.metaKey === expectMeta && e.shiftKey === modifiers.shift && e.altKey === modifiers.alt && e.key.toLowerCase() === actualKey?.toLowerCase();
|
|
18752
|
+
}
|
|
18753
|
+
return cleanup;
|
|
18754
|
+
}
|
|
18755
|
+
|
|
18361
18756
|
// Types
|
|
18362
18757
|
|
|
18363
18758
|
const makeVColorPickerProps = propsFactory({
|
|
@@ -18904,7 +19299,7 @@ const VCombobox = genericComponent()({
|
|
|
18904
19299
|
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
18905
19300
|
onClick: () => select(item, null)
|
|
18906
19301
|
});
|
|
18907
|
-
if (item.
|
|
19302
|
+
if (item.type === 'divider') {
|
|
18908
19303
|
return slots.divider?.({
|
|
18909
19304
|
props: item.raw,
|
|
18910
19305
|
index
|
|
@@ -18912,7 +19307,7 @@ const VCombobox = genericComponent()({
|
|
|
18912
19307
|
"key": `divider-${index}`
|
|
18913
19308
|
}), null);
|
|
18914
19309
|
}
|
|
18915
|
-
if (item.
|
|
19310
|
+
if (item.type === 'subheader') {
|
|
18916
19311
|
return slots.subheader?.({
|
|
18917
19312
|
props: item.raw,
|
|
18918
19313
|
index
|
|
@@ -19786,7 +20181,8 @@ function sortItems(items, sortByItems, locale, options) {
|
|
|
19786
20181
|
|
|
19787
20182
|
// Dates should be compared numerically
|
|
19788
20183
|
if (sortA instanceof Date && sortB instanceof Date) {
|
|
19789
|
-
|
|
20184
|
+
sortA = sortA.getTime();
|
|
20185
|
+
sortB = sortB.getTime();
|
|
19790
20186
|
}
|
|
19791
20187
|
[sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s);
|
|
19792
20188
|
if (sortA !== sortB) {
|
|
@@ -20495,10 +20891,15 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
|
20495
20891
|
type: String,
|
|
20496
20892
|
default: 'start'
|
|
20497
20893
|
},
|
|
20498
|
-
fixed:
|
|
20894
|
+
fixed: {
|
|
20895
|
+
type: [Boolean, String],
|
|
20896
|
+
default: false
|
|
20897
|
+
},
|
|
20499
20898
|
fixedOffset: [Number, String],
|
|
20899
|
+
fixedEndOffset: [Number, String],
|
|
20500
20900
|
height: [Number, String],
|
|
20501
20901
|
lastFixed: Boolean,
|
|
20902
|
+
firstFixedEnd: Boolean,
|
|
20502
20903
|
noPadding: Boolean,
|
|
20503
20904
|
tag: String,
|
|
20504
20905
|
width: [Number, String],
|
|
@@ -20509,11 +20910,13 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
|
20509
20910
|
slots
|
|
20510
20911
|
} = _ref;
|
|
20511
20912
|
const Tag = props.tag ?? 'td';
|
|
20913
|
+
const fixedSide = typeof props.fixed === 'string' ? props.fixed : props.fixed ? 'start' : 'none';
|
|
20512
20914
|
return createVNode(Tag, {
|
|
20513
|
-
"tabindex": "0",
|
|
20514
20915
|
"class": normalizeClass(['v-data-table__td', {
|
|
20515
|
-
'v-data-table-column--fixed':
|
|
20916
|
+
'v-data-table-column--fixed': fixedSide === 'start',
|
|
20917
|
+
'v-data-table-column--fixed-end': fixedSide === 'end',
|
|
20516
20918
|
'v-data-table-column--last-fixed': props.lastFixed,
|
|
20919
|
+
'v-data-table-column--first-fixed-end': props.firstFixedEnd,
|
|
20517
20920
|
'v-data-table-column--no-padding': props.noPadding,
|
|
20518
20921
|
'v-data-table-column--nowrap': props.nowrap
|
|
20519
20922
|
}, `v-data-table-column--align-${props.align}`]),
|
|
@@ -20521,7 +20924,8 @@ const VDataTableColumn = defineFunctionalComponent({
|
|
|
20521
20924
|
height: convertToUnit(props.height),
|
|
20522
20925
|
width: convertToUnit(props.width),
|
|
20523
20926
|
maxWidth: convertToUnit(props.maxWidth),
|
|
20524
|
-
left: convertToUnit(props.fixedOffset || null)
|
|
20927
|
+
left: fixedSide === 'start' ? convertToUnit(props.fixedOffset || null) : undefined,
|
|
20928
|
+
right: fixedSide === 'end' ? convertToUnit(props.fixedEndOffset || null) : undefined
|
|
20525
20929
|
}
|
|
20526
20930
|
}, {
|
|
20527
20931
|
default: () => [slots.default?.()]
|
|
@@ -20618,20 +21022,28 @@ function getDepth(item) {
|
|
|
20618
21022
|
}
|
|
20619
21023
|
function parseFixedColumns(items) {
|
|
20620
21024
|
let seenFixed = false;
|
|
20621
|
-
function setFixed(item) {
|
|
20622
|
-
let
|
|
21025
|
+
function setFixed(item, side) {
|
|
21026
|
+
let parentFixedSide = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'none';
|
|
20623
21027
|
if (!item) return;
|
|
20624
|
-
if (
|
|
20625
|
-
item.fixed =
|
|
21028
|
+
if (parentFixedSide !== 'none') {
|
|
21029
|
+
item.fixed = parentFixedSide;
|
|
20626
21030
|
}
|
|
20627
|
-
|
|
20628
|
-
|
|
20629
|
-
|
|
20630
|
-
|
|
21031
|
+
|
|
21032
|
+
// normalize to simplify logic below
|
|
21033
|
+
if (item.fixed === true) {
|
|
21034
|
+
item.fixed = 'start';
|
|
21035
|
+
}
|
|
21036
|
+
const orderedChildren = side === 'start' ? item.children?.toReversed() : item.children;
|
|
21037
|
+
if (item.fixed === side) {
|
|
21038
|
+
if (orderedChildren) {
|
|
21039
|
+
for (const child of orderedChildren) {
|
|
21040
|
+
setFixed(child, side, side);
|
|
20631
21041
|
}
|
|
20632
21042
|
} else {
|
|
20633
|
-
if (!seenFixed) {
|
|
21043
|
+
if (!seenFixed && side === 'start') {
|
|
20634
21044
|
item.lastFixed = true;
|
|
21045
|
+
} else if (!seenFixed && side === 'end') {
|
|
21046
|
+
item.firstFixedEnd = true;
|
|
20635
21047
|
} else if (isNaN(Number(item.width))) {
|
|
20636
21048
|
consoleError(`Multiple fixed columns should have a static width (key: ${item.key})`);
|
|
20637
21049
|
} else {
|
|
@@ -20640,36 +21052,57 @@ function parseFixedColumns(items) {
|
|
|
20640
21052
|
seenFixed = true;
|
|
20641
21053
|
}
|
|
20642
21054
|
} else {
|
|
20643
|
-
if (
|
|
20644
|
-
for (
|
|
20645
|
-
setFixed(
|
|
21055
|
+
if (orderedChildren) {
|
|
21056
|
+
for (const child of orderedChildren) {
|
|
21057
|
+
setFixed(child, side);
|
|
20646
21058
|
}
|
|
20647
21059
|
} else {
|
|
20648
21060
|
seenFixed = false;
|
|
20649
21061
|
}
|
|
20650
21062
|
}
|
|
20651
21063
|
}
|
|
20652
|
-
for (
|
|
20653
|
-
setFixed(
|
|
21064
|
+
for (const item of items.toReversed()) {
|
|
21065
|
+
setFixed(item, 'start');
|
|
21066
|
+
}
|
|
21067
|
+
for (const item of items) {
|
|
21068
|
+
setFixed(item, 'end');
|
|
20654
21069
|
}
|
|
20655
21070
|
function setFixedOffset(item) {
|
|
20656
|
-
let
|
|
20657
|
-
if (!item) return
|
|
21071
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
21072
|
+
if (!item) return offset;
|
|
20658
21073
|
if (item.children) {
|
|
20659
|
-
item.fixedOffset =
|
|
21074
|
+
item.fixedOffset = offset;
|
|
20660
21075
|
for (const child of item.children) {
|
|
20661
|
-
|
|
21076
|
+
offset = setFixedOffset(child, offset);
|
|
20662
21077
|
}
|
|
20663
|
-
} else if (item.fixed) {
|
|
20664
|
-
item.fixedOffset =
|
|
20665
|
-
|
|
21078
|
+
} else if (item.fixed && item.fixed !== 'end') {
|
|
21079
|
+
item.fixedOffset = offset;
|
|
21080
|
+
offset += parseFloat(item.width || '0') || 0;
|
|
20666
21081
|
}
|
|
20667
|
-
return
|
|
21082
|
+
return offset;
|
|
20668
21083
|
}
|
|
20669
21084
|
let fixedOffset = 0;
|
|
20670
21085
|
for (const item of items) {
|
|
20671
21086
|
fixedOffset = setFixedOffset(item, fixedOffset);
|
|
20672
21087
|
}
|
|
21088
|
+
function setFixedEndOffset(item) {
|
|
21089
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
21090
|
+
if (!item) return offset;
|
|
21091
|
+
if (item.children) {
|
|
21092
|
+
item.fixedEndOffset = offset;
|
|
21093
|
+
for (const child of item.children) {
|
|
21094
|
+
offset = setFixedEndOffset(child, offset);
|
|
21095
|
+
}
|
|
21096
|
+
} else if (item.fixed === 'end') {
|
|
21097
|
+
item.fixedEndOffset = offset;
|
|
21098
|
+
offset += parseFloat(item.width || '0') || 0;
|
|
21099
|
+
}
|
|
21100
|
+
return offset;
|
|
21101
|
+
}
|
|
21102
|
+
let fixedEndOffset = 0;
|
|
21103
|
+
for (const item of items.toReversed()) {
|
|
21104
|
+
fixedEndOffset = setFixedEndOffset(item, fixedEndOffset);
|
|
21105
|
+
}
|
|
20673
21106
|
}
|
|
20674
21107
|
function parse(items, maxDepth) {
|
|
20675
21108
|
const headers = [];
|
|
@@ -20802,7 +21235,6 @@ const makeVDataTableHeadersProps = propsFactory({
|
|
|
20802
21235
|
color: String,
|
|
20803
21236
|
disableSort: Boolean,
|
|
20804
21237
|
fixedHeader: Boolean,
|
|
20805
|
-
lastFixed: Boolean,
|
|
20806
21238
|
multiSort: Boolean,
|
|
20807
21239
|
sortAscIcon: {
|
|
20808
21240
|
type: IconValue,
|
|
@@ -20849,11 +21281,12 @@ const VDataTableHeaders = genericComponent()({
|
|
|
20849
21281
|
loaderClasses
|
|
20850
21282
|
} = useLoader(props);
|
|
20851
21283
|
function getFixedStyles(column, y) {
|
|
20852
|
-
if (!(props.sticky || props.fixedHeader) && !
|
|
21284
|
+
if (!(props.sticky || props.fixedHeader) && !column.fixed) return undefined;
|
|
21285
|
+
const fixedSide = typeof column.fixed === 'string' ? column.fixed : column.fixed ? 'start' : 'none';
|
|
20853
21286
|
return {
|
|
20854
21287
|
position: 'sticky',
|
|
20855
|
-
left:
|
|
20856
|
-
right:
|
|
21288
|
+
left: fixedSide === 'start' ? convertToUnit(column.fixedOffset) : undefined,
|
|
21289
|
+
right: fixedSide === 'end' ? convertToUnit(column.fixedEndOffset) : undefined,
|
|
20857
21290
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
|
20858
21291
|
};
|
|
20859
21292
|
}
|
|
@@ -20913,14 +21346,15 @@ const VDataTableHeaders = genericComponent()({
|
|
|
20913
21346
|
},
|
|
20914
21347
|
"colspan": column.colspan,
|
|
20915
21348
|
"rowspan": column.rowspan,
|
|
20916
|
-
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
|
20917
21349
|
"fixed": column.fixed,
|
|
20918
21350
|
"nowrap": column.nowrap,
|
|
20919
21351
|
"lastFixed": column.lastFixed,
|
|
20920
|
-
"
|
|
20921
|
-
|
|
20922
|
-
"
|
|
20923
|
-
|
|
21352
|
+
"firstFixedEnd": column.firstFixedEnd,
|
|
21353
|
+
"noPadding": noPadding,
|
|
21354
|
+
"tabindex": column.sortable ? 0 : undefined,
|
|
21355
|
+
"onClick": column.sortable ? () => toggleSort(column) : undefined,
|
|
21356
|
+
"onKeydown": column.sortable ? event => handleEnterKeyPress(event, column) : undefined
|
|
21357
|
+
}, headerProps), {
|
|
20924
21358
|
default: () => {
|
|
20925
21359
|
const columnSlotName = `header.${column.key}`;
|
|
20926
21360
|
const columnSlotProps = {
|
|
@@ -21196,7 +21630,9 @@ const VDataTableRow = genericComponent()({
|
|
|
21196
21630
|
},
|
|
21197
21631
|
"fixed": column.fixed,
|
|
21198
21632
|
"fixedOffset": column.fixedOffset,
|
|
21633
|
+
"fixedEndOffset": column.fixedEndOffset,
|
|
21199
21634
|
"lastFixed": column.lastFixed,
|
|
21635
|
+
"firstFixedEnd": column.firstFixedEnd,
|
|
21200
21636
|
"maxWidth": !mobile.value ? column.maxWidth : undefined,
|
|
21201
21637
|
"noPadding": column.key === 'data-table-select' || column.key === 'data-table-expand',
|
|
21202
21638
|
"nowrap": column.nowrap,
|
|
@@ -22606,10 +23042,9 @@ function useCalendar(props) {
|
|
|
22606
23042
|
const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value));
|
|
22607
23043
|
return adapter.setMonth(date, value);
|
|
22608
23044
|
}, v => adapter.getMonth(v));
|
|
22609
|
-
const
|
|
23045
|
+
const weekdayLabels = computed(() => {
|
|
22610
23046
|
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
|
22611
|
-
|
|
22612
|
-
return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
|
|
23047
|
+
return adapter.getWeekdays(props.firstDayOfWeek, props.weekdayFormat).filter((_, i) => props.weekdays.includes((i + firstDayOfWeek) % 7));
|
|
22613
23048
|
});
|
|
22614
23049
|
const weeksInMonth = computed(() => {
|
|
22615
23050
|
const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
|
|
@@ -22633,13 +23068,14 @@ function useCalendar(props) {
|
|
|
22633
23068
|
});
|
|
22634
23069
|
function genDays(days, today) {
|
|
22635
23070
|
return days.filter(date => {
|
|
22636
|
-
return
|
|
23071
|
+
return props.weekdays.includes(adapter.toJsDate(date).getDay());
|
|
22637
23072
|
}).map((date, index) => {
|
|
22638
23073
|
const isoDate = adapter.toISO(date);
|
|
22639
23074
|
const isAdjacent = !adapter.isSameMonth(date, month.value);
|
|
22640
23075
|
const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value));
|
|
22641
23076
|
const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value));
|
|
22642
23077
|
const isSame = adapter.isSameDay(date, month.value);
|
|
23078
|
+
const weekdaysCount = props.weekdays.length;
|
|
22643
23079
|
return {
|
|
22644
23080
|
date,
|
|
22645
23081
|
formatted: adapter.format(date, 'keyboardDate'),
|
|
@@ -22651,8 +23087,8 @@ function useCalendar(props) {
|
|
|
22651
23087
|
isSelected: model.value.some(value => adapter.isSameDay(date, value)),
|
|
22652
23088
|
isStart,
|
|
22653
23089
|
isToday: adapter.isSameDay(date, today),
|
|
22654
|
-
isWeekEnd: index %
|
|
22655
|
-
isWeekStart: index %
|
|
23090
|
+
isWeekEnd: index % weekdaysCount === weekdaysCount - 1,
|
|
23091
|
+
isWeekStart: index % weekdaysCount === 0,
|
|
22656
23092
|
isoDate,
|
|
22657
23093
|
localized: adapter.format(date, 'dayOfMonth'),
|
|
22658
23094
|
month: adapter.getMonth(date),
|
|
@@ -22690,7 +23126,7 @@ function useCalendar(props) {
|
|
|
22690
23126
|
if (typeof props.allowedDates === 'function') {
|
|
22691
23127
|
return !props.allowedDates(date);
|
|
22692
23128
|
}
|
|
22693
|
-
return
|
|
23129
|
+
return false;
|
|
22694
23130
|
}
|
|
22695
23131
|
return {
|
|
22696
23132
|
displayValue,
|
|
@@ -22699,7 +23135,7 @@ function useCalendar(props) {
|
|
|
22699
23135
|
genDays,
|
|
22700
23136
|
model,
|
|
22701
23137
|
weeksInMonth,
|
|
22702
|
-
|
|
23138
|
+
weekdayLabels,
|
|
22703
23139
|
weekNumbers
|
|
22704
23140
|
};
|
|
22705
23141
|
}
|
|
@@ -22738,7 +23174,8 @@ const VDatePickerMonth = genericComponent()({
|
|
|
22738
23174
|
const {
|
|
22739
23175
|
daysInMonth,
|
|
22740
23176
|
model,
|
|
22741
|
-
weekNumbers
|
|
23177
|
+
weekNumbers,
|
|
23178
|
+
weekdayLabels
|
|
22742
23179
|
} = useCalendar(props);
|
|
22743
23180
|
const adapter = useDate();
|
|
22744
23181
|
const rangeStart = shallowRef();
|
|
@@ -22810,7 +23247,10 @@ const VDatePickerMonth = genericComponent()({
|
|
|
22810
23247
|
}
|
|
22811
23248
|
}
|
|
22812
23249
|
useRender(() => createElementVNode("div", {
|
|
22813
|
-
"class": "v-date-picker-month"
|
|
23250
|
+
"class": "v-date-picker-month",
|
|
23251
|
+
"style": {
|
|
23252
|
+
'--v-date-picker-days-in-week': props.weekdays.length
|
|
23253
|
+
}
|
|
22814
23254
|
}, [props.showWeek && createElementVNode("div", {
|
|
22815
23255
|
"key": "weeks",
|
|
22816
23256
|
"class": "v-date-picker-month__weeks"
|
|
@@ -22826,7 +23266,7 @@ const VDatePickerMonth = genericComponent()({
|
|
|
22826
23266
|
"ref": daysRef,
|
|
22827
23267
|
"key": daysInMonth.value[0].date?.toString(),
|
|
22828
23268
|
"class": "v-date-picker-month__days"
|
|
22829
|
-
}, [!props.hideWeekdays &&
|
|
23269
|
+
}, [!props.hideWeekdays && weekdayLabels.value.map(weekDay => createElementVNode("div", {
|
|
22830
23270
|
"class": normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
|
22831
23271
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
|
22832
23272
|
const slotProps = {
|
|
@@ -23209,7 +23649,8 @@ const VDatePicker = genericComponent()({
|
|
|
23209
23649
|
}
|
|
23210
23650
|
function allowedMonths(month) {
|
|
23211
23651
|
if (typeof props.allowedDates === 'function') {
|
|
23212
|
-
const
|
|
23652
|
+
const monthTwoDigits = String(month + 1).padStart(2, '0');
|
|
23653
|
+
const startOfMonth = adapter.parseISO(`${year.value}-${monthTwoDigits}-01`);
|
|
23213
23654
|
return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
|
|
23214
23655
|
}
|
|
23215
23656
|
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
|
@@ -25506,6 +25947,8 @@ function useHold(_ref) {
|
|
|
25506
25947
|
function holdStart(value) {
|
|
25507
25948
|
holdStop();
|
|
25508
25949
|
tick(value);
|
|
25950
|
+
window.addEventListener('pointerup', holdStop);
|
|
25951
|
+
document.addEventListener('blur', holdStop);
|
|
25509
25952
|
timeout = window.setTimeout(() => {
|
|
25510
25953
|
interval = window.setInterval(() => tick(value), HOLD_REPEAT);
|
|
25511
25954
|
}, HOLD_DELAY);
|
|
@@ -25513,6 +25956,8 @@ function useHold(_ref) {
|
|
|
25513
25956
|
function holdStop() {
|
|
25514
25957
|
window.clearTimeout(timeout);
|
|
25515
25958
|
window.clearInterval(interval);
|
|
25959
|
+
window.removeEventListener('pointerup', holdStop);
|
|
25960
|
+
document.removeEventListener('blur', holdStop);
|
|
25516
25961
|
}
|
|
25517
25962
|
function tick(value) {
|
|
25518
25963
|
toggleUpDown(value === 'up');
|
|
@@ -25648,7 +26093,7 @@ const VNumberInput = genericComponent()({
|
|
|
25648
26093
|
onClick: onControlClick,
|
|
25649
26094
|
onPointerup: onControlMouseup,
|
|
25650
26095
|
onPointerdown: onUpControlMousedown,
|
|
25651
|
-
onPointercancel:
|
|
26096
|
+
onPointercancel: onControlMouseup
|
|
25652
26097
|
}
|
|
25653
26098
|
};
|
|
25654
26099
|
const decrementSlotProps = {
|
|
@@ -25656,7 +26101,7 @@ const VNumberInput = genericComponent()({
|
|
|
25656
26101
|
onClick: onControlClick,
|
|
25657
26102
|
onPointerup: onControlMouseup,
|
|
25658
26103
|
onPointerdown: onDownControlMousedown,
|
|
25659
|
-
onPointercancel:
|
|
26104
|
+
onPointercancel: onControlMouseup
|
|
25660
26105
|
}
|
|
25661
26106
|
};
|
|
25662
26107
|
watch(() => props.precision, () => formatInputValue());
|
|
@@ -25737,7 +26182,6 @@ const VNumberInput = genericComponent()({
|
|
|
25737
26182
|
const el = e.currentTarget;
|
|
25738
26183
|
el?.releasePointerCapture(e.pointerId);
|
|
25739
26184
|
e.preventDefault();
|
|
25740
|
-
e.stopPropagation();
|
|
25741
26185
|
holdStop();
|
|
25742
26186
|
}
|
|
25743
26187
|
function onUpControlMousedown(e) {
|
|
@@ -25754,11 +26198,6 @@ const VNumberInput = genericComponent()({
|
|
|
25754
26198
|
e.stopPropagation();
|
|
25755
26199
|
holdStart('down');
|
|
25756
26200
|
}
|
|
25757
|
-
function onControlPointerCancel(e) {
|
|
25758
|
-
const el = e.currentTarget;
|
|
25759
|
-
el?.releasePointerCapture(e.pointerId);
|
|
25760
|
-
holdStop();
|
|
25761
|
-
}
|
|
25762
26201
|
function clampModel() {
|
|
25763
26202
|
if (controlsDisabled.value) return;
|
|
25764
26203
|
if (!vTextFieldRef.value) return;
|
|
@@ -25805,7 +26244,7 @@ const VNumberInput = genericComponent()({
|
|
|
25805
26244
|
"onClick": onControlClick,
|
|
25806
26245
|
"onPointerdown": onUpControlMousedown,
|
|
25807
26246
|
"onPointerup": onControlMouseup,
|
|
25808
|
-
"onPointercancel":
|
|
26247
|
+
"onPointercancel": onControlMouseup,
|
|
25809
26248
|
"size": controlNodeSize.value,
|
|
25810
26249
|
"tabindex": "-1"
|
|
25811
26250
|
}, null) : createVNode(VDefaultsProvider, {
|
|
@@ -25835,7 +26274,7 @@ const VNumberInput = genericComponent()({
|
|
|
25835
26274
|
"onClick": onControlClick,
|
|
25836
26275
|
"onPointerdown": onDownControlMousedown,
|
|
25837
26276
|
"onPointerup": onControlMouseup,
|
|
25838
|
-
"onPointercancel":
|
|
26277
|
+
"onPointercancel": onControlMouseup,
|
|
25839
26278
|
"size": controlNodeSize.value,
|
|
25840
26279
|
"tabindex": "-1"
|
|
25841
26280
|
}, null) : createVNode(VDefaultsProvider, {
|
|
@@ -25982,19 +26421,21 @@ const VOtpInput = genericComponent()({
|
|
|
25982
26421
|
const contentRef = ref();
|
|
25983
26422
|
const inputRef = ref([]);
|
|
25984
26423
|
const current = computed(() => inputRef.value[focusIndex.value]);
|
|
25985
|
-
|
|
25986
|
-
|
|
25987
|
-
|
|
25988
|
-
|
|
25989
|
-
|
|
25990
|
-
|
|
25991
|
-
|
|
25992
|
-
|
|
25993
|
-
|
|
25994
|
-
|
|
25995
|
-
|
|
25996
|
-
|
|
25997
|
-
|
|
26424
|
+
useToggleScope(() => props.autofocus, () => {
|
|
26425
|
+
const intersectScope = effectScope();
|
|
26426
|
+
intersectScope.run(() => {
|
|
26427
|
+
const {
|
|
26428
|
+
intersectionRef,
|
|
26429
|
+
isIntersecting
|
|
26430
|
+
} = useIntersectionObserver();
|
|
26431
|
+
watchEffect(() => {
|
|
26432
|
+
intersectionRef.value = inputRef.value[0];
|
|
26433
|
+
});
|
|
26434
|
+
watch(isIntersecting, v => {
|
|
26435
|
+
if (!v) return;
|
|
26436
|
+
intersectionRef.value?.focus();
|
|
26437
|
+
intersectScope.stop();
|
|
26438
|
+
});
|
|
25998
26439
|
});
|
|
25999
26440
|
});
|
|
26000
26441
|
function onInput() {
|
|
@@ -30005,6 +30446,8 @@ const VTreeviewSymbol = Symbol.for('vuetify:v-treeview');
|
|
|
30005
30446
|
|
|
30006
30447
|
const makeVTreeviewItemProps = propsFactory({
|
|
30007
30448
|
loading: Boolean,
|
|
30449
|
+
hideActions: Boolean,
|
|
30450
|
+
indentLines: Array,
|
|
30008
30451
|
toggleIcon: IconValue,
|
|
30009
30452
|
...makeVListItemProps({
|
|
30010
30453
|
slim: true
|
|
@@ -30040,23 +30483,31 @@ const VTreeviewItem = genericComponent()({
|
|
|
30040
30483
|
emit('toggleExpand', e);
|
|
30041
30484
|
}
|
|
30042
30485
|
useRender(() => {
|
|
30043
|
-
const listItemProps =
|
|
30044
|
-
const hasPrepend = slots.prepend || props.toggleIcon;
|
|
30486
|
+
const listItemProps = VListItem.filterProps(props);
|
|
30487
|
+
const hasPrepend = slots.prepend || props.toggleIcon || props.indentLines;
|
|
30045
30488
|
return createVNode(VListItem, mergeProps({
|
|
30046
30489
|
"ref": vListItemRef
|
|
30047
30490
|
}, listItemProps, {
|
|
30048
|
-
"active": vListItemRef.value?.isActivated,
|
|
30491
|
+
"active": vListItemRef.value?.isActivated || undefined,
|
|
30049
30492
|
"class": ['v-treeview-item', {
|
|
30050
30493
|
'v-treeview-item--activatable-group-activator': isActivatableGroupActivator.value,
|
|
30051
30494
|
'v-treeview-item--filtered': isFiltered.value
|
|
30052
30495
|
}, props.class],
|
|
30053
30496
|
"ripple": false,
|
|
30054
|
-
"onClick":
|
|
30497
|
+
"onClick": activateGroupActivator
|
|
30055
30498
|
}), {
|
|
30056
30499
|
...slots,
|
|
30057
30500
|
prepend: hasPrepend ? slotProps => {
|
|
30058
|
-
return createElementVNode(Fragment, null, [
|
|
30059
|
-
"
|
|
30501
|
+
return createElementVNode(Fragment, null, [props.indentLines && props.indentLines.length > 0 ? createElementVNode("div", {
|
|
30502
|
+
"key": "indent-lines",
|
|
30503
|
+
"class": "v-treeview-indent-lines",
|
|
30504
|
+
"style": {
|
|
30505
|
+
'--v-indent-parts': props.indentLines.length
|
|
30506
|
+
}
|
|
30507
|
+
}, [props.indentLines.map(type => createElementVNode("div", {
|
|
30508
|
+
"class": normalizeClass(`v-treeview-indent-line v-treeview-indent-line--${type}`)
|
|
30509
|
+
}, null))]) : '', !props.hideActions && createVNode(VListItemAction, {
|
|
30510
|
+
"start": true
|
|
30060
30511
|
}, {
|
|
30061
30512
|
default: () => [props.toggleIcon ? createVNode(VBtn, {
|
|
30062
30513
|
"density": "compact",
|
|
@@ -30065,13 +30516,11 @@ const VTreeviewItem = genericComponent()({
|
|
|
30065
30516
|
"variant": "text",
|
|
30066
30517
|
"onClick": onClickAction
|
|
30067
30518
|
}, {
|
|
30068
|
-
loader() {
|
|
30069
|
-
|
|
30070
|
-
|
|
30071
|
-
|
|
30072
|
-
|
|
30073
|
-
}, null);
|
|
30074
|
-
}
|
|
30519
|
+
loader: () => createVNode(VProgressCircular, {
|
|
30520
|
+
"indeterminate": "disable-shrink",
|
|
30521
|
+
"size": "20",
|
|
30522
|
+
"width": "2"
|
|
30523
|
+
}, null)
|
|
30075
30524
|
}) : createElementVNode("div", {
|
|
30076
30525
|
"class": "v-treeview-item__level"
|
|
30077
30526
|
}, null)]
|
|
@@ -30079,7 +30528,7 @@ const VTreeviewItem = genericComponent()({
|
|
|
30079
30528
|
} : undefined
|
|
30080
30529
|
});
|
|
30081
30530
|
});
|
|
30082
|
-
return {};
|
|
30531
|
+
return forwardRefs({}, vListItemRef);
|
|
30083
30532
|
}
|
|
30084
30533
|
});
|
|
30085
30534
|
|
|
@@ -30104,14 +30553,20 @@ const makeVTreeviewChildrenProps = propsFactory({
|
|
|
30104
30553
|
falseIcon: IconValue,
|
|
30105
30554
|
trueIcon: IconValue,
|
|
30106
30555
|
returnObject: Boolean,
|
|
30556
|
+
activatable: Boolean,
|
|
30107
30557
|
selectable: Boolean,
|
|
30108
30558
|
selectedColor: String,
|
|
30109
30559
|
selectStrategy: [String, Function, Object],
|
|
30110
30560
|
index: Number,
|
|
30561
|
+
isLastGroup: Boolean,
|
|
30562
|
+
separateRoots: Boolean,
|
|
30563
|
+
parentIndentLines: Array,
|
|
30564
|
+
indentLinesVariant: String,
|
|
30111
30565
|
path: {
|
|
30112
30566
|
type: Array,
|
|
30113
30567
|
default: () => []
|
|
30114
30568
|
},
|
|
30569
|
+
...pick(makeVTreeviewItemProps(), ['hideActions']),
|
|
30115
30570
|
...makeDensityProps()
|
|
30116
30571
|
}, 'VTreeviewChildren');
|
|
30117
30572
|
const VTreeviewChildren = genericComponent()({
|
|
@@ -30122,7 +30577,8 @@ const VTreeviewChildren = genericComponent()({
|
|
|
30122
30577
|
slots
|
|
30123
30578
|
} = _ref;
|
|
30124
30579
|
const isLoading = reactive(new Set());
|
|
30125
|
-
const
|
|
30580
|
+
const activatorItems = ref([]);
|
|
30581
|
+
const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable && !props.activatable));
|
|
30126
30582
|
async function checkChildren(item) {
|
|
30127
30583
|
try {
|
|
30128
30584
|
if (!props.items?.length || !props.loadChildren) return;
|
|
@@ -30136,22 +30592,35 @@ const VTreeviewChildren = genericComponent()({
|
|
|
30136
30592
|
}
|
|
30137
30593
|
function selectItem(select, isSelected) {
|
|
30138
30594
|
if (props.selectable) {
|
|
30139
|
-
select(
|
|
30595
|
+
select(isSelected);
|
|
30140
30596
|
}
|
|
30141
30597
|
}
|
|
30142
|
-
return () => slots.default?.() ?? props.items?.map((item, index) => {
|
|
30598
|
+
return () => slots.default?.() ?? props.items?.map((item, index, items) => {
|
|
30143
30599
|
const {
|
|
30144
30600
|
children,
|
|
30145
30601
|
props: itemProps
|
|
30146
30602
|
} = item;
|
|
30147
30603
|
const loading = isLoading.has(item.value);
|
|
30604
|
+
const nextItemHasChildren = !!items.at(index + 1)?.children;
|
|
30605
|
+
const depth = props.path?.length ?? 0;
|
|
30606
|
+
const isLast = items.length - 1 === index;
|
|
30148
30607
|
const treeItemProps = {
|
|
30149
30608
|
index,
|
|
30150
|
-
depth
|
|
30609
|
+
depth,
|
|
30151
30610
|
isFirst: index === 0,
|
|
30152
|
-
isLast
|
|
30153
|
-
path: [...props.path, index]
|
|
30611
|
+
isLast,
|
|
30612
|
+
path: [...props.path, index],
|
|
30613
|
+
hideAction: props.hideActions
|
|
30154
30614
|
};
|
|
30615
|
+
const indentLines = getIndentLines({
|
|
30616
|
+
depth,
|
|
30617
|
+
isLast,
|
|
30618
|
+
isLastGroup: props.isLastGroup,
|
|
30619
|
+
leafLinks: !props.hideActions,
|
|
30620
|
+
separateRoots: props.separateRoots,
|
|
30621
|
+
parentIndentLines: props.parentIndentLines,
|
|
30622
|
+
variant: props.indentLinesVariant
|
|
30623
|
+
});
|
|
30155
30624
|
const slotsWithItem = {
|
|
30156
30625
|
prepend: slotProps => createElementVNode(Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && createElementVNode("div", null, [createVNode(VCheckboxBtn, {
|
|
30157
30626
|
"key": item.value,
|
|
@@ -30164,7 +30633,8 @@ const VTreeviewChildren = genericComponent()({
|
|
|
30164
30633
|
"indeterminateIcon": props.indeterminateIcon,
|
|
30165
30634
|
"falseIcon": props.falseIcon,
|
|
30166
30635
|
"trueIcon": props.trueIcon,
|
|
30167
|
-
"
|
|
30636
|
+
"onUpdate:modelValue": v => selectItem(slotProps.select, v),
|
|
30637
|
+
"onClick": e => e.stopPropagation(),
|
|
30168
30638
|
"onKeydown": e => {
|
|
30169
30639
|
if (!['Enter', 'Space'].includes(e.key)) return;
|
|
30170
30640
|
e.stopPropagation();
|
|
@@ -30211,24 +30681,45 @@ const VTreeviewChildren = genericComponent()({
|
|
|
30211
30681
|
...activatorProps,
|
|
30212
30682
|
value: itemProps?.value,
|
|
30213
30683
|
onToggleExpand: [() => checkChildren(item), activatorProps.onClick],
|
|
30214
|
-
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] :
|
|
30684
|
+
onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] : () => selectItem(activatorItems.value[index]?.select, !activatorItems.value[index]?.isSelected)
|
|
30215
30685
|
};
|
|
30216
|
-
return createVNode(VTreeviewItem, mergeProps(
|
|
30686
|
+
return createVNode(VTreeviewItem, mergeProps({
|
|
30687
|
+
"ref": el => activatorItems.value[index] = el
|
|
30688
|
+
}, listItemProps, {
|
|
30689
|
+
"hideActions": props.hideActions,
|
|
30690
|
+
"indentLines": indentLines.node,
|
|
30217
30691
|
"value": props.returnObject ? item.raw : itemProps.value,
|
|
30218
30692
|
"loading": loading
|
|
30219
30693
|
}), slotsWithItem);
|
|
30220
30694
|
},
|
|
30221
30695
|
default: () => createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
|
|
30222
30696
|
"items": children,
|
|
30697
|
+
"indentLinesVariant": props.indentLinesVariant,
|
|
30698
|
+
"parentIndentLines": indentLines.children,
|
|
30699
|
+
"isLastGroup": nextItemHasChildren,
|
|
30223
30700
|
"returnObject": props.returnObject
|
|
30224
30701
|
}), slots)
|
|
30225
|
-
}) : slots.item
|
|
30702
|
+
}) : renderSlot(slots.item, {
|
|
30226
30703
|
props: itemProps,
|
|
30227
30704
|
item: item.raw,
|
|
30228
30705
|
internalItem: item
|
|
30229
|
-
}
|
|
30230
|
-
|
|
30231
|
-
|
|
30706
|
+
}, () => {
|
|
30707
|
+
if (item.type === 'divider') {
|
|
30708
|
+
return renderSlot(slots.divider, {
|
|
30709
|
+
props: item.raw
|
|
30710
|
+
}, () => createVNode(VDivider, item.props, null));
|
|
30711
|
+
}
|
|
30712
|
+
if (item.type === 'subheader') {
|
|
30713
|
+
return renderSlot(slots.subheader, {
|
|
30714
|
+
props: item.raw
|
|
30715
|
+
}, () => createVNode(VListSubheader, item.props, null));
|
|
30716
|
+
}
|
|
30717
|
+
return createVNode(VTreeviewItem, mergeProps(itemProps, {
|
|
30718
|
+
"hideActions": props.hideActions,
|
|
30719
|
+
"indentLines": indentLines.leaf,
|
|
30720
|
+
"value": props.returnObject ? toRaw(item.raw) : itemProps.value
|
|
30721
|
+
}), slotsWithItem);
|
|
30722
|
+
});
|
|
30232
30723
|
});
|
|
30233
30724
|
}
|
|
30234
30725
|
});
|
|
@@ -30244,20 +30735,18 @@ function flatten(items) {
|
|
|
30244
30735
|
const makeVTreeviewProps = propsFactory({
|
|
30245
30736
|
fluid: Boolean,
|
|
30246
30737
|
openAll: Boolean,
|
|
30738
|
+
indentLines: [Boolean, String],
|
|
30247
30739
|
search: String,
|
|
30248
30740
|
...makeFilterProps({
|
|
30249
30741
|
filterKeys: ['title']
|
|
30250
30742
|
}),
|
|
30251
|
-
...omit(makeVTreeviewChildrenProps(), ['index', 'path']),
|
|
30743
|
+
...omit(makeVTreeviewChildrenProps(), ['index', 'path', 'indentLinesVariant', 'parentIndentLines', 'isLastGroup']),
|
|
30252
30744
|
...omit(makeVListProps({
|
|
30253
30745
|
collapseIcon: '$treeviewCollapse',
|
|
30254
30746
|
expandIcon: '$treeviewExpand',
|
|
30255
30747
|
slim: true
|
|
30256
|
-
}), ['
|
|
30257
|
-
modelValue:
|
|
30258
|
-
type: Array,
|
|
30259
|
-
default: () => []
|
|
30260
|
-
}
|
|
30748
|
+
}), ['nav', 'openStrategy']),
|
|
30749
|
+
modelValue: Array
|
|
30261
30750
|
}, 'VTreeview');
|
|
30262
30751
|
const VTreeview = genericComponent()({
|
|
30263
30752
|
name: 'VTreeview',
|
|
@@ -30272,7 +30761,8 @@ const VTreeview = genericComponent()({
|
|
|
30272
30761
|
},
|
|
30273
30762
|
setup(props, _ref) {
|
|
30274
30763
|
let {
|
|
30275
|
-
slots
|
|
30764
|
+
slots,
|
|
30765
|
+
emit
|
|
30276
30766
|
} = _ref;
|
|
30277
30767
|
const {
|
|
30278
30768
|
items
|
|
@@ -30281,13 +30771,12 @@ const VTreeview = genericComponent()({
|
|
|
30281
30771
|
const baseColor = toRef(() => props.baseColor);
|
|
30282
30772
|
const color = toRef(() => props.color);
|
|
30283
30773
|
const activated = useProxiedModel(props, 'activated');
|
|
30284
|
-
const
|
|
30285
|
-
const _selected = useProxiedModel(props, 'selected', props.modelValue);
|
|
30774
|
+
const _selected = useProxiedModel(props, 'selected');
|
|
30286
30775
|
const selected = computed({
|
|
30287
|
-
get: () => _selected.value,
|
|
30776
|
+
get: () => props.modelValue ?? _selected.value,
|
|
30288
30777
|
set(val) {
|
|
30289
30778
|
_selected.value = val;
|
|
30290
|
-
|
|
30779
|
+
emit('update:modelValue', val);
|
|
30291
30780
|
}
|
|
30292
30781
|
});
|
|
30293
30782
|
const vListRef = ref();
|
|
@@ -30353,6 +30842,7 @@ const VTreeview = genericComponent()({
|
|
|
30353
30842
|
useRender(() => {
|
|
30354
30843
|
const listProps = VList.filterProps(props);
|
|
30355
30844
|
const treeviewChildrenProps = VTreeviewChildren.filterProps(props);
|
|
30845
|
+
const indentLinesVariant = typeof props.indentLines === 'boolean' ? 'default' : props.indentLines;
|
|
30356
30846
|
return createVNode(VList, mergeProps({
|
|
30357
30847
|
"ref": vListRef
|
|
30358
30848
|
}, listProps, {
|
|
@@ -30370,7 +30860,9 @@ const VTreeview = genericComponent()({
|
|
|
30370
30860
|
default: () => [createVNode(VTreeviewChildren, mergeProps(treeviewChildrenProps, {
|
|
30371
30861
|
"density": props.density,
|
|
30372
30862
|
"returnObject": props.returnObject,
|
|
30373
|
-
"items": items.value
|
|
30863
|
+
"items": items.value,
|
|
30864
|
+
"parentIndentLines": props.indentLines ? [] : undefined,
|
|
30865
|
+
"indentLinesVariant": indentLinesVariant
|
|
30374
30866
|
}), slots)]
|
|
30375
30867
|
});
|
|
30376
30868
|
});
|
|
@@ -30890,7 +31382,7 @@ function createVuetify$1() {
|
|
|
30890
31382
|
};
|
|
30891
31383
|
});
|
|
30892
31384
|
}
|
|
30893
|
-
const version$1 = "3.9.0
|
|
31385
|
+
const version$1 = "3.9.0";
|
|
30894
31386
|
createVuetify$1.version = version$1;
|
|
30895
31387
|
|
|
30896
31388
|
// Vue's inject() can only be used in setup
|
|
@@ -30915,8 +31407,8 @@ const createVuetify = function () {
|
|
|
30915
31407
|
...options
|
|
30916
31408
|
});
|
|
30917
31409
|
};
|
|
30918
|
-
const version = "3.9.0
|
|
31410
|
+
const version = "3.9.0";
|
|
30919
31411
|
createVuetify.version = version;
|
|
30920
31412
|
|
|
30921
|
-
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };
|
|
31413
|
+
export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useHotkey, useLayout, useLocale, useRtl, useTheme, version };
|
|
30922
31414
|
//# sourceMappingURL=vuetify.esm.js.map
|