vuetify 3.2.4 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_component-variables-labs.sass +1 -0
- package/dist/json/attributes.json +2503 -2151
- package/dist/json/importMap-labs.json +12 -4
- package/dist/json/importMap.json +28 -28
- package/dist/json/tags.json +107 -9
- package/dist/json/web-types.json +10785 -7110
- package/dist/vuetify-labs.css +263 -153
- package/dist/vuetify-labs.d.ts +35870 -16257
- package/dist/vuetify-labs.esm.js +1466 -934
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +1465 -933
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +246 -168
- package/dist/vuetify.d.ts +27883 -14061
- package/dist/vuetify.esm.js +477 -300
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +476 -299
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +811 -806
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/{index.d.ts → index.d.mts} +5 -1
- package/lib/blueprints/{md1.d.ts → md1.d.mts} +5 -1
- package/lib/blueprints/{md2.d.ts → md2.d.mts} +5 -1
- package/lib/blueprints/{md3.d.ts → md3.d.mts} +5 -1
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/{index.d.ts → index.d.mts} +284 -69
- package/lib/components/VApp/{index.d.ts → index.d.mts} +80 -19
- package/lib/components/VAppBar/{index.d.ts → index.d.mts} +391 -119
- package/lib/components/VAutocomplete/VAutocomplete.css +15 -9
- package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -34
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +15 -11
- package/lib/components/VAutocomplete/index.d.mts +2048 -0
- package/lib/components/VAvatar/{index.d.ts → index.d.mts} +85 -30
- package/lib/components/VBadge/_variables.scss +1 -1
- package/lib/components/VBadge/{index.d.ts → index.d.mts} +105 -42
- package/lib/components/VBanner/{index.d.ts → index.d.mts} +282 -63
- package/lib/components/VBottomNavigation/{index.d.ts → index.d.mts} +93 -45
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/{index.d.ts → index.d.mts} +348 -212
- package/lib/components/VBtn/{index.d.ts → index.d.mts} +139 -53
- package/lib/components/VBtnGroup/{index.d.ts → index.d.mts} +84 -27
- package/lib/components/VBtnToggle/{index.d.ts → index.d.mts} +88 -35
- package/lib/components/VCalendar/util/props.mjs.map +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/{index.d.ts → index.d.mts} +957 -419
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/{index.d.ts → index.d.mts} +616 -111
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +3 -3
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/{index.d.ts → index.d.mts} +408 -141
- package/lib/components/VChip/VChip.css +4 -2
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/VChip.sass +3 -2
- package/lib/components/VChip/{index.d.ts → index.d.mts} +376 -85
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VChipGroup/index.d.mts +470 -0
- package/lib/components/VCode/{index.d.ts → index.d.mts} +78 -17
- package/lib/components/VColorPicker/VColorPicker.mjs +9 -4
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs +5 -4
- package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
- package/lib/components/VColorPicker/{index.d.ts → index.d.mts} +241 -109
- package/lib/components/VColorPicker/util/index.mjs +2 -22
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +15 -9
- package/lib/components/VCombobox/VCombobox.mjs +82 -37
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +15 -11
- package/lib/components/VCombobox/index.d.mts +2060 -0
- package/lib/components/VCounter/VCounter.mjs.map +1 -1
- package/lib/components/VCounter/{index.d.ts → index.d.mts} +105 -45
- package/lib/components/VDefaultsProvider/{index.d.ts → index.d.mts} +82 -20
- package/lib/components/VDialog/{index.d.ts → index.d.mts} +571 -305
- package/lib/components/VDivider/{index.d.ts → index.d.mts} +81 -21
- package/lib/components/VExpansionPanel/{index.d.ts → index.d.mts} +374 -110
- package/lib/components/VField/VField.css +49 -16
- package/lib/components/VField/VField.mjs +12 -2
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +40 -11
- package/lib/components/VField/_variables.scss +8 -2
- package/lib/components/VField/index.d.mts +682 -0
- package/lib/components/VFileInput/VFileInput.css +3 -0
- package/lib/components/VFileInput/VFileInput.mjs +7 -1
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +6 -1
- package/lib/components/VFileInput/{index.d.ts → index.d.mts} +1033 -399
- package/lib/components/VFooter/{index.d.ts → index.d.mts} +85 -29
- package/lib/components/VForm/VForm.mjs.map +1 -1
- package/lib/components/VForm/index.d.mts +993 -0
- package/lib/components/VGrid/{index.d.ts → index.d.mts} +334 -100
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VHover/{index.d.ts → index.d.mts} +120 -37
- package/lib/components/VIcon/{index.d.ts → index.d.mts} +322 -81
- package/lib/components/VImg/VImg.css +2 -4
- package/lib/components/VImg/VImg.mjs +25 -24
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +4 -3
- package/lib/components/VImg/{index.d.ts → index.d.mts} +177 -40
- package/lib/components/VInput/VInput.css +10 -4
- package/lib/components/VInput/VInput.mjs +9 -3
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/VInput.sass +7 -2
- package/lib/components/VInput/_variables.scss +1 -0
- package/lib/components/VInput/{index.d.ts → index.d.mts} +237 -93
- package/lib/components/VItemGroup/VItem.mjs +1 -1
- package/lib/components/VItemGroup/VItem.mjs.map +1 -1
- package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
- package/lib/components/VItemGroup/index.d.mts +781 -0
- package/lib/components/VKbd/{index.d.ts → index.d.mts} +78 -17
- package/lib/components/VLabel/{index.d.ts → index.d.mts} +79 -18
- package/lib/components/VLayout/{index.d.ts → index.d.mts} +161 -42
- package/lib/components/VLazy/{index.d.ts → index.d.mts} +82 -27
- package/lib/components/VList/VList.mjs +6 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListChildren.mjs +4 -8
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +3 -0
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +11 -6
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/{index.d.ts → index.d.mts} +1245 -619
- package/lib/components/VLocaleProvider/{index.d.ts → index.d.mts} +80 -19
- package/lib/components/VMain/{index.d.ts → index.d.mts} +79 -19
- package/lib/components/VMenu/{index.d.ts → index.d.mts} +567 -299
- package/lib/components/VMessages/VMessages.mjs.map +1 -1
- package/lib/components/VMessages/{index.d.ts → index.d.mts} +87 -34
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +2 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +2 -0
- package/lib/components/VNavigationDrawer/{index.d.ts → index.d.mts} +139 -57
- package/lib/components/VOverlay/{index.d.ts → index.d.mts} +159 -75
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VPagination/{index.d.ts → index.d.mts} +229 -125
- package/lib/components/VParallax/{index.d.ts → index.d.mts} +118 -18
- package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
- package/lib/components/VProgressCircular/{index.d.ts → index.d.mts} +148 -45
- package/lib/components/VProgressLinear/{index.d.ts → index.d.mts} +119 -52
- package/lib/components/VRadio/{index.d.ts → index.d.mts} +139 -40
- package/lib/components/VRadioGroup/{index.d.ts → index.d.mts} +265 -93
- package/lib/components/VRangeSlider/VRangeSlider.mjs +4 -4
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/{index.d.ts → index.d.mts} +313 -132
- package/lib/components/VRating/{index.d.ts → index.d.mts} +108 -49
- package/lib/components/VResponsive/VResponsive.css +13 -5
- package/lib/components/VResponsive/VResponsive.mjs +4 -1
- package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
- package/lib/components/VResponsive/VResponsive.sass +12 -4
- package/lib/components/VResponsive/{index.d.ts → index.d.mts} +99 -16
- package/lib/components/VSelect/VSelect.css +15 -9
- package/lib/components/VSelect/VSelect.mjs +23 -18
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.sass +14 -11
- package/lib/components/VSelect/index.d.mts +1986 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.mts +403 -0
- package/lib/components/VSelectionControlGroup/{index.d.ts → index.d.mts} +90 -38
- package/lib/components/VSheet/{index.d.ts → index.d.mts} +81 -21
- package/lib/components/VSlideGroup/{index.d.ts → index.d.mts} +236 -61
- package/lib/components/VSlider/VSlider.mjs +2 -2
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/{index.d.ts → index.d.mts} +308 -126
- package/lib/components/VSlider/slider.mjs +8 -2
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/{index.d.ts → index.d.mts} +566 -297
- package/lib/components/VSwitch/VSwitch.css +3 -3
- package/lib/components/VSwitch/VSwitch.sass +4 -3
- package/lib/components/VSwitch/{index.d.ts → index.d.mts} +284 -101
- package/lib/components/VSystemBar/{index.d.ts → index.d.mts} +84 -27
- package/lib/components/VTable/{index.d.ts → index.d.mts} +122 -26
- package/lib/components/VTabs/VTabs.mjs.map +1 -1
- package/lib/components/VTabs/{index.d.ts → index.d.mts} +203 -113
- package/lib/components/VTextField/VTextField.css +9 -1
- package/lib/components/VTextField/VTextField.mjs +4 -2
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/VTextField.sass +8 -1
- package/lib/components/VTextField/index.d.mts +2735 -0
- package/lib/components/VTextarea/VTextarea.mjs +13 -4
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/{index.d.ts → index.d.mts} +933 -393
- package/lib/components/VThemeProvider/{index.d.ts → index.d.mts} +80 -20
- package/lib/components/VTimeline/{index.d.ts → index.d.mts} +201 -62
- package/lib/components/VToolbar/{index.d.ts → index.d.mts} +325 -73
- package/lib/components/VTooltip/{index.d.ts → index.d.mts} +568 -297
- package/lib/components/VValidation/VValidation.mjs.map +1 -1
- package/lib/components/VValidation/index.d.mts +634 -0
- package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/components/VVirtualScroll/index.d.mts +229 -0
- package/lib/components/VWindow/{index.d.ts → index.d.mts} +271 -68
- package/lib/components/{index.d.ts → index.d.mts} +27847 -14031
- package/lib/components/index.mjs +2 -3
- package/lib/components/index.mjs.map +1 -1
- package/lib/components/transitions/{index.d.ts → index.d.mts} +1330 -355
- package/lib/composables/display.mjs +6 -6
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/filter.mjs +5 -4
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/form.mjs +2 -3
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/forwardRefs.mjs.map +1 -1
- package/lib/composables/group.mjs +13 -13
- package/lib/composables/group.mjs.map +1 -1
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/{items.mjs → list-items.mjs} +9 -6
- package/lib/composables/list-items.mjs.map +1 -0
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/scroll.mjs +2 -2
- package/lib/composables/scroll.mjs.map +1 -1
- package/lib/composables/validation.mjs +44 -16
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/{index.d.ts → index.d.mts} +16 -10
- package/lib/labs/VBottomSheet/VBottomSheet.css +33 -0
- package/lib/labs/VBottomSheet/VBottomSheet.mjs +40 -0
- package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -0
- package/lib/labs/VBottomSheet/VBottomSheet.sass +37 -0
- package/lib/labs/VBottomSheet/_variables.scss +5 -0
- package/lib/labs/VBottomSheet/index.d.mts +871 -0
- package/lib/labs/VBottomSheet/index.mjs +2 -0
- package/lib/labs/VBottomSheet/index.mjs.map +1 -0
- package/lib/labs/VDataIterator/VDataIterator.mjs +160 -0
- package/lib/labs/VDataIterator/VDataIterator.mjs.map +1 -0
- package/lib/labs/VDataIterator/composables/items.mjs +37 -0
- package/lib/labs/VDataIterator/composables/items.mjs.map +1 -0
- package/lib/labs/VDataIterator/index.d.mts +704 -0
- package/lib/labs/VDataIterator/index.mjs +2 -0
- package/lib/labs/VDataIterator/index.mjs.map +1 -0
- package/lib/labs/VDataTable/VDataTable.mjs +58 -20
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableHeaders.mjs +17 -10
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +50 -14
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +50 -13
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +8 -6
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/headers.mjs +2 -3
- package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/items.mjs +31 -32
- package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +14 -2
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +3 -3
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/sort.mjs +17 -17
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/virtual.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.mts +9681 -0
- package/lib/labs/VDataTable/index.mjs +1 -1
- package/lib/labs/VDataTable/index.mjs.map +1 -1
- package/lib/labs/VDataTable/types.mjs.map +1 -1
- package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -1
- package/lib/labs/VInfiniteScroll/{index.d.ts → index.d.mts} +161 -54
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/{index.d.ts → index.d.mts} +92 -31
- package/lib/labs/components.d.mts +11806 -0
- package/lib/labs/components.mjs +2 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/labs/date/date.mjs.map +1 -1
- package/lib/labs/date/index.d.mts +70 -0
- package/lib/labs/date/index.mjs +1 -1
- package/lib/labs/date/index.mjs.map +1 -1
- package/lib/styles/settings/_variables.scss +3 -3
- package/lib/util/colorUtils.mjs +68 -3
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/console.mjs +12 -81
- package/lib/util/console.mjs.map +1 -1
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +4 -18
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/propsFactory.mjs +2 -0
- package/lib/util/propsFactory.mjs.map +1 -1
- package/package.json +13 -9
- package/lib/components/VAutocomplete/index.d.ts +0 -2050
- package/lib/components/VBottomSheet/VBottomSheet.mjs +0 -29
- package/lib/components/VBottomSheet/VBottomSheet.mjs.map +0 -1
- package/lib/components/VBottomSheet/VBottomSheet.sass +0 -23
- package/lib/components/VBottomSheet/_variables.scss +0 -3
- package/lib/components/VBottomSheet/index.mjs +0 -4
- package/lib/components/VBottomSheet/index.mjs.map +0 -1
- package/lib/components/VChipGroup/index.d.ts +0 -280
- package/lib/components/VCombobox/index.d.ts +0 -2086
- package/lib/components/VData/VData.mjs +0 -374
- package/lib/components/VData/VData.mjs.map +0 -1
- package/lib/components/VData/index.mjs +0 -4
- package/lib/components/VData/index.mjs.map +0 -1
- package/lib/components/VDataIterator/VDataFooter.mjs +0 -194
- package/lib/components/VDataIterator/VDataFooter.mjs.map +0 -1
- package/lib/components/VDataIterator/VDataFooter.sass +0 -71
- package/lib/components/VDataIterator/VDataIterator.mjs +0 -316
- package/lib/components/VDataIterator/VDataIterator.mjs.map +0 -1
- package/lib/components/VDataIterator/_variables.scss +0 -13
- package/lib/components/VDataIterator/index.mjs +0 -10
- package/lib/components/VDataIterator/index.mjs.map +0 -1
- package/lib/components/VField/index.d.ts +0 -563
- package/lib/components/VForm/index.d.ts +0 -284
- package/lib/components/VItemGroup/index.d.ts +0 -396
- package/lib/components/VSelect/index.d.ts +0 -1981
- package/lib/components/VSelectionControl/index.d.ts +0 -387
- package/lib/components/VTextField/index.d.ts +0 -2061
- package/lib/components/VValidation/index.d.ts +0 -243
- package/lib/components/VVirtualScroll/index.d.ts +0 -197
- package/lib/composables/items.mjs.map +0 -1
- package/lib/labs/VDataTable/index.d.ts +0 -5415
- package/lib/labs/components.d.ts +0 -5945
- package/lib/labs/date/index.d.ts +0 -38
- /package/lib/components/VNoSsr/{index.d.ts → index.d.mts} +0 -0
- /package/lib/directives/{index.d.ts → index.d.mts} +0 -0
- /package/lib/iconsets/{fa-svg.d.ts → fa-svg.d.mts} +0 -0
- /package/lib/iconsets/{fa.d.ts → fa.d.mts} +0 -0
- /package/lib/iconsets/{fa4.d.ts → fa4.d.mts} +0 -0
- /package/lib/iconsets/{md.d.ts → md.d.mts} +0 -0
- /package/lib/iconsets/{mdi-svg.d.ts → mdi-svg.d.mts} +0 -0
- /package/lib/iconsets/{mdi.d.ts → mdi.d.mts} +0 -0
- /package/lib/labs/date/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
- /package/lib/locale/adapters/{vue-i18n.d.ts → vue-i18n.d.mts} +0 -0
- /package/lib/locale/adapters/{vuetify.d.ts → vuetify.d.mts} +0 -0
- /package/lib/locale/{index.d.ts → index.d.mts} +0 -0
package/dist/vuetify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.
|
|
2
|
+
* Vuetify v3.3.0
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -171,6 +171,9 @@
|
|
|
171
171
|
function keys(o) {
|
|
172
172
|
return Object.keys(o);
|
|
173
173
|
}
|
|
174
|
+
function has(obj, key) {
|
|
175
|
+
return key.every(k => obj.hasOwnProperty(k));
|
|
176
|
+
}
|
|
174
177
|
function pick(obj, paths, exclude) {
|
|
175
178
|
const found = Object.create(null);
|
|
176
179
|
const rest = Object.create(null);
|
|
@@ -386,6 +389,7 @@
|
|
|
386
389
|
if (_el) _el.focus();else focusChild(el, location === 'next' ? 'first' : 'last');
|
|
387
390
|
}
|
|
388
391
|
}
|
|
392
|
+
function noop() {}
|
|
389
393
|
|
|
390
394
|
const block = ['top', 'bottom'];
|
|
391
395
|
const inline = ['start', 'end', 'left', 'right'];
|
|
@@ -538,79 +542,16 @@
|
|
|
538
542
|
}
|
|
539
543
|
|
|
540
544
|
/* eslint-disable no-console */
|
|
541
|
-
// import Vuetify from '../framework'
|
|
542
|
-
|
|
543
|
-
function createMessage(message, vm, parent) {
|
|
544
|
-
// if (Vuetify.config.silent) return
|
|
545
545
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
__isVue: true,
|
|
549
|
-
$parent: parent,
|
|
550
|
-
$options: vm
|
|
551
|
-
};
|
|
552
|
-
}
|
|
553
|
-
if (vm) {
|
|
554
|
-
// Only show each message once per instance
|
|
555
|
-
vm.$_alreadyWarned = vm.$_alreadyWarned || [];
|
|
556
|
-
if (vm.$_alreadyWarned.includes(message)) return;
|
|
557
|
-
vm.$_alreadyWarned.push(message);
|
|
558
|
-
}
|
|
559
|
-
return `[Vuetify] ${message}` + (vm ? generateComponentTrace(vm) : '');
|
|
546
|
+
function consoleWarn(message) {
|
|
547
|
+
vue.warn(`Vuetify: ${message}`);
|
|
560
548
|
}
|
|
561
|
-
function
|
|
562
|
-
|
|
563
|
-
newMessage != null && console.warn(newMessage);
|
|
549
|
+
function consoleError(message) {
|
|
550
|
+
vue.warn(`Vuetify error: ${message}`);
|
|
564
551
|
}
|
|
565
|
-
function
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
/**
|
|
571
|
-
* Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js
|
|
572
|
-
*/
|
|
573
|
-
|
|
574
|
-
const classifyRE = /(?:^|[-_])(\w)/g;
|
|
575
|
-
const classify = str => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');
|
|
576
|
-
function formatComponentName(vm, includeFile) {
|
|
577
|
-
if (vm.$root === vm) {
|
|
578
|
-
return '<Root>';
|
|
579
|
-
}
|
|
580
|
-
const options = typeof vm === 'function' && vm.cid != null ? vm.options : vm.__isVue ? vm.$options || vm.constructor.options : vm || {};
|
|
581
|
-
let name = options.name || options._componentTag;
|
|
582
|
-
const file = options.__file;
|
|
583
|
-
if (!name && file) {
|
|
584
|
-
const match = file.match(/([^/\\]+)\.vue$/);
|
|
585
|
-
name = match?.[1];
|
|
586
|
-
}
|
|
587
|
-
return (name ? `<${classify(name)}>` : `<Anonymous>`) + (file && includeFile !== false ? ` at ${file}` : '');
|
|
588
|
-
}
|
|
589
|
-
function generateComponentTrace(vm) {
|
|
590
|
-
if (vm.__isVue && vm.$parent) {
|
|
591
|
-
const tree = [];
|
|
592
|
-
let currentRecursiveSequence = 0;
|
|
593
|
-
while (vm) {
|
|
594
|
-
if (tree.length > 0) {
|
|
595
|
-
const last = tree[tree.length - 1];
|
|
596
|
-
if (last.constructor === vm.constructor) {
|
|
597
|
-
currentRecursiveSequence++;
|
|
598
|
-
vm = vm.$parent;
|
|
599
|
-
continue;
|
|
600
|
-
} else if (currentRecursiveSequence > 0) {
|
|
601
|
-
tree[tree.length - 1] = [last, currentRecursiveSequence];
|
|
602
|
-
currentRecursiveSequence = 0;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
tree.push(vm);
|
|
606
|
-
vm = vm.$parent;
|
|
607
|
-
}
|
|
608
|
-
return '\n\nfound in\n\n' + tree.map((vm, i) => `${i === 0 ? '---> ' : ' '.repeat(5 + i * 2)}${Array.isArray(vm)
|
|
609
|
-
// eslint-disable-next-line sonarjs/no-nested-template-literals
|
|
610
|
-
? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)` : formatComponentName(vm)}`).join('\n');
|
|
611
|
-
} else {
|
|
612
|
-
return `\n\n(found in ${formatComponentName(vm)})`;
|
|
613
|
-
}
|
|
552
|
+
function deprecate(original, replacement) {
|
|
553
|
+
replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map(s => `'${s}'`).join(', ') + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
|
|
554
|
+
vue.warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
|
|
614
555
|
}
|
|
615
556
|
|
|
616
557
|
// For converting XYZ to sRGB
|
|
@@ -684,7 +625,46 @@
|
|
|
684
625
|
function isCssColor(color) {
|
|
685
626
|
return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
|
|
686
627
|
}
|
|
687
|
-
|
|
628
|
+
const cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
|
|
629
|
+
const mappers = {
|
|
630
|
+
rgb: (r, g, b, a) => ({
|
|
631
|
+
r,
|
|
632
|
+
g,
|
|
633
|
+
b,
|
|
634
|
+
a
|
|
635
|
+
}),
|
|
636
|
+
rgba: (r, g, b, a) => ({
|
|
637
|
+
r,
|
|
638
|
+
g,
|
|
639
|
+
b,
|
|
640
|
+
a
|
|
641
|
+
}),
|
|
642
|
+
hsl: (h, s, l, a) => HSLtoRGB({
|
|
643
|
+
h,
|
|
644
|
+
s,
|
|
645
|
+
l,
|
|
646
|
+
a
|
|
647
|
+
}),
|
|
648
|
+
hsla: (h, s, l, a) => HSLtoRGB({
|
|
649
|
+
h,
|
|
650
|
+
s,
|
|
651
|
+
l,
|
|
652
|
+
a
|
|
653
|
+
}),
|
|
654
|
+
hsv: (h, s, v, a) => HSVtoRGB({
|
|
655
|
+
h,
|
|
656
|
+
s,
|
|
657
|
+
v,
|
|
658
|
+
a
|
|
659
|
+
}),
|
|
660
|
+
hsva: (h, s, v, a) => HSVtoRGB({
|
|
661
|
+
h,
|
|
662
|
+
s,
|
|
663
|
+
v,
|
|
664
|
+
a
|
|
665
|
+
})
|
|
666
|
+
};
|
|
667
|
+
function parseColor(color) {
|
|
688
668
|
if (typeof color === 'number') {
|
|
689
669
|
if (isNaN(color) || color < 0 || color > 0xFFFFFF) {
|
|
690
670
|
// int can't have opacity
|
|
@@ -695,6 +675,22 @@
|
|
|
695
675
|
g: (color & 0xFF00) >> 8,
|
|
696
676
|
b: color & 0xFF
|
|
697
677
|
};
|
|
678
|
+
} else if (typeof color === 'string' && cssColorRe.test(color)) {
|
|
679
|
+
const {
|
|
680
|
+
groups
|
|
681
|
+
} = color.match(cssColorRe);
|
|
682
|
+
const {
|
|
683
|
+
fn,
|
|
684
|
+
values
|
|
685
|
+
} = groups;
|
|
686
|
+
const realValues = values.split(/,\s*/).map(v => {
|
|
687
|
+
if (v.endsWith('%') && ['hsl', 'hsla', 'hsv', 'hsva'].includes(fn)) {
|
|
688
|
+
return parseFloat(v) / 100;
|
|
689
|
+
} else {
|
|
690
|
+
return parseFloat(v);
|
|
691
|
+
}
|
|
692
|
+
});
|
|
693
|
+
return mappers[fn](...realValues);
|
|
698
694
|
} else if (typeof color === 'string') {
|
|
699
695
|
let hex = color.startsWith('#') ? color.slice(1) : color;
|
|
700
696
|
if ([3, 4].includes(hex.length)) {
|
|
@@ -707,9 +703,16 @@
|
|
|
707
703
|
consoleWarn(`'${color}' is not a valid hex(a) color`);
|
|
708
704
|
}
|
|
709
705
|
return HexToRGB(hex);
|
|
710
|
-
} else {
|
|
711
|
-
|
|
706
|
+
} else if (typeof color === 'object') {
|
|
707
|
+
if (has(color, ['r', 'g', 'b'])) {
|
|
708
|
+
return color;
|
|
709
|
+
} else if (has(color, ['h', 's', 'l'])) {
|
|
710
|
+
return HSVtoRGB(HSLtoHSV(color));
|
|
711
|
+
} else if (has(color, ['h', 's', 'v'])) {
|
|
712
|
+
return HSVtoRGB(color);
|
|
713
|
+
}
|
|
712
714
|
}
|
|
715
|
+
throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);
|
|
713
716
|
}
|
|
714
717
|
|
|
715
718
|
/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
|
|
@@ -732,6 +735,9 @@
|
|
|
732
735
|
a
|
|
733
736
|
};
|
|
734
737
|
}
|
|
738
|
+
function HSLtoRGB(hsla) {
|
|
739
|
+
return HSVtoRGB(HSLtoHSV(hsla));
|
|
740
|
+
}
|
|
735
741
|
|
|
736
742
|
/** Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
|
|
737
743
|
function RGBtoHSV(rgba) {
|
|
@@ -870,7 +876,7 @@
|
|
|
870
876
|
* @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
|
|
871
877
|
*/
|
|
872
878
|
function getLuma(color) {
|
|
873
|
-
const rgb = parseColor
|
|
879
|
+
const rgb = parseColor(color);
|
|
874
880
|
return toXYZ$1(rgb)[1];
|
|
875
881
|
}
|
|
876
882
|
|
|
@@ -886,6 +892,8 @@
|
|
|
886
892
|
return (light + 0.05) / (dark + 0.05);
|
|
887
893
|
}
|
|
888
894
|
|
|
895
|
+
// eslint-disable-line vue/prefer-import-from-vue
|
|
896
|
+
|
|
889
897
|
/**
|
|
890
898
|
* Creates a factory function for props definitions.
|
|
891
899
|
* This is used to define props in a composable then override
|
|
@@ -1166,6 +1174,7 @@
|
|
|
1166
1174
|
const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
|
|
1167
1175
|
|
|
1168
1176
|
// Utilities
|
|
1177
|
+
|
|
1169
1178
|
function getCurrentInstance(name, message) {
|
|
1170
1179
|
const vm = vue.getCurrentInstance();
|
|
1171
1180
|
if (!vm) {
|
|
@@ -1730,7 +1739,7 @@
|
|
|
1730
1739
|
for (const variation of ['lighten', 'darken']) {
|
|
1731
1740
|
const fn = variation === 'lighten' ? lighten : darken;
|
|
1732
1741
|
for (const amount of createRange(parsedOptions.variations[variation], 1)) {
|
|
1733
|
-
theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor
|
|
1742
|
+
theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
|
|
1734
1743
|
}
|
|
1735
1744
|
}
|
|
1736
1745
|
}
|
|
@@ -1738,9 +1747,9 @@
|
|
|
1738
1747
|
for (const color of Object.keys(theme.colors)) {
|
|
1739
1748
|
if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
|
|
1740
1749
|
const onColor = `on-${color}`;
|
|
1741
|
-
const colorVal = parseColor
|
|
1742
|
-
const blackContrast = Math.abs(APCAcontrast(parseColor
|
|
1743
|
-
const whiteContrast = Math.abs(APCAcontrast(parseColor
|
|
1750
|
+
const colorVal = parseColor(theme.colors[color]);
|
|
1751
|
+
const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal));
|
|
1752
|
+
const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal));
|
|
1744
1753
|
|
|
1745
1754
|
// TODO: warn about poor color selections
|
|
1746
1755
|
// const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
|
|
@@ -1872,14 +1881,14 @@
|
|
|
1872
1881
|
const darkOverlay = theme.dark ? 1 : 2;
|
|
1873
1882
|
const variables = [];
|
|
1874
1883
|
for (const [key, value] of Object.entries(theme.colors)) {
|
|
1875
|
-
const rgb = parseColor
|
|
1884
|
+
const rgb = parseColor(value);
|
|
1876
1885
|
variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
|
|
1877
1886
|
if (!key.startsWith('on-')) {
|
|
1878
1887
|
variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
|
|
1879
1888
|
}
|
|
1880
1889
|
}
|
|
1881
1890
|
for (const [key, value] of Object.entries(theme.variables)) {
|
|
1882
|
-
const color = typeof value === 'string' && value.startsWith('#') ? parseColor
|
|
1891
|
+
const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
|
|
1883
1892
|
const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
|
|
1884
1893
|
variables.push(`--v-${key}: ${rgb ?? value}`);
|
|
1885
1894
|
}
|
|
@@ -2660,6 +2669,7 @@
|
|
|
2660
2669
|
const makeVResponsiveProps = propsFactory({
|
|
2661
2670
|
aspectRatio: [String, Number],
|
|
2662
2671
|
contentClass: String,
|
|
2672
|
+
inline: Boolean,
|
|
2663
2673
|
...makeComponentProps(),
|
|
2664
2674
|
...makeDimensionProps()
|
|
2665
2675
|
}, 'v-responsive');
|
|
@@ -2677,7 +2687,9 @@
|
|
|
2677
2687
|
dimensionStyles
|
|
2678
2688
|
} = useDimension(props);
|
|
2679
2689
|
useRender(() => vue.createVNode("div", {
|
|
2680
|
-
"class": ['v-responsive',
|
|
2690
|
+
"class": ['v-responsive', {
|
|
2691
|
+
'v-responsive--inline': props.inline
|
|
2692
|
+
}, props.class],
|
|
2681
2693
|
"style": [dimensionStyles.value, props.style]
|
|
2682
2694
|
}, [vue.createVNode("div", {
|
|
2683
2695
|
"class": "v-responsive__sizer",
|
|
@@ -2771,7 +2783,6 @@
|
|
|
2771
2783
|
// Types
|
|
2772
2784
|
|
|
2773
2785
|
const makeVImgProps = propsFactory({
|
|
2774
|
-
aspectRatio: [String, Number],
|
|
2775
2786
|
alt: String,
|
|
2776
2787
|
cover: Boolean,
|
|
2777
2788
|
eager: Boolean,
|
|
@@ -2793,7 +2804,7 @@
|
|
|
2793
2804
|
default: ''
|
|
2794
2805
|
},
|
|
2795
2806
|
srcset: String,
|
|
2796
|
-
|
|
2807
|
+
...makeVResponsiveProps(),
|
|
2797
2808
|
...makeComponentProps(),
|
|
2798
2809
|
...makeTransitionProps()
|
|
2799
2810
|
}, 'v-img');
|
|
@@ -2985,25 +2996,27 @@
|
|
|
2985
2996
|
}
|
|
2986
2997
|
});
|
|
2987
2998
|
}
|
|
2988
|
-
useRender(() =>
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
2999
|
+
useRender(() => {
|
|
3000
|
+
const [responsiveProps] = VResponsive.filterProps(props);
|
|
3001
|
+
return vue.withDirectives(vue.createVNode(VResponsive, vue.mergeProps({
|
|
3002
|
+
"class": ['v-img', {
|
|
3003
|
+
'v-img--booting': !isBooted.value
|
|
3004
|
+
}, props.class],
|
|
3005
|
+
"style": props.style
|
|
3006
|
+
}, responsiveProps, {
|
|
3007
|
+
"aspectRatio": aspectRatio.value,
|
|
3008
|
+
"aria-label": props.alt,
|
|
3009
|
+
"role": props.alt ? 'img' : undefined
|
|
3010
|
+
}), {
|
|
3011
|
+
additional: () => vue.createVNode(vue.Fragment, null, [vue.createVNode(__image, null, null), vue.createVNode(__preloadImage, null, null), vue.createVNode(__gradient, null, null), vue.createVNode(__placeholder, null, null), vue.createVNode(__error, null, null)]),
|
|
3012
|
+
default: slots.default
|
|
3013
|
+
}), [[vue.resolveDirective("intersect"), {
|
|
3014
|
+
handler: init,
|
|
3015
|
+
options: props.options
|
|
3016
|
+
}, null, {
|
|
3017
|
+
once: true
|
|
3018
|
+
}]]);
|
|
3019
|
+
});
|
|
3007
3020
|
return {
|
|
3008
3021
|
currentSrc,
|
|
3009
3022
|
image,
|
|
@@ -3398,7 +3411,7 @@
|
|
|
3398
3411
|
vue.watch(() => props.scrollTarget, scrollTarget => {
|
|
3399
3412
|
const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
|
|
3400
3413
|
if (!newTarget) {
|
|
3401
|
-
consoleWarn(`Unable to locate element with identifier ${scrollTarget}
|
|
3414
|
+
consoleWarn(`Unable to locate element with identifier ${scrollTarget}`);
|
|
3402
3415
|
return;
|
|
3403
3416
|
}
|
|
3404
3417
|
if (newTarget === target.value) return;
|
|
@@ -3880,26 +3893,26 @@
|
|
|
3880
3893
|
}
|
|
3881
3894
|
function getIds(items, modelValue) {
|
|
3882
3895
|
const ids = [];
|
|
3883
|
-
|
|
3884
|
-
const item = items
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
ids.push(item.id);
|
|
3888
|
-
}
|
|
3889
|
-
} else if (modelValue.includes(i)) {
|
|
3896
|
+
modelValue.forEach(value => {
|
|
3897
|
+
const item = items.find(item => deepEqual(value, item.value));
|
|
3898
|
+
const itemByIndex = items[value];
|
|
3899
|
+
if (item?.value != null) {
|
|
3890
3900
|
ids.push(item.id);
|
|
3901
|
+
} else if (itemByIndex != null) {
|
|
3902
|
+
ids.push(itemByIndex.id);
|
|
3891
3903
|
}
|
|
3892
|
-
}
|
|
3904
|
+
});
|
|
3893
3905
|
return ids;
|
|
3894
3906
|
}
|
|
3895
3907
|
function getValues(items, ids) {
|
|
3896
3908
|
const values = [];
|
|
3897
|
-
|
|
3898
|
-
const
|
|
3899
|
-
if (
|
|
3900
|
-
|
|
3909
|
+
ids.forEach(id => {
|
|
3910
|
+
const itemIndex = items.findIndex(item => item.id === id);
|
|
3911
|
+
if (~itemIndex) {
|
|
3912
|
+
const item = items[itemIndex];
|
|
3913
|
+
values.push(item.value != null ? item.value : itemIndex);
|
|
3901
3914
|
}
|
|
3902
|
-
}
|
|
3915
|
+
});
|
|
3903
3916
|
return values;
|
|
3904
3917
|
}
|
|
3905
3918
|
|
|
@@ -5569,10 +5582,17 @@
|
|
|
5569
5582
|
default: '$clear'
|
|
5570
5583
|
},
|
|
5571
5584
|
active: Boolean,
|
|
5585
|
+
centerAffix: {
|
|
5586
|
+
type: Boolean,
|
|
5587
|
+
default: undefined
|
|
5588
|
+
},
|
|
5572
5589
|
color: String,
|
|
5573
5590
|
baseColor: String,
|
|
5574
5591
|
dirty: Boolean,
|
|
5575
|
-
disabled:
|
|
5592
|
+
disabled: {
|
|
5593
|
+
type: Boolean,
|
|
5594
|
+
default: null
|
|
5595
|
+
},
|
|
5576
5596
|
error: Boolean,
|
|
5577
5597
|
flat: Boolean,
|
|
5578
5598
|
label: String,
|
|
@@ -5640,6 +5660,7 @@
|
|
|
5640
5660
|
const labelRef = vue.ref();
|
|
5641
5661
|
const floatingLabelRef = vue.ref();
|
|
5642
5662
|
const controlRef = vue.ref();
|
|
5663
|
+
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
5643
5664
|
const {
|
|
5644
5665
|
backgroundColorClasses,
|
|
5645
5666
|
backgroundColorStyles
|
|
@@ -5705,6 +5726,7 @@
|
|
|
5705
5726
|
const hasClear = !!(props.clearable || slots.clear);
|
|
5706
5727
|
const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear);
|
|
5707
5728
|
const label = slots.label ? slots.label({
|
|
5729
|
+
...slotProps.value,
|
|
5708
5730
|
label: props.label,
|
|
5709
5731
|
props: {
|
|
5710
5732
|
for: id.value
|
|
@@ -5714,6 +5736,7 @@
|
|
|
5714
5736
|
"class": ['v-field', {
|
|
5715
5737
|
'v-field--active': isActive.value,
|
|
5716
5738
|
'v-field--appended': hasAppend,
|
|
5739
|
+
'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,
|
|
5717
5740
|
'v-field--disabled': props.disabled,
|
|
5718
5741
|
'v-field--dirty': props.dirty,
|
|
5719
5742
|
'v-field--error': props.error,
|
|
@@ -5799,7 +5822,7 @@
|
|
|
5799
5822
|
default: () => [label]
|
|
5800
5823
|
})]), vue.createVNode("div", {
|
|
5801
5824
|
"class": "v-field__outline__end"
|
|
5802
|
-
}, null)]),
|
|
5825
|
+
}, null)]), isPlainOrUnderlined.value && hasLabel.value && vue.createVNode(VFieldLabel, {
|
|
5803
5826
|
"ref": floatingLabelRef,
|
|
5804
5827
|
"floating": true,
|
|
5805
5828
|
"for": id.value
|
|
@@ -5917,12 +5940,9 @@
|
|
|
5917
5940
|
}
|
|
5918
5941
|
function reset() {
|
|
5919
5942
|
items.value.forEach(item => item.reset());
|
|
5920
|
-
model.value = null;
|
|
5921
5943
|
}
|
|
5922
5944
|
function resetValidation() {
|
|
5923
5945
|
items.value.forEach(item => item.resetValidation());
|
|
5924
|
-
errors.value = [];
|
|
5925
|
-
model.value = null;
|
|
5926
5946
|
}
|
|
5927
5947
|
vue.watch(items, () => {
|
|
5928
5948
|
let valid = 0;
|
|
@@ -5976,6 +5996,7 @@
|
|
|
5976
5996
|
isDisabled,
|
|
5977
5997
|
isReadonly,
|
|
5978
5998
|
isValidating,
|
|
5999
|
+
isValid: model,
|
|
5979
6000
|
items,
|
|
5980
6001
|
validateOn: vue.toRef(props, 'validateOn')
|
|
5981
6002
|
});
|
|
@@ -5984,6 +6005,7 @@
|
|
|
5984
6005
|
isDisabled,
|
|
5985
6006
|
isReadonly,
|
|
5986
6007
|
isValidating,
|
|
6008
|
+
isValid: model,
|
|
5987
6009
|
items,
|
|
5988
6010
|
validate,
|
|
5989
6011
|
reset,
|
|
@@ -5999,7 +6021,10 @@
|
|
|
5999
6021
|
// Types
|
|
6000
6022
|
|
|
6001
6023
|
const makeValidationProps = propsFactory({
|
|
6002
|
-
disabled:
|
|
6024
|
+
disabled: {
|
|
6025
|
+
type: Boolean,
|
|
6026
|
+
default: null
|
|
6027
|
+
},
|
|
6003
6028
|
error: Boolean,
|
|
6004
6029
|
errorMessages: {
|
|
6005
6030
|
type: [Array, String],
|
|
@@ -6011,7 +6036,10 @@
|
|
|
6011
6036
|
},
|
|
6012
6037
|
name: String,
|
|
6013
6038
|
label: String,
|
|
6014
|
-
readonly:
|
|
6039
|
+
readonly: {
|
|
6040
|
+
type: Boolean,
|
|
6041
|
+
default: null
|
|
6042
|
+
},
|
|
6015
6043
|
rules: {
|
|
6016
6044
|
type: Array,
|
|
6017
6045
|
default: () => []
|
|
@@ -6030,15 +6058,30 @@
|
|
|
6030
6058
|
const internalErrorMessages = vue.ref([]);
|
|
6031
6059
|
const isPristine = vue.shallowRef(true);
|
|
6032
6060
|
const isDirty = vue.computed(() => !!(wrapInArray(model.value === '' ? null : model.value).length || wrapInArray(validationModel.value === '' ? null : validationModel.value).length));
|
|
6033
|
-
const isDisabled = vue.computed(() => !!(props.disabled
|
|
6034
|
-
const isReadonly = vue.computed(() => !!(props.readonly
|
|
6061
|
+
const isDisabled = vue.computed(() => !!(props.disabled ?? form?.isDisabled.value));
|
|
6062
|
+
const isReadonly = vue.computed(() => !!(props.readonly ?? form?.isReadonly.value));
|
|
6035
6063
|
const errorMessages = vue.computed(() => {
|
|
6036
6064
|
return props.errorMessages.length ? wrapInArray(props.errorMessages).slice(0, Math.max(0, +props.maxErrors)) : internalErrorMessages.value;
|
|
6037
6065
|
});
|
|
6066
|
+
const validateOn = vue.computed(() => {
|
|
6067
|
+
let value = (props.validateOn ?? form?.validateOn.value) || 'input';
|
|
6068
|
+
if (value === 'lazy') value = 'input lazy';
|
|
6069
|
+
const set = new Set(value?.split(' ') ?? []);
|
|
6070
|
+
return {
|
|
6071
|
+
blur: set.has('blur') || set.has('input'),
|
|
6072
|
+
input: set.has('input'),
|
|
6073
|
+
submit: set.has('submit'),
|
|
6074
|
+
lazy: set.has('lazy')
|
|
6075
|
+
};
|
|
6076
|
+
});
|
|
6038
6077
|
const isValid = vue.computed(() => {
|
|
6039
|
-
if (props.error || errorMessages.
|
|
6078
|
+
if (props.error || props.errorMessages.length) return false;
|
|
6040
6079
|
if (!props.rules.length) return true;
|
|
6041
|
-
|
|
6080
|
+
if (isPristine.value) {
|
|
6081
|
+
return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
|
|
6082
|
+
} else {
|
|
6083
|
+
return !internalErrorMessages.value.length;
|
|
6084
|
+
}
|
|
6042
6085
|
});
|
|
6043
6086
|
const isValidating = vue.shallowRef(false);
|
|
6044
6087
|
const validationClasses = vue.computed(() => {
|
|
@@ -6061,11 +6104,13 @@
|
|
|
6061
6104
|
vue.onBeforeUnmount(() => {
|
|
6062
6105
|
form?.unregister(uid.value);
|
|
6063
6106
|
});
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6107
|
+
vue.onMounted(async () => {
|
|
6108
|
+
if (!validateOn.value.lazy) {
|
|
6109
|
+
await validate(true);
|
|
6110
|
+
}
|
|
6111
|
+
form?.update(uid.value, isValid.value, errorMessages.value);
|
|
6112
|
+
});
|
|
6113
|
+
useToggleScope(() => validateOn.value.input, () => {
|
|
6069
6114
|
vue.watch(validationModel, () => {
|
|
6070
6115
|
if (validationModel.value != null) {
|
|
6071
6116
|
validate();
|
|
@@ -6077,7 +6122,7 @@
|
|
|
6077
6122
|
}
|
|
6078
6123
|
});
|
|
6079
6124
|
});
|
|
6080
|
-
useToggleScope(() => validateOn.value
|
|
6125
|
+
useToggleScope(() => validateOn.value.blur, () => {
|
|
6081
6126
|
vue.watch(() => props.focused, val => {
|
|
6082
6127
|
if (!val) validate();
|
|
6083
6128
|
});
|
|
@@ -6086,14 +6131,19 @@
|
|
|
6086
6131
|
form?.update(uid.value, isValid.value, errorMessages.value);
|
|
6087
6132
|
});
|
|
6088
6133
|
function reset() {
|
|
6089
|
-
resetValidation();
|
|
6090
6134
|
model.value = null;
|
|
6135
|
+
vue.nextTick(resetValidation);
|
|
6091
6136
|
}
|
|
6092
6137
|
function resetValidation() {
|
|
6093
6138
|
isPristine.value = true;
|
|
6094
|
-
|
|
6139
|
+
if (!validateOn.value.lazy) {
|
|
6140
|
+
validate(true);
|
|
6141
|
+
} else {
|
|
6142
|
+
internalErrorMessages.value = [];
|
|
6143
|
+
}
|
|
6095
6144
|
}
|
|
6096
6145
|
async function validate() {
|
|
6146
|
+
let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
6097
6147
|
const results = [];
|
|
6098
6148
|
isValidating.value = true;
|
|
6099
6149
|
for (const rule of props.rules) {
|
|
@@ -6112,7 +6162,7 @@
|
|
|
6112
6162
|
}
|
|
6113
6163
|
internalErrorMessages.value = results;
|
|
6114
6164
|
isValidating.value = false;
|
|
6115
|
-
isPristine.value =
|
|
6165
|
+
isPristine.value = silent;
|
|
6116
6166
|
return internalErrorMessages.value;
|
|
6117
6167
|
}
|
|
6118
6168
|
return {
|
|
@@ -6133,6 +6183,10 @@
|
|
|
6133
6183
|
const makeVInputProps = propsFactory({
|
|
6134
6184
|
id: String,
|
|
6135
6185
|
appendIcon: IconValue,
|
|
6186
|
+
centerAffix: {
|
|
6187
|
+
type: Boolean,
|
|
6188
|
+
default: true
|
|
6189
|
+
},
|
|
6136
6190
|
prependIcon: IconValue,
|
|
6137
6191
|
hideDetails: [Boolean, String],
|
|
6138
6192
|
hint: String,
|
|
@@ -6202,7 +6256,7 @@
|
|
|
6202
6256
|
validate
|
|
6203
6257
|
}));
|
|
6204
6258
|
const messages = vue.computed(() => {
|
|
6205
|
-
if (errorMessages.value.length > 0) {
|
|
6259
|
+
if (!isPristine.value && errorMessages.value.length > 0) {
|
|
6206
6260
|
return errorMessages.value;
|
|
6207
6261
|
} else if (props.hint && (props.persistentHint || props.focused)) {
|
|
6208
6262
|
return props.hint;
|
|
@@ -6216,7 +6270,9 @@
|
|
|
6216
6270
|
const hasMessages = messages.value.length > 0;
|
|
6217
6271
|
const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
|
|
6218
6272
|
return vue.createVNode("div", {
|
|
6219
|
-
"class": ['v-input', `v-input--${props.direction}`,
|
|
6273
|
+
"class": ['v-input', `v-input--${props.direction}`, {
|
|
6274
|
+
'v-input--center-affix': props.centerAffix
|
|
6275
|
+
}, densityClasses.value, validationClasses.value, props.class],
|
|
6220
6276
|
"style": props.style
|
|
6221
6277
|
}, [hasPrepend && vue.createVNode("div", {
|
|
6222
6278
|
"key": "prepend",
|
|
@@ -6423,6 +6479,7 @@
|
|
|
6423
6479
|
if (!props.counter || typeof props.counter !== 'number' && typeof props.counter !== 'string') return undefined;
|
|
6424
6480
|
return props.counter;
|
|
6425
6481
|
});
|
|
6482
|
+
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
6426
6483
|
function onIntersect(isIntersecting, entries) {
|
|
6427
6484
|
if (!props.autofocus || !isIntersecting) return;
|
|
6428
6485
|
entries[0].target?.focus?.();
|
|
@@ -6482,10 +6539,11 @@
|
|
|
6482
6539
|
"class": ['v-text-field', {
|
|
6483
6540
|
'v-text-field--prefixed': props.prefix,
|
|
6484
6541
|
'v-text-field--suffixed': props.suffix,
|
|
6485
|
-
'v-text-field--
|
|
6542
|
+
'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant)
|
|
6486
6543
|
}, props.class],
|
|
6487
6544
|
"style": props.style
|
|
6488
6545
|
}, rootAttrs, inputProps, {
|
|
6546
|
+
"centerAffix": !isPlainOrUnderlined.value,
|
|
6489
6547
|
"focused": isFocused.value
|
|
6490
6548
|
}), {
|
|
6491
6549
|
...slots,
|
|
@@ -6855,10 +6913,10 @@
|
|
|
6855
6913
|
}
|
|
6856
6914
|
}
|
|
6857
6915
|
const falseIcon = vue.computed(() => {
|
|
6858
|
-
return
|
|
6916
|
+
return indeterminate.value ? props.indeterminateIcon : props.falseIcon;
|
|
6859
6917
|
});
|
|
6860
6918
|
const trueIcon = vue.computed(() => {
|
|
6861
|
-
return
|
|
6919
|
+
return indeterminate.value ? props.indeterminateIcon : props.trueIcon;
|
|
6862
6920
|
});
|
|
6863
6921
|
useRender(() => vue.createVNode(VSelectionControl, vue.mergeProps(props, {
|
|
6864
6922
|
"modelValue": model.value,
|
|
@@ -6868,7 +6926,7 @@
|
|
|
6868
6926
|
"type": "checkbox",
|
|
6869
6927
|
"falseIcon": falseIcon.value,
|
|
6870
6928
|
"trueIcon": trueIcon.value,
|
|
6871
|
-
"aria-checked":
|
|
6929
|
+
"aria-checked": indeterminate.value ? 'mixed' : undefined
|
|
6872
6930
|
}), slots));
|
|
6873
6931
|
return {};
|
|
6874
6932
|
}
|
|
@@ -7828,7 +7886,9 @@
|
|
|
7828
7886
|
}
|
|
7829
7887
|
});
|
|
7830
7888
|
const makeVListGroupProps = propsFactory({
|
|
7889
|
+
/* @deprecated */
|
|
7831
7890
|
activeColor: String,
|
|
7891
|
+
baseColor: String,
|
|
7832
7892
|
color: String,
|
|
7833
7893
|
collapseIcon: {
|
|
7834
7894
|
type: IconValue,
|
|
@@ -7877,6 +7937,7 @@
|
|
|
7877
7937
|
VListItem: {
|
|
7878
7938
|
active: isOpen.value,
|
|
7879
7939
|
activeColor: props.activeColor,
|
|
7940
|
+
baseColor: props.baseColor,
|
|
7880
7941
|
color: props.color,
|
|
7881
7942
|
prependIcon: props.prependIcon || props.subgroup && toggleIcon.value,
|
|
7882
7943
|
appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value,
|
|
@@ -7931,9 +7992,11 @@
|
|
|
7931
7992
|
default: undefined
|
|
7932
7993
|
},
|
|
7933
7994
|
activeClass: String,
|
|
7995
|
+
/* @deprecated */
|
|
7934
7996
|
activeColor: String,
|
|
7935
7997
|
appendAvatar: String,
|
|
7936
7998
|
appendIcon: IconValue,
|
|
7999
|
+
baseColor: String,
|
|
7937
8000
|
disabled: Boolean,
|
|
7938
8001
|
lines: String,
|
|
7939
8002
|
link: {
|
|
@@ -7996,8 +8059,9 @@
|
|
|
7996
8059
|
const isLink = vue.computed(() => props.link !== false && link.isLink.value);
|
|
7997
8060
|
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || props.value != null && !!list));
|
|
7998
8061
|
const roundedProps = vue.computed(() => props.rounded || props.nav);
|
|
8062
|
+
const color = vue.computed(() => props.color ?? props.activeColor);
|
|
7999
8063
|
const variantProps = vue.computed(() => ({
|
|
8000
|
-
color: isActive.value ?
|
|
8064
|
+
color: isActive.value ? color.value ?? props.baseColor : props.baseColor,
|
|
8001
8065
|
variant: props.variant
|
|
8002
8066
|
}));
|
|
8003
8067
|
vue.watch(() => link.isActive?.value, val => {
|
|
@@ -8054,7 +8118,6 @@
|
|
|
8054
8118
|
}
|
|
8055
8119
|
useRender(() => {
|
|
8056
8120
|
const Tag = isLink.value ? 'a' : props.tag;
|
|
8057
|
-
const hasColor = !list || isSelected.value || isActive.value;
|
|
8058
8121
|
const hasTitle = slots.title || props.title;
|
|
8059
8122
|
const hasSubtitle = slots.subtitle || props.subtitle;
|
|
8060
8123
|
const hasAppendMedia = !!(props.appendAvatar || props.appendIcon);
|
|
@@ -8062,6 +8125,9 @@
|
|
|
8062
8125
|
const hasPrependMedia = !!(props.prependAvatar || props.prependIcon);
|
|
8063
8126
|
const hasPrepend = !!(hasPrependMedia || slots.prepend);
|
|
8064
8127
|
list?.updateHasPrepend(hasPrepend);
|
|
8128
|
+
if (props.activeColor) {
|
|
8129
|
+
deprecate('active-color', ['color', 'base-color']);
|
|
8130
|
+
}
|
|
8065
8131
|
return vue.withDirectives(vue.createVNode(Tag, {
|
|
8066
8132
|
"class": ['v-list-item', {
|
|
8067
8133
|
'v-list-item--active': isActive.value,
|
|
@@ -8070,10 +8136,10 @@
|
|
|
8070
8136
|
'v-list-item--nav': props.nav,
|
|
8071
8137
|
'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
|
|
8072
8138
|
[`${props.activeClass}`]: props.activeClass && isActive.value
|
|
8073
|
-
}, themeClasses.value, borderClasses.value,
|
|
8074
|
-
"style": [
|
|
8139
|
+
}, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
|
|
8140
|
+
"style": [colorStyles.value, dimensionStyles.value, props.style],
|
|
8075
8141
|
"href": link.href.value,
|
|
8076
|
-
"tabindex": isClickable.value ? 0 : undefined,
|
|
8142
|
+
"tabindex": isClickable.value ? list ? -2 : 0 : undefined,
|
|
8077
8143
|
"onClick": onClick,
|
|
8078
8144
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
|
8079
8145
|
}, {
|
|
@@ -8224,9 +8290,7 @@
|
|
|
8224
8290
|
if (type === 'subheader') {
|
|
8225
8291
|
return slots.subheader?.({
|
|
8226
8292
|
props: itemProps
|
|
8227
|
-
}) ?? vue.createVNode(VListSubheader, itemProps,
|
|
8228
|
-
default: slots.subheader
|
|
8229
|
-
});
|
|
8293
|
+
}) ?? vue.createVNode(VListSubheader, itemProps, null);
|
|
8230
8294
|
}
|
|
8231
8295
|
const slotsWithItem = {
|
|
8232
8296
|
subtitle: slots.subtitle ? slotProps => slots.subtitle?.({
|
|
@@ -8241,10 +8305,6 @@
|
|
|
8241
8305
|
...slotProps,
|
|
8242
8306
|
item
|
|
8243
8307
|
}) : undefined,
|
|
8244
|
-
default: slots.default ? slotProps => slots.default?.({
|
|
8245
|
-
...slotProps,
|
|
8246
|
-
item
|
|
8247
|
-
}) : undefined,
|
|
8248
8308
|
title: slots.title ? slotProps => slots.title?.({
|
|
8249
8309
|
...slotProps,
|
|
8250
8310
|
item
|
|
@@ -8268,7 +8328,9 @@
|
|
|
8268
8328
|
default: () => vue.createVNode(VListChildren, {
|
|
8269
8329
|
"items": children
|
|
8270
8330
|
}, slots)
|
|
8271
|
-
}) : slots.item ? slots.item(
|
|
8331
|
+
}) : slots.item ? slots.item({
|
|
8332
|
+
props: itemProps
|
|
8333
|
+
}) : vue.createVNode(VListItem, itemProps, slotsWithItem);
|
|
8272
8334
|
});
|
|
8273
8335
|
}
|
|
8274
8336
|
});
|
|
@@ -8300,7 +8362,7 @@
|
|
|
8300
8362
|
default: 'props'
|
|
8301
8363
|
},
|
|
8302
8364
|
returnObject: Boolean
|
|
8303
|
-
}, '
|
|
8365
|
+
}, 'list-items');
|
|
8304
8366
|
function transformItem$1(props, item) {
|
|
8305
8367
|
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
8306
8368
|
const value = props.returnObject ? item : getPropertyFromItem(item, props.itemValue, title);
|
|
@@ -8328,20 +8390,23 @@
|
|
|
8328
8390
|
}
|
|
8329
8391
|
function useItems(props) {
|
|
8330
8392
|
const items = vue.computed(() => transformItems$1(props, props.items));
|
|
8393
|
+
return useTransformItems(items, value => transformItem$1(props, value));
|
|
8394
|
+
}
|
|
8395
|
+
function useTransformItems(items, transform) {
|
|
8331
8396
|
function transformIn(value) {
|
|
8332
8397
|
return value.map(v => {
|
|
8333
8398
|
const existingItem = items.value.find(item => deepEqual(v, item.value));
|
|
8334
8399
|
// Nullish existingItem means value is a custom input value from combobox
|
|
8335
|
-
// In this case, use transformItem to create an
|
|
8336
|
-
return existingItem ??
|
|
8400
|
+
// In this case, use transformItem to create an { value: unknown } based on value
|
|
8401
|
+
return existingItem ?? transform(v);
|
|
8337
8402
|
});
|
|
8338
8403
|
}
|
|
8339
8404
|
function transformOut(value) {
|
|
8340
8405
|
return value.map(_ref => {
|
|
8341
8406
|
let {
|
|
8342
|
-
|
|
8407
|
+
value
|
|
8343
8408
|
} = _ref;
|
|
8344
|
-
return
|
|
8409
|
+
return value;
|
|
8345
8410
|
});
|
|
8346
8411
|
}
|
|
8347
8412
|
return {
|
|
@@ -8390,6 +8455,8 @@
|
|
|
8390
8455
|
};
|
|
8391
8456
|
}
|
|
8392
8457
|
const makeVListProps = propsFactory({
|
|
8458
|
+
baseColor: String,
|
|
8459
|
+
/* @deprecated */
|
|
8393
8460
|
activeColor: String,
|
|
8394
8461
|
activeClass: String,
|
|
8395
8462
|
bgColor: String,
|
|
@@ -8464,16 +8531,19 @@
|
|
|
8464
8531
|
} = useNested(props);
|
|
8465
8532
|
const lineClasses = vue.computed(() => props.lines ? `v-list--${props.lines}-line` : undefined);
|
|
8466
8533
|
const activeColor = vue.toRef(props, 'activeColor');
|
|
8534
|
+
const baseColor = vue.toRef(props, 'baseColor');
|
|
8467
8535
|
const color = vue.toRef(props, 'color');
|
|
8468
8536
|
createList();
|
|
8469
8537
|
provideDefaults({
|
|
8470
8538
|
VListGroup: {
|
|
8471
8539
|
activeColor,
|
|
8540
|
+
baseColor,
|
|
8472
8541
|
color
|
|
8473
8542
|
},
|
|
8474
8543
|
VListItem: {
|
|
8475
8544
|
activeClass: vue.toRef(props, 'activeClass'),
|
|
8476
8545
|
activeColor,
|
|
8546
|
+
baseColor,
|
|
8477
8547
|
color,
|
|
8478
8548
|
density: vue.toRef(props, 'density'),
|
|
8479
8549
|
disabled: vue.toRef(props, 'disabled'),
|
|
@@ -9498,14 +9568,14 @@
|
|
|
9498
9568
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultDisplayOptions;
|
|
9499
9569
|
return mergeDeep(defaultDisplayOptions, options);
|
|
9500
9570
|
};
|
|
9501
|
-
function getClientWidth(
|
|
9502
|
-
return IN_BROWSER && !
|
|
9571
|
+
function getClientWidth(ssr) {
|
|
9572
|
+
return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === 'object' && ssr.clientWidth || 0;
|
|
9503
9573
|
}
|
|
9504
|
-
function getClientHeight(
|
|
9505
|
-
return IN_BROWSER && !
|
|
9574
|
+
function getClientHeight(ssr) {
|
|
9575
|
+
return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === 'object' && ssr.clientHeight || 0;
|
|
9506
9576
|
}
|
|
9507
|
-
function getPlatform(
|
|
9508
|
-
const userAgent = IN_BROWSER && !
|
|
9577
|
+
function getPlatform(ssr) {
|
|
9578
|
+
const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : 'ssr';
|
|
9509
9579
|
function match(regexp) {
|
|
9510
9580
|
return Boolean(userAgent.match(regexp));
|
|
9511
9581
|
}
|
|
@@ -10329,10 +10399,10 @@
|
|
|
10329
10399
|
'v-select--active-menu': menu.value,
|
|
10330
10400
|
'v-select--chips': !!props.chips,
|
|
10331
10401
|
[`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
|
|
10332
|
-
'v-select--selected': model.value.length
|
|
10402
|
+
'v-select--selected': model.value.length,
|
|
10403
|
+
'v-select--selection-slot': !!slots.selection
|
|
10333
10404
|
}, props.class],
|
|
10334
10405
|
"style": props.style,
|
|
10335
|
-
"appendInnerIcon": props.menuIcon,
|
|
10336
10406
|
"readonly": true,
|
|
10337
10407
|
"placeholder": placeholder,
|
|
10338
10408
|
"onClick:clear": onClear,
|
|
@@ -10364,25 +10434,21 @@
|
|
|
10364
10434
|
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
10365
10435
|
"title": t(props.noDataText)
|
|
10366
10436
|
}, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => {
|
|
10367
|
-
|
|
10368
|
-
|
|
10369
|
-
|
|
10370
|
-
|
|
10371
|
-
|
|
10372
|
-
|
|
10373
|
-
|
|
10374
|
-
|
|
10375
|
-
}
|
|
10376
|
-
return vue.createVNode(VListItem, vue.mergeProps({
|
|
10377
|
-
"key": index
|
|
10378
|
-
}, item.props, {
|
|
10379
|
-
"onClick": () => select(item)
|
|
10380
|
-
}), {
|
|
10437
|
+
const itemProps = vue.mergeProps(item.props, {
|
|
10438
|
+
key: index,
|
|
10439
|
+
onClick: () => select(item)
|
|
10440
|
+
});
|
|
10441
|
+
return slots.item?.({
|
|
10442
|
+
item,
|
|
10443
|
+
index,
|
|
10444
|
+
props: itemProps
|
|
10445
|
+
}) ?? vue.createVNode(VListItem, itemProps, {
|
|
10381
10446
|
prepend: _ref2 => {
|
|
10382
10447
|
let {
|
|
10383
10448
|
isSelected
|
|
10384
10449
|
} = _ref2;
|
|
10385
10450
|
return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
|
|
10451
|
+
"key": item.value,
|
|
10386
10452
|
"modelValue": isSelected,
|
|
10387
10453
|
"ripple": false,
|
|
10388
10454
|
"tabindex": "-1"
|
|
@@ -10439,7 +10505,16 @@
|
|
|
10439
10505
|
}, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
10440
10506
|
"class": "v-select__selection-comma"
|
|
10441
10507
|
}, [vue.createTextVNode(",")])])]);
|
|
10442
|
-
})])
|
|
10508
|
+
})]),
|
|
10509
|
+
'append-inner': function () {
|
|
10510
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
10511
|
+
args[_key] = arguments[_key];
|
|
10512
|
+
}
|
|
10513
|
+
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
|
|
10514
|
+
"class": "v-select__menu-icon",
|
|
10515
|
+
"icon": props.menuIcon
|
|
10516
|
+
}, null) : undefined]);
|
|
10517
|
+
}
|
|
10443
10518
|
});
|
|
10444
10519
|
});
|
|
10445
10520
|
return forwardRefs({
|
|
@@ -10451,6 +10526,8 @@
|
|
|
10451
10526
|
});
|
|
10452
10527
|
|
|
10453
10528
|
/* eslint-disable max-statements */
|
|
10529
|
+
/* eslint-disable no-labels */
|
|
10530
|
+
|
|
10454
10531
|
|
|
10455
10532
|
// Types
|
|
10456
10533
|
|
|
@@ -10520,23 +10597,24 @@
|
|
|
10520
10597
|
const strQuery = vue.computed(() => typeof query?.value !== 'string' && typeof query?.value !== 'number' ? '' : String(query.value));
|
|
10521
10598
|
const filteredItems = vue.ref([]);
|
|
10522
10599
|
const filteredMatches = vue.ref(new Map());
|
|
10600
|
+
const transformedItems = vue.computed(() => options?.transform ? vue.unref(items).map(options?.transform) : vue.unref(items));
|
|
10523
10601
|
vue.watchEffect(() => {
|
|
10524
10602
|
filteredItems.value = [];
|
|
10525
10603
|
filteredMatches.value = new Map();
|
|
10526
|
-
const
|
|
10527
|
-
const results = filterItems(transformedItems, strQuery.value, {
|
|
10604
|
+
const results = filterItems(transformedItems.value, strQuery.value, {
|
|
10528
10605
|
customKeyFilter: props.customKeyFilter,
|
|
10529
10606
|
default: props.customFilter,
|
|
10530
|
-
filterKeys:
|
|
10607
|
+
filterKeys: props.filterKeys,
|
|
10531
10608
|
filterMode: props.filterMode,
|
|
10532
10609
|
noFilter: props.noFilter
|
|
10533
10610
|
});
|
|
10611
|
+
const originalItems = vue.unref(items);
|
|
10534
10612
|
results.forEach(_ref => {
|
|
10535
10613
|
let {
|
|
10536
10614
|
index,
|
|
10537
10615
|
matches
|
|
10538
10616
|
} = _ref;
|
|
10539
|
-
const item =
|
|
10617
|
+
const item = originalItems[index];
|
|
10540
10618
|
filteredItems.value.push(item);
|
|
10541
10619
|
filteredMatches.value.set(item.value, matches);
|
|
10542
10620
|
});
|
|
@@ -10565,8 +10643,9 @@
|
|
|
10565
10643
|
}, [text.substr(matches + length)])]) : text;
|
|
10566
10644
|
}
|
|
10567
10645
|
const makeVAutocompleteProps = propsFactory({
|
|
10568
|
-
|
|
10569
|
-
|
|
10646
|
+
autoSelectFirst: {
|
|
10647
|
+
type: [Boolean, String]
|
|
10648
|
+
},
|
|
10570
10649
|
search: String,
|
|
10571
10650
|
...makeFilterProps({
|
|
10572
10651
|
filterKeys: ['title']
|
|
@@ -10598,6 +10677,7 @@
|
|
|
10598
10677
|
const vTextFieldRef = vue.ref();
|
|
10599
10678
|
const isFocused = vue.shallowRef(false);
|
|
10600
10679
|
const isPristine = vue.shallowRef(true);
|
|
10680
|
+
const listHasFocus = vue.ref(false);
|
|
10601
10681
|
const vMenuRef = vue.ref();
|
|
10602
10682
|
const _menu = useProxiedModel(props, 'menu');
|
|
10603
10683
|
const menu = vue.computed({
|
|
@@ -10641,6 +10721,10 @@
|
|
|
10641
10721
|
});
|
|
10642
10722
|
const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
|
|
10643
10723
|
const selection = vue.computed(() => selections.value[selectionIndex.value]);
|
|
10724
|
+
const highlightFirst = vue.computed(() => {
|
|
10725
|
+
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
10726
|
+
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
10727
|
+
});
|
|
10644
10728
|
const listRef = vue.ref();
|
|
10645
10729
|
function onClear(e) {
|
|
10646
10730
|
if (props.openOnClear) {
|
|
@@ -10652,6 +10736,13 @@
|
|
|
10652
10736
|
if (props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value) return;
|
|
10653
10737
|
menu.value = true;
|
|
10654
10738
|
}
|
|
10739
|
+
function onMousedownMenuIcon(e) {
|
|
10740
|
+
if (isFocused.value) {
|
|
10741
|
+
e.preventDefault();
|
|
10742
|
+
e.stopPropagation();
|
|
10743
|
+
}
|
|
10744
|
+
menu.value = !menu.value;
|
|
10745
|
+
}
|
|
10655
10746
|
function onKeydown(e) {
|
|
10656
10747
|
if (props.readonly || form?.isReadonly.value) return;
|
|
10657
10748
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -10666,10 +10757,16 @@
|
|
|
10666
10757
|
menu.value = false;
|
|
10667
10758
|
}
|
|
10668
10759
|
if (['Enter', 'Escape', 'Tab'].includes(e.key)) {
|
|
10760
|
+
if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {
|
|
10761
|
+
select(filteredItems.value[0]);
|
|
10762
|
+
}
|
|
10669
10763
|
isPristine.value = true;
|
|
10670
10764
|
}
|
|
10671
10765
|
if (e.key === 'ArrowDown') {
|
|
10672
10766
|
listRef.value?.focus('next');
|
|
10767
|
+
if (highlightFirst.value) {
|
|
10768
|
+
listRef.value?.focus('next');
|
|
10769
|
+
}
|
|
10673
10770
|
} else if (e.key === 'ArrowUp') {
|
|
10674
10771
|
listRef.value?.focus('prev');
|
|
10675
10772
|
}
|
|
@@ -10717,6 +10814,12 @@
|
|
|
10717
10814
|
}
|
|
10718
10815
|
function onFocusin(e) {
|
|
10719
10816
|
isFocused.value = true;
|
|
10817
|
+
setTimeout(() => {
|
|
10818
|
+
listHasFocus.value = true;
|
|
10819
|
+
});
|
|
10820
|
+
}
|
|
10821
|
+
function onFocusout(e) {
|
|
10822
|
+
listHasFocus.value = false;
|
|
10720
10823
|
}
|
|
10721
10824
|
const isSelecting = vue.shallowRef(false);
|
|
10722
10825
|
function select(item) {
|
|
@@ -10738,14 +10841,22 @@
|
|
|
10738
10841
|
vue.nextTick(() => isSelecting.value = false);
|
|
10739
10842
|
}
|
|
10740
10843
|
}
|
|
10741
|
-
vue.watch(isFocused, val => {
|
|
10844
|
+
vue.watch(isFocused, (val, oldVal) => {
|
|
10845
|
+
if (val === oldVal) return;
|
|
10742
10846
|
if (val) {
|
|
10743
10847
|
isSelecting.value = true;
|
|
10744
10848
|
search.value = props.multiple ? '' : String(selections.value.at(-1)?.props.title ?? '');
|
|
10745
10849
|
isPristine.value = true;
|
|
10746
10850
|
vue.nextTick(() => isSelecting.value = false);
|
|
10747
10851
|
} else {
|
|
10748
|
-
if (!props.multiple && !search.value) model.value = [];
|
|
10852
|
+
if (!props.multiple && !search.value) model.value = [];else if (highlightFirst.value && !listHasFocus.value && !selections.value.some(_ref2 => {
|
|
10853
|
+
let {
|
|
10854
|
+
value
|
|
10855
|
+
} = _ref2;
|
|
10856
|
+
return value === displayItems.value[0].value;
|
|
10857
|
+
})) {
|
|
10858
|
+
select(displayItems.value[0]);
|
|
10859
|
+
}
|
|
10749
10860
|
menu.value = false;
|
|
10750
10861
|
search.value = '';
|
|
10751
10862
|
selectionIndex.value = -1;
|
|
@@ -10776,10 +10887,10 @@
|
|
|
10776
10887
|
"class": ['v-autocomplete', `v-autocomplete--${props.multiple ? 'multiple' : 'single'}`, {
|
|
10777
10888
|
'v-autocomplete--active-menu': menu.value,
|
|
10778
10889
|
'v-autocomplete--chips': !!props.chips,
|
|
10890
|
+
'v-autocomplete--selection-slot': !!slots.selection,
|
|
10779
10891
|
'v-autocomplete--selecting-index': selectionIndex.value > -1
|
|
10780
10892
|
}, props.class],
|
|
10781
10893
|
"style": props.style,
|
|
10782
|
-
"appendInnerIcon": props.menuIcon,
|
|
10783
10894
|
"readonly": props.readonly,
|
|
10784
10895
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
10785
10896
|
"onClick:clear": onClear,
|
|
@@ -10805,36 +10916,40 @@
|
|
|
10805
10916
|
"selected": selected.value,
|
|
10806
10917
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
10807
10918
|
"onMousedown": e => e.preventDefault(),
|
|
10808
|
-
"onFocusin": onFocusin
|
|
10919
|
+
"onFocusin": onFocusin,
|
|
10920
|
+
"onFocusout": onFocusout
|
|
10809
10921
|
}, {
|
|
10810
10922
|
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
10811
10923
|
"title": t(props.noDataText)
|
|
10812
|
-
}, null)), slots['prepend-item']?.(), displayItems.value.map(item =>
|
|
10813
|
-
item,
|
|
10814
|
-
|
|
10924
|
+
}, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => {
|
|
10925
|
+
const itemProps = vue.mergeProps(item.props, {
|
|
10926
|
+
key: index,
|
|
10927
|
+
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
10815
10928
|
onClick: () => select(item)
|
|
10816
|
-
})
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
|
|
10828
|
-
|
|
10829
|
-
|
|
10830
|
-
|
|
10831
|
-
|
|
10832
|
-
|
|
10833
|
-
|
|
10834
|
-
|
|
10835
|
-
|
|
10836
|
-
|
|
10837
|
-
|
|
10929
|
+
});
|
|
10930
|
+
return slots.item?.({
|
|
10931
|
+
item,
|
|
10932
|
+
index,
|
|
10933
|
+
props: itemProps
|
|
10934
|
+
}) ?? vue.createVNode(VListItem, itemProps, {
|
|
10935
|
+
prepend: _ref3 => {
|
|
10936
|
+
let {
|
|
10937
|
+
isSelected
|
|
10938
|
+
} = _ref3;
|
|
10939
|
+
return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
|
|
10940
|
+
"key": item.value,
|
|
10941
|
+
"modelValue": isSelected,
|
|
10942
|
+
"ripple": false,
|
|
10943
|
+
"tabindex": "-1"
|
|
10944
|
+
}, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
|
|
10945
|
+
"icon": item.props.prependIcon
|
|
10946
|
+
}, null)]);
|
|
10947
|
+
},
|
|
10948
|
+
title: () => {
|
|
10949
|
+
return isPristine.value ? item.title : highlightResult$1(item.title, getMatches(item)?.title, search.value?.length ?? 0);
|
|
10950
|
+
}
|
|
10951
|
+
});
|
|
10952
|
+
}), slots['append-item']?.()]
|
|
10838
10953
|
})]
|
|
10839
10954
|
}), selections.value.map((item, index) => {
|
|
10840
10955
|
function onChipClose(e) {
|
|
@@ -10883,7 +10998,18 @@
|
|
|
10883
10998
|
}, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
10884
10999
|
"class": "v-autocomplete__selection-comma"
|
|
10885
11000
|
}, [vue.createTextVNode(",")])])]);
|
|
10886
|
-
})])
|
|
11001
|
+
})]),
|
|
11002
|
+
'append-inner': function () {
|
|
11003
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
11004
|
+
args[_key] = arguments[_key];
|
|
11005
|
+
}
|
|
11006
|
+
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), props.menuIcon ? vue.createVNode(VIcon, {
|
|
11007
|
+
"class": "v-autocomplete__menu-icon",
|
|
11008
|
+
"icon": props.menuIcon,
|
|
11009
|
+
"onMousedown": onMousedownMenuIcon,
|
|
11010
|
+
"onClick": noop
|
|
11011
|
+
}, null) : undefined]);
|
|
11012
|
+
}
|
|
10887
11013
|
});
|
|
10888
11014
|
});
|
|
10889
11015
|
return forwardRefs({
|
|
@@ -11244,7 +11370,7 @@
|
|
|
11244
11370
|
const makeVBreadcrumbsDividerProps = propsFactory({
|
|
11245
11371
|
divider: [Number, String],
|
|
11246
11372
|
...makeComponentProps()
|
|
11247
|
-
}, 'v-
|
|
11373
|
+
}, 'v-breadcrumbs-divider');
|
|
11248
11374
|
const VBreadcrumbsDivider = genericComponent()({
|
|
11249
11375
|
name: 'VBreadcrumbsDivider',
|
|
11250
11376
|
props: makeVBreadcrumbsDividerProps(),
|
|
@@ -11332,7 +11458,7 @@
|
|
|
11332
11458
|
...makeTagProps({
|
|
11333
11459
|
tag: 'ul'
|
|
11334
11460
|
})
|
|
11335
|
-
}, 'v-
|
|
11461
|
+
}, 'v-breadcrumbs');
|
|
11336
11462
|
const VBreadcrumbs = genericComponent()({
|
|
11337
11463
|
name: 'VBreadcrumbs',
|
|
11338
11464
|
props: makeVBreadcrumbsProps(),
|
|
@@ -11681,6 +11807,7 @@
|
|
|
11681
11807
|
});
|
|
11682
11808
|
|
|
11683
11809
|
// Types
|
|
11810
|
+
|
|
11684
11811
|
const handleGesture = wrapper => {
|
|
11685
11812
|
const {
|
|
11686
11813
|
touchstartX,
|
|
@@ -12461,27 +12588,6 @@
|
|
|
12461
12588
|
|
|
12462
12589
|
// Types
|
|
12463
12590
|
|
|
12464
|
-
function has(obj, key) {
|
|
12465
|
-
return key.every(k => obj.hasOwnProperty(k));
|
|
12466
|
-
}
|
|
12467
|
-
function parseColor(color) {
|
|
12468
|
-
if (!color) return null;
|
|
12469
|
-
let hsva = null;
|
|
12470
|
-
if (typeof color === 'string') {
|
|
12471
|
-
const hex = parseHex(color);
|
|
12472
|
-
hsva = HexToHSV(hex);
|
|
12473
|
-
}
|
|
12474
|
-
if (typeof color === 'object') {
|
|
12475
|
-
if (has(color, ['r', 'g', 'b'])) {
|
|
12476
|
-
hsva = RGBtoHSV(color);
|
|
12477
|
-
} else if (has(color, ['h', 's', 'l'])) {
|
|
12478
|
-
hsva = HSLtoHSV(color);
|
|
12479
|
-
} else if (has(color, ['h', 's', 'v'])) {
|
|
12480
|
-
hsva = color;
|
|
12481
|
-
}
|
|
12482
|
-
}
|
|
12483
|
-
return hsva;
|
|
12484
|
-
}
|
|
12485
12591
|
function stripAlpha(color, stripAlpha) {
|
|
12486
12592
|
if (stripAlpha) {
|
|
12487
12593
|
const {
|
|
@@ -12730,6 +12836,7 @@
|
|
|
12730
12836
|
});
|
|
12731
12837
|
|
|
12732
12838
|
/* eslint-disable max-statements */
|
|
12839
|
+
// Composables
|
|
12733
12840
|
|
|
12734
12841
|
// Types
|
|
12735
12842
|
|
|
@@ -12744,9 +12851,15 @@
|
|
|
12744
12851
|
if ('touches' in e && e.touches.length) return e.touches[0][position];else if ('changedTouches' in e && e.changedTouches.length) return e.changedTouches[0][position];else return e[position];
|
|
12745
12852
|
}
|
|
12746
12853
|
const makeSliderProps = propsFactory({
|
|
12747
|
-
disabled:
|
|
12854
|
+
disabled: {
|
|
12855
|
+
type: Boolean,
|
|
12856
|
+
default: null
|
|
12857
|
+
},
|
|
12748
12858
|
error: Boolean,
|
|
12749
|
-
readonly:
|
|
12859
|
+
readonly: {
|
|
12860
|
+
type: Boolean,
|
|
12861
|
+
default: null
|
|
12862
|
+
},
|
|
12750
12863
|
max: {
|
|
12751
12864
|
type: [Number, String],
|
|
12752
12865
|
default: 100
|
|
@@ -13124,7 +13237,7 @@
|
|
|
13124
13237
|
"aria-valuemin": props.min,
|
|
13125
13238
|
"aria-valuemax": props.max,
|
|
13126
13239
|
"aria-valuenow": props.modelValue,
|
|
13127
|
-
"aria-readonly": readonly.value,
|
|
13240
|
+
"aria-readonly": !!readonly.value,
|
|
13128
13241
|
"aria-orientation": direction.value,
|
|
13129
13242
|
"onKeydown": !readonly.value ? onKeydown : undefined
|
|
13130
13243
|
}, [vue.createVNode("div", {
|
|
@@ -13376,8 +13489,8 @@
|
|
|
13376
13489
|
}, [vue.createVNode("input", {
|
|
13377
13490
|
"id": id.value,
|
|
13378
13491
|
"name": props.name || id.value,
|
|
13379
|
-
"disabled": props.disabled,
|
|
13380
|
-
"readonly": props.readonly,
|
|
13492
|
+
"disabled": !!props.disabled,
|
|
13493
|
+
"readonly": !!props.readonly,
|
|
13381
13494
|
"tabindex": "-1",
|
|
13382
13495
|
"value": model.value
|
|
13383
13496
|
}, null), vue.createVNode(VSliderTrack, {
|
|
@@ -13832,13 +13945,15 @@
|
|
|
13832
13945
|
}, [vue.createVNode("div", null, [props.swatches.map(swatch => vue.createVNode("div", {
|
|
13833
13946
|
"class": "v-color-picker-swatches__swatch"
|
|
13834
13947
|
}, [swatch.map(color => {
|
|
13835
|
-
const
|
|
13948
|
+
const rgba = parseColor(color);
|
|
13949
|
+
const hsva = RGBtoHSV(rgba);
|
|
13950
|
+
const background = RGBtoCSS(rgba);
|
|
13836
13951
|
return vue.createVNode("div", {
|
|
13837
13952
|
"class": "v-color-picker-swatches__color",
|
|
13838
13953
|
"onClick": () => hsva && emit('update:color', hsva)
|
|
13839
13954
|
}, [vue.createVNode("div", {
|
|
13840
13955
|
"style": {
|
|
13841
|
-
background
|
|
13956
|
+
background
|
|
13842
13957
|
}
|
|
13843
13958
|
}, [props.color && deepEqual(props.color, hsva) ? vue.createVNode(VIcon, {
|
|
13844
13959
|
"size": "x-small",
|
|
@@ -13899,8 +14014,13 @@
|
|
|
13899
14014
|
const mode = useProxiedModel(props, 'mode');
|
|
13900
14015
|
const lastPickedColor = vue.ref(null);
|
|
13901
14016
|
const currentColor = useProxiedModel(props, 'modelValue', undefined, v => {
|
|
13902
|
-
let c
|
|
13903
|
-
|
|
14017
|
+
let c;
|
|
14018
|
+
try {
|
|
14019
|
+
c = RGBtoHSV(parseColor(v));
|
|
14020
|
+
} catch (err) {
|
|
14021
|
+
consoleWarn(err);
|
|
14022
|
+
return null;
|
|
14023
|
+
}
|
|
13904
14024
|
if (lastPickedColor.value) {
|
|
13905
14025
|
c = {
|
|
13906
14026
|
...c,
|
|
@@ -13999,8 +14119,9 @@
|
|
|
13999
14119
|
}, [text.substr(matches + length)])]) : text;
|
|
14000
14120
|
}
|
|
14001
14121
|
const makeVComboboxProps = propsFactory({
|
|
14002
|
-
|
|
14003
|
-
|
|
14122
|
+
autoSelectFirst: {
|
|
14123
|
+
type: [Boolean, String]
|
|
14124
|
+
},
|
|
14004
14125
|
delimiters: Array,
|
|
14005
14126
|
...makeFilterProps({
|
|
14006
14127
|
filterKeys: ['title']
|
|
@@ -14036,6 +14157,7 @@
|
|
|
14036
14157
|
const vTextFieldRef = vue.ref();
|
|
14037
14158
|
const isFocused = vue.shallowRef(false);
|
|
14038
14159
|
const isPristine = vue.shallowRef(true);
|
|
14160
|
+
const listHasFocus = vue.ref(false);
|
|
14039
14161
|
const vMenuRef = vue.ref();
|
|
14040
14162
|
const _menu = useProxiedModel(props, 'menu');
|
|
14041
14163
|
const menu = vue.computed({
|
|
@@ -14118,6 +14240,10 @@
|
|
|
14118
14240
|
});
|
|
14119
14241
|
const selected = vue.computed(() => selections.value.map(selection => selection.props.value));
|
|
14120
14242
|
const selection = vue.computed(() => selections.value[selectionIndex.value]);
|
|
14243
|
+
const highlightFirst = vue.computed(() => {
|
|
14244
|
+
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
14245
|
+
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
14246
|
+
});
|
|
14121
14247
|
const listRef = vue.ref();
|
|
14122
14248
|
function onClear(e) {
|
|
14123
14249
|
cleared = true;
|
|
@@ -14129,6 +14255,13 @@
|
|
|
14129
14255
|
if (props.hideNoData && !items.value.length || props.readonly || form?.isReadonly.value) return;
|
|
14130
14256
|
menu.value = true;
|
|
14131
14257
|
}
|
|
14258
|
+
function onMousedownMenuIcon(e) {
|
|
14259
|
+
if (isFocused.value) {
|
|
14260
|
+
e.preventDefault();
|
|
14261
|
+
e.stopPropagation();
|
|
14262
|
+
}
|
|
14263
|
+
menu.value = !menu.value;
|
|
14264
|
+
}
|
|
14132
14265
|
function onKeydown(e) {
|
|
14133
14266
|
if (props.readonly || form?.isReadonly.value) return;
|
|
14134
14267
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
@@ -14143,6 +14276,9 @@
|
|
|
14143
14276
|
menu.value = false;
|
|
14144
14277
|
}
|
|
14145
14278
|
if (['Enter', 'Escape', 'Tab'].includes(e.key)) {
|
|
14279
|
+
if (highlightFirst.value && ['Enter', 'Tab'].includes(e.key)) {
|
|
14280
|
+
select(filteredItems.value[0]);
|
|
14281
|
+
}
|
|
14146
14282
|
isPristine.value = true;
|
|
14147
14283
|
}
|
|
14148
14284
|
if (e.key === 'ArrowDown') {
|
|
@@ -14217,17 +14353,31 @@
|
|
|
14217
14353
|
}
|
|
14218
14354
|
function onFocusin(e) {
|
|
14219
14355
|
isFocused.value = true;
|
|
14356
|
+
setTimeout(() => {
|
|
14357
|
+
listHasFocus.value = true;
|
|
14358
|
+
});
|
|
14359
|
+
}
|
|
14360
|
+
function onFocusout(e) {
|
|
14361
|
+
listHasFocus.value = false;
|
|
14220
14362
|
}
|
|
14221
14363
|
vue.watch(filteredItems, val => {
|
|
14222
14364
|
if (!val.length && props.hideNoData) menu.value = false;
|
|
14223
14365
|
});
|
|
14224
|
-
vue.watch(isFocused, val => {
|
|
14225
|
-
if (val) return;
|
|
14366
|
+
vue.watch(isFocused, (val, oldVal) => {
|
|
14367
|
+
if (val || val === oldVal) return;
|
|
14226
14368
|
selectionIndex.value = -1;
|
|
14227
14369
|
menu.value = false;
|
|
14228
|
-
if (!
|
|
14229
|
-
|
|
14230
|
-
|
|
14370
|
+
if (highlightFirst.value && !listHasFocus.value && !selections.value.some(_ref2 => {
|
|
14371
|
+
let {
|
|
14372
|
+
value
|
|
14373
|
+
} = _ref2;
|
|
14374
|
+
return value === displayItems.value[0].value;
|
|
14375
|
+
})) {
|
|
14376
|
+
select(displayItems.value[0]);
|
|
14377
|
+
} else if (props.multiple && search.value) {
|
|
14378
|
+
model.value = [...model.value, transformItem$1(props, search.value)];
|
|
14379
|
+
search.value = '';
|
|
14380
|
+
}
|
|
14231
14381
|
});
|
|
14232
14382
|
useRender(() => {
|
|
14233
14383
|
const hasChips = !!(props.chips || slots.chip);
|
|
@@ -14248,11 +14398,11 @@
|
|
|
14248
14398
|
"class": ['v-combobox', {
|
|
14249
14399
|
'v-combobox--active-menu': menu.value,
|
|
14250
14400
|
'v-combobox--chips': !!props.chips,
|
|
14401
|
+
'v-combobox--selection-slot': !!slots.selection,
|
|
14251
14402
|
'v-combobox--selecting-index': selectionIndex.value > -1,
|
|
14252
14403
|
[`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
|
|
14253
14404
|
}, props.class],
|
|
14254
14405
|
"style": props.style,
|
|
14255
|
-
"appendInnerIcon": props.items.length ? props.menuIcon : undefined,
|
|
14256
14406
|
"readonly": props.readonly,
|
|
14257
14407
|
"placeholder": isDirty ? undefined : props.placeholder,
|
|
14258
14408
|
"onClick:clear": onClear,
|
|
@@ -14278,36 +14428,40 @@
|
|
|
14278
14428
|
"selected": selected.value,
|
|
14279
14429
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
14280
14430
|
"onMousedown": e => e.preventDefault(),
|
|
14281
|
-
"onFocusin": onFocusin
|
|
14431
|
+
"onFocusin": onFocusin,
|
|
14432
|
+
"onFocusout": onFocusout
|
|
14282
14433
|
}, {
|
|
14283
14434
|
default: () => [!displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? vue.createVNode(VListItem, {
|
|
14284
14435
|
"title": t(props.noDataText)
|
|
14285
|
-
}, null)), slots['prepend-item']?.(), displayItems.value.map(item =>
|
|
14286
|
-
item,
|
|
14287
|
-
|
|
14436
|
+
}, null)), slots['prepend-item']?.(), displayItems.value.map((item, index) => {
|
|
14437
|
+
const itemProps = vue.mergeProps(item.props, {
|
|
14438
|
+
key: index,
|
|
14439
|
+
active: highlightFirst.value && index === 0 ? true : undefined,
|
|
14288
14440
|
onClick: () => select(item)
|
|
14289
|
-
})
|
|
14290
|
-
|
|
14291
|
-
|
|
14292
|
-
|
|
14293
|
-
|
|
14294
|
-
|
|
14295
|
-
|
|
14296
|
-
|
|
14297
|
-
|
|
14298
|
-
|
|
14299
|
-
|
|
14300
|
-
|
|
14301
|
-
|
|
14302
|
-
|
|
14303
|
-
|
|
14304
|
-
|
|
14305
|
-
|
|
14306
|
-
|
|
14307
|
-
|
|
14308
|
-
|
|
14309
|
-
|
|
14310
|
-
|
|
14441
|
+
});
|
|
14442
|
+
return slots.item?.({
|
|
14443
|
+
item,
|
|
14444
|
+
index,
|
|
14445
|
+
props: itemProps
|
|
14446
|
+
}) ?? vue.createVNode(VListItem, itemProps, {
|
|
14447
|
+
prepend: _ref3 => {
|
|
14448
|
+
let {
|
|
14449
|
+
isSelected
|
|
14450
|
+
} = _ref3;
|
|
14451
|
+
return vue.createVNode(vue.Fragment, null, [props.multiple && !props.hideSelected ? vue.createVNode(VCheckboxBtn, {
|
|
14452
|
+
"key": item.value,
|
|
14453
|
+
"modelValue": isSelected,
|
|
14454
|
+
"ripple": false,
|
|
14455
|
+
"tabindex": "-1"
|
|
14456
|
+
}, null) : undefined, item.props.prependIcon && vue.createVNode(VIcon, {
|
|
14457
|
+
"icon": item.props.prependIcon
|
|
14458
|
+
}, null)]);
|
|
14459
|
+
},
|
|
14460
|
+
title: () => {
|
|
14461
|
+
return isPristine.value ? item.title : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0);
|
|
14462
|
+
}
|
|
14463
|
+
});
|
|
14464
|
+
}), slots['append-item']?.()]
|
|
14311
14465
|
})]
|
|
14312
14466
|
}), selections.value.map((item, index) => {
|
|
14313
14467
|
function onChipClose(e) {
|
|
@@ -14356,7 +14510,18 @@
|
|
|
14356
14510
|
}, [item.title, props.multiple && index < selections.value.length - 1 && vue.createVNode("span", {
|
|
14357
14511
|
"class": "v-combobox__selection-comma"
|
|
14358
14512
|
}, [vue.createTextVNode(",")])])]);
|
|
14359
|
-
})])
|
|
14513
|
+
})]),
|
|
14514
|
+
'append-inner': function () {
|
|
14515
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
14516
|
+
args[_key] = arguments[_key];
|
|
14517
|
+
}
|
|
14518
|
+
return vue.createVNode(vue.Fragment, null, [slots['append-inner']?.(...args), (!props.hideNoData || props.items.length) && props.menuIcon ? vue.createVNode(VIcon, {
|
|
14519
|
+
"class": "v-combobox__menu-icon",
|
|
14520
|
+
"icon": props.menuIcon,
|
|
14521
|
+
"onMousedown": onMousedownMenuIcon,
|
|
14522
|
+
"onClick": noop
|
|
14523
|
+
}, null) : undefined]);
|
|
14524
|
+
}
|
|
14360
14525
|
});
|
|
14361
14526
|
});
|
|
14362
14527
|
return forwardRefs({
|
|
@@ -14787,6 +14952,7 @@
|
|
|
14787
14952
|
const vFieldRef = vue.ref();
|
|
14788
14953
|
const inputRef = vue.ref();
|
|
14789
14954
|
const isActive = vue.computed(() => isFocused.value || props.active);
|
|
14955
|
+
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
14790
14956
|
function onFocus() {
|
|
14791
14957
|
if (inputRef.value !== document.activeElement) {
|
|
14792
14958
|
inputRef.value?.focus();
|
|
@@ -14830,10 +14996,15 @@
|
|
|
14830
14996
|
"ref": vInputRef,
|
|
14831
14997
|
"modelValue": model.value,
|
|
14832
14998
|
"onUpdate:modelValue": $event => model.value = $event,
|
|
14833
|
-
"class": ['v-file-input',
|
|
14999
|
+
"class": ['v-file-input', {
|
|
15000
|
+
'v-file-input--chips': !!props.chips,
|
|
15001
|
+
'v-file-input--selection-slot': !!slots.selection,
|
|
15002
|
+
'v-text-field--plain-underlined': isPlainOrUnderlined.value
|
|
15003
|
+
}, props.class],
|
|
14834
15004
|
"style": props.style,
|
|
14835
15005
|
"onClick:prepend": onClickPrepend
|
|
14836
15006
|
}, rootAttrs, inputProps, {
|
|
15007
|
+
"centerAffix": !isPlainOrUnderlined.value,
|
|
14837
15008
|
"focused": isFocused.value
|
|
14838
15009
|
}), {
|
|
14839
15010
|
...slots,
|
|
@@ -15385,9 +15556,6 @@
|
|
|
15385
15556
|
});
|
|
15386
15557
|
|
|
15387
15558
|
// Composables
|
|
15388
|
-
|
|
15389
|
-
// Types
|
|
15390
|
-
|
|
15391
15559
|
const VItem = genericComponent()({
|
|
15392
15560
|
name: 'VItem',
|
|
15393
15561
|
props: makeGroupItemProps(),
|
|
@@ -16804,15 +16972,15 @@
|
|
|
16804
16972
|
}, [vue.createVNode("input", {
|
|
16805
16973
|
"id": `${id.value}_start`,
|
|
16806
16974
|
"name": props.name || id.value,
|
|
16807
|
-
"disabled": props.disabled,
|
|
16808
|
-
"readonly": props.readonly,
|
|
16975
|
+
"disabled": !!props.disabled,
|
|
16976
|
+
"readonly": !!props.readonly,
|
|
16809
16977
|
"tabindex": "-1",
|
|
16810
16978
|
"value": model.value[0]
|
|
16811
16979
|
}, null), vue.createVNode("input", {
|
|
16812
16980
|
"id": `${id.value}_stop`,
|
|
16813
16981
|
"name": props.name || id.value,
|
|
16814
|
-
"disabled": props.disabled,
|
|
16815
|
-
"readonly": props.readonly,
|
|
16982
|
+
"disabled": !!props.disabled,
|
|
16983
|
+
"readonly": !!props.readonly,
|
|
16816
16984
|
"tabindex": "-1",
|
|
16817
16985
|
"value": model.value[1]
|
|
16818
16986
|
}, null), vue.createVNode(VSliderTrack, {
|
|
@@ -18089,6 +18257,11 @@
|
|
|
18089
18257
|
}
|
|
18090
18258
|
}
|
|
18091
18259
|
const sizerRef = vue.ref();
|
|
18260
|
+
const rows = vue.ref(+props.rows);
|
|
18261
|
+
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
18262
|
+
vue.watchEffect(() => {
|
|
18263
|
+
if (!props.autoGrow) rows.value = +props.rows;
|
|
18264
|
+
});
|
|
18092
18265
|
function calculateInputHeight() {
|
|
18093
18266
|
if (!props.autoGrow) return;
|
|
18094
18267
|
vue.nextTick(() => {
|
|
@@ -18100,7 +18273,9 @@
|
|
|
18100
18273
|
const lineHeight = parseFloat(style.lineHeight);
|
|
18101
18274
|
const minHeight = Math.max(parseFloat(props.rows) * lineHeight + padding, parseFloat(fieldStyle.getPropertyValue('--v-input-control-height')));
|
|
18102
18275
|
const maxHeight = parseFloat(props.maxRows) * lineHeight + padding || Infinity;
|
|
18103
|
-
|
|
18276
|
+
const newHeight = clamp(height ?? 0, minHeight, maxHeight);
|
|
18277
|
+
rows.value = Math.floor((newHeight - padding) / lineHeight);
|
|
18278
|
+
controlHeight.value = convertToUnit(newHeight);
|
|
18104
18279
|
});
|
|
18105
18280
|
}
|
|
18106
18281
|
vue.onMounted(calculateInputHeight);
|
|
@@ -18140,10 +18315,11 @@
|
|
|
18140
18315
|
'v-text-field--suffixed': props.suffix,
|
|
18141
18316
|
'v-textarea--auto-grow': props.autoGrow,
|
|
18142
18317
|
'v-textarea--no-resize': props.noResize || props.autoGrow,
|
|
18143
|
-
'v-text-field--
|
|
18318
|
+
'v-text-field--plain-underlined': isPlainOrUnderlined.value
|
|
18144
18319
|
}, props.class],
|
|
18145
18320
|
"style": props.style
|
|
18146
18321
|
}, rootAttrs, inputProps, {
|
|
18322
|
+
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
|
18147
18323
|
"focused": isFocused.value
|
|
18148
18324
|
}), {
|
|
18149
18325
|
...slots,
|
|
@@ -18167,6 +18343,7 @@
|
|
|
18167
18343
|
"role": "textbox"
|
|
18168
18344
|
}, fieldProps, {
|
|
18169
18345
|
"active": isActive.value || isDirty.value,
|
|
18346
|
+
"centerAffix": rows.value === 1 && !isPlainOrUnderlined.value,
|
|
18170
18347
|
"dirty": isDirty.value || props.dirty,
|
|
18171
18348
|
"disabled": isDisabled.value,
|
|
18172
18349
|
"focused": isFocused.value,
|
|
@@ -19547,7 +19724,7 @@
|
|
|
19547
19724
|
date
|
|
19548
19725
|
};
|
|
19549
19726
|
}
|
|
19550
|
-
const version$1 = "3.
|
|
19727
|
+
const version$1 = "3.3.0";
|
|
19551
19728
|
createVuetify$1.version = version$1;
|
|
19552
19729
|
|
|
19553
19730
|
// Vue's inject() can only be used in setup
|
|
@@ -19567,7 +19744,7 @@
|
|
|
19567
19744
|
...options
|
|
19568
19745
|
});
|
|
19569
19746
|
};
|
|
19570
|
-
const version = "3.
|
|
19747
|
+
const version = "3.3.0";
|
|
19571
19748
|
createVuetify.version = version;
|
|
19572
19749
|
|
|
19573
19750
|
exports.components = components;
|