@vuetify/nightly 3.2.0-dev-20230214.0 → 3.2.0-dev-20230322.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/CHANGELOG.md +5 -17
- package/dist/json/attributes.json +243 -59
- package/dist/json/tags.json +48 -2
- package/dist/json/web-types.json +1648 -279
- package/dist/vuetify-labs.css +666 -482
- package/dist/vuetify-labs.d.ts +59419 -13475
- package/dist/vuetify-labs.esm.js +797 -531
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +797 -531
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +524 -355
- package/dist/vuetify.d.ts +55670 -14368
- package/dist/vuetify.esm.js +607 -462
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +607 -462
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +793 -793
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.ts +6 -9
- package/lib/blueprints/md1.d.ts +6 -9
- package/lib/blueprints/md2.d.ts +6 -9
- package/lib/blueprints/md3.d.ts +6 -9
- package/lib/blueprints/md3.mjs +6 -0
- package/lib/blueprints/md3.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.css +1 -1
- package/lib/components/VAlert/VAlert.mjs +29 -15
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/_variables.scss +1 -1
- package/lib/components/VAlert/index.d.ts +515 -65
- package/lib/components/VApp/VApp.css +1 -0
- package/lib/components/VApp/VApp.sass +1 -0
- package/lib/components/VApp/index.d.ts +161 -17
- package/lib/components/VAppBar/VAppBar.mjs +9 -4
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.ts +624 -82
- package/lib/components/VAutocomplete/VAutocomplete.mjs +23 -8
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +1744 -113
- package/lib/components/VAvatar/index.d.ts +207 -25
- package/lib/components/VBadge/index.d.ts +286 -36
- package/lib/components/VBanner/VBanner.mjs +19 -12
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/index.d.ts +485 -67
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs +6 -2
- package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
- package/lib/components/VBottomNavigation/index.d.ts +323 -36
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/index.d.ts +346 -42
- package/lib/components/VBtn/VBtn.css +0 -5
- package/lib/components/VBtn/VBtn.mjs +65 -58
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +0 -7
- package/lib/components/VBtn/_variables.scss +0 -2
- package/lib/components/VBtn/index.d.ts +454 -59
- package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -7
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
- package/lib/components/VBtnGroup/index.d.ts +187 -22
- package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/index.d.ts +248 -32
- package/lib/components/VCard/VCard.mjs +10 -6
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCardItem.mjs +27 -23
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCard/index.d.ts +958 -132
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/index.d.ts +585 -87
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -4
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.ts +841 -119
- package/lib/components/VChip/VChip.css +110 -90
- package/lib/components/VChip/VChip.mjs +70 -48
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/_mixins.scss +27 -23
- package/lib/components/VChip/index.d.ts +476 -66
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VChipGroup/index.d.ts +229 -28
- package/lib/components/VCode/index.d.ts +112 -13
- package/lib/components/VColorPicker/VColorPicker.mjs +9 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.css +2 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +36 -18
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +2 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -4
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/index.d.ts +284 -20
- package/lib/components/VColorPicker/util/index.mjs +2 -5
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +23 -8
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +1756 -113
- package/lib/components/VCounter/index.d.ts +1909 -78
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.d.ts +136 -18
- package/lib/components/VDialog/VDialog.css +31 -24
- package/lib/components/VDialog/VDialog.mjs +2 -2
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +19 -12
- package/lib/components/VDialog/index.d.ts +2403 -124
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VDivider/index.d.ts +132 -19
- package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.ts +741 -104
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/index.d.ts +179 -23
- package/lib/components/VFileInput/VFileInput.mjs +1 -0
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.ts +1069 -93
- package/lib/components/VFooter/VFooter.css +2 -0
- package/lib/components/VFooter/VFooter.sass +2 -0
- package/lib/components/VFooter/_variables.scss +2 -0
- package/lib/components/VFooter/index.d.ts +206 -25
- package/lib/components/VForm/index.d.ts +207 -20
- package/lib/components/VGrid/VCol.mjs +6 -5
- package/lib/components/VGrid/VCol.mjs.map +1 -1
- package/lib/components/VGrid/VRow.mjs +4 -4
- package/lib/components/VGrid/VRow.mjs.map +1 -1
- package/lib/components/VGrid/index.d.ts +745 -64
- package/lib/components/VHover/index.d.ts +188 -29
- package/lib/components/VIcon/index.d.ts +500 -44
- package/lib/components/VImg/VImg.mjs +2 -2
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/index.d.ts +281 -40
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/index.d.ts +321 -47
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VItemGroup/index.d.ts +313 -45
- package/lib/components/VKbd/VKbd.css +1 -0
- package/lib/components/VKbd/VKbd.sass +1 -0
- package/lib/components/VKbd/_variables.scss +1 -0
- package/lib/components/VKbd/index.d.ts +112 -13
- package/lib/components/VLabel/index.d.ts +115 -16
- package/lib/components/VLayout/index.d.ts +302 -35
- package/lib/components/VLazy/VLazy.mjs +4 -1
- package/lib/components/VLazy/VLazy.mjs.map +1 -1
- package/lib/components/VLazy/index.d.ts +222 -27
- package/lib/components/VList/VListChildren.mjs +2 -2
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +1 -4
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +23 -19
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListSubheader.mjs.map +1 -1
- package/lib/components/VList/index.d.ts +1500 -191
- package/lib/components/VLocaleProvider/index.d.ts +123 -16
- package/lib/components/VMain/index.d.ts +121 -14
- package/lib/components/VMenu/VMenu.css +4 -4
- package/lib/components/VMenu/VMenu.mjs +8 -7
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +1 -1
- package/lib/components/VMenu/index.d.ts +2411 -121
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VMessages/index.d.ts +1934 -87
- package/lib/components/VNavigationDrawer/index.d.ts +382 -47
- package/lib/components/VNoSsr/index.d.ts +6 -0
- package/lib/components/VOverlay/VOverlay.css +2 -2
- package/lib/components/VOverlay/VOverlay.mjs +1 -4
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/index.d.ts +527 -75
- package/lib/components/VOverlay/scrollStrategies.mjs +2 -2
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VPagination/index.d.ts +504 -56
- package/lib/components/VParallax/VParallax.mjs +3 -3
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VParallax/index.d.ts +144 -19
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressCircular/index.d.ts +189 -22
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VProgressLinear/index.d.ts +325 -42
- package/lib/components/VRadio/index.d.ts +318 -46
- package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -6
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.ts +468 -66
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.ts +530 -66
- package/lib/components/VRating/VRating.css +0 -4
- package/lib/components/VRating/VRating.mjs +6 -35
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/VRating.sass +0 -5
- package/lib/components/VRating/index.d.ts +309 -38
- package/lib/components/VResponsive/index.d.ts +144 -21
- package/lib/components/VSelect/VSelect.mjs +23 -8
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +3150 -247
- package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -4
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.ts +90 -10
- package/lib/components/VSelectionControlGroup/index.d.ts +245 -35
- package/lib/components/VSheet/VSheet.mjs +16 -12
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSheet/index.d.ts +196 -27
- package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
- package/lib/components/VSlideGroup/index.d.ts +488 -70
- package/lib/components/VSlider/VSliderTrack.mjs +1 -0
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/index.d.ts +523 -65
- package/lib/components/VSlider/slider.mjs +5 -6
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.css +2 -9
- package/lib/components/VSnackbar/VSnackbar.mjs +10 -11
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +3 -10
- package/lib/components/VSnackbar/index.d.ts +1255 -74
- package/lib/components/VSwitch/VSwitch.mjs +2 -2
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.ts +503 -75
- package/lib/components/VSystemBar/VSystemBar.css +5 -1
- package/lib/components/VSystemBar/VSystemBar.mjs +6 -2
- package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.sass +5 -1
- package/lib/components/VSystemBar/_variables.scss +4 -1
- package/lib/components/VSystemBar/index.d.ts +186 -23
- package/lib/components/VTable/VTable.mjs.map +1 -1
- package/lib/components/VTable/index.d.ts +193 -26
- package/lib/components/VTabs/VTab.mjs +7 -23
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/index.d.ts +628 -64
- package/lib/components/VTextField/VTextField.mjs +9 -5
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.ts +1447 -101
- package/lib/components/VTextarea/VTextarea.mjs +8 -1
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.ts +1043 -93
- package/lib/components/VThemeProvider/index.d.ts +127 -16
- package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
- package/lib/components/VTimeline/index.d.ts +446 -60
- package/lib/components/VToolbar/VToolbar.mjs +10 -9
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
- package/lib/components/VToolbar/index.d.ts +552 -73
- package/lib/components/VTooltip/VTooltip.css +3 -3
- package/lib/components/VTooltip/VTooltip.mjs +4 -4
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.sass +1 -1
- package/lib/components/VTooltip/index.d.ts +1315 -73
- package/lib/components/VValidation/index.d.ts +204 -27
- package/lib/components/VWindow/index.d.ts +541 -75
- package/lib/components/index.d.ts +55694 -14389
- package/lib/components/transitions/createTransition.mjs +1 -1
- package/lib/components/transitions/createTransition.mjs.map +1 -1
- package/lib/components/transitions/index.d.ts +2144 -259
- package/lib/composables/defaults.mjs +5 -1
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/display.mjs +15 -10
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/loader.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +2 -2
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +7 -1
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/stack.mjs +2 -2
- package/lib/composables/stack.mjs.map +1 -1
- package/lib/composables/theme.mjs +28 -23
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/variant.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +6 -9
- package/lib/labs/VDataTable/VDataTable.css +15 -0
- package/lib/labs/VDataTable/VDataTable.mjs +45 -19
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTable.sass +9 -0
- package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs +8 -2
- package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +6 -7
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +41 -19
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +27 -14
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +12 -1
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +4 -10
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +1 -1
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/sort.mjs +19 -3
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +4934 -317
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +18 -5
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/index.d.ts +41 -7
- package/lib/labs/components.d.ts +4970 -324
- package/lib/locale/adapters/vue-i18n.d.ts +1 -1
- package/lib/locale/adapters/vue-i18n.mjs +1 -1
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/locale/index.mjs +1 -1
- package/lib/locale/index.mjs.map +1 -1
- package/lib/styles/elements/_global.sass +0 -4
- package/lib/styles/generic/_index.scss +0 -1
- package/lib/styles/generic/_transitions.scss +111 -9
- package/lib/styles/main.css +316 -167
- package/lib/styles/settings/_utilities.scss +7 -0
- package/lib/styles/tools/_sheet.sass +3 -6
- package/lib/styles/utilities/_display.sass +6 -5
- package/lib/styles/utilities/_elevation.scss +13 -0
- package/lib/styles/utilities/_index.sass +3 -2
- package/lib/styles/utilities/_screenreaders.sass +13 -11
- package/lib/util/animation.mjs +8 -1
- package/lib/util/animation.mjs.map +1 -1
- package/lib/util/colorUtils.mjs +4 -5
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +15 -7
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +4 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +15 -7
- package/lib/styles/generic/_elevation.scss +0 -10
package/dist/vuetify-labs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.2.0-dev-
|
|
2
|
+
* Vuetify v3.2.0-dev-20230322.0
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -207,6 +207,10 @@
|
|
|
207
207
|
let max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
|
|
208
208
|
return Math.max(min, Math.min(max, value));
|
|
209
209
|
}
|
|
210
|
+
function getDecimals(value) {
|
|
211
|
+
const trimmedStr = value.toString().trim();
|
|
212
|
+
return trimmedStr.includes('.') ? trimmedStr.length - trimmedStr.indexOf('.') - 1 : 0;
|
|
213
|
+
}
|
|
210
214
|
function padEnd(str, length) {
|
|
211
215
|
let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';
|
|
212
216
|
return str + char.repeat(Math.max(0, length - str.length));
|
|
@@ -489,7 +493,14 @@
|
|
|
489
493
|
if (typeof el.animate === 'undefined') return {
|
|
490
494
|
finished: Promise.resolve()
|
|
491
495
|
};
|
|
492
|
-
|
|
496
|
+
let animation;
|
|
497
|
+
try {
|
|
498
|
+
animation = el.animate(keyframes, options);
|
|
499
|
+
} catch (err) {
|
|
500
|
+
return {
|
|
501
|
+
finished: Promise.resolve()
|
|
502
|
+
};
|
|
503
|
+
}
|
|
493
504
|
if (typeof animation.finished === 'undefined') {
|
|
494
505
|
animation.finished = new Promise(resolve => {
|
|
495
506
|
animation.onfinish = () => {
|
|
@@ -784,11 +795,12 @@
|
|
|
784
795
|
b,
|
|
785
796
|
a
|
|
786
797
|
} = _ref2;
|
|
787
|
-
return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : '
|
|
798
|
+
return `#${[toHex(r), toHex(g), toHex(b), a !== undefined ? toHex(Math.round(a * 255)) : ''].join('')}`;
|
|
788
799
|
}
|
|
789
800
|
function HexToRGB(hex) {
|
|
801
|
+
hex = parseHex(hex);
|
|
790
802
|
let [r, g, b, a] = chunk(hex, 2).map(c => parseInt(c, 16));
|
|
791
|
-
a = a === undefined ? a :
|
|
803
|
+
a = a === undefined ? a : a / 255;
|
|
792
804
|
return {
|
|
793
805
|
r,
|
|
794
806
|
g,
|
|
@@ -811,9 +823,7 @@
|
|
|
811
823
|
if (hex.length === 3 || hex.length === 4) {
|
|
812
824
|
hex = hex.split('').map(x => x + x).join('');
|
|
813
825
|
}
|
|
814
|
-
if (hex.length
|
|
815
|
-
hex = padEnd(hex, 8, 'F');
|
|
816
|
-
} else {
|
|
826
|
+
if (hex.length !== 6) {
|
|
817
827
|
hex = padEnd(padEnd(hex, 6), 8, 'F');
|
|
818
828
|
}
|
|
819
829
|
return hex;
|
|
@@ -954,6 +964,8 @@
|
|
|
954
964
|
const injectedDefaults = useDefaults();
|
|
955
965
|
const providedDefaults = vue.ref(defaults);
|
|
956
966
|
const newDefaults = vue.computed(() => {
|
|
967
|
+
const disabled = vue.unref(options?.disabled);
|
|
968
|
+
if (disabled) return injectedDefaults.value;
|
|
957
969
|
const scoped = vue.unref(options?.scoped);
|
|
958
970
|
const reset = vue.unref(options?.reset);
|
|
959
971
|
const root = vue.unref(options?.root);
|
|
@@ -964,7 +976,9 @@
|
|
|
964
976
|
if (reset || root) {
|
|
965
977
|
const len = Number(reset || Infinity);
|
|
966
978
|
for (let i = 0; i <= len; i++) {
|
|
967
|
-
if (!properties
|
|
979
|
+
if (!properties || !('prev' in properties)) {
|
|
980
|
+
break;
|
|
981
|
+
}
|
|
968
982
|
properties = properties.prev;
|
|
969
983
|
}
|
|
970
984
|
return properties;
|
|
@@ -1006,15 +1020,22 @@
|
|
|
1006
1020
|
function propIsDefined(vnode, prop) {
|
|
1007
1021
|
return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
|
|
1008
1022
|
}
|
|
1009
|
-
|
|
1023
|
+
|
|
1024
|
+
// No props
|
|
1025
|
+
|
|
1026
|
+
// Implementation
|
|
1027
|
+
function defineComponent(options) {
|
|
1010
1028
|
options._setup = options._setup ?? options.setup;
|
|
1011
1029
|
if (!options.name) {
|
|
1012
1030
|
consoleWarn('The component is missing an explicit name, unable to generate default prop value');
|
|
1013
1031
|
return options;
|
|
1014
1032
|
}
|
|
1015
1033
|
if (options._setup) {
|
|
1016
|
-
options.props = options.props ?? {};
|
|
1017
|
-
|
|
1034
|
+
options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
|
|
1035
|
+
const propKeys = Object.keys(options.props);
|
|
1036
|
+
options.filterProps = function filterProps(props) {
|
|
1037
|
+
return pick(props, propKeys);
|
|
1038
|
+
};
|
|
1018
1039
|
options.props._as = String;
|
|
1019
1040
|
options.setup = function setup(props, ctx) {
|
|
1020
1041
|
const defaults = useDefaults();
|
|
@@ -1025,10 +1046,11 @@
|
|
|
1025
1046
|
const componentDefaults = vue.computed(() => defaults.value[props._as ?? options.name]);
|
|
1026
1047
|
const _props = new Proxy(props, {
|
|
1027
1048
|
get(target, prop) {
|
|
1049
|
+
const propValue = Reflect.get(target, prop);
|
|
1028
1050
|
if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
|
|
1029
|
-
return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ??
|
|
1051
|
+
return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
|
|
1030
1052
|
}
|
|
1031
|
-
return
|
|
1053
|
+
return propValue;
|
|
1032
1054
|
}
|
|
1033
1055
|
});
|
|
1034
1056
|
const _subcomponentDefaults = vue.shallowRef();
|
|
@@ -1053,7 +1075,7 @@
|
|
|
1053
1075
|
};
|
|
1054
1076
|
}
|
|
1055
1077
|
return options;
|
|
1056
|
-
}
|
|
1078
|
+
}
|
|
1057
1079
|
// Implementation
|
|
1058
1080
|
function genericComponent() {
|
|
1059
1081
|
let exposeDefaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
@@ -1674,17 +1696,9 @@
|
|
|
1674
1696
|
if (current.value.dark) {
|
|
1675
1697
|
createCssClass(lines, ':root', ['color-scheme: dark']);
|
|
1676
1698
|
}
|
|
1699
|
+
createCssClass(lines, ':root', genCssVariables(current.value));
|
|
1677
1700
|
for (const [themeName, theme] of Object.entries(computedThemes.value)) {
|
|
1678
|
-
|
|
1679
|
-
variables,
|
|
1680
|
-
dark
|
|
1681
|
-
} = theme;
|
|
1682
|
-
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${dark ? 'dark' : 'normal'}`, ...genCssVariables(theme), ...Object.keys(variables).map(key => {
|
|
1683
|
-
const value = variables[key];
|
|
1684
|
-
const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
|
|
1685
|
-
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
1686
|
-
return `--v-${key}: ${rgb ?? value}`;
|
|
1687
|
-
})]);
|
|
1701
|
+
createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);
|
|
1688
1702
|
}
|
|
1689
1703
|
const bgLines = [];
|
|
1690
1704
|
const fgLines = [];
|
|
@@ -1701,22 +1715,30 @@
|
|
|
1701
1715
|
lines.push(...bgLines, ...fgLines);
|
|
1702
1716
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
|
1703
1717
|
});
|
|
1718
|
+
function getHead() {
|
|
1719
|
+
return {
|
|
1720
|
+
style: [{
|
|
1721
|
+
children: styles.value,
|
|
1722
|
+
id: 'vuetify-theme-stylesheet',
|
|
1723
|
+
nonce: parsedOptions.cspNonce || false
|
|
1724
|
+
}]
|
|
1725
|
+
};
|
|
1726
|
+
}
|
|
1704
1727
|
function install(app) {
|
|
1705
1728
|
const head = app._context.provides.usehead;
|
|
1706
1729
|
if (head) {
|
|
1707
|
-
head.
|
|
1708
|
-
const
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
if (
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
}
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
vue.watchEffect(() => head.updateDOM());
|
|
1730
|
+
if (head.push) {
|
|
1731
|
+
const entry = head.push(getHead);
|
|
1732
|
+
vue.watch(styles, () => {
|
|
1733
|
+
entry.patch(getHead);
|
|
1734
|
+
});
|
|
1735
|
+
} else {
|
|
1736
|
+
if (IN_BROWSER) {
|
|
1737
|
+
head.addHeadObjs(vue.computed(getHead));
|
|
1738
|
+
vue.watchEffect(() => head.updateDOM());
|
|
1739
|
+
} else {
|
|
1740
|
+
head.addHeadObjs(getHead());
|
|
1741
|
+
}
|
|
1720
1742
|
}
|
|
1721
1743
|
} else {
|
|
1722
1744
|
let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
|
|
@@ -1789,6 +1811,11 @@
|
|
|
1789
1811
|
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
|
1790
1812
|
}
|
|
1791
1813
|
}
|
|
1814
|
+
for (const [key, value] of Object.entries(theme.variables)) {
|
|
1815
|
+
const color = typeof value === 'string' && value.startsWith('#') ? parseColor$1(value) : undefined;
|
|
1816
|
+
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
1817
|
+
variables.push(`--v-${key}: ${rgb ?? value}`);
|
|
1818
|
+
}
|
|
1792
1819
|
return variables;
|
|
1793
1820
|
}
|
|
1794
1821
|
|
|
@@ -1818,7 +1845,7 @@
|
|
|
1818
1845
|
});
|
|
1819
1846
|
const model = vue.computed({
|
|
1820
1847
|
get() {
|
|
1821
|
-
return transformIn(
|
|
1848
|
+
return transformIn(isControlled.value ? props[prop] : internal.value);
|
|
1822
1849
|
},
|
|
1823
1850
|
set(internalValue) {
|
|
1824
1851
|
const newValue = transformOut(internalValue);
|
|
@@ -2018,7 +2045,7 @@
|
|
|
2018
2045
|
en: false,
|
|
2019
2046
|
es: false,
|
|
2020
2047
|
et: false,
|
|
2021
|
-
fa:
|
|
2048
|
+
fa: true,
|
|
2022
2049
|
fi: false,
|
|
2023
2050
|
fr: false,
|
|
2024
2051
|
hr: false,
|
|
@@ -2151,6 +2178,7 @@
|
|
|
2151
2178
|
name: 'VDefaultsProvider',
|
|
2152
2179
|
props: {
|
|
2153
2180
|
defaults: Object,
|
|
2181
|
+
disabled: Boolean,
|
|
2154
2182
|
reset: [Number, String],
|
|
2155
2183
|
root: Boolean,
|
|
2156
2184
|
scoped: Boolean
|
|
@@ -2161,6 +2189,7 @@
|
|
|
2161
2189
|
} = _ref;
|
|
2162
2190
|
const {
|
|
2163
2191
|
defaults,
|
|
2192
|
+
disabled,
|
|
2164
2193
|
reset,
|
|
2165
2194
|
root,
|
|
2166
2195
|
scoped
|
|
@@ -2168,7 +2197,8 @@
|
|
|
2168
2197
|
provideDefaults(defaults, {
|
|
2169
2198
|
reset,
|
|
2170
2199
|
root,
|
|
2171
|
-
scoped
|
|
2200
|
+
scoped,
|
|
2201
|
+
disabled
|
|
2172
2202
|
});
|
|
2173
2203
|
return () => slots.default?.();
|
|
2174
2204
|
}
|
|
@@ -2179,7 +2209,7 @@
|
|
|
2179
2209
|
// Types
|
|
2180
2210
|
|
|
2181
2211
|
function createCssTransition(name) {
|
|
2182
|
-
let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '
|
|
2212
|
+
let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center center';
|
|
2183
2213
|
let mode = arguments.length > 2 ? arguments[2] : undefined;
|
|
2184
2214
|
return genericComponent()({
|
|
2185
2215
|
name,
|
|
@@ -2790,7 +2820,7 @@
|
|
|
2790
2820
|
"class": ['v-img__img', containClasses.value],
|
|
2791
2821
|
"src": normalisedSrc.value.src,
|
|
2792
2822
|
"srcset": normalisedSrc.value.srcset,
|
|
2793
|
-
"alt":
|
|
2823
|
+
"alt": props.alt,
|
|
2794
2824
|
"sizes": props.sizes,
|
|
2795
2825
|
"ref": image,
|
|
2796
2826
|
"onLoad": onLoad,
|
|
@@ -2812,7 +2842,7 @@
|
|
|
2812
2842
|
default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createVNode("img", {
|
|
2813
2843
|
"class": ['v-img__img', 'v-img__img--preload', containClasses.value],
|
|
2814
2844
|
"src": normalisedSrc.value.lazySrc,
|
|
2815
|
-
"alt":
|
|
2845
|
+
"alt": props.alt
|
|
2816
2846
|
}, null)]
|
|
2817
2847
|
});
|
|
2818
2848
|
const __placeholder = () => {
|
|
@@ -3154,16 +3184,20 @@
|
|
|
3154
3184
|
default: () => [hasImage && vue.createVNode("div", {
|
|
3155
3185
|
"key": "image",
|
|
3156
3186
|
"class": "v-toolbar__image"
|
|
3157
|
-
}, [vue.createVNode(
|
|
3187
|
+
}, [!slots.image ? vue.createVNode(VImg, {
|
|
3188
|
+
"key": "image-img",
|
|
3189
|
+
"cover": true,
|
|
3190
|
+
"src": props.image
|
|
3191
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
3192
|
+
"key": "image-defaults",
|
|
3193
|
+
"disabled": !props.image,
|
|
3158
3194
|
"defaults": {
|
|
3159
3195
|
VImg: {
|
|
3160
3196
|
cover: true,
|
|
3161
3197
|
src: props.image
|
|
3162
3198
|
}
|
|
3163
3199
|
}
|
|
3164
|
-
}, {
|
|
3165
|
-
default: () => [slots.image ? slots.image?.() : vue.createVNode(VImg, null, null)]
|
|
3166
|
-
})]), vue.createVNode(VDefaultsProvider, {
|
|
3200
|
+
}, slots.image)]), vue.createVNode(VDefaultsProvider, {
|
|
3167
3201
|
"defaults": {
|
|
3168
3202
|
VTabs: {
|
|
3169
3203
|
height: convertToUnit(contentHeight.value)
|
|
@@ -3209,8 +3243,24 @@
|
|
|
3209
3243
|
};
|
|
3210
3244
|
}
|
|
3211
3245
|
});
|
|
3212
|
-
|
|
3213
|
-
|
|
3246
|
+
|
|
3247
|
+
// Utilities
|
|
3248
|
+
|
|
3249
|
+
// Composables
|
|
3250
|
+
function useSsrBoot() {
|
|
3251
|
+
const isBooted = vue.ref(false);
|
|
3252
|
+
vue.onMounted(() => {
|
|
3253
|
+
window.requestAnimationFrame(() => {
|
|
3254
|
+
isBooted.value = true;
|
|
3255
|
+
});
|
|
3256
|
+
});
|
|
3257
|
+
const ssrBootStyles = vue.computed(() => !isBooted.value ? {
|
|
3258
|
+
transition: 'none !important'
|
|
3259
|
+
} : undefined);
|
|
3260
|
+
return {
|
|
3261
|
+
ssrBootStyles,
|
|
3262
|
+
isBooted: vue.readonly(isBooted)
|
|
3263
|
+
};
|
|
3214
3264
|
}
|
|
3215
3265
|
|
|
3216
3266
|
// Types
|
|
@@ -3255,6 +3305,9 @@
|
|
|
3255
3305
|
const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
|
|
3256
3306
|
return height + extensionHeight;
|
|
3257
3307
|
});
|
|
3308
|
+
const {
|
|
3309
|
+
ssrBootStyles
|
|
3310
|
+
} = useSsrBoot();
|
|
3258
3311
|
const {
|
|
3259
3312
|
layoutItemStyles
|
|
3260
3313
|
} = useLayoutItem({
|
|
@@ -3267,7 +3320,7 @@
|
|
|
3267
3320
|
absolute: vue.toRef(props, 'absolute')
|
|
3268
3321
|
});
|
|
3269
3322
|
useRender(() => {
|
|
3270
|
-
const [toolbarProps] =
|
|
3323
|
+
const [toolbarProps] = VToolbar.filterProps(props);
|
|
3271
3324
|
return vue.createVNode(VToolbar, vue.mergeProps({
|
|
3272
3325
|
"ref": vToolbarRef,
|
|
3273
3326
|
"class": ['v-app-bar', {
|
|
@@ -3275,7 +3328,8 @@
|
|
|
3275
3328
|
}],
|
|
3276
3329
|
"style": {
|
|
3277
3330
|
...layoutItemStyles.value,
|
|
3278
|
-
height: undefined
|
|
3331
|
+
height: undefined,
|
|
3332
|
+
...ssrBootStyles.value
|
|
3279
3333
|
}
|
|
3280
3334
|
}, toolbarProps), slots);
|
|
3281
3335
|
});
|
|
@@ -3357,8 +3411,6 @@
|
|
|
3357
3411
|
};
|
|
3358
3412
|
}
|
|
3359
3413
|
|
|
3360
|
-
// Types
|
|
3361
|
-
|
|
3362
3414
|
const makeVBtnGroupProps = propsFactory({
|
|
3363
3415
|
divided: Boolean,
|
|
3364
3416
|
...makeBorderProps(),
|
|
@@ -3409,9 +3461,6 @@
|
|
|
3409
3461
|
});
|
|
3410
3462
|
}
|
|
3411
3463
|
});
|
|
3412
|
-
function filterVBtnGroupProps(props) {
|
|
3413
|
-
return pick(props, Object.keys(VBtnGroup.props));
|
|
3414
|
-
}
|
|
3415
3464
|
|
|
3416
3465
|
// Composables
|
|
3417
3466
|
|
|
@@ -3638,7 +3687,7 @@
|
|
|
3638
3687
|
selected
|
|
3639
3688
|
} = useGroup(props, VBtnToggleSymbol);
|
|
3640
3689
|
useRender(() => {
|
|
3641
|
-
const [btnGroupProps] =
|
|
3690
|
+
const [btnGroupProps] = VBtnGroup.filterProps(props);
|
|
3642
3691
|
return vue.createVNode(VBtnGroup, vue.mergeProps({
|
|
3643
3692
|
"class": "v-btn-toggle"
|
|
3644
3693
|
}, btnGroupProps), {
|
|
@@ -4726,49 +4775,50 @@
|
|
|
4726
4775
|
|
|
4727
4776
|
// Types
|
|
4728
4777
|
|
|
4778
|
+
const makeVBtnProps = propsFactory({
|
|
4779
|
+
active: {
|
|
4780
|
+
type: Boolean,
|
|
4781
|
+
default: undefined
|
|
4782
|
+
},
|
|
4783
|
+
symbol: {
|
|
4784
|
+
type: null,
|
|
4785
|
+
default: VBtnToggleSymbol
|
|
4786
|
+
},
|
|
4787
|
+
flat: Boolean,
|
|
4788
|
+
icon: [Boolean, String, Function, Object],
|
|
4789
|
+
prependIcon: IconValue,
|
|
4790
|
+
appendIcon: IconValue,
|
|
4791
|
+
block: Boolean,
|
|
4792
|
+
stacked: Boolean,
|
|
4793
|
+
ripple: {
|
|
4794
|
+
type: Boolean,
|
|
4795
|
+
default: true
|
|
4796
|
+
},
|
|
4797
|
+
...makeBorderProps(),
|
|
4798
|
+
...makeRoundedProps(),
|
|
4799
|
+
...makeDensityProps(),
|
|
4800
|
+
...makeDimensionProps(),
|
|
4801
|
+
...makeElevationProps(),
|
|
4802
|
+
...makeGroupItemProps(),
|
|
4803
|
+
...makeLoaderProps(),
|
|
4804
|
+
...makeLocationProps(),
|
|
4805
|
+
...makePositionProps(),
|
|
4806
|
+
...makeRouterProps(),
|
|
4807
|
+
...makeSizeProps(),
|
|
4808
|
+
...makeTagProps({
|
|
4809
|
+
tag: 'button'
|
|
4810
|
+
}),
|
|
4811
|
+
...makeThemeProps(),
|
|
4812
|
+
...makeVariantProps({
|
|
4813
|
+
variant: 'elevated'
|
|
4814
|
+
})
|
|
4815
|
+
}, 'VBtn');
|
|
4729
4816
|
const VBtn = genericComponent()({
|
|
4730
4817
|
name: 'VBtn',
|
|
4731
4818
|
directives: {
|
|
4732
4819
|
Ripple
|
|
4733
4820
|
},
|
|
4734
|
-
props:
|
|
4735
|
-
active: {
|
|
4736
|
-
type: Boolean,
|
|
4737
|
-
default: undefined
|
|
4738
|
-
},
|
|
4739
|
-
symbol: {
|
|
4740
|
-
type: null,
|
|
4741
|
-
default: VBtnToggleSymbol
|
|
4742
|
-
},
|
|
4743
|
-
flat: Boolean,
|
|
4744
|
-
icon: [Boolean, String, Function, Object],
|
|
4745
|
-
prependIcon: IconValue,
|
|
4746
|
-
appendIcon: IconValue,
|
|
4747
|
-
block: Boolean,
|
|
4748
|
-
stacked: Boolean,
|
|
4749
|
-
ripple: {
|
|
4750
|
-
type: Boolean,
|
|
4751
|
-
default: true
|
|
4752
|
-
},
|
|
4753
|
-
...makeBorderProps(),
|
|
4754
|
-
...makeRoundedProps(),
|
|
4755
|
-
...makeDensityProps(),
|
|
4756
|
-
...makeDimensionProps(),
|
|
4757
|
-
...makeElevationProps(),
|
|
4758
|
-
...makeGroupItemProps(),
|
|
4759
|
-
...makeLoaderProps(),
|
|
4760
|
-
...makeLocationProps(),
|
|
4761
|
-
...makePositionProps(),
|
|
4762
|
-
...makeRouterProps(),
|
|
4763
|
-
...makeSizeProps(),
|
|
4764
|
-
...makeTagProps({
|
|
4765
|
-
tag: 'button'
|
|
4766
|
-
}),
|
|
4767
|
-
...makeThemeProps(),
|
|
4768
|
-
...makeVariantProps({
|
|
4769
|
-
variant: 'elevated'
|
|
4770
|
-
})
|
|
4771
|
-
},
|
|
4821
|
+
props: makeVBtnProps(),
|
|
4772
4822
|
emits: {
|
|
4773
4823
|
'group:selected': val => true
|
|
4774
4824
|
},
|
|
@@ -4861,43 +4911,49 @@
|
|
|
4861
4911
|
},
|
|
4862
4912
|
"value": valueAttr.value
|
|
4863
4913
|
}, {
|
|
4864
|
-
default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode(
|
|
4914
|
+
default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && vue.createVNode("span", {
|
|
4865
4915
|
"key": "prepend",
|
|
4916
|
+
"class": "v-btn__prepend"
|
|
4917
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
|
4918
|
+
"key": "prepend-icon",
|
|
4919
|
+
"icon": props.prependIcon
|
|
4920
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
4921
|
+
"key": "prepend-defaults",
|
|
4922
|
+
"disabled": !props.prependIcon,
|
|
4866
4923
|
"defaults": {
|
|
4867
4924
|
VIcon: {
|
|
4868
4925
|
icon: props.prependIcon
|
|
4869
4926
|
}
|
|
4870
4927
|
}
|
|
4871
|
-
}, {
|
|
4872
|
-
default: () => [vue.createVNode("span", {
|
|
4873
|
-
"class": "v-btn__prepend"
|
|
4874
|
-
}, [slots.prepend?.() ?? vue.createVNode(VIcon, null, null)])]
|
|
4875
|
-
}), vue.createVNode("span", {
|
|
4928
|
+
}, slots.prepend)]), vue.createVNode("span", {
|
|
4876
4929
|
"class": "v-btn__content",
|
|
4877
4930
|
"data-no-activator": ""
|
|
4878
|
-
}, [vue.createVNode(
|
|
4879
|
-
"key": "content",
|
|
4931
|
+
}, [!slots.default && hasIcon ? vue.createVNode(VIcon, {
|
|
4932
|
+
"key": "content-icon",
|
|
4933
|
+
"icon": props.icon
|
|
4934
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
4935
|
+
"key": "content-defaults",
|
|
4936
|
+
"disabled": !hasIcon,
|
|
4880
4937
|
"defaults": {
|
|
4881
4938
|
VIcon: {
|
|
4882
|
-
icon:
|
|
4939
|
+
icon: props.icon
|
|
4883
4940
|
}
|
|
4884
4941
|
}
|
|
4885
|
-
}, {
|
|
4886
|
-
default: () => [slots.default?.() ?? (hasIcon && vue.createVNode(VIcon, {
|
|
4887
|
-
"key": "icon"
|
|
4888
|
-
}, null))]
|
|
4889
|
-
})]), !props.icon && hasAppend && vue.createVNode(VDefaultsProvider, {
|
|
4942
|
+
}, slots.default)]), !props.icon && hasAppend && vue.createVNode("span", {
|
|
4890
4943
|
"key": "append",
|
|
4944
|
+
"class": "v-btn__append"
|
|
4945
|
+
}, [!slots.append ? vue.createVNode(VIcon, {
|
|
4946
|
+
"key": "append-icon",
|
|
4947
|
+
"icon": props.appendIcon
|
|
4948
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
4949
|
+
"key": "append-defaults",
|
|
4950
|
+
"disabled": !props.appendIcon,
|
|
4891
4951
|
"defaults": {
|
|
4892
4952
|
VIcon: {
|
|
4893
4953
|
icon: props.appendIcon
|
|
4894
4954
|
}
|
|
4895
4955
|
}
|
|
4896
|
-
}, {
|
|
4897
|
-
default: () => [vue.createVNode("span", {
|
|
4898
|
-
"class": "v-btn__append"
|
|
4899
|
-
}, [slots.append?.() ?? vue.createVNode(VIcon, null, null)])]
|
|
4900
|
-
}), !!props.loading && vue.createVNode("span", {
|
|
4956
|
+
}, slots.append)]), !!props.loading && vue.createVNode("span", {
|
|
4901
4957
|
"key": "loader",
|
|
4902
4958
|
"class": "v-btn__loader"
|
|
4903
4959
|
}, [slots.loader?.() ?? vue.createVNode(VProgressCircular, {
|
|
@@ -5026,10 +5082,12 @@
|
|
|
5026
5082
|
})
|
|
5027
5083
|
},
|
|
5028
5084
|
emits: {
|
|
5085
|
+
'click:close': e => true,
|
|
5029
5086
|
'update:modelValue': value => true
|
|
5030
5087
|
},
|
|
5031
5088
|
setup(props, _ref) {
|
|
5032
5089
|
let {
|
|
5090
|
+
emit,
|
|
5033
5091
|
slots
|
|
5034
5092
|
} = _ref;
|
|
5035
5093
|
const isActive = useProxiedModel(props, 'modelValue');
|
|
@@ -5079,6 +5137,7 @@
|
|
|
5079
5137
|
'aria-label': t(props.closeLabel),
|
|
5080
5138
|
onClick(e) {
|
|
5081
5139
|
isActive.value = false;
|
|
5140
|
+
emit('click:close', e);
|
|
5082
5141
|
}
|
|
5083
5142
|
}));
|
|
5084
5143
|
return () => {
|
|
@@ -5100,8 +5159,17 @@
|
|
|
5100
5159
|
"key": "border",
|
|
5101
5160
|
"class": ['v-alert__border', textColorClasses.value],
|
|
5102
5161
|
"style": textColorStyles.value
|
|
5103
|
-
}, null), hasPrepend && vue.createVNode(
|
|
5162
|
+
}, null), hasPrepend && vue.createVNode("div", {
|
|
5104
5163
|
"key": "prepend",
|
|
5164
|
+
"class": "v-alert__prepend"
|
|
5165
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
|
5166
|
+
"key": "prepend-icon",
|
|
5167
|
+
"density": props.density,
|
|
5168
|
+
"icon": icon.value,
|
|
5169
|
+
"size": props.prominent ? 44 : 28
|
|
5170
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
5171
|
+
"key": "prepend-defaults",
|
|
5172
|
+
"disabled": !icon.value,
|
|
5105
5173
|
"defaults": {
|
|
5106
5174
|
VIcon: {
|
|
5107
5175
|
density: props.density,
|
|
@@ -5109,21 +5177,25 @@
|
|
|
5109
5177
|
size: props.prominent ? 44 : 28
|
|
5110
5178
|
}
|
|
5111
5179
|
}
|
|
5112
|
-
}, {
|
|
5113
|
-
default: () => [vue.createVNode("div", {
|
|
5114
|
-
"class": "v-alert__prepend"
|
|
5115
|
-
}, [slots.prepend ? slots.prepend() : icon.value && vue.createVNode(VIcon, null, null)])]
|
|
5116
|
-
}), vue.createVNode("div", {
|
|
5180
|
+
}, slots.prepend)]), vue.createVNode("div", {
|
|
5117
5181
|
"class": "v-alert__content"
|
|
5118
5182
|
}, [hasTitle && vue.createVNode(VAlertTitle, {
|
|
5119
5183
|
"key": "title"
|
|
5120
5184
|
}, {
|
|
5121
|
-
default: () => [slots.title
|
|
5122
|
-
}), hasText && (slots.text
|
|
5185
|
+
default: () => [slots.title?.() ?? props.title]
|
|
5186
|
+
}), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && vue.createVNode("div", {
|
|
5123
5187
|
"key": "append",
|
|
5124
5188
|
"class": "v-alert__append"
|
|
5125
|
-
}, [slots.append()]), hasClose && vue.createVNode(
|
|
5189
|
+
}, [slots.append()]), hasClose && vue.createVNode("div", {
|
|
5126
5190
|
"key": "close",
|
|
5191
|
+
"class": "v-alert__close"
|
|
5192
|
+
}, [!slots.close ? vue.createVNode(VBtn, vue.mergeProps({
|
|
5193
|
+
"key": "close-btn",
|
|
5194
|
+
"icon": props.closeIcon,
|
|
5195
|
+
"size": "x-small",
|
|
5196
|
+
"variant": "text"
|
|
5197
|
+
}, closeProps.value), null) : vue.createVNode(VDefaultsProvider, {
|
|
5198
|
+
"key": "close-defaults",
|
|
5127
5199
|
"defaults": {
|
|
5128
5200
|
VBtn: {
|
|
5129
5201
|
icon: props.closeIcon,
|
|
@@ -5132,12 +5204,10 @@
|
|
|
5132
5204
|
}
|
|
5133
5205
|
}
|
|
5134
5206
|
}, {
|
|
5135
|
-
default: () => [
|
|
5136
|
-
"class": "v-alert__close"
|
|
5137
|
-
}, [slots.close?.({
|
|
5207
|
+
default: () => [slots.close?.({
|
|
5138
5208
|
props: closeProps.value
|
|
5139
|
-
})
|
|
5140
|
-
})]
|
|
5209
|
+
})]
|
|
5210
|
+
})])]
|
|
5141
5211
|
});
|
|
5142
5212
|
};
|
|
5143
5213
|
}
|
|
@@ -6100,7 +6170,13 @@
|
|
|
6100
6170
|
});
|
|
6101
6171
|
}
|
|
6102
6172
|
function onInput(e) {
|
|
6103
|
-
|
|
6173
|
+
const el = e.target;
|
|
6174
|
+
const caretPosition = [el.selectionStart, el.selectionEnd];
|
|
6175
|
+
model.value = el.value;
|
|
6176
|
+
vue.nextTick(() => {
|
|
6177
|
+
el.selectionStart = caretPosition[0];
|
|
6178
|
+
el.selectionEnd = caretPosition[1];
|
|
6179
|
+
});
|
|
6104
6180
|
}
|
|
6105
6181
|
useRender(() => {
|
|
6106
6182
|
const hasCounter = !!(slots.counter || props.counter || props.counterValue);
|
|
@@ -6147,6 +6223,7 @@
|
|
|
6147
6223
|
"id": id.value,
|
|
6148
6224
|
"active": isActive.value || isDirty.value,
|
|
6149
6225
|
"dirty": isDirty.value || props.dirty,
|
|
6226
|
+
"disabled": isDisabled.value,
|
|
6150
6227
|
"focused": isFocused.value,
|
|
6151
6228
|
"error": isValid.value === false
|
|
6152
6229
|
}), {
|
|
@@ -6199,9 +6276,6 @@
|
|
|
6199
6276
|
return forwardRefs({}, vInputRef, vFieldRef, inputRef);
|
|
6200
6277
|
}
|
|
6201
6278
|
});
|
|
6202
|
-
function filterVTextFieldProps(props) {
|
|
6203
|
-
return pick(props, Object.keys(VTextField.props));
|
|
6204
|
-
}
|
|
6205
6279
|
|
|
6206
6280
|
// Types
|
|
6207
6281
|
|
|
@@ -6459,11 +6533,6 @@
|
|
|
6459
6533
|
};
|
|
6460
6534
|
}
|
|
6461
6535
|
});
|
|
6462
|
-
function filterControlProps(props) {
|
|
6463
|
-
return pick(props, Object.keys(VSelectionControl.props));
|
|
6464
|
-
}
|
|
6465
|
-
|
|
6466
|
-
// Types
|
|
6467
6536
|
|
|
6468
6537
|
const makeVCheckboxBtnProps = propsFactory({
|
|
6469
6538
|
indeterminate: Boolean,
|
|
@@ -6513,9 +6582,6 @@
|
|
|
6513
6582
|
return {};
|
|
6514
6583
|
}
|
|
6515
6584
|
});
|
|
6516
|
-
function filterCheckboxBtnProps(props) {
|
|
6517
|
-
return pick(props, Object.keys(VCheckboxBtn.props));
|
|
6518
|
-
}
|
|
6519
6585
|
|
|
6520
6586
|
// Types
|
|
6521
6587
|
|
|
@@ -6544,7 +6610,7 @@
|
|
|
6544
6610
|
useRender(() => {
|
|
6545
6611
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
6546
6612
|
const [inputProps, _1] = filterInputProps(props);
|
|
6547
|
-
const [checkboxProps, _2] =
|
|
6613
|
+
const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
|
|
6548
6614
|
return vue.createVNode(VInput, vue.mergeProps({
|
|
6549
6615
|
"class": "v-checkbox"
|
|
6550
6616
|
}, inputAttrs, inputProps, {
|
|
@@ -6801,10 +6867,13 @@
|
|
|
6801
6867
|
const link = useLink(props, attrs);
|
|
6802
6868
|
const isLink = vue.computed(() => props.link !== false && link.isLink.value);
|
|
6803
6869
|
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
|
|
6804
|
-
|
|
6805
|
-
|
|
6806
|
-
|
|
6807
|
-
|
|
6870
|
+
const closeProps = vue.computed(() => ({
|
|
6871
|
+
'aria-label': t(props.closeLabel),
|
|
6872
|
+
onClick(e) {
|
|
6873
|
+
isActive.value = false;
|
|
6874
|
+
emit('click:close', e);
|
|
6875
|
+
}
|
|
6876
|
+
}));
|
|
6808
6877
|
function onClick(e) {
|
|
6809
6878
|
emit('click', e);
|
|
6810
6879
|
if (!isClickable.value) return;
|
|
@@ -6819,10 +6888,12 @@
|
|
|
6819
6888
|
}
|
|
6820
6889
|
return () => {
|
|
6821
6890
|
const Tag = link.isLink.value ? 'a' : props.tag;
|
|
6822
|
-
const
|
|
6891
|
+
const hasAppendMedia = !!(props.appendIcon || props.appendAvatar);
|
|
6892
|
+
const hasAppend = !!(hasAppendMedia || slots.append);
|
|
6823
6893
|
const hasClose = !!(slots.close || props.closable);
|
|
6824
6894
|
const hasFilter = !!(slots.filter || props.filter) && group;
|
|
6825
|
-
const
|
|
6895
|
+
const hasPrependMedia = !!(props.prependIcon || props.prependAvatar);
|
|
6896
|
+
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
|
6826
6897
|
const hasColor = !group || group.isSelected.value;
|
|
6827
6898
|
return isActive.value && vue.withDirectives(vue.createVNode(Tag, {
|
|
6828
6899
|
"class": ['v-chip', {
|
|
@@ -6840,77 +6911,94 @@
|
|
|
6840
6911
|
"onClick": onClick,
|
|
6841
6912
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
|
6842
6913
|
}, {
|
|
6843
|
-
default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(
|
|
6844
|
-
"key": "filter"
|
|
6845
|
-
"defaults": {
|
|
6846
|
-
VIcon: {
|
|
6847
|
-
icon: props.filterIcon
|
|
6848
|
-
}
|
|
6849
|
-
}
|
|
6914
|
+
default: () => [genOverlays(isClickable.value, 'v-chip'), hasFilter && vue.createVNode(VExpandXTransition, {
|
|
6915
|
+
"key": "filter"
|
|
6850
6916
|
}, {
|
|
6851
|
-
default: () => [vue.createVNode(
|
|
6852
|
-
|
|
6853
|
-
|
|
6854
|
-
|
|
6855
|
-
|
|
6856
|
-
|
|
6917
|
+
default: () => [vue.withDirectives(vue.createVNode("div", {
|
|
6918
|
+
"class": "v-chip__filter"
|
|
6919
|
+
}, [!slots.filter ? vue.createVNode(VIcon, {
|
|
6920
|
+
"key": "filter-icon",
|
|
6921
|
+
"icon": props.filterIcon
|
|
6922
|
+
}, null) : vue.withDirectives(vue.createVNode(VDefaultsProvider, {
|
|
6923
|
+
"key": "filter-defaults",
|
|
6924
|
+
"disabled": !props.filterIcon,
|
|
6925
|
+
"defaults": {
|
|
6926
|
+
VIcon: {
|
|
6927
|
+
icon: props.filterIcon
|
|
6928
|
+
}
|
|
6929
|
+
}
|
|
6930
|
+
}, null), [[vue.resolveDirective("slot"), slots.filter, "default"]])]), [[vue.vShow, group.isSelected.value]])]
|
|
6931
|
+
}), hasPrepend && vue.createVNode("div", {
|
|
6857
6932
|
"key": "prepend",
|
|
6933
|
+
"class": "v-chip__prepend"
|
|
6934
|
+
}, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependIcon && vue.createVNode(VIcon, {
|
|
6935
|
+
"key": "prepend-icon",
|
|
6936
|
+
"icon": props.prependIcon,
|
|
6937
|
+
"start": true
|
|
6938
|
+
}, null), props.prependAvatar && vue.createVNode(VAvatar, {
|
|
6939
|
+
"key": "prepend-avatar",
|
|
6940
|
+
"image": props.prependAvatar,
|
|
6941
|
+
"start": true
|
|
6942
|
+
}, null)]) : vue.createVNode(VDefaultsProvider, {
|
|
6943
|
+
"key": "prepend-defaults",
|
|
6944
|
+
"disabled": !hasPrependMedia,
|
|
6858
6945
|
"defaults": {
|
|
6859
6946
|
VAvatar: {
|
|
6860
|
-
image: props.prependAvatar
|
|
6947
|
+
image: props.prependAvatar,
|
|
6948
|
+
start: true
|
|
6861
6949
|
},
|
|
6862
6950
|
VIcon: {
|
|
6863
|
-
icon: props.prependIcon
|
|
6951
|
+
icon: props.prependIcon,
|
|
6952
|
+
start: true
|
|
6864
6953
|
}
|
|
6865
6954
|
}
|
|
6866
|
-
}, {
|
|
6867
|
-
default: () => [slots.prepend ? vue.createVNode("div", {
|
|
6868
|
-
"class": "v-chip__prepend"
|
|
6869
|
-
}, [slots.prepend()]) : props.prependAvatar ? vue.createVNode(VAvatar, {
|
|
6870
|
-
"start": true
|
|
6871
|
-
}, null) : props.prependIcon ? vue.createVNode(VIcon, {
|
|
6872
|
-
"start": true
|
|
6873
|
-
}, null) : undefined]
|
|
6874
|
-
}), slots.default?.({
|
|
6955
|
+
}, slots.prepend)]), slots.default?.({
|
|
6875
6956
|
isSelected: group?.isSelected.value,
|
|
6876
6957
|
selectedClass: group?.selectedClass.value,
|
|
6877
6958
|
select: group?.select,
|
|
6878
6959
|
toggle: group?.toggle,
|
|
6879
6960
|
value: group?.value.value,
|
|
6880
6961
|
disabled: props.disabled
|
|
6881
|
-
}) ?? props.text, hasAppend && vue.createVNode(
|
|
6962
|
+
}) ?? props.text, hasAppend && vue.createVNode("div", {
|
|
6882
6963
|
"key": "append",
|
|
6964
|
+
"class": "v-chip__append"
|
|
6965
|
+
}, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
|
|
6966
|
+
"key": "append-icon",
|
|
6967
|
+
"end": true,
|
|
6968
|
+
"icon": props.appendIcon
|
|
6969
|
+
}, null), props.appendAvatar && vue.createVNode(VAvatar, {
|
|
6970
|
+
"key": "append-avatar",
|
|
6971
|
+
"end": true,
|
|
6972
|
+
"image": props.appendAvatar
|
|
6973
|
+
}, null)]) : vue.createVNode(VDefaultsProvider, {
|
|
6974
|
+
"key": "append-defaults",
|
|
6975
|
+
"disabled": !hasAppendMedia,
|
|
6883
6976
|
"defaults": {
|
|
6884
6977
|
VAvatar: {
|
|
6978
|
+
end: true,
|
|
6885
6979
|
image: props.appendAvatar
|
|
6886
6980
|
},
|
|
6887
6981
|
VIcon: {
|
|
6982
|
+
end: true,
|
|
6888
6983
|
icon: props.appendIcon
|
|
6889
6984
|
}
|
|
6890
6985
|
}
|
|
6891
|
-
}, {
|
|
6892
|
-
default: () => [slots.append ? vue.createVNode("div", {
|
|
6893
|
-
"class": "v-chip__append"
|
|
6894
|
-
}, [slots.append()]) : props.appendAvatar ? vue.createVNode(VAvatar, {
|
|
6895
|
-
"end": true
|
|
6896
|
-
}, null) : props.appendIcon ? vue.createVNode(VIcon, {
|
|
6897
|
-
"end": true
|
|
6898
|
-
}, null) : undefined]
|
|
6899
|
-
}), hasClose && vue.createVNode(VDefaultsProvider, {
|
|
6986
|
+
}, slots.append)]), hasClose && vue.createVNode("div", vue.mergeProps({
|
|
6900
6987
|
"key": "close",
|
|
6988
|
+
"class": "v-chip__close"
|
|
6989
|
+
}, closeProps.value), [!slots.close ? vue.createVNode(VIcon, {
|
|
6990
|
+
"key": "close-icon",
|
|
6991
|
+
"icon": props.closeIcon,
|
|
6992
|
+
"size": "x-small"
|
|
6993
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
6994
|
+
"key": "close-defaults",
|
|
6901
6995
|
"defaults": {
|
|
6902
6996
|
VIcon: {
|
|
6903
6997
|
icon: props.closeIcon,
|
|
6904
6998
|
size: 'x-small'
|
|
6905
6999
|
}
|
|
6906
7000
|
}
|
|
6907
|
-
},
|
|
6908
|
-
default: () => [vue.createVNode("div", {
|
|
6909
|
-
"class": "v-chip__close",
|
|
6910
|
-
"aria-label": t(props.closeLabel),
|
|
6911
|
-
"onClick": onCloseClick
|
|
6912
|
-
}, [slots.close ? slots.close() : vue.createVNode(VIcon, null, null)])]
|
|
6913
|
-
})]
|
|
7001
|
+
}, slots.close)])]
|
|
6914
7002
|
}), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple, null]]);
|
|
6915
7003
|
};
|
|
6916
7004
|
}
|
|
@@ -7051,7 +7139,6 @@
|
|
|
7051
7139
|
};
|
|
7052
7140
|
|
|
7053
7141
|
/* eslint-disable sonarjs/no-identical-functions */
|
|
7054
|
-
|
|
7055
7142
|
const independentSelectStrategy = mandatory => {
|
|
7056
7143
|
const strategy = {
|
|
7057
7144
|
select: _ref => {
|
|
@@ -7060,6 +7147,8 @@
|
|
|
7060
7147
|
value,
|
|
7061
7148
|
selected
|
|
7062
7149
|
} = _ref;
|
|
7150
|
+
id = vue.toRaw(id);
|
|
7151
|
+
|
|
7063
7152
|
// When mandatory and we're trying to deselect when id
|
|
7064
7153
|
// is the only currently selected item then do nothing
|
|
7065
7154
|
if (mandatory && !value) {
|
|
@@ -7104,6 +7193,7 @@
|
|
|
7104
7193
|
id,
|
|
7105
7194
|
...rest
|
|
7106
7195
|
} = _ref3;
|
|
7196
|
+
id = vue.toRaw(id);
|
|
7107
7197
|
const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
|
|
7108
7198
|
return parentStrategy.select({
|
|
7109
7199
|
...rest,
|
|
@@ -7134,6 +7224,7 @@
|
|
|
7134
7224
|
children,
|
|
7135
7225
|
...rest
|
|
7136
7226
|
} = _ref4;
|
|
7227
|
+
id = vue.toRaw(id);
|
|
7137
7228
|
if (children.has(id)) return selected;
|
|
7138
7229
|
return parentStrategy.select({
|
|
7139
7230
|
id,
|
|
@@ -7157,6 +7248,7 @@
|
|
|
7157
7248
|
children,
|
|
7158
7249
|
...rest
|
|
7159
7250
|
} = _ref5;
|
|
7251
|
+
id = vue.toRaw(id);
|
|
7160
7252
|
if (children.has(id)) return selected;
|
|
7161
7253
|
return parentStrategy.select({
|
|
7162
7254
|
id,
|
|
@@ -7180,6 +7272,7 @@
|
|
|
7180
7272
|
children,
|
|
7181
7273
|
parents
|
|
7182
7274
|
} = _ref6;
|
|
7275
|
+
id = vue.toRaw(id);
|
|
7183
7276
|
const original = new Map(selected);
|
|
7184
7277
|
const items = [id];
|
|
7185
7278
|
while (items.length) {
|
|
@@ -7401,7 +7494,7 @@
|
|
|
7401
7494
|
isOpen: vue.computed(() => parent.root.opened.value.has(computedId.value)),
|
|
7402
7495
|
parent: vue.computed(() => parent.root.parents.value.get(computedId.value)),
|
|
7403
7496
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
7404
|
-
isSelected: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
|
7497
|
+
isSelected: vue.computed(() => parent.root.selected.value.get(vue.toRaw(computedId.value)) === 'on'),
|
|
7405
7498
|
isIndeterminate: vue.computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
7406
7499
|
isLeaf: vue.computed(() => !parent.root.children.value.get(computedId.value)),
|
|
7407
7500
|
isGroupActivator: parent.isGroupActivator
|
|
@@ -7421,8 +7514,6 @@
|
|
|
7421
7514
|
});
|
|
7422
7515
|
};
|
|
7423
7516
|
|
|
7424
|
-
// Types
|
|
7425
|
-
|
|
7426
7517
|
const VListGroupActivator = defineComponent({
|
|
7427
7518
|
name: 'VListGroupActivator',
|
|
7428
7519
|
setup(_, _ref) {
|
|
@@ -7515,9 +7606,6 @@
|
|
|
7515
7606
|
return {};
|
|
7516
7607
|
}
|
|
7517
7608
|
});
|
|
7518
|
-
function filterListGroupProps(props) {
|
|
7519
|
-
return pick(props, Object.keys(VListGroup.props));
|
|
7520
|
-
}
|
|
7521
7609
|
|
|
7522
7610
|
const VListItemSubtitle = createSimpleFunctional('v-list-item-subtitle');
|
|
7523
7611
|
|
|
@@ -7655,8 +7743,10 @@
|
|
|
7655
7743
|
const hasColor = !list || isSelected.value || isActive.value;
|
|
7656
7744
|
const hasTitle = slots.title || props.title;
|
|
7657
7745
|
const hasSubtitle = slots.subtitle || props.subtitle;
|
|
7658
|
-
const
|
|
7659
|
-
const
|
|
7746
|
+
const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
|
|
7747
|
+
const hasAppend = !!(hasAppendMedia || slots.append);
|
|
7748
|
+
const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
|
|
7749
|
+
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
|
7660
7750
|
list?.updateHasPrepend(hasPrepend);
|
|
7661
7751
|
return vue.withDirectives(vue.createVNode(Tag, {
|
|
7662
7752
|
"class": ['v-list-item', {
|
|
@@ -7676,7 +7766,7 @@
|
|
|
7676
7766
|
default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && vue.createVNode("div", {
|
|
7677
7767
|
"key": "prepend",
|
|
7678
7768
|
"class": "v-list-item__prepend"
|
|
7679
|
-
}, [props.prependAvatar && vue.createVNode(VAvatar, {
|
|
7769
|
+
}, [!slots.prepend ? vue.createVNode(vue.Fragment, null, [props.prependAvatar && vue.createVNode(VAvatar, {
|
|
7680
7770
|
"key": "prepend-avatar",
|
|
7681
7771
|
"density": props.density,
|
|
7682
7772
|
"image": props.prependAvatar
|
|
@@ -7684,8 +7774,9 @@
|
|
|
7684
7774
|
"key": "prepend-icon",
|
|
7685
7775
|
"density": props.density,
|
|
7686
7776
|
"icon": props.prependIcon
|
|
7687
|
-
}, null)
|
|
7688
|
-
"key": "prepend",
|
|
7777
|
+
}, null)]) : vue.createVNode(VDefaultsProvider, {
|
|
7778
|
+
"key": "prepend-defaults",
|
|
7779
|
+
"disabled": !hasPrependMedia,
|
|
7689
7780
|
"defaults": {
|
|
7690
7781
|
VAvatar: {
|
|
7691
7782
|
density: props.density,
|
|
@@ -7700,7 +7791,7 @@
|
|
|
7700
7791
|
}
|
|
7701
7792
|
}
|
|
7702
7793
|
}, {
|
|
7703
|
-
default: () => [slots.prepend(slotProps.value)]
|
|
7794
|
+
default: () => [slots.prepend?.(slotProps.value)]
|
|
7704
7795
|
})]), vue.createVNode("div", {
|
|
7705
7796
|
"class": "v-list-item__content",
|
|
7706
7797
|
"data-no-activator": ""
|
|
@@ -7719,8 +7810,17 @@
|
|
|
7719
7810
|
}), slots.default?.(slotProps.value)]), hasAppend && vue.createVNode("div", {
|
|
7720
7811
|
"key": "append",
|
|
7721
7812
|
"class": "v-list-item__append"
|
|
7722
|
-
}, [slots.append && vue.createVNode(
|
|
7723
|
-
"key": "append",
|
|
7813
|
+
}, [!slots.append ? vue.createVNode(vue.Fragment, null, [props.appendIcon && vue.createVNode(VIcon, {
|
|
7814
|
+
"key": "append-icon",
|
|
7815
|
+
"density": props.density,
|
|
7816
|
+
"icon": props.appendIcon
|
|
7817
|
+
}, null), props.appendAvatar && vue.createVNode(VAvatar, {
|
|
7818
|
+
"key": "append-avatar",
|
|
7819
|
+
"density": props.density,
|
|
7820
|
+
"image": props.appendAvatar
|
|
7821
|
+
}, null)]) : vue.createVNode(VDefaultsProvider, {
|
|
7822
|
+
"key": "append-defaults",
|
|
7823
|
+
"disabled": !hasAppendMedia,
|
|
7724
7824
|
"defaults": {
|
|
7725
7825
|
VAvatar: {
|
|
7726
7826
|
density: props.density,
|
|
@@ -7735,16 +7835,8 @@
|
|
|
7735
7835
|
}
|
|
7736
7836
|
}
|
|
7737
7837
|
}, {
|
|
7738
|
-
default: () => [slots.append(slotProps.value)]
|
|
7739
|
-
})
|
|
7740
|
-
"key": "append-icon",
|
|
7741
|
-
"density": props.density,
|
|
7742
|
-
"icon": props.appendIcon
|
|
7743
|
-
}, null), props.appendAvatar && vue.createVNode(VAvatar, {
|
|
7744
|
-
"key": "append-avatar",
|
|
7745
|
-
"density": props.density,
|
|
7746
|
-
"image": props.appendAvatar
|
|
7747
|
-
}, null)])]
|
|
7838
|
+
default: () => [slots.append?.(slotProps.value)]
|
|
7839
|
+
})])]
|
|
7748
7840
|
}), [[vue.resolveDirective("ripple"), isClickable.value && props.ripple]]);
|
|
7749
7841
|
});
|
|
7750
7842
|
return {};
|
|
@@ -7841,7 +7933,7 @@
|
|
|
7841
7933
|
item
|
|
7842
7934
|
}) : undefined
|
|
7843
7935
|
};
|
|
7844
|
-
const [listGroupProps, _1] =
|
|
7936
|
+
const [listGroupProps, _1] = VListGroup.filterProps(itemProps);
|
|
7845
7937
|
return children ? vue.createVNode(VListGroup, vue.mergeProps({
|
|
7846
7938
|
"value": itemProps?.value
|
|
7847
7939
|
}, listGroupProps), {
|
|
@@ -8963,7 +9055,7 @@
|
|
|
8963
9055
|
if (!(data.isActive.value && props.scrollStrategy)) return;
|
|
8964
9056
|
scope = vue.effectScope();
|
|
8965
9057
|
await vue.nextTick();
|
|
8966
|
-
scope.run(() => {
|
|
9058
|
+
scope.active && scope.run(() => {
|
|
8967
9059
|
if (typeof props.scrollStrategy === 'function') {
|
|
8968
9060
|
props.scrollStrategy(data, props, scope);
|
|
8969
9061
|
} else {
|
|
@@ -9044,7 +9136,7 @@
|
|
|
9044
9136
|
});
|
|
9045
9137
|
});
|
|
9046
9138
|
vue.onScopeDispose(() => {
|
|
9047
|
-
cancelIdleCallback(ric);
|
|
9139
|
+
typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(ric);
|
|
9048
9140
|
cancelAnimationFrame(raf);
|
|
9049
9141
|
});
|
|
9050
9142
|
}
|
|
@@ -9068,6 +9160,8 @@
|
|
|
9068
9160
|
|
|
9069
9161
|
// Types
|
|
9070
9162
|
|
|
9163
|
+
const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
|
|
9164
|
+
|
|
9071
9165
|
const DisplaySymbol = Symbol.for('vuetify:display');
|
|
9072
9166
|
const defaultDisplayOptions = {
|
|
9073
9167
|
mobileBreakpoint: 'lg',
|
|
@@ -9090,8 +9184,8 @@
|
|
|
9090
9184
|
function getClientHeight(isHydrate) {
|
|
9091
9185
|
return IN_BROWSER && !isHydrate ? window.innerHeight : 0;
|
|
9092
9186
|
}
|
|
9093
|
-
function getPlatform() {
|
|
9094
|
-
const userAgent = IN_BROWSER ? window.navigator.userAgent : 'ssr';
|
|
9187
|
+
function getPlatform(isHydrate) {
|
|
9188
|
+
const userAgent = IN_BROWSER && !isHydrate ? window.navigator.userAgent : 'ssr';
|
|
9095
9189
|
function match(regexp) {
|
|
9096
9190
|
return Boolean(userAgent.match(regexp));
|
|
9097
9191
|
}
|
|
@@ -9106,7 +9200,6 @@
|
|
|
9106
9200
|
const win = match(/win/i);
|
|
9107
9201
|
const mac = match(/mac/i);
|
|
9108
9202
|
const linux = match(/linux/i);
|
|
9109
|
-
const ssr = match(/ssr/i);
|
|
9110
9203
|
return {
|
|
9111
9204
|
android,
|
|
9112
9205
|
ios,
|
|
@@ -9120,7 +9213,7 @@
|
|
|
9120
9213
|
mac,
|
|
9121
9214
|
linux,
|
|
9122
9215
|
touch: SUPPORTS_TOUCH,
|
|
9123
|
-
ssr
|
|
9216
|
+
ssr: userAgent === 'ssr'
|
|
9124
9217
|
};
|
|
9125
9218
|
}
|
|
9126
9219
|
function createDisplay(options, ssr) {
|
|
@@ -9129,13 +9222,17 @@
|
|
|
9129
9222
|
mobileBreakpoint
|
|
9130
9223
|
} = parseDisplayOptions(options);
|
|
9131
9224
|
const height = vue.ref(getClientHeight(ssr));
|
|
9132
|
-
const platform = getPlatform();
|
|
9225
|
+
const platform = vue.shallowRef(getPlatform(ssr));
|
|
9133
9226
|
const state = vue.reactive({});
|
|
9134
9227
|
const width = vue.ref(getClientWidth(ssr));
|
|
9135
|
-
function
|
|
9228
|
+
function updateSize() {
|
|
9136
9229
|
height.value = getClientHeight();
|
|
9137
9230
|
width.value = getClientWidth();
|
|
9138
9231
|
}
|
|
9232
|
+
function update() {
|
|
9233
|
+
updateSize();
|
|
9234
|
+
platform.value = getPlatform();
|
|
9235
|
+
}
|
|
9139
9236
|
|
|
9140
9237
|
// eslint-disable-next-line max-statements
|
|
9141
9238
|
vue.watchEffect(() => {
|
|
@@ -9147,7 +9244,7 @@
|
|
|
9147
9244
|
const xxl = width.value >= thresholds.xxl;
|
|
9148
9245
|
const name = xs ? 'xs' : sm ? 'sm' : md ? 'md' : lg ? 'lg' : xl ? 'xl' : 'xxl';
|
|
9149
9246
|
const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint];
|
|
9150
|
-
const mobile =
|
|
9247
|
+
const mobile = width.value < breakpointValue;
|
|
9151
9248
|
state.xs = xs;
|
|
9152
9249
|
state.sm = sm;
|
|
9153
9250
|
state.md = md;
|
|
@@ -9167,11 +9264,11 @@
|
|
|
9167
9264
|
state.width = width.value;
|
|
9168
9265
|
state.mobile = mobile;
|
|
9169
9266
|
state.mobileBreakpoint = mobileBreakpoint;
|
|
9170
|
-
state.platform = platform;
|
|
9267
|
+
state.platform = platform.value;
|
|
9171
9268
|
state.thresholds = thresholds;
|
|
9172
9269
|
});
|
|
9173
9270
|
if (IN_BROWSER) {
|
|
9174
|
-
window.addEventListener('resize',
|
|
9271
|
+
window.addEventListener('resize', updateSize, {
|
|
9175
9272
|
passive: true
|
|
9176
9273
|
});
|
|
9177
9274
|
}
|
|
@@ -9236,7 +9333,7 @@
|
|
|
9236
9333
|
parent?.activeChildren.add(vm.uid);
|
|
9237
9334
|
vue.onScopeDispose(() => {
|
|
9238
9335
|
if (createStackEntry) {
|
|
9239
|
-
const idx = globalStack.findIndex(v => v[0] === vm.uid);
|
|
9336
|
+
const idx = vue.toRaw(globalStack).findIndex(v => v[0] === vm.uid);
|
|
9240
9337
|
globalStack.splice(idx, 1);
|
|
9241
9338
|
}
|
|
9242
9339
|
parent?.activeChildren.delete(vm.uid);
|
|
@@ -9620,9 +9717,6 @@
|
|
|
9620
9717
|
};
|
|
9621
9718
|
}
|
|
9622
9719
|
});
|
|
9623
|
-
function filterVOverlayProps(props) {
|
|
9624
|
-
return pick(props, Object.keys(VOverlay.props));
|
|
9625
|
-
}
|
|
9626
9720
|
|
|
9627
9721
|
// Types
|
|
9628
9722
|
|
|
@@ -9659,17 +9753,17 @@
|
|
|
9659
9753
|
const id = vue.computed(() => props.id || `v-menu-${uid}`);
|
|
9660
9754
|
const overlay = vue.ref();
|
|
9661
9755
|
const parent = vue.inject(VMenuSymbol, null);
|
|
9662
|
-
|
|
9756
|
+
const openChildren = vue.ref(0);
|
|
9663
9757
|
vue.provide(VMenuSymbol, {
|
|
9664
9758
|
register() {
|
|
9665
|
-
++openChildren;
|
|
9759
|
+
++openChildren.value;
|
|
9666
9760
|
},
|
|
9667
9761
|
unregister() {
|
|
9668
|
-
--openChildren;
|
|
9762
|
+
--openChildren.value;
|
|
9669
9763
|
},
|
|
9670
9764
|
closeParents() {
|
|
9671
9765
|
setTimeout(() => {
|
|
9672
|
-
if (!openChildren) {
|
|
9766
|
+
if (!openChildren.value) {
|
|
9673
9767
|
isActive.value = false;
|
|
9674
9768
|
parent?.closeParents();
|
|
9675
9769
|
}
|
|
@@ -9688,7 +9782,7 @@
|
|
|
9688
9782
|
'aria-owns': id.value
|
|
9689
9783
|
}, props.activatorProps));
|
|
9690
9784
|
useRender(() => {
|
|
9691
|
-
const [overlayProps] =
|
|
9785
|
+
const [overlayProps] = VOverlay.filterProps(props);
|
|
9692
9786
|
return vue.createVNode(VOverlay, vue.mergeProps({
|
|
9693
9787
|
"ref": overlay,
|
|
9694
9788
|
"class": ['v-menu']
|
|
@@ -9713,7 +9807,8 @@
|
|
|
9713
9807
|
});
|
|
9714
9808
|
});
|
|
9715
9809
|
return forwardRefs({
|
|
9716
|
-
id
|
|
9810
|
+
id,
|
|
9811
|
+
ΨopenChildren: openChildren
|
|
9717
9812
|
}, overlay);
|
|
9718
9813
|
}
|
|
9719
9814
|
});
|
|
@@ -9773,7 +9868,15 @@
|
|
|
9773
9868
|
t
|
|
9774
9869
|
} = useLocale();
|
|
9775
9870
|
const vTextFieldRef = vue.ref();
|
|
9776
|
-
const
|
|
9871
|
+
const vMenuRef = vue.ref();
|
|
9872
|
+
const _menu = useProxiedModel(props, 'menu');
|
|
9873
|
+
const menu = vue.computed({
|
|
9874
|
+
get: () => _menu.value,
|
|
9875
|
+
set: v => {
|
|
9876
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
9877
|
+
_menu.value = v;
|
|
9878
|
+
}
|
|
9879
|
+
});
|
|
9777
9880
|
const {
|
|
9778
9881
|
items,
|
|
9779
9882
|
transformIn,
|
|
@@ -9855,7 +9958,7 @@
|
|
|
9855
9958
|
useRender(() => {
|
|
9856
9959
|
const hasChips = !!(props.chips || slots.chip);
|
|
9857
9960
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
|
|
9858
|
-
const [textFieldProps] =
|
|
9961
|
+
const [textFieldProps] = VTextField.filterProps(props);
|
|
9859
9962
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
9860
9963
|
"ref": vTextFieldRef
|
|
9861
9964
|
}, textFieldProps, {
|
|
@@ -9880,6 +9983,7 @@
|
|
|
9880
9983
|
}), {
|
|
9881
9984
|
...slots,
|
|
9882
9985
|
default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
|
|
9986
|
+
"ref": vMenuRef,
|
|
9883
9987
|
"modelValue": menu.value,
|
|
9884
9988
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
9885
9989
|
"activator": "parent",
|
|
@@ -9940,7 +10044,13 @@
|
|
|
9940
10044
|
return vue.createVNode("div", {
|
|
9941
10045
|
"key": item.value,
|
|
9942
10046
|
"class": "v-select__selection"
|
|
9943
|
-
}, [hasChips ? vue.createVNode(
|
|
10047
|
+
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
10048
|
+
"key": "chip",
|
|
10049
|
+
"closable": props.closableChips,
|
|
10050
|
+
"size": "small",
|
|
10051
|
+
"text": item.title
|
|
10052
|
+
}, slotProps), null) : vue.createVNode(VDefaultsProvider, {
|
|
10053
|
+
"key": "chip-defaults",
|
|
9944
10054
|
"defaults": {
|
|
9945
10055
|
VChip: {
|
|
9946
10056
|
closable: props.closableChips,
|
|
@@ -9949,15 +10059,15 @@
|
|
|
9949
10059
|
}
|
|
9950
10060
|
}
|
|
9951
10061
|
}, {
|
|
9952
|
-
default: () => [slots.chip
|
|
10062
|
+
default: () => [slots.chip?.({
|
|
9953
10063
|
item,
|
|
9954
10064
|
index,
|
|
9955
10065
|
props: slotProps
|
|
9956
|
-
})
|
|
9957
|
-
}) : slots.selection
|
|
10066
|
+
})]
|
|
10067
|
+
}) : slots.selection?.({
|
|
9958
10068
|
item,
|
|
9959
10069
|
index
|
|
9960
|
-
})
|
|
10070
|
+
}) ?? vue.createVNode("span", {
|
|
9961
10071
|
"class": "v-select__selection-text"
|
|
9962
10072
|
}, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
9963
10073
|
"class": "v-select__selection-comma"
|
|
@@ -10118,7 +10228,15 @@
|
|
|
10118
10228
|
const vTextFieldRef = vue.ref();
|
|
10119
10229
|
const isFocused = vue.ref(false);
|
|
10120
10230
|
const isPristine = vue.ref(true);
|
|
10121
|
-
const
|
|
10231
|
+
const vMenuRef = vue.ref();
|
|
10232
|
+
const _menu = useProxiedModel(props, 'menu');
|
|
10233
|
+
const menu = vue.computed({
|
|
10234
|
+
get: () => _menu.value,
|
|
10235
|
+
set: v => {
|
|
10236
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
10237
|
+
_menu.value = v;
|
|
10238
|
+
}
|
|
10239
|
+
});
|
|
10122
10240
|
const {
|
|
10123
10241
|
items,
|
|
10124
10242
|
transformIn,
|
|
@@ -10233,7 +10351,7 @@
|
|
|
10233
10351
|
useRender(() => {
|
|
10234
10352
|
const hasChips = !!(props.chips || slots.chip);
|
|
10235
10353
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
|
|
10236
|
-
const [textFieldProps] =
|
|
10354
|
+
const [textFieldProps] = VTextField.filterProps(props);
|
|
10237
10355
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
10238
10356
|
"ref": vTextFieldRef
|
|
10239
10357
|
}, textFieldProps, {
|
|
@@ -10260,6 +10378,7 @@
|
|
|
10260
10378
|
}), {
|
|
10261
10379
|
...slots,
|
|
10262
10380
|
default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
|
|
10381
|
+
"ref": vMenuRef,
|
|
10263
10382
|
"modelValue": menu.value,
|
|
10264
10383
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
10265
10384
|
"activator": "parent",
|
|
@@ -10320,7 +10439,13 @@
|
|
|
10320
10439
|
return vue.createVNode("div", {
|
|
10321
10440
|
"key": item.value,
|
|
10322
10441
|
"class": "v-autocomplete__selection"
|
|
10323
|
-
}, [hasChips ? vue.createVNode(
|
|
10442
|
+
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
10443
|
+
"key": "chip",
|
|
10444
|
+
"closable": props.closableChips,
|
|
10445
|
+
"size": "small",
|
|
10446
|
+
"text": item.title
|
|
10447
|
+
}, slotProps), null) : vue.createVNode(VDefaultsProvider, {
|
|
10448
|
+
"key": "chip-defaults",
|
|
10324
10449
|
"defaults": {
|
|
10325
10450
|
VChip: {
|
|
10326
10451
|
closable: props.closableChips,
|
|
@@ -10329,15 +10454,15 @@
|
|
|
10329
10454
|
}
|
|
10330
10455
|
}
|
|
10331
10456
|
}, {
|
|
10332
|
-
default: () => [slots.chip
|
|
10457
|
+
default: () => [slots.chip?.({
|
|
10333
10458
|
item,
|
|
10334
10459
|
index,
|
|
10335
10460
|
props: slotProps
|
|
10336
|
-
})
|
|
10337
|
-
}) : slots.selection
|
|
10461
|
+
})]
|
|
10462
|
+
}) : slots.selection?.({
|
|
10338
10463
|
item,
|
|
10339
10464
|
index
|
|
10340
|
-
})
|
|
10465
|
+
}) ?? vue.createVNode("span", {
|
|
10341
10466
|
"class": "v-autocomplete__selection-text"
|
|
10342
10467
|
}, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
10343
10468
|
"class": "v-autocomplete__selection-comma"
|
|
@@ -10538,7 +10663,8 @@
|
|
|
10538
10663
|
});
|
|
10539
10664
|
useRender(() => {
|
|
10540
10665
|
const hasText = !!(props.text || slots.text);
|
|
10541
|
-
const
|
|
10666
|
+
const hasPrependMedia = !!(props.avatar || props.icon);
|
|
10667
|
+
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
|
10542
10668
|
return vue.createVNode(props.tag, {
|
|
10543
10669
|
"class": ['v-banner', {
|
|
10544
10670
|
'v-banner--stacked': props.stacked || mobile.value,
|
|
@@ -10548,8 +10674,18 @@
|
|
|
10548
10674
|
"style": [dimensionStyles.value, locationStyles.value],
|
|
10549
10675
|
"role": "banner"
|
|
10550
10676
|
}, {
|
|
10551
|
-
default: () => [hasPrepend && vue.createVNode(
|
|
10677
|
+
default: () => [hasPrepend && vue.createVNode("div", {
|
|
10552
10678
|
"key": "prepend",
|
|
10679
|
+
"class": "v-banner__prepend"
|
|
10680
|
+
}, [!slots.prepend ? vue.createVNode(VAvatar, {
|
|
10681
|
+
"key": "prepend-avatar",
|
|
10682
|
+
"color": color.value,
|
|
10683
|
+
"density": density.value,
|
|
10684
|
+
"icon": props.icon,
|
|
10685
|
+
"image": props.avatar
|
|
10686
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
10687
|
+
"key": "prepend-defaults",
|
|
10688
|
+
"disabled": !hasPrependMedia,
|
|
10553
10689
|
"defaults": {
|
|
10554
10690
|
VAvatar: {
|
|
10555
10691
|
color: color.value,
|
|
@@ -10558,19 +10694,15 @@
|
|
|
10558
10694
|
image: props.avatar
|
|
10559
10695
|
}
|
|
10560
10696
|
}
|
|
10561
|
-
}, {
|
|
10562
|
-
default: () => [vue.createVNode("div", {
|
|
10563
|
-
"class": "v-banner__prepend"
|
|
10564
|
-
}, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && vue.createVNode(VAvatar, null, null)])]
|
|
10565
|
-
}), vue.createVNode("div", {
|
|
10697
|
+
}, slots.prepend)]), vue.createVNode("div", {
|
|
10566
10698
|
"class": "v-banner__content"
|
|
10567
10699
|
}, [hasText && vue.createVNode(VBannerText, {
|
|
10568
10700
|
"key": "text"
|
|
10569
10701
|
}, {
|
|
10570
|
-
default: () => [slots.text
|
|
10571
|
-
}), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions,
|
|
10572
|
-
|
|
10573
|
-
})]
|
|
10702
|
+
default: () => [slots.text?.() ?? props.text]
|
|
10703
|
+
}), slots.default?.()]), slots.actions && vue.createVNode(VBannerActions, {
|
|
10704
|
+
"key": "actions"
|
|
10705
|
+
}, slots.actions)]
|
|
10574
10706
|
});
|
|
10575
10707
|
});
|
|
10576
10708
|
}
|
|
@@ -10636,6 +10768,9 @@
|
|
|
10636
10768
|
const {
|
|
10637
10769
|
roundedClasses
|
|
10638
10770
|
} = useRounded(props);
|
|
10771
|
+
const {
|
|
10772
|
+
ssrBootStyles
|
|
10773
|
+
} = useSsrBoot();
|
|
10639
10774
|
const height = vue.computed(() => Number(props.height) - (props.density === 'comfortable' ? 8 : 0) - (props.density === 'compact' ? 16 : 0));
|
|
10640
10775
|
const isActive = vue.toRef(props, 'active');
|
|
10641
10776
|
const {
|
|
@@ -10670,7 +10805,7 @@
|
|
|
10670
10805
|
"style": [backgroundColorStyles.value, layoutItemStyles.value, {
|
|
10671
10806
|
height: convertToUnit(height.value),
|
|
10672
10807
|
transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
|
|
10673
|
-
}]
|
|
10808
|
+
}, ssrBootStyles.value]
|
|
10674
10809
|
}, {
|
|
10675
10810
|
default: () => [slots.default && vue.createVNode("div", {
|
|
10676
10811
|
"class": "v-bottom-navigation__content"
|
|
@@ -10800,19 +10935,23 @@
|
|
|
10800
10935
|
"class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
|
|
10801
10936
|
"style": backgroundColorStyles.value
|
|
10802
10937
|
}, {
|
|
10803
|
-
default: () => [hasPrepend && vue.createVNode(
|
|
10938
|
+
default: () => [hasPrepend && vue.createVNode("div", {
|
|
10804
10939
|
"key": "prepend",
|
|
10940
|
+
"class": "v-breadcrumbs__prepend"
|
|
10941
|
+
}, [!slots.prepend ? vue.createVNode(VIcon, {
|
|
10942
|
+
"key": "prepend-icon",
|
|
10943
|
+
"start": true,
|
|
10944
|
+
"icon": props.icon
|
|
10945
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
10946
|
+
"key": "prepend-defaults",
|
|
10947
|
+
"disabled": !props.icon,
|
|
10805
10948
|
"defaults": {
|
|
10806
10949
|
VIcon: {
|
|
10807
10950
|
icon: props.icon,
|
|
10808
10951
|
start: true
|
|
10809
10952
|
}
|
|
10810
10953
|
}
|
|
10811
|
-
}, {
|
|
10812
|
-
default: () => [vue.createVNode("div", {
|
|
10813
|
-
"class": "v-breadcrumbs__prepend"
|
|
10814
|
-
}, [slots.prepend ? slots.prepend() : props.icon && vue.createVNode(VIcon, null, null)])]
|
|
10815
|
-
}), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
|
|
10954
|
+
}, slots.prepend)]), props.items.map((item, index, array) => vue.createVNode(vue.Fragment, null, [vue.createVNode(VBreadcrumbsItem, vue.mergeProps({
|
|
10816
10955
|
"key": index,
|
|
10817
10956
|
"disabled": index >= array.length - 1
|
|
10818
10957
|
}, typeof item === 'string' ? {
|
|
@@ -10876,30 +11015,33 @@
|
|
|
10876
11015
|
slots
|
|
10877
11016
|
} = _ref;
|
|
10878
11017
|
useRender(() => {
|
|
10879
|
-
const
|
|
10880
|
-
const
|
|
11018
|
+
const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
|
|
11019
|
+
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
|
11020
|
+
const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
|
|
11021
|
+
const hasAppend = !!(hasAppendMedia || slots.append);
|
|
10881
11022
|
const hasTitle = !!(props.title || slots.title);
|
|
10882
11023
|
const hasSubtitle = !!(props.subtitle || slots.subtitle);
|
|
10883
11024
|
return vue.createVNode("div", {
|
|
10884
11025
|
"class": "v-card-item"
|
|
10885
|
-
}, [hasPrepend && vue.createVNode(
|
|
11026
|
+
}, [hasPrepend && vue.createVNode("div", {
|
|
10886
11027
|
"key": "prepend",
|
|
11028
|
+
"class": "v-card-item__prepend"
|
|
11029
|
+
}, [!slots.prepend ? hasPrependMedia && vue.createVNode(VAvatar, {
|
|
11030
|
+
"key": "prepend-avatar",
|
|
11031
|
+
"density": props.density,
|
|
11032
|
+
"icon": props.prependIcon,
|
|
11033
|
+
"image": props.prependAvatar
|
|
11034
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
11035
|
+
"key": "prepend-defaults",
|
|
11036
|
+
"disabled": !hasPrependMedia,
|
|
10887
11037
|
"defaults": {
|
|
10888
11038
|
VAvatar: {
|
|
10889
11039
|
density: props.density,
|
|
10890
11040
|
icon: props.prependIcon,
|
|
10891
11041
|
image: props.prependAvatar
|
|
10892
|
-
},
|
|
10893
|
-
VIcon: {
|
|
10894
|
-
density: props.density,
|
|
10895
|
-
icon: props.prependIcon
|
|
10896
11042
|
}
|
|
10897
11043
|
}
|
|
10898
|
-
}, {
|
|
10899
|
-
default: () => [vue.createVNode("div", {
|
|
10900
|
-
"class": "v-card-item__prepend"
|
|
10901
|
-
}, [slots.prepend?.() ?? vue.createVNode(VAvatar, null, null)])]
|
|
10902
|
-
}), vue.createVNode("div", {
|
|
11044
|
+
}, slots.prepend)]), vue.createVNode("div", {
|
|
10903
11045
|
"class": "v-card-item__content"
|
|
10904
11046
|
}, [hasTitle && vue.createVNode(VCardTitle, {
|
|
10905
11047
|
"key": "title"
|
|
@@ -10909,24 +11051,25 @@
|
|
|
10909
11051
|
"key": "subtitle"
|
|
10910
11052
|
}, {
|
|
10911
11053
|
default: () => [slots.subtitle?.() ?? props.subtitle]
|
|
10912
|
-
}), slots.default?.()]), hasAppend && vue.createVNode(
|
|
11054
|
+
}), slots.default?.()]), hasAppend && vue.createVNode("div", {
|
|
10913
11055
|
"key": "append",
|
|
11056
|
+
"class": "v-card-item__append"
|
|
11057
|
+
}, [!slots.append ? hasAppendMedia && vue.createVNode(VAvatar, {
|
|
11058
|
+
"key": "append-avatar",
|
|
11059
|
+
"density": props.density,
|
|
11060
|
+
"icon": props.appendIcon,
|
|
11061
|
+
"image": props.appendAvatar
|
|
11062
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
11063
|
+
"key": "append-defaults",
|
|
11064
|
+
"disabled": !hasAppendMedia,
|
|
10914
11065
|
"defaults": {
|
|
10915
11066
|
VAvatar: {
|
|
10916
11067
|
density: props.density,
|
|
10917
11068
|
icon: props.appendIcon,
|
|
10918
11069
|
image: props.appendAvatar
|
|
10919
|
-
},
|
|
10920
|
-
VIcon: {
|
|
10921
|
-
density: props.density,
|
|
10922
|
-
icon: props.appendIcon
|
|
10923
11070
|
}
|
|
10924
11071
|
}
|
|
10925
|
-
},
|
|
10926
|
-
default: () => [vue.createVNode("div", {
|
|
10927
|
-
"class": "v-card-item__append"
|
|
10928
|
-
}, [slots.append?.() ?? vue.createVNode(VAvatar, null, null)])]
|
|
10929
|
-
})]);
|
|
11072
|
+
}, slots.append)])]);
|
|
10930
11073
|
});
|
|
10931
11074
|
return {};
|
|
10932
11075
|
}
|
|
@@ -11038,19 +11181,23 @@
|
|
|
11038
11181
|
"onClick": isClickable.value && link.navigate,
|
|
11039
11182
|
"tabindex": props.disabled ? -1 : undefined
|
|
11040
11183
|
}, {
|
|
11041
|
-
default: () => [hasImage && vue.createVNode(
|
|
11184
|
+
default: () => [hasImage && vue.createVNode("div", {
|
|
11042
11185
|
"key": "image",
|
|
11186
|
+
"class": "v-card__image"
|
|
11187
|
+
}, [!slots.image ? vue.createVNode(VImg, {
|
|
11188
|
+
"key": "image-img",
|
|
11189
|
+
"cover": true,
|
|
11190
|
+
"src": props.image
|
|
11191
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
11192
|
+
"key": "image-defaults",
|
|
11193
|
+
"disabled": !props.image,
|
|
11043
11194
|
"defaults": {
|
|
11044
11195
|
VImg: {
|
|
11045
11196
|
cover: true,
|
|
11046
11197
|
src: props.image
|
|
11047
11198
|
}
|
|
11048
11199
|
}
|
|
11049
|
-
}, {
|
|
11050
|
-
default: () => [vue.createVNode("div", {
|
|
11051
|
-
"class": "v-card__image"
|
|
11052
|
-
}, [slots.image?.() ?? vue.createVNode(VImg, null, null)])]
|
|
11053
|
-
}), vue.createVNode(LoaderSlot, {
|
|
11200
|
+
}, slots.image)]), vue.createVNode(LoaderSlot, {
|
|
11054
11201
|
"name": "v-card",
|
|
11055
11202
|
"active": !!props.loading,
|
|
11056
11203
|
"color": typeof props.loading === 'boolean' ? undefined : props.loading
|
|
@@ -11360,25 +11507,6 @@
|
|
|
11360
11507
|
}
|
|
11361
11508
|
});
|
|
11362
11509
|
|
|
11363
|
-
// Utilities
|
|
11364
|
-
|
|
11365
|
-
// Composables
|
|
11366
|
-
function useSsrBoot() {
|
|
11367
|
-
const isBooted = vue.ref(false);
|
|
11368
|
-
vue.onMounted(() => {
|
|
11369
|
-
window.requestAnimationFrame(() => {
|
|
11370
|
-
isBooted.value = true;
|
|
11371
|
-
});
|
|
11372
|
-
});
|
|
11373
|
-
const ssrBootStyles = vue.computed(() => !isBooted.value ? {
|
|
11374
|
-
transition: 'none !important'
|
|
11375
|
-
} : undefined);
|
|
11376
|
-
return {
|
|
11377
|
-
ssrBootStyles,
|
|
11378
|
-
isBooted: vue.readonly(isBooted)
|
|
11379
|
-
};
|
|
11380
|
-
}
|
|
11381
|
-
|
|
11382
11510
|
const VWindowItem = genericComponent()({
|
|
11383
11511
|
name: 'VWindowItem',
|
|
11384
11512
|
directives: {
|
|
@@ -11677,6 +11805,19 @@
|
|
|
11677
11805
|
};
|
|
11678
11806
|
});
|
|
11679
11807
|
const canvasRef = vue.ref();
|
|
11808
|
+
const canvasWidth = vue.ref(parseFloat(props.width));
|
|
11809
|
+
const canvasHeight = vue.ref(parseFloat(props.height));
|
|
11810
|
+
const {
|
|
11811
|
+
resizeRef
|
|
11812
|
+
} = useResizeObserver(entries => {
|
|
11813
|
+
if (!resizeRef.value?.offsetParent) return;
|
|
11814
|
+
const {
|
|
11815
|
+
width,
|
|
11816
|
+
height
|
|
11817
|
+
} = entries[0].contentRect;
|
|
11818
|
+
canvasWidth.value = width;
|
|
11819
|
+
canvasHeight.value = height;
|
|
11820
|
+
});
|
|
11680
11821
|
function updateDotPosition(x, y, rect) {
|
|
11681
11822
|
const {
|
|
11682
11823
|
left,
|
|
@@ -11721,18 +11862,14 @@
|
|
|
11721
11862
|
return;
|
|
11722
11863
|
}
|
|
11723
11864
|
if (!canvasRef.value) return;
|
|
11724
|
-
const {
|
|
11725
|
-
width,
|
|
11726
|
-
height
|
|
11727
|
-
} = canvasRef.value.getBoundingClientRect();
|
|
11728
11865
|
const {
|
|
11729
11866
|
x,
|
|
11730
11867
|
y
|
|
11731
11868
|
} = dotPosition.value;
|
|
11732
11869
|
emit('update:color', {
|
|
11733
11870
|
h: props.color?.h ?? 0,
|
|
11734
|
-
s: clamp(x, 0,
|
|
11735
|
-
v: 1 - clamp(y, 0,
|
|
11871
|
+
s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
|
|
11872
|
+
v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,
|
|
11736
11873
|
a: props.color?.a ?? 1
|
|
11737
11874
|
});
|
|
11738
11875
|
});
|
|
@@ -11755,16 +11892,27 @@
|
|
|
11755
11892
|
vue.watch(() => props.color?.h, updateCanvas, {
|
|
11756
11893
|
immediate: true
|
|
11757
11894
|
});
|
|
11895
|
+
vue.watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {
|
|
11896
|
+
updateCanvas();
|
|
11897
|
+
dotPosition.value = {
|
|
11898
|
+
x: dotPosition.value.x * newVal[0] / oldVal[0],
|
|
11899
|
+
y: dotPosition.value.y * newVal[1] / oldVal[1]
|
|
11900
|
+
};
|
|
11901
|
+
}, {
|
|
11902
|
+
flush: 'post'
|
|
11903
|
+
});
|
|
11758
11904
|
vue.watch(() => props.color, () => {
|
|
11759
11905
|
if (isInteracting.value) {
|
|
11760
11906
|
isInteracting.value = false;
|
|
11761
11907
|
return;
|
|
11762
11908
|
}
|
|
11763
|
-
if (!props.color) return;
|
|
11764
11909
|
isOutsideUpdate.value = true;
|
|
11765
|
-
dotPosition.value = {
|
|
11766
|
-
x: props.color.s *
|
|
11767
|
-
y: (1 - props.color.v) *
|
|
11910
|
+
dotPosition.value = props.color ? {
|
|
11911
|
+
x: props.color.s * canvasWidth.value,
|
|
11912
|
+
y: (1 - props.color.v) * canvasHeight.value
|
|
11913
|
+
} : {
|
|
11914
|
+
x: 0,
|
|
11915
|
+
y: 0
|
|
11768
11916
|
};
|
|
11769
11917
|
}, {
|
|
11770
11918
|
deep: true,
|
|
@@ -11772,19 +11920,16 @@
|
|
|
11772
11920
|
});
|
|
11773
11921
|
vue.onMounted(() => updateCanvas());
|
|
11774
11922
|
useRender(() => vue.createVNode("div", {
|
|
11923
|
+
"ref": resizeRef,
|
|
11775
11924
|
"class": "v-color-picker-canvas",
|
|
11776
|
-
"style": {
|
|
11777
|
-
width: convertToUnit(props.width),
|
|
11778
|
-
height: convertToUnit(props.height)
|
|
11779
|
-
},
|
|
11780
11925
|
"onClick": handleClick,
|
|
11781
11926
|
"onMousedown": handleMouseDown,
|
|
11782
11927
|
"onTouchstart": handleMouseDown
|
|
11783
11928
|
}, [vue.createVNode("canvas", {
|
|
11784
11929
|
"ref": canvasRef,
|
|
11785
|
-
"width":
|
|
11786
|
-
"height":
|
|
11787
|
-
}, null), vue.createVNode("div", {
|
|
11930
|
+
"width": canvasWidth.value,
|
|
11931
|
+
"height": canvasHeight.value
|
|
11932
|
+
}, null), props.color && vue.createVNode("div", {
|
|
11788
11933
|
"class": ['v-color-picker-canvas__dot', {
|
|
11789
11934
|
'v-color-picker-canvas__dot--disabled': props.disabled
|
|
11790
11935
|
}],
|
|
@@ -11817,10 +11962,7 @@
|
|
|
11817
11962
|
hsva = color;
|
|
11818
11963
|
}
|
|
11819
11964
|
}
|
|
11820
|
-
return hsva
|
|
11821
|
-
...hsva,
|
|
11822
|
-
a: hsva.a ?? 1
|
|
11823
|
-
} : null;
|
|
11965
|
+
return hsva;
|
|
11824
11966
|
}
|
|
11825
11967
|
function stripAlpha(color, stripAlpha) {
|
|
11826
11968
|
if (stripAlpha) {
|
|
@@ -11840,7 +11982,7 @@
|
|
|
11840
11982
|
if (typeof input === 'object') {
|
|
11841
11983
|
let converted;
|
|
11842
11984
|
if (has(input, ['r', 'g', 'b'])) converted = HSVtoRGB(color);else if (has(input, ['h', 's', 'l'])) converted = HSVtoHSL(color);else if (has(input, ['h', 's', 'v'])) converted = color;
|
|
11843
|
-
return stripAlpha(converted, !has(input, ['a']));
|
|
11985
|
+
return stripAlpha(converted, !has(input, ['a']) && color.a === 1);
|
|
11844
11986
|
}
|
|
11845
11987
|
return color;
|
|
11846
11988
|
}
|
|
@@ -12031,7 +12173,7 @@
|
|
|
12031
12173
|
const inputs = vue.computed(() => {
|
|
12032
12174
|
const mode = enabledModes.value.find(m => m.name === props.mode);
|
|
12033
12175
|
if (!mode) return [];
|
|
12034
|
-
const color = props.color ? mode.to(props.color) :
|
|
12176
|
+
const color = props.color ? mode.to(props.color) : null;
|
|
12035
12177
|
return mode.inputs?.map(_ref3 => {
|
|
12036
12178
|
let {
|
|
12037
12179
|
getValue,
|
|
@@ -12042,11 +12184,11 @@
|
|
|
12042
12184
|
...mode.inputProps,
|
|
12043
12185
|
...inputProps,
|
|
12044
12186
|
disabled: props.disabled,
|
|
12045
|
-
value: getValue(color),
|
|
12187
|
+
value: color && getValue(color),
|
|
12046
12188
|
onChange: e => {
|
|
12047
12189
|
const target = e.target;
|
|
12048
12190
|
if (!target) return;
|
|
12049
|
-
emit('update:color', mode.from(getColor(color, target.value)));
|
|
12191
|
+
emit('update:color', mode.from(getColor(color ?? nullColor, target.value)));
|
|
12050
12192
|
}
|
|
12051
12193
|
};
|
|
12052
12194
|
});
|
|
@@ -12157,10 +12299,7 @@
|
|
|
12157
12299
|
const min = vue.computed(() => parseFloat(props.min));
|
|
12158
12300
|
const max = vue.computed(() => parseFloat(props.max));
|
|
12159
12301
|
const step = vue.computed(() => props.step > 0 ? parseFloat(props.step) : 0);
|
|
12160
|
-
const decimals = vue.computed(() =>
|
|
12161
|
-
const trimmedStep = step.value.toString().trim();
|
|
12162
|
-
return trimmedStep.includes('.') ? trimmedStep.length - trimmedStep.indexOf('.') - 1 : 0;
|
|
12163
|
-
});
|
|
12302
|
+
const decimals = vue.computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
|
|
12164
12303
|
const thumbSize = vue.computed(() => parseInt(props.thumbSize, 10));
|
|
12165
12304
|
const tickSize = vue.computed(() => parseInt(props.tickSize, 10));
|
|
12166
12305
|
const trackSize = vue.computed(() => parseInt(props.trackSize, 10));
|
|
@@ -12259,7 +12398,9 @@
|
|
|
12259
12398
|
const percentage = (val - min.value) / (max.value - min.value) * 100;
|
|
12260
12399
|
return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
|
|
12261
12400
|
};
|
|
12401
|
+
const showTicks = vue.toRef(props, 'showTicks');
|
|
12262
12402
|
const parsedTicks = vue.computed(() => {
|
|
12403
|
+
if (!showTicks.value) return [];
|
|
12263
12404
|
if (!props.ticks) {
|
|
12264
12405
|
return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map(t => {
|
|
12265
12406
|
const value = min.value + t * step.value;
|
|
@@ -12308,7 +12449,7 @@
|
|
|
12308
12449
|
readonly: vue.toRef(props, 'readonly'),
|
|
12309
12450
|
rounded: vue.toRef(props, 'rounded'),
|
|
12310
12451
|
roundValue,
|
|
12311
|
-
showTicks
|
|
12452
|
+
showTicks,
|
|
12312
12453
|
startOffset,
|
|
12313
12454
|
step,
|
|
12314
12455
|
thumbSize,
|
|
@@ -12530,6 +12671,7 @@
|
|
|
12530
12671
|
};
|
|
12531
12672
|
});
|
|
12532
12673
|
const computedTicks = vue.computed(() => {
|
|
12674
|
+
if (!showTicks.value) return [];
|
|
12533
12675
|
const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
|
|
12534
12676
|
return ticks.map((tick, index) => {
|
|
12535
12677
|
const directionProperty = vertical.value ? 'bottom' : 'margin-inline-start';
|
|
@@ -12745,12 +12887,12 @@
|
|
|
12745
12887
|
"hideDetails": true
|
|
12746
12888
|
}, null), !props.hideAlpha && vue.createVNode(VSlider, {
|
|
12747
12889
|
"class": "v-color-picker-preview__track v-color-picker-preview__alpha",
|
|
12748
|
-
"modelValue": props.color?.a,
|
|
12890
|
+
"modelValue": props.color?.a ?? 1,
|
|
12749
12891
|
"onUpdate:modelValue": a => emit('update:color', {
|
|
12750
12892
|
...(props.color ?? nullColor),
|
|
12751
12893
|
a
|
|
12752
12894
|
}),
|
|
12753
|
-
"step":
|
|
12895
|
+
"step": 1 / 256,
|
|
12754
12896
|
"min": 0,
|
|
12755
12897
|
"max": 1,
|
|
12756
12898
|
"disabled": props.disabled,
|
|
@@ -13135,18 +13277,21 @@
|
|
|
13135
13277
|
}
|
|
13136
13278
|
});
|
|
13137
13279
|
|
|
13280
|
+
const makeVSheetProps = propsFactory({
|
|
13281
|
+
color: String,
|
|
13282
|
+
...makeBorderProps(),
|
|
13283
|
+
...makeDimensionProps(),
|
|
13284
|
+
...makeElevationProps(),
|
|
13285
|
+
...makeLocationProps(),
|
|
13286
|
+
...makePositionProps(),
|
|
13287
|
+
...makeRoundedProps(),
|
|
13288
|
+
...makeTagProps(),
|
|
13289
|
+
...makeThemeProps()
|
|
13290
|
+
}, 'v-sheet');
|
|
13138
13291
|
const VSheet = genericComponent()({
|
|
13139
13292
|
name: 'VSheet',
|
|
13140
13293
|
props: {
|
|
13141
|
-
|
|
13142
|
-
...makeBorderProps(),
|
|
13143
|
-
...makeDimensionProps(),
|
|
13144
|
-
...makeElevationProps(),
|
|
13145
|
-
...makeLocationProps(),
|
|
13146
|
-
...makePositionProps(),
|
|
13147
|
-
...makeRoundedProps(),
|
|
13148
|
-
...makeTagProps(),
|
|
13149
|
-
...makeThemeProps()
|
|
13294
|
+
...makeVSheetProps()
|
|
13150
13295
|
},
|
|
13151
13296
|
setup(props, _ref) {
|
|
13152
13297
|
let {
|
|
@@ -13177,10 +13322,11 @@
|
|
|
13177
13322
|
const {
|
|
13178
13323
|
roundedClasses
|
|
13179
13324
|
} = useRounded(props);
|
|
13180
|
-
|
|
13325
|
+
useRender(() => vue.createVNode(props.tag, {
|
|
13181
13326
|
"class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
|
|
13182
13327
|
"style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
|
|
13183
|
-
}, slots);
|
|
13328
|
+
}, slots));
|
|
13329
|
+
return {};
|
|
13184
13330
|
}
|
|
13185
13331
|
});
|
|
13186
13332
|
|
|
@@ -13257,6 +13403,13 @@
|
|
|
13257
13403
|
vue.onMounted(() => {
|
|
13258
13404
|
if (!props.modes.includes(mode.value)) mode.value = props.modes[0];
|
|
13259
13405
|
});
|
|
13406
|
+
provideDefaults({
|
|
13407
|
+
VSlider: {
|
|
13408
|
+
color: undefined,
|
|
13409
|
+
trackColor: undefined,
|
|
13410
|
+
trackFillColor: undefined
|
|
13411
|
+
}
|
|
13412
|
+
});
|
|
13260
13413
|
useRender(() => vue.createVNode(VSheet, {
|
|
13261
13414
|
"rounded": props.rounded,
|
|
13262
13415
|
"elevation": props.elevation,
|
|
@@ -13357,7 +13510,15 @@
|
|
|
13357
13510
|
const vTextFieldRef = vue.ref();
|
|
13358
13511
|
const isFocused = vue.ref(false);
|
|
13359
13512
|
const isPristine = vue.ref(true);
|
|
13360
|
-
const
|
|
13513
|
+
const vMenuRef = vue.ref();
|
|
13514
|
+
const _menu = useProxiedModel(props, 'menu');
|
|
13515
|
+
const menu = vue.computed({
|
|
13516
|
+
get: () => _menu.value,
|
|
13517
|
+
set: v => {
|
|
13518
|
+
if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return;
|
|
13519
|
+
_menu.value = v;
|
|
13520
|
+
}
|
|
13521
|
+
});
|
|
13361
13522
|
const selectionIndex = vue.ref(-1);
|
|
13362
13523
|
const color = vue.computed(() => vTextFieldRef.value?.color);
|
|
13363
13524
|
const {
|
|
@@ -13540,7 +13701,7 @@
|
|
|
13540
13701
|
useRender(() => {
|
|
13541
13702
|
const hasChips = !!(props.chips || slots.chip);
|
|
13542
13703
|
const hasList = !!(!props.hideNoData || displayItems.value.length || slots.prepend || slots.append || slots['no-data']);
|
|
13543
|
-
const [textFieldProps] =
|
|
13704
|
+
const [textFieldProps] = VTextField.filterProps(props);
|
|
13544
13705
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
13545
13706
|
"ref": vTextFieldRef
|
|
13546
13707
|
}, textFieldProps, {
|
|
@@ -13566,6 +13727,7 @@
|
|
|
13566
13727
|
}), {
|
|
13567
13728
|
...slots,
|
|
13568
13729
|
default: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(VMenu, vue.mergeProps({
|
|
13730
|
+
"ref": vMenuRef,
|
|
13569
13731
|
"modelValue": menu.value,
|
|
13570
13732
|
"onUpdate:modelValue": $event => menu.value = $event,
|
|
13571
13733
|
"activator": "parent",
|
|
@@ -13627,7 +13789,13 @@
|
|
|
13627
13789
|
"key": item.value,
|
|
13628
13790
|
"class": ['v-combobox__selection', index === selectionIndex.value && ['v-combobox__selection--selected', textColorClasses.value]],
|
|
13629
13791
|
"style": index === selectionIndex.value ? textColorStyles.value : {}
|
|
13630
|
-
}, [hasChips ? vue.createVNode(
|
|
13792
|
+
}, [hasChips ? !slots.chip ? vue.createVNode(VChip, vue.mergeProps({
|
|
13793
|
+
"key": "chip",
|
|
13794
|
+
"closable": props.closableChips,
|
|
13795
|
+
"size": "small",
|
|
13796
|
+
"text": item.title
|
|
13797
|
+
}, slotProps), null) : vue.createVNode(VDefaultsProvider, {
|
|
13798
|
+
"key": "chip-defaults",
|
|
13631
13799
|
"defaults": {
|
|
13632
13800
|
VChip: {
|
|
13633
13801
|
closable: props.closableChips,
|
|
@@ -13636,15 +13804,15 @@
|
|
|
13636
13804
|
}
|
|
13637
13805
|
}
|
|
13638
13806
|
}, {
|
|
13639
|
-
default: () => [slots.chip
|
|
13807
|
+
default: () => [slots.chip?.({
|
|
13640
13808
|
item,
|
|
13641
13809
|
index,
|
|
13642
13810
|
props: slotProps
|
|
13643
|
-
})
|
|
13644
|
-
}) : slots.selection
|
|
13811
|
+
})]
|
|
13812
|
+
}) : slots.selection?.({
|
|
13645
13813
|
item,
|
|
13646
13814
|
index
|
|
13647
|
-
})
|
|
13815
|
+
}) ?? vue.createVNode("span", {
|
|
13648
13816
|
"class": "v-combobox__selection-text"
|
|
13649
13817
|
}, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
13650
13818
|
"class": "v-combobox__selection-comma"
|
|
@@ -13741,7 +13909,7 @@
|
|
|
13741
13909
|
'aria-expanded': String(isActive.value)
|
|
13742
13910
|
}, props.activatorProps));
|
|
13743
13911
|
useRender(() => {
|
|
13744
|
-
const [overlayProps] =
|
|
13912
|
+
const [overlayProps] = VOverlay.filterProps(props);
|
|
13745
13913
|
return vue.createVNode(VOverlay, vue.mergeProps({
|
|
13746
13914
|
"ref": overlay,
|
|
13747
13915
|
"class": ['v-dialog', {
|
|
@@ -14145,6 +14313,7 @@
|
|
|
14145
14313
|
"id": id.value,
|
|
14146
14314
|
"active": isDirty.value || isFocused.value,
|
|
14147
14315
|
"dirty": isDirty.value,
|
|
14316
|
+
"disabled": isDisabled.value,
|
|
14148
14317
|
"focused": isFocused.value,
|
|
14149
14318
|
"error": isValid.value === false
|
|
14150
14319
|
}), {
|
|
@@ -14344,10 +14513,8 @@
|
|
|
14344
14513
|
|
|
14345
14514
|
// Types
|
|
14346
14515
|
|
|
14347
|
-
const breakpoints$1 = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
|
|
14348
|
-
|
|
14349
14516
|
const breakpointProps = (() => {
|
|
14350
|
-
return breakpoints
|
|
14517
|
+
return breakpoints.reduce((props, val) => {
|
|
14351
14518
|
props[val] = {
|
|
14352
14519
|
type: [Boolean, String, Number],
|
|
14353
14520
|
default: false
|
|
@@ -14356,8 +14523,9 @@
|
|
|
14356
14523
|
}, {});
|
|
14357
14524
|
})();
|
|
14358
14525
|
const offsetProps = (() => {
|
|
14359
|
-
return breakpoints
|
|
14360
|
-
|
|
14526
|
+
return breakpoints.reduce((props, val) => {
|
|
14527
|
+
const offsetKey = 'offset' + vue.capitalize(val);
|
|
14528
|
+
props[offsetKey] = {
|
|
14361
14529
|
type: [String, Number],
|
|
14362
14530
|
default: null
|
|
14363
14531
|
};
|
|
@@ -14365,8 +14533,9 @@
|
|
|
14365
14533
|
}, {});
|
|
14366
14534
|
})();
|
|
14367
14535
|
const orderProps = (() => {
|
|
14368
|
-
return breakpoints
|
|
14369
|
-
|
|
14536
|
+
return breakpoints.reduce((props, val) => {
|
|
14537
|
+
const orderKey = 'order' + vue.capitalize(val);
|
|
14538
|
+
props[orderKey] = {
|
|
14370
14539
|
type: [String, Number],
|
|
14371
14540
|
default: null
|
|
14372
14541
|
};
|
|
@@ -14464,13 +14633,12 @@
|
|
|
14464
14633
|
|
|
14465
14634
|
// Types
|
|
14466
14635
|
|
|
14467
|
-
const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
|
|
14468
|
-
|
|
14469
14636
|
const ALIGNMENT = ['start', 'end', 'center'];
|
|
14470
14637
|
const SPACE = ['space-between', 'space-around', 'space-evenly'];
|
|
14471
14638
|
function makeRowProps(prefix, def) {
|
|
14472
14639
|
return breakpoints.reduce((props, val) => {
|
|
14473
|
-
|
|
14640
|
+
const prefixKey = prefix + vue.capitalize(val);
|
|
14641
|
+
props[prefixKey] = def();
|
|
14474
14642
|
return props;
|
|
14475
14643
|
}, {});
|
|
14476
14644
|
}
|
|
@@ -14800,7 +14968,10 @@
|
|
|
14800
14968
|
}, {
|
|
14801
14969
|
default: () => [slots.default?.()]
|
|
14802
14970
|
})]
|
|
14803
|
-
}), [[vue.resolveDirective("intersect"),
|
|
14971
|
+
}), [[vue.resolveDirective("intersect"), {
|
|
14972
|
+
handler: onIntersect,
|
|
14973
|
+
options: props.options
|
|
14974
|
+
}, null]]));
|
|
14804
14975
|
return {};
|
|
14805
14976
|
}
|
|
14806
14977
|
});
|
|
@@ -15777,9 +15948,9 @@
|
|
|
15777
15948
|
frame = requestAnimationFrame(() => {
|
|
15778
15949
|
const el = (root.value?.$el).querySelector('.v-img__img');
|
|
15779
15950
|
if (!el) return;
|
|
15780
|
-
const scrollHeight = scrollParent
|
|
15781
|
-
const scrollPos = scrollParent
|
|
15782
|
-
const top = intersectionRef.value.
|
|
15951
|
+
const scrollHeight = scrollParent instanceof Document ? document.documentElement.clientHeight : scrollParent.clientHeight;
|
|
15952
|
+
const scrollPos = scrollParent instanceof Document ? window.scrollY : scrollParent.scrollTop;
|
|
15953
|
+
const top = intersectionRef.value.getBoundingClientRect().top + scrollPos;
|
|
15783
15954
|
const height = contentRect.value.height;
|
|
15784
15955
|
const center = top + (height - scrollHeight) / 2;
|
|
15785
15956
|
const translate = floor((scrollPos - center) * scale.value);
|
|
@@ -15861,10 +16032,7 @@
|
|
|
15861
16032
|
useRender(() => {
|
|
15862
16033
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
15863
16034
|
const [inputProps, _1] = filterInputProps(props);
|
|
15864
|
-
const [controlProps, _2] =
|
|
15865
|
-
...props,
|
|
15866
|
-
multiple: false
|
|
15867
|
-
});
|
|
16035
|
+
const [controlProps, _2] = VSelectionControl.filterProps(props);
|
|
15868
16036
|
const label = slots.label ? slots.label({
|
|
15869
16037
|
label: props.label,
|
|
15870
16038
|
props: {
|
|
@@ -15899,7 +16067,8 @@
|
|
|
15899
16067
|
"type": props.type,
|
|
15900
16068
|
"disabled": isDisabled.value,
|
|
15901
16069
|
"readonly": isReadonly.value,
|
|
15902
|
-
"aria-labelledby": label ? id.value : undefined
|
|
16070
|
+
"aria-labelledby": label ? id.value : undefined,
|
|
16071
|
+
"multiple": false
|
|
15903
16072
|
}, controlAttrs, {
|
|
15904
16073
|
"modelValue": model.value,
|
|
15905
16074
|
"onUpdate:modelValue": $event => model.value = $event
|
|
@@ -16164,9 +16333,6 @@
|
|
|
16164
16333
|
const range = vue.computed(() => createRange(Number(props.length), 1));
|
|
16165
16334
|
const increments = vue.computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
|
|
16166
16335
|
const hoverIndex = vue.ref(-1);
|
|
16167
|
-
const focusIndex = vue.ref(-1);
|
|
16168
|
-
const firstRef = vue.ref();
|
|
16169
|
-
let isClicking = false;
|
|
16170
16336
|
const itemState = vue.computed(() => increments.value.map(value => {
|
|
16171
16337
|
const isHovering = props.hover && hoverIndex.value > -1;
|
|
16172
16338
|
const isFilled = normalizedValue.value >= value;
|
|
@@ -16189,16 +16355,6 @@
|
|
|
16189
16355
|
function onMouseleave() {
|
|
16190
16356
|
hoverIndex.value = -1;
|
|
16191
16357
|
}
|
|
16192
|
-
function onFocus() {
|
|
16193
|
-
if (value === 0 && normalizedValue.value === 0) {
|
|
16194
|
-
firstRef.value?.focus();
|
|
16195
|
-
} else {
|
|
16196
|
-
focusIndex.value = value;
|
|
16197
|
-
}
|
|
16198
|
-
}
|
|
16199
|
-
function onBlur() {
|
|
16200
|
-
if (!isClicking) focusIndex.value = -1;
|
|
16201
|
-
}
|
|
16202
16358
|
function onClick() {
|
|
16203
16359
|
if (props.disabled || props.readonly) return;
|
|
16204
16360
|
rating.value = normalizedValue.value === value && props.clearable ? 0 : value;
|
|
@@ -16206,17 +16362,9 @@
|
|
|
16206
16362
|
return {
|
|
16207
16363
|
onMouseenter: props.hover ? onMouseenter : undefined,
|
|
16208
16364
|
onMouseleave: props.hover ? onMouseleave : undefined,
|
|
16209
|
-
onFocus,
|
|
16210
|
-
onBlur,
|
|
16211
16365
|
onClick
|
|
16212
16366
|
};
|
|
16213
16367
|
}));
|
|
16214
|
-
function onMousedown() {
|
|
16215
|
-
isClicking = true;
|
|
16216
|
-
}
|
|
16217
|
-
function onMouseup() {
|
|
16218
|
-
isClicking = false;
|
|
16219
|
-
}
|
|
16220
16368
|
const name = vue.computed(() => props.name ?? `v-rating-${getUid()}`);
|
|
16221
16369
|
function VRatingItem(_ref2) {
|
|
16222
16370
|
let {
|
|
@@ -16227,8 +16375,6 @@
|
|
|
16227
16375
|
const {
|
|
16228
16376
|
onMouseenter,
|
|
16229
16377
|
onMouseleave,
|
|
16230
|
-
onFocus,
|
|
16231
|
-
onBlur,
|
|
16232
16378
|
onClick
|
|
16233
16379
|
} = eventState.value[index + 1];
|
|
16234
16380
|
const id = `${name.value}-${String(value).replace('.', '-')}`;
|
|
@@ -16239,7 +16385,6 @@
|
|
|
16239
16385
|
icon: itemState.value[index]?.icon,
|
|
16240
16386
|
ripple: props.ripple,
|
|
16241
16387
|
size: props.size,
|
|
16242
|
-
tag: 'span',
|
|
16243
16388
|
variant: 'plain'
|
|
16244
16389
|
};
|
|
16245
16390
|
return vue.createVNode(vue.Fragment, null, [vue.createVNode("label", {
|
|
@@ -16248,17 +16393,17 @@
|
|
|
16248
16393
|
'v-rating__item--half': props.halfIncrements && value % 1 > 0,
|
|
16249
16394
|
'v-rating__item--full': props.halfIncrements && value % 1 === 0
|
|
16250
16395
|
},
|
|
16251
|
-
"onMousedown": onMousedown,
|
|
16252
|
-
"onMouseup": onMouseup,
|
|
16253
16396
|
"onMouseenter": onMouseenter,
|
|
16254
|
-
"onMouseleave": onMouseleave
|
|
16397
|
+
"onMouseleave": onMouseleave,
|
|
16398
|
+
"onClick": onClick
|
|
16255
16399
|
}, [vue.createVNode("span", {
|
|
16256
16400
|
"class": "v-rating__hidden"
|
|
16257
16401
|
}, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
|
|
16258
16402
|
...itemState.value[index],
|
|
16259
16403
|
props: btnProps,
|
|
16260
16404
|
value,
|
|
16261
|
-
index
|
|
16405
|
+
index,
|
|
16406
|
+
rating: normalizedValue.value
|
|
16262
16407
|
}) : vue.createVNode(VBtn, btnProps, null)]), vue.createVNode("input", {
|
|
16263
16408
|
"class": "v-rating__hidden",
|
|
16264
16409
|
"name": name.value,
|
|
@@ -16266,10 +16411,7 @@
|
|
|
16266
16411
|
"type": "radio",
|
|
16267
16412
|
"value": value,
|
|
16268
16413
|
"checked": normalizedValue.value === value,
|
|
16269
|
-
"
|
|
16270
|
-
"onFocus": onFocus,
|
|
16271
|
-
"onBlur": onBlur,
|
|
16272
|
-
"ref": index === 0 ? firstRef : undefined,
|
|
16414
|
+
"tabindex": -1,
|
|
16273
16415
|
"readonly": props.readonly,
|
|
16274
16416
|
"disabled": props.disabled
|
|
16275
16417
|
}, null)]);
|
|
@@ -16298,9 +16440,7 @@
|
|
|
16298
16440
|
index: i,
|
|
16299
16441
|
label: props.itemLabels?.[i]
|
|
16300
16442
|
}) : undefined, vue.createVNode("div", {
|
|
16301
|
-
"class":
|
|
16302
|
-
'v-rating__item--focused': Math.ceil(focusIndex.value) === value
|
|
16303
|
-
}]
|
|
16443
|
+
"class": "v-rating__item"
|
|
16304
16444
|
}, [props.halfIncrements ? vue.createVNode(vue.Fragment, null, [vue.createVNode(VRatingItem, {
|
|
16305
16445
|
"value": value - 0.5,
|
|
16306
16446
|
"index": i * 2
|
|
@@ -16769,7 +16909,7 @@
|
|
|
16769
16909
|
window.clearTimeout(activeTimeout);
|
|
16770
16910
|
}
|
|
16771
16911
|
useRender(() => {
|
|
16772
|
-
const [overlayProps] =
|
|
16912
|
+
const [overlayProps] = VOverlay.filterProps(props);
|
|
16773
16913
|
return vue.createVNode(VOverlay, vue.mergeProps({
|
|
16774
16914
|
"ref": overlay,
|
|
16775
16915
|
"class": ['v-snackbar', {
|
|
@@ -16781,19 +16921,18 @@
|
|
|
16781
16921
|
"modelValue": isActive.value,
|
|
16782
16922
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
|
16783
16923
|
"contentProps": vue.mergeProps({
|
|
16784
|
-
|
|
16924
|
+
class: ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
|
|
16925
|
+
style: [locationStyles.value, colorStyles.value],
|
|
16926
|
+
onPointerenter,
|
|
16927
|
+
onPointerleave: startTimeout
|
|
16785
16928
|
}, overlayProps.contentProps),
|
|
16786
16929
|
"persistent": true,
|
|
16787
16930
|
"noClickAnimation": true,
|
|
16788
16931
|
"scrim": false,
|
|
16789
|
-
"scrollStrategy": "none"
|
|
16932
|
+
"scrollStrategy": "none",
|
|
16933
|
+
"_disableGlobalStack": true
|
|
16790
16934
|
}, scopeId), {
|
|
16791
|
-
default: () => [vue.createVNode("div", {
|
|
16792
|
-
"class": ['v-snackbar__wrapper', themeClasses.value, colorClasses.value, roundedClasses.value, variantClasses.value],
|
|
16793
|
-
"style": [colorStyles.value],
|
|
16794
|
-
"onPointerenter": onPointerenter,
|
|
16795
|
-
"onPointerleave": startTimeout
|
|
16796
|
-
}, [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
|
|
16935
|
+
default: () => [genOverlays(false, 'v-snackbar'), slots.default && vue.createVNode("div", {
|
|
16797
16936
|
"class": "v-snackbar__content",
|
|
16798
16937
|
"role": "status",
|
|
16799
16938
|
"aria-live": "polite"
|
|
@@ -16808,7 +16947,7 @@
|
|
|
16808
16947
|
default: () => [vue.createVNode("div", {
|
|
16809
16948
|
"class": "v-snackbar__actions"
|
|
16810
16949
|
}, [slots.actions()])]
|
|
16811
|
-
})]
|
|
16950
|
+
})],
|
|
16812
16951
|
activator: slots.activator
|
|
16813
16952
|
});
|
|
16814
16953
|
});
|
|
@@ -16865,7 +17004,7 @@
|
|
|
16865
17004
|
useRender(() => {
|
|
16866
17005
|
const [inputAttrs, controlAttrs] = filterInputAttrs(attrs);
|
|
16867
17006
|
const [inputProps, _1] = filterInputProps(props);
|
|
16868
|
-
const [controlProps, _2] =
|
|
17007
|
+
const [controlProps, _2] = VSelectionControl.filterProps(props);
|
|
16869
17008
|
const control = vue.ref();
|
|
16870
17009
|
function onClick() {
|
|
16871
17010
|
control.value?.input?.click();
|
|
@@ -16967,6 +17106,9 @@
|
|
|
16967
17106
|
const {
|
|
16968
17107
|
roundedClasses
|
|
16969
17108
|
} = useRounded(props);
|
|
17109
|
+
const {
|
|
17110
|
+
ssrBootStyles
|
|
17111
|
+
} = useSsrBoot();
|
|
16970
17112
|
const height = vue.computed(() => props.height ?? (props.window ? 32 : 24));
|
|
16971
17113
|
const {
|
|
16972
17114
|
layoutItemStyles
|
|
@@ -16983,7 +17125,7 @@
|
|
|
16983
17125
|
"class": ['v-system-bar', {
|
|
16984
17126
|
'v-system-bar--window': props.window
|
|
16985
17127
|
}, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
|
|
16986
|
-
"style": [backgroundColorStyles.value, layoutItemStyles.value]
|
|
17128
|
+
"style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
|
|
16987
17129
|
}, slots));
|
|
16988
17130
|
return {};
|
|
16989
17131
|
}
|
|
@@ -16995,28 +17137,17 @@
|
|
|
16995
17137
|
name: 'VTab',
|
|
16996
17138
|
props: {
|
|
16997
17139
|
fixed: Boolean,
|
|
16998
|
-
icon: [Boolean, String, Function, Object],
|
|
16999
|
-
prependIcon: IconValue,
|
|
17000
|
-
appendIcon: IconValue,
|
|
17001
|
-
stacked: Boolean,
|
|
17002
17140
|
title: String,
|
|
17003
|
-
ripple: {
|
|
17004
|
-
type: Boolean,
|
|
17005
|
-
default: true
|
|
17006
|
-
},
|
|
17007
|
-
color: String,
|
|
17008
17141
|
sliderColor: String,
|
|
17009
17142
|
hideSlider: Boolean,
|
|
17010
17143
|
direction: {
|
|
17011
17144
|
type: String,
|
|
17012
17145
|
default: 'horizontal'
|
|
17013
17146
|
},
|
|
17014
|
-
...
|
|
17015
|
-
|
|
17016
|
-
|
|
17017
|
-
|
|
17018
|
-
}),
|
|
17019
|
-
...makeThemeProps()
|
|
17147
|
+
...omit(makeVBtnProps({
|
|
17148
|
+
selectedClass: 'v-tab--selected',
|
|
17149
|
+
variant: 'text'
|
|
17150
|
+
}), ['active', 'block', 'flat', 'location', 'position', 'symbol'])
|
|
17020
17151
|
},
|
|
17021
17152
|
setup(props, _ref) {
|
|
17022
17153
|
let {
|
|
@@ -17066,7 +17197,7 @@
|
|
|
17066
17197
|
}
|
|
17067
17198
|
}
|
|
17068
17199
|
useRender(() => {
|
|
17069
|
-
const [btnProps] =
|
|
17200
|
+
const [btnProps] = VBtn.filterProps(props);
|
|
17070
17201
|
return vue.createVNode(VBtn, vue.mergeProps({
|
|
17071
17202
|
"_as": "VTab",
|
|
17072
17203
|
"symbol": VTabsSymbol,
|
|
@@ -17078,7 +17209,6 @@
|
|
|
17078
17209
|
"active": false,
|
|
17079
17210
|
"block": props.fixed,
|
|
17080
17211
|
"maxWidth": props.fixed ? 300 : undefined,
|
|
17081
|
-
"variant": "text",
|
|
17082
17212
|
"rounded": 0
|
|
17083
17213
|
}, btnProps, attrs, {
|
|
17084
17214
|
"onGroup:selected": updateSlider
|
|
@@ -17323,7 +17453,13 @@
|
|
|
17323
17453
|
});
|
|
17324
17454
|
}
|
|
17325
17455
|
function onInput(e) {
|
|
17326
|
-
|
|
17456
|
+
const el = e.target;
|
|
17457
|
+
const caretPosition = [el.selectionStart, el.selectionEnd];
|
|
17458
|
+
model.value = el.value;
|
|
17459
|
+
vue.nextTick(() => {
|
|
17460
|
+
el.selectionStart = caretPosition[0];
|
|
17461
|
+
el.selectionEnd = caretPosition[1];
|
|
17462
|
+
});
|
|
17327
17463
|
}
|
|
17328
17464
|
const sizerRef = vue.ref();
|
|
17329
17465
|
function calculateInputHeight() {
|
|
@@ -17407,6 +17543,7 @@
|
|
|
17407
17543
|
}, fieldProps, {
|
|
17408
17544
|
"active": isActive.value || isDirty.value,
|
|
17409
17545
|
"dirty": isDirty.value || props.dirty,
|
|
17546
|
+
"disabled": isDisabled.value,
|
|
17410
17547
|
"focused": isFocused.value,
|
|
17411
17548
|
"error": isValid.value === false
|
|
17412
17549
|
}), {
|
|
@@ -17609,13 +17746,6 @@
|
|
|
17609
17746
|
backgroundColorClasses: lineColorClasses,
|
|
17610
17747
|
backgroundColorStyles: lineColorStyles
|
|
17611
17748
|
} = useBackgroundColor(vue.toRef(props, 'lineColor'));
|
|
17612
|
-
provideDefaults({
|
|
17613
|
-
VIcon: {
|
|
17614
|
-
color: vue.toRef(props, 'iconColor'),
|
|
17615
|
-
icon: vue.toRef(props, 'icon'),
|
|
17616
|
-
size: vue.toRef(props, 'size')
|
|
17617
|
-
}
|
|
17618
|
-
});
|
|
17619
17749
|
useRender(() => vue.createVNode("div", {
|
|
17620
17750
|
"class": ['v-timeline-divider', {
|
|
17621
17751
|
'v-timeline-divider--fill-dot': props.fillDot
|
|
@@ -17630,7 +17760,22 @@
|
|
|
17630
17760
|
}, [vue.createVNode("div", {
|
|
17631
17761
|
"class": ['v-timeline-divider__inner-dot', backgroundColorClasses.value, roundedClasses.value],
|
|
17632
17762
|
"style": backgroundColorStyles.value
|
|
17633
|
-
}, [slots.default
|
|
17763
|
+
}, [!slots.default ? vue.createVNode(VIcon, {
|
|
17764
|
+
"key": "icon",
|
|
17765
|
+
"color": props.iconColor,
|
|
17766
|
+
"icon": props.icon,
|
|
17767
|
+
"size": props.size
|
|
17768
|
+
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
17769
|
+
"key": "icon-defaults",
|
|
17770
|
+
"disabled": !props.icon,
|
|
17771
|
+
"defaults": {
|
|
17772
|
+
VIcon: {
|
|
17773
|
+
color: props.iconColor,
|
|
17774
|
+
icon: props.icon,
|
|
17775
|
+
size: props.size
|
|
17776
|
+
}
|
|
17777
|
+
}
|
|
17778
|
+
}, slots.default)])]), vue.createVNode("div", {
|
|
17634
17779
|
"class": ['v-timeline-divider__after', lineColorClasses.value],
|
|
17635
17780
|
"style": lineColorStyles.value
|
|
17636
17781
|
}, null)]));
|
|
@@ -17716,6 +17861,7 @@
|
|
|
17716
17861
|
closeOnBack: false,
|
|
17717
17862
|
location: 'end',
|
|
17718
17863
|
locationStrategy: 'connected',
|
|
17864
|
+
eager: true,
|
|
17719
17865
|
minWidth: 0,
|
|
17720
17866
|
offset: 10,
|
|
17721
17867
|
openOnClick: false,
|
|
@@ -17724,7 +17870,7 @@
|
|
|
17724
17870
|
scrim: false,
|
|
17725
17871
|
scrollStrategy: 'reposition',
|
|
17726
17872
|
transition: false
|
|
17727
|
-
}), ['absolute', 'persistent'
|
|
17873
|
+
}), ['absolute', 'persistent'])
|
|
17728
17874
|
},
|
|
17729
17875
|
emits: {
|
|
17730
17876
|
'update:modelValue': value => true
|
|
@@ -17754,7 +17900,7 @@
|
|
|
17754
17900
|
'aria-describedby': id.value
|
|
17755
17901
|
}, props.activatorProps));
|
|
17756
17902
|
useRender(() => {
|
|
17757
|
-
const [overlayProps] =
|
|
17903
|
+
const [overlayProps] = VOverlay.filterProps(props);
|
|
17758
17904
|
return vue.createVNode(VOverlay, vue.mergeProps({
|
|
17759
17905
|
"ref": overlay,
|
|
17760
17906
|
"class": ['v-tooltip'],
|
|
@@ -17768,7 +17914,6 @@
|
|
|
17768
17914
|
"origin": origin.value,
|
|
17769
17915
|
"persistent": true,
|
|
17770
17916
|
"role": "tooltip",
|
|
17771
|
-
"eager": true,
|
|
17772
17917
|
"activatorProps": activatorProps.value,
|
|
17773
17918
|
"_disableGlobalStack": true
|
|
17774
17919
|
}, scopeId), {
|
|
@@ -18001,7 +18146,7 @@
|
|
|
18001
18146
|
}
|
|
18002
18147
|
}, 'v-data-table-select');
|
|
18003
18148
|
const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
|
|
18004
|
-
function
|
|
18149
|
+
function provideSelection(props, allItems) {
|
|
18005
18150
|
const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
|
|
18006
18151
|
return new Set(v);
|
|
18007
18152
|
}, v => {
|
|
@@ -18061,13 +18206,28 @@
|
|
|
18061
18206
|
const VDataTableSortSymbol = Symbol.for('vuetify:data-table-sort');
|
|
18062
18207
|
function createSort(props) {
|
|
18063
18208
|
const sortBy = useProxiedModel(props, 'sortBy');
|
|
18209
|
+
const mustSort = vue.toRef(props, 'mustSort');
|
|
18210
|
+
const multiSort = vue.toRef(props, 'multiSort');
|
|
18211
|
+
return {
|
|
18212
|
+
sortBy,
|
|
18213
|
+
mustSort,
|
|
18214
|
+
multiSort
|
|
18215
|
+
};
|
|
18216
|
+
}
|
|
18217
|
+
function provideSort(options) {
|
|
18218
|
+
const {
|
|
18219
|
+
sortBy,
|
|
18220
|
+
mustSort,
|
|
18221
|
+
multiSort,
|
|
18222
|
+
page
|
|
18223
|
+
} = options;
|
|
18064
18224
|
const toggleSort = key => {
|
|
18065
18225
|
let newSortBy = sortBy.value.map(x => ({
|
|
18066
18226
|
...x
|
|
18067
18227
|
})) ?? [];
|
|
18068
18228
|
const item = newSortBy.find(x => x.key === key);
|
|
18069
18229
|
if (!item) {
|
|
18070
|
-
if (
|
|
18230
|
+
if (multiSort.value) newSortBy = [...newSortBy, {
|
|
18071
18231
|
key,
|
|
18072
18232
|
order: 'asc'
|
|
18073
18233
|
}];else newSortBy = [{
|
|
@@ -18075,7 +18235,7 @@
|
|
|
18075
18235
|
order: 'asc'
|
|
18076
18236
|
}];
|
|
18077
18237
|
} else if (item.order === 'desc') {
|
|
18078
|
-
if (
|
|
18238
|
+
if (mustSort.value) {
|
|
18079
18239
|
item.order = 'asc';
|
|
18080
18240
|
} else {
|
|
18081
18241
|
newSortBy = newSortBy.filter(x => x.key !== key);
|
|
@@ -18084,6 +18244,7 @@
|
|
|
18084
18244
|
item.order = 'desc';
|
|
18085
18245
|
}
|
|
18086
18246
|
sortBy.value = newSortBy;
|
|
18247
|
+
if (page) page.value = 1;
|
|
18087
18248
|
};
|
|
18088
18249
|
const data = {
|
|
18089
18250
|
sortBy,
|
|
@@ -18286,9 +18447,6 @@
|
|
|
18286
18447
|
});
|
|
18287
18448
|
|
|
18288
18449
|
// Utilities
|
|
18289
|
-
|
|
18290
|
-
// Types
|
|
18291
|
-
|
|
18292
18450
|
const makeDataTableGroupProps = propsFactory({
|
|
18293
18451
|
groupBy: {
|
|
18294
18452
|
type: Array,
|
|
@@ -18296,7 +18454,17 @@
|
|
|
18296
18454
|
}
|
|
18297
18455
|
}, 'data-table-group');
|
|
18298
18456
|
const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
|
|
18299
|
-
function createGroupBy(props
|
|
18457
|
+
function createGroupBy(props) {
|
|
18458
|
+
const groupBy = useProxiedModel(props, 'groupBy');
|
|
18459
|
+
return {
|
|
18460
|
+
groupBy
|
|
18461
|
+
};
|
|
18462
|
+
}
|
|
18463
|
+
function provideGroupBy(options) {
|
|
18464
|
+
const {
|
|
18465
|
+
groupBy,
|
|
18466
|
+
sortBy
|
|
18467
|
+
} = options;
|
|
18300
18468
|
const opened = vue.ref(new Set());
|
|
18301
18469
|
const sortByWithGroups = vue.computed(() => {
|
|
18302
18470
|
return groupBy.value.map(val => ({
|
|
@@ -18506,7 +18674,7 @@
|
|
|
18506
18674
|
}
|
|
18507
18675
|
}, 'v-data-table-expand');
|
|
18508
18676
|
const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
|
|
18509
|
-
function
|
|
18677
|
+
function provideExpanded(props) {
|
|
18510
18678
|
const expandOnClick = vue.toRef(props, 'expandOnClick');
|
|
18511
18679
|
const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
|
|
18512
18680
|
return new Set(v);
|
|
@@ -18549,7 +18717,9 @@
|
|
|
18549
18717
|
const VDataTableRow = defineComponent({
|
|
18550
18718
|
name: 'VDataTableRow',
|
|
18551
18719
|
props: {
|
|
18552
|
-
|
|
18720
|
+
index: Number,
|
|
18721
|
+
item: Object,
|
|
18722
|
+
onClick: Function
|
|
18553
18723
|
},
|
|
18554
18724
|
setup(props, _ref) {
|
|
18555
18725
|
let {
|
|
@@ -18567,7 +18737,10 @@
|
|
|
18567
18737
|
columns
|
|
18568
18738
|
} = useHeaders();
|
|
18569
18739
|
useRender(() => vue.createVNode("tr", {
|
|
18570
|
-
"class": ['v-data-table__tr'
|
|
18740
|
+
"class": ['v-data-table__tr', {
|
|
18741
|
+
'v-data-table__tr--clickable': !!props.onClick
|
|
18742
|
+
}],
|
|
18743
|
+
"onClick": props.onClick
|
|
18571
18744
|
}, [!columns.value.length && vue.createVNode(VDataTableColumn, {
|
|
18572
18745
|
"key": "no-data"
|
|
18573
18746
|
}, slots), props.item && columns.value.map((column, i) => vue.createVNode(VDataTableColumn, {
|
|
@@ -18582,6 +18755,7 @@
|
|
|
18582
18755
|
const item = props.item;
|
|
18583
18756
|
const slotName = `item.${column.key}`;
|
|
18584
18757
|
const slotProps = {
|
|
18758
|
+
index: props.index,
|
|
18585
18759
|
item: props.item,
|
|
18586
18760
|
columns: columns.value,
|
|
18587
18761
|
isSelected,
|
|
@@ -18685,7 +18859,7 @@
|
|
|
18685
18859
|
"item": item
|
|
18686
18860
|
}, slots);
|
|
18687
18861
|
}
|
|
18688
|
-
|
|
18862
|
+
const slotProps = {
|
|
18689
18863
|
index,
|
|
18690
18864
|
item,
|
|
18691
18865
|
columns: columns.value,
|
|
@@ -18693,21 +18867,20 @@
|
|
|
18693
18867
|
toggleExpand,
|
|
18694
18868
|
isSelected,
|
|
18695
18869
|
toggleSelect
|
|
18696
|
-
}
|
|
18870
|
+
};
|
|
18871
|
+
return vue.createVNode(vue.Fragment, null, [slots.item ? slots.item(slotProps) : vue.createVNode(VDataTableRow, {
|
|
18697
18872
|
"key": `item_${item.value}`,
|
|
18698
18873
|
"onClick": event => {
|
|
18699
18874
|
if (expandOnClick.value) {
|
|
18700
|
-
toggleExpand(item
|
|
18875
|
+
toggleExpand(item);
|
|
18701
18876
|
}
|
|
18702
18877
|
emit('click:row', event, {
|
|
18703
18878
|
item
|
|
18704
18879
|
});
|
|
18705
18880
|
},
|
|
18881
|
+
"index": index,
|
|
18706
18882
|
"item": item
|
|
18707
|
-
}, slots), isExpanded(item) && slots['expanded-row']?.(
|
|
18708
|
-
item,
|
|
18709
|
-
columns: columns.value
|
|
18710
|
-
})]);
|
|
18883
|
+
}, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
|
|
18711
18884
|
})]));
|
|
18712
18885
|
return {};
|
|
18713
18886
|
}
|
|
@@ -18728,10 +18901,20 @@
|
|
|
18728
18901
|
}
|
|
18729
18902
|
}, 'v-data-table-paginate');
|
|
18730
18903
|
const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
|
|
18731
|
-
function createPagination(props
|
|
18904
|
+
function createPagination(props) {
|
|
18732
18905
|
const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
|
|
18733
18906
|
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
|
|
18734
|
-
|
|
18907
|
+
return {
|
|
18908
|
+
page,
|
|
18909
|
+
itemsPerPage
|
|
18910
|
+
};
|
|
18911
|
+
}
|
|
18912
|
+
function providePagination(options) {
|
|
18913
|
+
const {
|
|
18914
|
+
page,
|
|
18915
|
+
itemsPerPage,
|
|
18916
|
+
itemsLength
|
|
18917
|
+
} = options;
|
|
18735
18918
|
const startIndex = vue.computed(() => {
|
|
18736
18919
|
if (itemsPerPage.value === -1) return 0;
|
|
18737
18920
|
return itemsPerPage.value * (page.value - 1);
|
|
@@ -18744,13 +18927,18 @@
|
|
|
18744
18927
|
if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
|
|
18745
18928
|
return Math.ceil(itemsLength.value / itemsPerPage.value);
|
|
18746
18929
|
});
|
|
18930
|
+
function setItemsPerPage(value) {
|
|
18931
|
+
itemsPerPage.value = value;
|
|
18932
|
+
page.value = 1;
|
|
18933
|
+
}
|
|
18747
18934
|
const data = {
|
|
18748
18935
|
page,
|
|
18749
18936
|
itemsPerPage,
|
|
18937
|
+
itemsLength,
|
|
18750
18938
|
startIndex,
|
|
18751
18939
|
stopIndex,
|
|
18752
18940
|
pageCount,
|
|
18753
|
-
|
|
18941
|
+
setItemsPerPage
|
|
18754
18942
|
};
|
|
18755
18943
|
vue.provide(VDataTablePaginationSymbol, data);
|
|
18756
18944
|
return data;
|
|
@@ -18760,7 +18948,13 @@
|
|
|
18760
18948
|
if (!data) throw new Error('Missing pagination!');
|
|
18761
18949
|
return data;
|
|
18762
18950
|
}
|
|
18763
|
-
function usePaginatedItems(
|
|
18951
|
+
function usePaginatedItems(options) {
|
|
18952
|
+
const {
|
|
18953
|
+
items,
|
|
18954
|
+
startIndex,
|
|
18955
|
+
stopIndex,
|
|
18956
|
+
itemsPerPage
|
|
18957
|
+
} = options;
|
|
18764
18958
|
const paginatedItems = vue.computed(() => {
|
|
18765
18959
|
if (itemsPerPage.value <= 0) return items.value;
|
|
18766
18960
|
return items.value.slice(startIndex.value, stopIndex.value);
|
|
@@ -18849,7 +19043,8 @@
|
|
|
18849
19043
|
startIndex,
|
|
18850
19044
|
stopIndex,
|
|
18851
19045
|
itemsLength,
|
|
18852
|
-
itemsPerPage
|
|
19046
|
+
itemsPerPage,
|
|
19047
|
+
setItemsPerPage
|
|
18853
19048
|
} = usePagination();
|
|
18854
19049
|
const itemsPerPageOptions = vue.computed(() => props.itemsPerPageOptions.map(option => ({
|
|
18855
19050
|
...option,
|
|
@@ -18862,7 +19057,7 @@
|
|
|
18862
19057
|
}, [vue.createVNode("span", null, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
|
|
18863
19058
|
"items": itemsPerPageOptions.value,
|
|
18864
19059
|
"modelValue": itemsPerPage.value,
|
|
18865
|
-
"onUpdate:modelValue": v =>
|
|
19060
|
+
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
|
18866
19061
|
"density": "compact",
|
|
18867
19062
|
"variant": "outlined",
|
|
18868
19063
|
"hide-details": true
|
|
@@ -18940,7 +19135,8 @@
|
|
|
18940
19135
|
page,
|
|
18941
19136
|
itemsPerPage,
|
|
18942
19137
|
sortBy,
|
|
18943
|
-
groupBy
|
|
19138
|
+
groupBy,
|
|
19139
|
+
search
|
|
18944
19140
|
} = _ref;
|
|
18945
19141
|
const vm = getCurrentInstance('VDataTable');
|
|
18946
19142
|
const options = vue.computed(() => ({
|
|
@@ -18950,15 +19146,8 @@
|
|
|
18950
19146
|
groupBy: groupBy.value
|
|
18951
19147
|
}));
|
|
18952
19148
|
|
|
18953
|
-
// Reset page when
|
|
18954
|
-
vue.watch(
|
|
18955
|
-
page.value = 1;
|
|
18956
|
-
}, {
|
|
18957
|
-
deep: true
|
|
18958
|
-
});
|
|
18959
|
-
|
|
18960
|
-
// Reset page when items-per-page changes
|
|
18961
|
-
vue.watch(itemsPerPage, () => {
|
|
19149
|
+
// Reset page when searching
|
|
19150
|
+
vue.watch(() => search?.value, () => {
|
|
18962
19151
|
page.value = 1;
|
|
18963
19152
|
});
|
|
18964
19153
|
let oldOptions = null;
|
|
@@ -19014,7 +19203,18 @@
|
|
|
19014
19203
|
emit,
|
|
19015
19204
|
slots
|
|
19016
19205
|
} = _ref;
|
|
19017
|
-
const
|
|
19206
|
+
const {
|
|
19207
|
+
groupBy
|
|
19208
|
+
} = createGroupBy(props);
|
|
19209
|
+
const {
|
|
19210
|
+
sortBy,
|
|
19211
|
+
multiSort,
|
|
19212
|
+
mustSort
|
|
19213
|
+
} = createSort(props);
|
|
19214
|
+
const {
|
|
19215
|
+
page,
|
|
19216
|
+
itemsPerPage
|
|
19217
|
+
} = createPagination(props);
|
|
19018
19218
|
const {
|
|
19019
19219
|
columns
|
|
19020
19220
|
} = createHeaders(props, {
|
|
@@ -19026,42 +19226,58 @@
|
|
|
19026
19226
|
items
|
|
19027
19227
|
} = useDataTableItems(props, columns);
|
|
19028
19228
|
const filterKeys = vue.computed(() => columns.value.map(c => 'columns.' + c.key));
|
|
19229
|
+
const search = vue.toRef(props, 'search');
|
|
19029
19230
|
const {
|
|
19030
19231
|
filteredItems
|
|
19031
|
-
} = useFilter(props, items,
|
|
19232
|
+
} = useFilter(props, items, search, {
|
|
19032
19233
|
filterKeys
|
|
19033
19234
|
});
|
|
19034
|
-
|
|
19035
|
-
sortBy
|
|
19036
|
-
|
|
19235
|
+
provideSort({
|
|
19236
|
+
sortBy,
|
|
19237
|
+
multiSort,
|
|
19238
|
+
mustSort,
|
|
19239
|
+
page
|
|
19240
|
+
});
|
|
19037
19241
|
const {
|
|
19038
19242
|
sortByWithGroups,
|
|
19039
19243
|
opened,
|
|
19040
19244
|
extractRows
|
|
19041
|
-
} =
|
|
19245
|
+
} = provideGroupBy({
|
|
19246
|
+
groupBy,
|
|
19247
|
+
sortBy
|
|
19248
|
+
});
|
|
19042
19249
|
const {
|
|
19043
19250
|
sortedItems
|
|
19044
19251
|
} = useSortedItems(filteredItems, sortByWithGroups, columns);
|
|
19045
19252
|
const {
|
|
19046
19253
|
flatItems
|
|
19047
19254
|
} = useGroupedItems(sortedItems, groupBy, opened);
|
|
19255
|
+
const itemsLength = vue.computed(() => flatItems.value.length);
|
|
19048
19256
|
const {
|
|
19049
|
-
page,
|
|
19050
|
-
itemsPerPage,
|
|
19051
19257
|
startIndex,
|
|
19052
19258
|
stopIndex
|
|
19053
|
-
} =
|
|
19259
|
+
} = providePagination({
|
|
19260
|
+
page,
|
|
19261
|
+
itemsPerPage,
|
|
19262
|
+
itemsLength
|
|
19263
|
+
});
|
|
19054
19264
|
const {
|
|
19055
19265
|
paginatedItems
|
|
19056
|
-
} = usePaginatedItems(
|
|
19266
|
+
} = usePaginatedItems({
|
|
19267
|
+
items: flatItems,
|
|
19268
|
+
startIndex,
|
|
19269
|
+
stopIndex,
|
|
19270
|
+
itemsPerPage
|
|
19271
|
+
});
|
|
19057
19272
|
const paginatedItemsWithoutGroups = vue.computed(() => extractRows(paginatedItems.value));
|
|
19058
|
-
|
|
19059
|
-
|
|
19273
|
+
provideSelection(props, paginatedItemsWithoutGroups);
|
|
19274
|
+
provideExpanded(props);
|
|
19060
19275
|
useOptions({
|
|
19061
19276
|
page,
|
|
19062
19277
|
itemsPerPage,
|
|
19063
19278
|
sortBy,
|
|
19064
|
-
groupBy
|
|
19279
|
+
groupBy,
|
|
19280
|
+
search
|
|
19065
19281
|
});
|
|
19066
19282
|
provideDefaults({
|
|
19067
19283
|
VDataTableRows: {
|
|
@@ -19203,7 +19419,14 @@
|
|
|
19203
19419
|
emit,
|
|
19204
19420
|
slots
|
|
19205
19421
|
} = _ref;
|
|
19206
|
-
const
|
|
19422
|
+
const {
|
|
19423
|
+
groupBy
|
|
19424
|
+
} = createGroupBy(props);
|
|
19425
|
+
const {
|
|
19426
|
+
sortBy,
|
|
19427
|
+
multiSort,
|
|
19428
|
+
mustSort
|
|
19429
|
+
} = createSort(props);
|
|
19207
19430
|
const {
|
|
19208
19431
|
columns
|
|
19209
19432
|
} = createHeaders(props, {
|
|
@@ -19215,19 +19438,25 @@
|
|
|
19215
19438
|
items
|
|
19216
19439
|
} = useDataTableItems(props, columns);
|
|
19217
19440
|
const filterKeys = vue.computed(() => columns.value.map(c => 'columns.' + c.key));
|
|
19441
|
+
const search = vue.toRef(props, 'search');
|
|
19218
19442
|
const {
|
|
19219
19443
|
filteredItems
|
|
19220
|
-
} = useFilter(props, items,
|
|
19444
|
+
} = useFilter(props, items, search, {
|
|
19221
19445
|
filterKeys
|
|
19222
19446
|
});
|
|
19223
|
-
|
|
19224
|
-
sortBy
|
|
19225
|
-
|
|
19447
|
+
provideSort({
|
|
19448
|
+
sortBy,
|
|
19449
|
+
multiSort,
|
|
19450
|
+
mustSort
|
|
19451
|
+
});
|
|
19226
19452
|
const {
|
|
19227
19453
|
sortByWithGroups,
|
|
19228
19454
|
opened,
|
|
19229
19455
|
extractRows
|
|
19230
|
-
} =
|
|
19456
|
+
} = provideGroupBy({
|
|
19457
|
+
groupBy,
|
|
19458
|
+
sortBy
|
|
19459
|
+
});
|
|
19231
19460
|
const {
|
|
19232
19461
|
sortedItems
|
|
19233
19462
|
} = useSortedItems(filteredItems, sortByWithGroups, columns);
|
|
@@ -19235,8 +19464,8 @@
|
|
|
19235
19464
|
flatItems
|
|
19236
19465
|
} = useGroupedItems(sortedItems, groupBy, opened);
|
|
19237
19466
|
const allRows = vue.computed(() => extractRows(flatItems.value));
|
|
19238
|
-
|
|
19239
|
-
|
|
19467
|
+
provideSelection(props, allRows);
|
|
19468
|
+
provideExpanded(props);
|
|
19240
19469
|
const {
|
|
19241
19470
|
containerRef,
|
|
19242
19471
|
paddingTop,
|
|
@@ -19253,7 +19482,8 @@
|
|
|
19253
19482
|
sortBy,
|
|
19254
19483
|
page: vue.ref(1),
|
|
19255
19484
|
itemsPerPage: vue.ref(-1),
|
|
19256
|
-
groupBy
|
|
19485
|
+
groupBy,
|
|
19486
|
+
search
|
|
19257
19487
|
});
|
|
19258
19488
|
provideDefaults({
|
|
19259
19489
|
VDataTableRows: {
|
|
@@ -19322,7 +19552,10 @@
|
|
|
19322
19552
|
type: String,
|
|
19323
19553
|
default: '$vuetify.dataIterator.loadingText'
|
|
19324
19554
|
},
|
|
19325
|
-
itemsLength:
|
|
19555
|
+
itemsLength: {
|
|
19556
|
+
type: [Number, String],
|
|
19557
|
+
required: true
|
|
19558
|
+
},
|
|
19326
19559
|
...makeVDataTableProps(),
|
|
19327
19560
|
...makeDataTableExpandProps(),
|
|
19328
19561
|
...makeDataTableHeaderProps(),
|
|
@@ -19347,8 +19580,20 @@
|
|
|
19347
19580
|
emit,
|
|
19348
19581
|
slots
|
|
19349
19582
|
} = _ref;
|
|
19350
|
-
const
|
|
19351
|
-
|
|
19583
|
+
const {
|
|
19584
|
+
groupBy
|
|
19585
|
+
} = createGroupBy(props);
|
|
19586
|
+
const {
|
|
19587
|
+
sortBy,
|
|
19588
|
+
multiSort,
|
|
19589
|
+
mustSort
|
|
19590
|
+
} = createSort(props);
|
|
19591
|
+
const {
|
|
19592
|
+
page,
|
|
19593
|
+
itemsPerPage
|
|
19594
|
+
} = createPagination(props);
|
|
19595
|
+
const itemsLength = vue.computed(() => parseInt(props.itemsLength, 10));
|
|
19596
|
+
provideExpanded(props);
|
|
19352
19597
|
const {
|
|
19353
19598
|
columns
|
|
19354
19599
|
} = createHeaders(props, {
|
|
@@ -19360,20 +19605,28 @@
|
|
|
19360
19605
|
items
|
|
19361
19606
|
} = useDataTableItems(props, columns);
|
|
19362
19607
|
const {
|
|
19363
|
-
sortBy,
|
|
19364
19608
|
toggleSort
|
|
19365
|
-
} =
|
|
19609
|
+
} = provideSort({
|
|
19610
|
+
sortBy,
|
|
19611
|
+
multiSort,
|
|
19612
|
+
mustSort,
|
|
19613
|
+
page
|
|
19614
|
+
});
|
|
19366
19615
|
const {
|
|
19367
19616
|
opened
|
|
19368
|
-
} =
|
|
19369
|
-
|
|
19617
|
+
} = provideGroupBy({
|
|
19618
|
+
groupBy,
|
|
19619
|
+
sortBy
|
|
19620
|
+
});
|
|
19621
|
+
providePagination({
|
|
19370
19622
|
page,
|
|
19371
|
-
itemsPerPage
|
|
19372
|
-
|
|
19623
|
+
itemsPerPage,
|
|
19624
|
+
itemsLength
|
|
19625
|
+
});
|
|
19373
19626
|
const {
|
|
19374
19627
|
flatItems
|
|
19375
19628
|
} = useGroupedItems(items, groupBy, opened);
|
|
19376
|
-
|
|
19629
|
+
provideSelection(props, items);
|
|
19377
19630
|
useOptions({
|
|
19378
19631
|
page,
|
|
19379
19632
|
itemsPerPage,
|
|
@@ -19408,7 +19661,7 @@
|
|
|
19408
19661
|
"sticky": props.fixedHeader,
|
|
19409
19662
|
"loading": props.loading,
|
|
19410
19663
|
"color": props.color
|
|
19411
|
-
},
|
|
19664
|
+
}, slots)]), slots.thead?.(), vue.createVNode("tbody", {
|
|
19412
19665
|
"class": "v-data-table__tbody",
|
|
19413
19666
|
"role": "rowgroup"
|
|
19414
19667
|
}, [slots.body ? slots.body() : vue.createVNode(VDataTableRows, {
|
|
@@ -19493,13 +19746,15 @@
|
|
|
19493
19746
|
resizeRef.value = rootEl.value;
|
|
19494
19747
|
});
|
|
19495
19748
|
const display = useDisplay();
|
|
19496
|
-
const
|
|
19749
|
+
const sizeMap = new Map();
|
|
19750
|
+
let sizes = createRange(props.items.length).map(() => itemHeight.value);
|
|
19497
19751
|
const visibleItems = vue.computed(() => {
|
|
19498
19752
|
return props.visibleItems ? parseInt(props.visibleItems, 10) : Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
|
|
19499
19753
|
});
|
|
19500
19754
|
function handleItemResize(index, height) {
|
|
19501
19755
|
itemHeight.value = Math.max(itemHeight.value, height);
|
|
19502
19756
|
sizes[index] = height;
|
|
19757
|
+
sizeMap.set(props.items[index], height);
|
|
19503
19758
|
}
|
|
19504
19759
|
function calculateOffset(index) {
|
|
19505
19760
|
return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
|
|
@@ -19529,9 +19784,9 @@
|
|
|
19529
19784
|
const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
|
|
19530
19785
|
const buffer = Math.round(visibleItems.value / 3);
|
|
19531
19786
|
if (direction === UP && midPointIndex <= first.value + buffer * 2 - 1) {
|
|
19532
|
-
first.value =
|
|
19787
|
+
first.value = clamp(midPointIndex - buffer, 0, props.items.length);
|
|
19533
19788
|
} else if (direction === DOWN && midPointIndex >= first.value + buffer * 2 - 1) {
|
|
19534
|
-
first.value =
|
|
19789
|
+
first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value);
|
|
19535
19790
|
}
|
|
19536
19791
|
lastScrollTop = rootEl.value.scrollTop;
|
|
19537
19792
|
}
|
|
@@ -19553,6 +19808,17 @@
|
|
|
19553
19808
|
itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
|
|
19554
19809
|
}
|
|
19555
19810
|
});
|
|
19811
|
+
vue.watch(() => props.items.length, () => {
|
|
19812
|
+
sizes = createRange(props.items.length).map(() => itemHeight.value);
|
|
19813
|
+
sizeMap.forEach((height, item) => {
|
|
19814
|
+
const index = props.items.indexOf(item);
|
|
19815
|
+
if (index === -1) {
|
|
19816
|
+
sizeMap.delete(item);
|
|
19817
|
+
} else {
|
|
19818
|
+
sizes[index] = height;
|
|
19819
|
+
}
|
|
19820
|
+
});
|
|
19821
|
+
});
|
|
19556
19822
|
useRender(() => vue.createVNode("div", {
|
|
19557
19823
|
"ref": rootEl,
|
|
19558
19824
|
"class": "v-virtual-scroll",
|
|
@@ -19931,7 +20197,7 @@
|
|
|
19931
20197
|
locale
|
|
19932
20198
|
};
|
|
19933
20199
|
}
|
|
19934
|
-
const version$1 = "3.2.0-dev-
|
|
20200
|
+
const version$1 = "3.2.0-dev-20230322.0";
|
|
19935
20201
|
createVuetify$1.version = version$1;
|
|
19936
20202
|
|
|
19937
20203
|
// Vue's inject() can only be used in setup
|
|
@@ -19943,7 +20209,7 @@
|
|
|
19943
20209
|
}
|
|
19944
20210
|
}
|
|
19945
20211
|
|
|
19946
|
-
const version = "3.2.0-dev-
|
|
20212
|
+
const version = "3.2.0-dev-20230322.0";
|
|
19947
20213
|
|
|
19948
20214
|
const createVuetify = function () {
|
|
19949
20215
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|