vuetify 3.3.2 → 3.3.4
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 +2 -0
- package/dist/json/attributes.json +460 -20
- package/dist/json/importMap-labs.json +32 -0
- package/dist/json/importMap.json +24 -24
- package/dist/json/tags.json +150 -0
- package/dist/json/web-types.json +1639 -40
- package/dist/vuetify-labs.css +499 -230
- package/dist/vuetify-labs.d.ts +5421 -326
- package/dist/vuetify-labs.esm.js +2124 -1098
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +2123 -1097
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +219 -210
- package/dist/vuetify.d.ts +314 -165
- package/dist/vuetify.esm.js +330 -179
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +329 -178
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +792 -784
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +34 -27
- package/lib/blueprints/md1.d.mts +34 -27
- package/lib/blueprints/md2.d.mts +34 -27
- package/lib/blueprints/md3.d.mts +34 -27
- package/lib/components/VAppBar/VAppBar.mjs +3 -10
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.mts +24 -8
- package/lib/components/VAutocomplete/VAutocomplete.css +4 -22
- package/lib/components/VAutocomplete/VAutocomplete.mjs +17 -12
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +6 -17
- package/lib/components/VBreadcrumbs/index.d.mts +7 -7
- package/lib/components/VBtn/VBtn.css +11 -11
- package/lib/components/VBtn/VBtn.mjs +1 -1
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +1 -1
- package/lib/components/VBtn/_mixins.scss +1 -1
- package/lib/components/VBtn/index.d.mts +24 -8
- package/lib/components/VCard/VCard.mjs +1 -1
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/index.d.mts +44 -28
- package/lib/components/VCheckbox/VCheckbox.mjs +8 -1
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.mts +7 -1
- package/lib/components/VChip/VChip.css +67 -67
- package/lib/components/VChip/VChip.mjs +2 -2
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/_variables.scss +1 -1
- package/lib/components/VChip/index.d.mts +48 -32
- package/lib/components/VCombobox/VCombobox.css +4 -22
- package/lib/components/VCombobox/VCombobox.mjs +16 -8
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +6 -17
- package/lib/components/VCombobox/_variables.scss +3 -3
- package/lib/components/VCounter/index.d.mts +8 -8
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.mts +56 -24
- package/lib/components/VField/VField.css +72 -8
- package/lib/components/VField/VField.sass +10 -5
- package/lib/components/VField/_mixins.sass +7 -0
- package/lib/components/VFileInput/VFileInput.css +2 -17
- package/lib/components/VFileInput/VFileInput.mjs +0 -2
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +2 -11
- package/lib/components/VFileInput/_variables.scss +3 -3
- package/lib/components/VIcon/VIcon.mjs +2 -2
- package/lib/components/VIcon/VIcon.mjs.map +1 -1
- package/lib/components/VInput/VInput.css +14 -1
- package/lib/components/VInput/VInput.sass +6 -0
- package/lib/components/VInput/_variables.scss +5 -1
- package/lib/components/VList/VListItem.mjs +2 -2
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +24 -8
- package/lib/components/VMenu/VMenu.mjs +29 -3
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.mjs +7 -4
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +29 -35
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.css +2 -20
- package/lib/components/VSelect/VSelect.mjs +16 -11
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/VSelect.sass +2 -12
- package/lib/components/VSelect/_variables.scss +3 -3
- package/lib/components/VSlider/VSliderThumb.mjs +2 -2
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/VTabs/VTab.mjs +2 -2
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTabs.css +1 -0
- package/lib/components/VTabs/VTabs.sass +1 -0
- package/lib/components/VTabs/index.d.mts +24 -8
- package/lib/components/VTextarea/VTextarea.css +7 -7
- package/lib/components/VTextarea/VTextarea.sass +9 -9
- package/lib/components/VTimePicker/VTimePickerTitle.mjs +1 -1
- package/lib/components/index.d.mts +266 -132
- package/lib/components/index.mjs +1 -2
- package/lib/components/index.mjs.map +1 -1
- package/lib/composables/icons.mjs.map +1 -1
- package/lib/composables/list-items.mjs +5 -2
- package/lib/composables/list-items.mjs.map +1 -1
- package/lib/composables/nested/nested.mjs +1 -1
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/theme.mjs +1 -1
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/iconsets/fa-svg.d.mts +1 -0
- package/lib/iconsets/fa.d.mts +1 -0
- package/lib/iconsets/fa.mjs +2 -1
- package/lib/iconsets/fa.mjs.map +1 -1
- package/lib/iconsets/fa4.d.mts +1 -0
- package/lib/iconsets/fa4.mjs +2 -1
- package/lib/iconsets/fa4.mjs.map +1 -1
- package/lib/iconsets/md.d.mts +1 -0
- package/lib/iconsets/md.mjs +2 -1
- package/lib/iconsets/md.mjs.map +1 -1
- package/lib/iconsets/mdi-svg.d.mts +1 -0
- package/lib/iconsets/mdi-svg.mjs +36 -35
- package/lib/iconsets/mdi-svg.mjs.map +1 -1
- package/lib/iconsets/mdi.d.mts +1 -0
- package/lib/iconsets/mdi.mjs +2 -1
- package/lib/iconsets/mdi.mjs.map +1 -1
- package/lib/index.d.mts +48 -33
- package/lib/labs/VDataTable/VDataTable.css +4 -14
- package/lib/labs/VDataTable/VDataTable.sass +6 -15
- package/lib/labs/VDataTable/VDataTableHeaders.mjs +2 -2
- package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +16 -12
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/headers.mjs +2 -5
- package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +3 -2
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDateInput/VDateInput.mjs +127 -0
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -0
- package/lib/labs/VDateInput/VDateInput.sass +11 -0
- package/lib/labs/VDateInput/VDateRangeInput.mjs +223 -0
- package/lib/labs/VDateInput/VDateRangeInput.mjs.map +1 -0
- package/lib/labs/VDateInput/VDateRangeInput.sass +10 -0
- package/lib/labs/VDateInput/composables.mjs +59 -0
- package/lib/labs/VDateInput/composables.mjs.map +1 -0
- package/lib/labs/VDateInput/index.d.mts +1352 -0
- package/lib/labs/VDateInput/index.mjs +3 -0
- package/lib/labs/VDateInput/index.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDateCard.css +33 -0
- package/lib/labs/VDatePicker/VDateCard.mjs +112 -0
- package/lib/labs/VDatePicker/VDateCard.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDateCard.sass +32 -0
- package/lib/labs/VDatePicker/VDatePicker.css +23 -0
- package/lib/labs/VDatePicker/VDatePicker.mjs +172 -0
- package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePicker.sass +23 -0
- package/lib/labs/VDatePicker/VDatePickerControls.css +15 -0
- package/lib/labs/VDatePicker/VDatePickerControls.mjs +80 -0
- package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerControls.sass +15 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.css +54 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.mjs +75 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerHeader.sass +51 -0
- package/lib/labs/VDatePicker/VDatePickerInput.sass +17 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.css +77 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs +286 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerMonth.sass +69 -0
- package/lib/{components → labs}/VDatePicker/VDatePickerTitle.mjs +1 -1
- package/lib/labs/VDatePicker/VDatePickerTitle.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerYears.css +18 -0
- package/lib/labs/VDatePicker/VDatePickerYears.mjs +64 -0
- package/lib/labs/VDatePicker/VDatePickerYears.mjs.map +1 -0
- package/lib/labs/VDatePicker/VDatePickerYears.sass +16 -0
- package/lib/labs/VDatePicker/composables.mjs +33 -0
- package/lib/labs/VDatePicker/composables.mjs.map +1 -0
- package/lib/labs/VDatePicker/index.d.mts +4430 -0
- package/lib/labs/VDatePicker/index.mjs +7 -0
- package/lib/labs/VDatePicker/index.mjs.map +1 -0
- package/lib/labs/VDatePicker/mixins/date-picker-table.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/createNativeLocaleFormatter.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/eventHelpers.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/index.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/isDateAllowed.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/monthChange.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/pad.mjs.map +1 -0
- package/lib/labs/VDatePicker/util/sanitizeDateString.mjs.map +1 -0
- package/lib/labs/VDatePicker/utils.mjs +69 -0
- package/lib/labs/VDatePicker/utils.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.mjs +87 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.sass +33 -0
- package/lib/labs/VDateRangePicker/VDateRangePicker.mjs +131 -0
- package/lib/labs/VDateRangePicker/VDateRangePicker.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangePicker.sass +21 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerHeader.mjs +103 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerHeader.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerHeader.sass +39 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerMonth.mjs +61 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerMonth.mjs.map +1 -0
- package/lib/labs/VDateRangePicker/VDateRangePickerMonth.sass +12 -0
- package/lib/labs/VDateRangePicker/index.d.mts +1065 -0
- package/lib/labs/VDateRangePicker/index.mjs +3 -0
- package/lib/labs/VDateRangePicker/index.mjs.map +1 -0
- package/lib/labs/VPicker/VPicker.css +57 -0
- package/lib/labs/VPicker/VPicker.mjs +47 -0
- package/lib/labs/VPicker/VPicker.mjs.map +1 -0
- package/lib/labs/VPicker/VPicker.sass +53 -0
- package/lib/labs/VPicker/VPickerTitle.mjs +4 -0
- package/lib/labs/VPicker/VPickerTitle.mjs.map +1 -0
- package/lib/labs/VPicker/index.d.mts +541 -0
- package/lib/labs/VPicker/index.mjs +3 -0
- package/lib/labs/VPicker/index.mjs.map +1 -0
- package/lib/labs/components.d.mts +5136 -198
- package/lib/labs/components.mjs +2 -0
- package/lib/labs/components.mjs.map +1 -1
- package/lib/labs/date/DateAdapter.mjs.map +1 -1
- package/lib/labs/date/adapters/vuetify.d.mts +28 -25
- package/lib/labs/date/adapters/vuetify.mjs +65 -75
- package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
- package/lib/labs/date/date.mjs +82 -11
- package/lib/labs/date/date.mjs.map +1 -1
- package/lib/labs/date/index.d.mts +31 -30
- package/lib/locale/af.mjs +14 -5
- package/lib/locale/af.mjs.map +1 -1
- package/lib/locale/ar.mjs +14 -5
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/az.mjs +14 -5
- package/lib/locale/az.mjs.map +1 -1
- package/lib/locale/bg.mjs +14 -5
- package/lib/locale/bg.mjs.map +1 -1
- package/lib/locale/ca.mjs +14 -5
- package/lib/locale/ca.mjs.map +1 -1
- package/lib/locale/ckb.mjs +14 -5
- package/lib/locale/ckb.mjs.map +1 -1
- package/lib/locale/cs.mjs +14 -5
- package/lib/locale/cs.mjs.map +1 -1
- package/lib/locale/da.mjs +14 -5
- package/lib/locale/da.mjs.map +1 -1
- package/lib/locale/de.mjs +14 -5
- package/lib/locale/de.mjs.map +1 -1
- package/lib/locale/el.mjs +14 -5
- package/lib/locale/el.mjs.map +1 -1
- package/lib/locale/en.mjs +14 -5
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +14 -5
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/et.mjs +14 -5
- package/lib/locale/et.mjs.map +1 -1
- package/lib/locale/fa.mjs +14 -5
- package/lib/locale/fa.mjs.map +1 -1
- package/lib/locale/fi.mjs +14 -5
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/fr.mjs +14 -5
- package/lib/locale/fr.mjs.map +1 -1
- package/lib/locale/he.mjs +14 -5
- package/lib/locale/he.mjs.map +1 -1
- package/lib/locale/hr.mjs +14 -5
- package/lib/locale/hr.mjs.map +1 -1
- package/lib/locale/hu.mjs +14 -5
- package/lib/locale/hu.mjs.map +1 -1
- package/lib/locale/id.mjs +14 -5
- package/lib/locale/id.mjs.map +1 -1
- package/lib/locale/index.d.mts +588 -210
- package/lib/locale/it.mjs +14 -5
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/ja.mjs +14 -5
- package/lib/locale/ja.mjs.map +1 -1
- package/lib/locale/ko.mjs +14 -5
- package/lib/locale/ko.mjs.map +1 -1
- package/lib/locale/lt.mjs +14 -5
- package/lib/locale/lt.mjs.map +1 -1
- package/lib/locale/lv.mjs +14 -5
- package/lib/locale/lv.mjs.map +1 -1
- package/lib/locale/nl.mjs +14 -5
- package/lib/locale/nl.mjs.map +1 -1
- package/lib/locale/no.mjs +14 -5
- package/lib/locale/no.mjs.map +1 -1
- package/lib/locale/pl.mjs +14 -5
- package/lib/locale/pl.mjs.map +1 -1
- package/lib/locale/pt.mjs +14 -5
- package/lib/locale/pt.mjs.map +1 -1
- package/lib/locale/ro.mjs +14 -5
- package/lib/locale/ro.mjs.map +1 -1
- package/lib/locale/ru.mjs +14 -5
- package/lib/locale/ru.mjs.map +1 -1
- package/lib/locale/sk.mjs +14 -5
- package/lib/locale/sk.mjs.map +1 -1
- package/lib/locale/sl.mjs +14 -5
- package/lib/locale/sl.mjs.map +1 -1
- package/lib/locale/sr-Cyrl.mjs +14 -5
- package/lib/locale/sr-Cyrl.mjs.map +1 -1
- package/lib/locale/sr-Latn.mjs +14 -5
- package/lib/locale/sr-Latn.mjs.map +1 -1
- package/lib/locale/sv.mjs +14 -5
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/locale/th.mjs +14 -5
- package/lib/locale/th.mjs.map +1 -1
- package/lib/locale/tr.mjs +14 -5
- package/lib/locale/tr.mjs.map +1 -1
- package/lib/locale/uk.mjs +14 -5
- package/lib/locale/uk.mjs.map +1 -1
- package/lib/locale/vi.mjs +14 -5
- package/lib/locale/vi.mjs.map +1 -1
- package/lib/locale/zh-Hans.mjs +14 -5
- package/lib/locale/zh-Hans.mjs.map +1 -1
- package/lib/locale/zh-Hant.mjs +14 -5
- package/lib/locale/zh-Hant.mjs.map +1 -1
- package/lib/util/bindProps.mjs +49 -0
- package/lib/util/bindProps.mjs.map +1 -0
- package/lib/util/dateTimeUtils.mjs +68 -0
- package/lib/util/dateTimeUtils.mjs.map +1 -1
- package/lib/util/helpers.mjs +3 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/index.mjs +1 -0
- package/lib/util/index.mjs.map +1 -1
- package/package.json +5 -2
- package/lib/components/VDatePicker/VDatePicker.mjs +0 -475
- package/lib/components/VDatePicker/VDatePicker.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerDateTable.mjs +0 -120
- package/lib/components/VDatePicker/VDatePickerDateTable.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerHeader.mjs +0 -136
- package/lib/components/VDatePicker/VDatePickerHeader.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerHeader.sass +0 -46
- package/lib/components/VDatePicker/VDatePickerMonthTable.mjs +0 -48
- package/lib/components/VDatePicker/VDatePickerMonthTable.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerYears.mjs +0 -84
- package/lib/components/VDatePicker/VDatePickerYears.mjs.map +0 -1
- package/lib/components/VDatePicker/VDatePickerYears.sass +0 -30
- package/lib/components/VDatePicker/index.mjs +0 -18
- package/lib/components/VDatePicker/index.mjs.map +0 -1
- package/lib/components/VDatePicker/mixins/date-picker-table.mjs.map +0 -1
- package/lib/components/VDatePicker/util/createNativeLocaleFormatter.mjs.map +0 -1
- package/lib/components/VDatePicker/util/eventHelpers.mjs.map +0 -1
- package/lib/components/VDatePicker/util/index.mjs.map +0 -1
- package/lib/components/VDatePicker/util/isDateAllowed.mjs.map +0 -1
- package/lib/components/VDatePicker/util/monthChange.mjs.map +0 -1
- package/lib/components/VDatePicker/util/pad.mjs.map +0 -1
- package/lib/components/VDatePicker/util/sanitizeDateString.mjs.map +0 -1
- package/lib/components/VPicker/VPicker.mjs +0 -86
- package/lib/components/VPicker/VPicker.mjs.map +0 -1
- package/lib/components/VPicker/VPicker.sass +0 -94
- package/lib/components/VPicker/index.mjs +0 -4
- package/lib/components/VPicker/index.mjs.map +0 -1
- /package/lib/{components → labs}/VDatePicker/VDatePickerTable.sass +0 -0
- /package/lib/{components → labs}/VDatePicker/VDatePickerTitle.sass +0 -0
- /package/lib/{components → labs}/VDatePicker/_variables.scss +0 -0
- /package/lib/{components → labs}/VDatePicker/mixins/date-picker-table.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/createNativeLocaleFormatter.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/eventHelpers.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/index.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/isDateAllowed.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/monthChange.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/pad.mjs +0 -0
- /package/lib/{components → labs}/VDatePicker/util/sanitizeDateString.mjs +0 -0
- /package/lib/{components → labs}/VPicker/_variables.scss +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableVirtual.mjs","names":["makeDataTableProps","VDataTableHeaders","VDataTableRow","VDataTableRows","VTable","VVirtualScrollItem","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","provideSelection","createSort","provideSort","useSortedItems","provideDefaults","makeFilterProps","useFilter","makeVirtualProps","useVirtual","computed","shallowRef","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","click:row","e","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","headers","showSelect","showExpand","items","search","filteredItems","transform","item","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","headerHeight","length","containerRef","paddingTop","paddingBottom","computedItems","handleItemResize","handleScroll","displayItems","map","raw","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","fixedHeader","border","itemSlotProps","index","default","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\ntype VDataTableVirtualSlotProps = Omit<VDataTableSlotProps, 'setItemsPerPage' | 'page' | 'pageCount' | 'itemsPerPage'>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n top: VDataTableVirtualSlotProps\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { transform: item => item.columns })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const headerHeight = computed(() => headers.value.length * 56)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n } = useVirtual(props, flatItems, headerHeight)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ displayItems.value }\n >\n {{\n ...slots,\n item: itemSlotProps => {\n return slots.item?.(itemSlotProps) ?? (\n <VVirtualScrollItem\n key={ itemSlotProps.item.index }\n dynamicHeight\n renderless\n onUpdate:height={ height => handleItemResize(itemSlotProps.item.index, height) }\n >\n { slotProps => (\n <VDataTableRow\n { ...itemSlotProps.props }\n { ...slotProps?.props }\n key={ itemSlotProps.item.index }\n v-slots={ slots }\n />\n )}\n </VVirtualScrollItem>\n )\n },\n }}\n </VDataTableRows>\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableVirtual.mjs","names":["makeDataTableProps","VDataTableHeaders","VDataTableRow","VDataTableRows","VTable","VVirtualScrollItem","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","provideSelection","createSort","provideSort","useSortedItems","provideDefaults","makeFilterProps","useFilter","makeVirtualProps","useVirtual","computed","shallowRef","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","click:row","e","setup","_ref","emit","slots","groupBy","sortBy","multiSort","mustSort","columns","headers","showSelect","showExpand","items","search","filteredItems","transform","item","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","headerHeight","length","containerRef","paddingTop","paddingBottom","computedItems","handleItemResize","handleScroll","displayItems","map","raw","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","fixedHeader","border","itemSlotProps","index","default","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\n\ntype VDataTableVirtualSlotProps = Omit<VDataTableSlotProps, 'setItemsPerPage' | 'page' | 'pageCount' | 'itemsPerPage'>\n\nexport type VDataTableVirtualSlots = VDataTableRowsSlots & VDataTableHeadersSlots & {\n top: VDataTableVirtualSlotProps\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\nexport const VDataTableVirtual = genericComponent<VDataTableVirtualSlots>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (e: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n\n const { columns, headers } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { transform: item => item.columns })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const headerHeight = computed(() => headers.value.length * 56)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n } = useVirtual(props, flatItems, headerHeight)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const [dataTableHeadersProps] = VDataTableHeaders.filterProps(props)\n const [dataTableRowsProps] = VDataTableRows.filterProps(props)\n const [tableProps] = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n { ...dataTableRowsProps }\n items={ displayItems.value }\n >\n {{\n ...slots,\n item: itemSlotProps => (\n <VVirtualScrollItem\n key={ itemSlotProps.item.index }\n dynamicHeight\n renderless\n onUpdate:height={ height => handleItemResize(itemSlotProps.item.index, height) }\n >\n { slotProps => (\n slots.item?.({ ...itemSlotProps, props: { ...itemSlotProps.props, ...slotProps?.props } }) ?? (\n <VDataTableRow\n { ...itemSlotProps.props }\n { ...slotProps?.props }\n key={ itemSlotProps.item.index }\n v-slots={ slots }\n />\n )\n )}\n </VVirtualScrollItem>\n ),\n }}\n </VDataTableRows>\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import { inject, provide, ref,
|
|
2
|
+
import { inject, provide, ref, watchEffect } from 'vue';
|
|
3
3
|
import { createRange, propsFactory } from "../../../util/index.mjs"; // Types
|
|
4
4
|
export const makeDataTableHeaderProps = propsFactory({
|
|
5
5
|
headers: {
|
|
@@ -11,7 +11,7 @@ export const VDataTableHeadersSymbol = Symbol.for('vuetify:data-table-headers');
|
|
|
11
11
|
export function createHeaders(props, options) {
|
|
12
12
|
const headers = ref([]);
|
|
13
13
|
const columns = ref([]);
|
|
14
|
-
|
|
14
|
+
watchEffect(() => {
|
|
15
15
|
const wrapped = !props.headers.length ? [] : Array.isArray(props.headers[0]) ? props.headers : [props.headers];
|
|
16
16
|
const flat = wrapped.flatMap((row, index) => row.map(column => ({
|
|
17
17
|
column,
|
|
@@ -131,9 +131,6 @@ export function createHeaders(props, options) {
|
|
|
131
131
|
return filtered;
|
|
132
132
|
});
|
|
133
133
|
columns.value = fixedRows.at(-1) ?? [];
|
|
134
|
-
}, {
|
|
135
|
-
deep: true,
|
|
136
|
-
immediate: true
|
|
137
134
|
});
|
|
138
135
|
const data = {
|
|
139
136
|
headers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.mjs","names":["inject","provide","ref","
|
|
1
|
+
{"version":3,"file":"headers.mjs","names":["inject","provide","ref","watchEffect","createRange","propsFactory","makeDataTableHeaderProps","headers","type","Array","default","VDataTableHeadersSymbol","Symbol","for","createHeaders","props","options","columns","wrapped","length","isArray","flat","flatMap","row","index","map","column","rowCount","defaultHeader","title","sortable","defaultActionHeader","width","groupBy","value","findIndex","_ref","key","unshift","rowspan","splice","showSelect","_ref2","showExpand","_ref3","push","fixedRows","fixedOffsets","fill","forEach","_ref4","i","fixedOffset","Number","fixed","lastFixed","seen","Set","filtered","has","add","at","data","useHeaders","Error"],"sources":["../../../../src/labs/VDataTable/composables/headers.ts"],"sourcesContent":["// Utilities\nimport { inject, provide, ref, watchEffect } from 'vue'\nimport { createRange, propsFactory } from '@/util'\n\n// Types\nimport type { DeepReadonly, InjectionKey, PropType, Ref } from 'vue'\nimport type { SortItem } from './sort'\nimport type { DataTableHeader, InternalDataTableHeader } from '../types'\n\nexport const makeDataTableHeaderProps = propsFactory({\n headers: {\n type: Array as PropType<DeepReadonly<DataTableHeader[] | DataTableHeader[][]>>,\n default: () => ([]),\n },\n}, 'DataTable-header')\n\nexport const VDataTableHeadersSymbol: InjectionKey<{\n headers: Ref<InternalDataTableHeader[][]>\n columns: Ref<InternalDataTableHeader[]>\n}> = Symbol.for('vuetify:data-table-headers')\n\ntype HeaderProps = {\n headers: DeepReadonly<DataTableHeader[] | DataTableHeader[][]>\n}\n\nexport function createHeaders (\n props: HeaderProps,\n options?: {\n groupBy?: Ref<readonly SortItem[]>\n showSelect?: Ref<boolean>\n showExpand?: Ref<boolean>\n }\n) {\n const headers = ref<InternalDataTableHeader[][]>([])\n const columns = ref<InternalDataTableHeader[]>([])\n\n watchEffect(() => {\n const wrapped = !props.headers.length\n ? []\n : Array.isArray(props.headers[0])\n ? props.headers as DataTableHeader[][]\n : [props.headers as DataTableHeader[]]\n const flat = wrapped.flatMap((row, index) => row.map(column => ({ column, row: index })))\n\n const rowCount = wrapped.length\n const defaultHeader = { title: '', sortable: false }\n const defaultActionHeader = { ...defaultHeader, width: 48 }\n\n if (options?.groupBy?.value.length) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-group')\n if (index < 0) flat.unshift({ column: { ...defaultHeader, key: 'data-table-group', title: 'Group', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showSelect?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-select')\n if (index < 0) flat.unshift({ column: { ...defaultActionHeader, key: 'data-table-select', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n if (options?.showExpand?.value) {\n const index = flat.findIndex(({ column }) => column.key === 'data-table-expand')\n if (index < 0) flat.push({ column: { ...defaultActionHeader, key: 'data-table-expand', rowspan: rowCount }, row: 0 })\n else flat.splice(index, 1, { column: { ...defaultActionHeader, ...flat[index].column }, row: flat[index].row })\n }\n\n const fixedRows: InternalDataTableHeader[][] = createRange(rowCount).map(() => [])\n const fixedOffsets = createRange(rowCount).fill(0)\n\n flat.forEach(({ column, row }) => {\n const key = column.key\n for (let i = row; i <= row + (column.rowspan ?? 1) - 1; i++) {\n fixedRows[i].push({\n ...column,\n key,\n fixedOffset: fixedOffsets[i],\n sortable: column.sortable ?? !!column.key,\n })\n\n fixedOffsets[i] += Number(column.width ?? 0)\n }\n })\n\n fixedRows.forEach(row => {\n for (let i = row.length; i--; i >= 0) {\n if (row[i].fixed) {\n row[i].lastFixed = true\n return\n }\n }\n })\n\n const seen = new Set()\n headers.value = fixedRows.map(row => {\n const filtered = []\n for (const column of row) {\n if (!seen.has(column.key)) {\n seen.add(column.key)\n filtered.push(column)\n }\n }\n\n return filtered\n })\n\n columns.value = fixedRows.at(-1) ?? []\n })\n\n const data = { headers, columns }\n\n provide(VDataTableHeadersSymbol, data)\n\n return data\n}\n\nexport function useHeaders () {\n const data = inject(VDataTableHeadersSymbol)\n\n if (!data) throw new Error('Missing headers!')\n\n return data\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.mjs","names":["useProxiedModel","computed","inject","provide","propsFactory","wrapInArray","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","Set","value","selectAll","_ref2","selected","pageSelectStrategy","_ref3","currentPage","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","makeDataTableSelectProps","showSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","VDataTableSelectionSymbol","Symbol","for","provideSelection","props","_ref9","v","values","allSelectable","filter","selectable","currentPageSelectable","isSelected","every","has","isSomeSelected","some","newSelected","toggleSelect","someSelected","size","data","useSelection","Error"],"sources":["../../../../src/labs/VDataTable/composables/select.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItemProps } from './items'\n\nexport interface SelectableItem {\n value: any\n selectable: boolean\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean\n allSelected: (data: {\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n }) => SelectableItem[]\n select: (data: {\n items: SelectableItem[]\n value: boolean\n selected: Set<unknown>\n }) => Set<unknown>\n selectAll: (data: {\n value: boolean\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n selected: Set<unknown>\n }) => Set<unknown>\n}\n\ntype SelectionProps = Pick<DataTableItemProps, 'itemValue'> & {\n modelValue: readonly any[]\n selectStrategy: 'single' | 'page' | 'all'\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined\n}\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items }) => {\n return new Set([items[0]?.value])\n },\n selectAll: ({ selected }) => selected,\n}\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ currentPage }) => currentPage,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, currentPage, selected }) => pageSelectStrategy.select({ items: currentPage, value, selected }),\n}\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, allItems, selected }) => allSelectStrategy.select({ items: allItems, value, selected }),\n}\n\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => ([]),\n },\n}, 'DataTable-select')\n\nexport const VDataTableSelectionSymbol: InjectionKey<ReturnType<typeof provideSelection>> = Symbol.for('vuetify:data-table-selection')\n\nexport function provideSelection (\n props: SelectionProps,\n { allItems, currentPage }: { allItems: Ref<SelectableItem[]>, currentPage: Ref<SelectableItem[]> }\n) {\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable))\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable))\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single': return singleSelectStrategy\n case 'all': return allSelectStrategy\n case 'page':\n default: return pageSelectStrategy\n }\n })\n\n function isSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every(item => selected.value.has(item.value))\n }\n\n function isSomeSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some(item => selected.value.has(item.value))\n }\n\n function select (items: SelectableItem[], value: boolean) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n function toggleSelect (item: SelectableItem) {\n select([item], !isSelected([item]))\n }\n\n function selectAll (value: boolean) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n const someSelected = computed(() => selected.value.size > 0)\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n })\n return isSelected(items)\n })\n\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n }\n\n provide(VDataTableSelectionSymbol, data)\n\n return data\n}\n\nexport function useSelection () {\n const data = inject(VDataTableSelectionSymbol)\n\n if (!data) throw new Error('Missing selection!')\n\n return data\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select.mjs","names":["useProxiedModel","computed","inject","provide","propsFactory","wrapInArray","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","currentPage","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","makeDataTableSelectProps","showSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","VDataTableSelectionSymbol","Symbol","for","provideSelection","props","_ref9","v","values","allSelectable","filter","selectable","currentPageSelectable","isSelected","every","has","isSomeSelected","some","newSelected","toggleSelect","someSelected","size","data","useSelection","Error"],"sources":["../../../../src/labs/VDataTable/composables/select.ts"],"sourcesContent":["// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItemProps } from './items'\n\nexport interface SelectableItem {\n value: any\n selectable: boolean\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean\n allSelected: (data: {\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n }) => SelectableItem[]\n select: (data: {\n items: SelectableItem[]\n value: boolean\n selected: Set<unknown>\n }) => Set<unknown>\n selectAll: (data: {\n value: boolean\n allItems: SelectableItem[]\n currentPage: SelectableItem[]\n selected: Set<unknown>\n }) => Set<unknown>\n}\n\ntype SelectionProps = Pick<DataTableItemProps, 'itemValue'> & {\n modelValue: readonly any[]\n selectStrategy: 'single' | 'page' | 'all'\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined\n}\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : [])\n },\n selectAll: ({ selected }) => selected,\n}\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ currentPage }) => currentPage,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, currentPage, selected }) => pageSelectStrategy.select({ items: currentPage, value, selected }),\n}\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value)\n else selected.delete(item.value)\n }\n\n return selected\n },\n selectAll: ({ value, allItems, selected }) => allSelectStrategy.select({ items: allItems, value, selected }),\n}\n\nexport const makeDataTableSelectProps = propsFactory({\n showSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => ([]),\n },\n}, 'DataTable-select')\n\nexport const VDataTableSelectionSymbol: InjectionKey<ReturnType<typeof provideSelection>> = Symbol.for('vuetify:data-table-selection')\n\nexport function provideSelection (\n props: SelectionProps,\n { allItems, currentPage }: { allItems: Ref<SelectableItem[]>, currentPage: Ref<SelectableItem[]> }\n) {\n const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {\n return new Set(v)\n }, v => {\n return [...v.values()]\n })\n\n const allSelectable = computed(() => allItems.value.filter(item => item.selectable))\n const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable))\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single': return singleSelectStrategy\n case 'all': return allSelectStrategy\n case 'page':\n default: return pageSelectStrategy\n }\n })\n\n function isSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every(item => selected.value.has(item.value))\n }\n\n function isSomeSelected (items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some(item => selected.value.has(item.value))\n }\n\n function select (items: SelectableItem[], value: boolean) {\n const newSelected = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n function toggleSelect (item: SelectableItem) {\n select([item], !isSelected([item]))\n }\n\n function selectAll (value: boolean) {\n const newSelected = selectStrategy.value.selectAll({\n value,\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n selected: new Set(selected.value),\n })\n\n selected.value = newSelected\n }\n\n const someSelected = computed(() => selected.value.size > 0)\n const allSelected = computed(() => {\n const items = selectStrategy.value.allSelected({\n allItems: allSelectable.value,\n currentPage: currentPageSelectable.value,\n })\n return isSelected(items)\n })\n\n const data = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n }\n\n provide(VDataTableSelectionSymbol, data)\n\n return data\n}\n\nexport function useSelection () {\n const data = inject(VDataTableSelectionSymbol)\n\n if (!data) throw new Error('Missing selection!')\n\n return data\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
|
+
// Styles
|
|
3
|
+
import "./VDateInput.css";
|
|
4
|
+
|
|
5
|
+
// Components
|
|
6
|
+
import { VDialog } from "../../components/VDialog/index.mjs";
|
|
7
|
+
import { VMenu } from "../../components/VMenu/index.mjs";
|
|
8
|
+
import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.mjs";
|
|
9
|
+
import { VDateCard, VDatePicker } from "../VDatePicker/index.mjs"; // Composables
|
|
10
|
+
import { createDateInput, dateEmits, makeDateProps } from "./composables.mjs";
|
|
11
|
+
import { useDisplay } from "../../composables/index.mjs"; // Utilities
|
|
12
|
+
import { ref, watch } from 'vue';
|
|
13
|
+
import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
|
14
|
+
export const makeVDateInputProps = propsFactory({
|
|
15
|
+
mobile: Boolean,
|
|
16
|
+
...makeDateProps(),
|
|
17
|
+
...makeVTextFieldProps({
|
|
18
|
+
appendInnerIcon: '$calendar',
|
|
19
|
+
dirty: true,
|
|
20
|
+
placeholder: 'mm/dd/yyyy'
|
|
21
|
+
})
|
|
22
|
+
}, 'VDateInput');
|
|
23
|
+
export const VDateInput = genericComponent()({
|
|
24
|
+
name: 'VDateInput',
|
|
25
|
+
props: makeVDateInputProps(),
|
|
26
|
+
emits: {
|
|
27
|
+
...dateEmits
|
|
28
|
+
},
|
|
29
|
+
setup(props, _ref) {
|
|
30
|
+
let {
|
|
31
|
+
slots
|
|
32
|
+
} = _ref;
|
|
33
|
+
const {
|
|
34
|
+
mobile
|
|
35
|
+
} = useDisplay();
|
|
36
|
+
const {
|
|
37
|
+
adapter,
|
|
38
|
+
model,
|
|
39
|
+
inputMode,
|
|
40
|
+
viewMode,
|
|
41
|
+
displayDate,
|
|
42
|
+
parseKeyboardDate
|
|
43
|
+
} = createDateInput(props, false);
|
|
44
|
+
const dialog = ref(false);
|
|
45
|
+
const menu = ref(false);
|
|
46
|
+
const inputModel = ref(model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '');
|
|
47
|
+
function onBlur() {
|
|
48
|
+
const {
|
|
49
|
+
isEqual
|
|
50
|
+
} = adapter;
|
|
51
|
+
const date = parseKeyboardDate(inputModel.value);
|
|
52
|
+
if (date && (!model.value[0] || !isEqual(date, model.value[0]))) {
|
|
53
|
+
model.value = date;
|
|
54
|
+
displayDate.value = date;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
watch(model, val => {
|
|
58
|
+
if (!val.length) return;
|
|
59
|
+
inputModel.value = adapter.format(val[0], 'keyboardDate');
|
|
60
|
+
});
|
|
61
|
+
function onSave() {
|
|
62
|
+
dialog.value = false;
|
|
63
|
+
menu.value = false;
|
|
64
|
+
}
|
|
65
|
+
function onCancel() {
|
|
66
|
+
dialog.value = false;
|
|
67
|
+
menu.value = false;
|
|
68
|
+
}
|
|
69
|
+
useRender(() => {
|
|
70
|
+
const [textFieldProps] = VTextField.filterProps(props);
|
|
71
|
+
return _createVNode(VTextField, _mergeProps(textFieldProps, {
|
|
72
|
+
"class": "v-date-input",
|
|
73
|
+
"modelValue": inputModel.value,
|
|
74
|
+
"onUpdate:modelValue": $event => inputModel.value = $event,
|
|
75
|
+
"onBlur": onBlur
|
|
76
|
+
}), {
|
|
77
|
+
...slots,
|
|
78
|
+
default: () => !mobile.value ? _createVNode(VMenu, {
|
|
79
|
+
"modelValue": menu.value,
|
|
80
|
+
"onUpdate:modelValue": $event => menu.value = $event,
|
|
81
|
+
"activator": "parent",
|
|
82
|
+
"closeOnContentClick": false,
|
|
83
|
+
"location": "end bottom",
|
|
84
|
+
"origin": "top right"
|
|
85
|
+
}, {
|
|
86
|
+
default: () => [_createVNode(VDateCard, {
|
|
87
|
+
"modelValue": model.value,
|
|
88
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
89
|
+
"displayDate": displayDate.value,
|
|
90
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
91
|
+
"inputMode": inputMode.value,
|
|
92
|
+
"onUpdate:inputMode": $event => inputMode.value = $event,
|
|
93
|
+
"viewMode": viewMode.value,
|
|
94
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
95
|
+
"onSave": onSave,
|
|
96
|
+
"onCancel": onCancel
|
|
97
|
+
}, null)]
|
|
98
|
+
}) : _createVNode(VDialog, {
|
|
99
|
+
"modelValue": dialog.value,
|
|
100
|
+
"onUpdate:modelValue": $event => dialog.value = $event,
|
|
101
|
+
"activator": "parent",
|
|
102
|
+
"contentClass": "v-date-input__dialog-content"
|
|
103
|
+
}, {
|
|
104
|
+
default: _ref2 => {
|
|
105
|
+
let {
|
|
106
|
+
isActive
|
|
107
|
+
} = _ref2;
|
|
108
|
+
return _createVNode(VDatePicker, {
|
|
109
|
+
"key": "date-picker",
|
|
110
|
+
"modelValue": model.value,
|
|
111
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
112
|
+
"displayDate": displayDate.value,
|
|
113
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
114
|
+
"inputMode": inputMode.value,
|
|
115
|
+
"onUpdate:inputMode": $event => inputMode.value = $event,
|
|
116
|
+
"viewMode": viewMode.value,
|
|
117
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
118
|
+
"onSave": onSave,
|
|
119
|
+
"onCancel": onCancel
|
|
120
|
+
}, null);
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=VDateInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VDateInput.mjs","names":["VDialog","VMenu","makeVTextFieldProps","VTextField","VDateCard","VDatePicker","createDateInput","dateEmits","makeDateProps","useDisplay","ref","watch","genericComponent","propsFactory","useRender","makeVDateInputProps","mobile","Boolean","appendInnerIcon","dirty","placeholder","VDateInput","name","props","emits","setup","_ref","slots","adapter","model","inputMode","viewMode","displayDate","parseKeyboardDate","dialog","menu","inputModel","value","length","format","onBlur","isEqual","date","val","onSave","onCancel","textFieldProps","filterProps","_createVNode","_mergeProps","$event","default","_ref2","isActive"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Styles\nimport './VDateInput.sass'\n\n// Components\nimport { VDialog } from '@/components/VDialog'\nimport { VMenu } from '@/components/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\nimport { VDateCard, VDatePicker } from '@/labs/VDatePicker'\n\n// Composables\nimport { createDateInput, dateEmits, makeDateProps } from './composables'\nimport { useDisplay } from '@/composables'\n\n// Utilities\nimport { ref, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\nexport type VDateInputSlots = VTextFieldSlots\n\nexport const makeVDateInputProps = propsFactory({\n mobile: Boolean,\n\n ...makeDateProps(),\n ...makeVTextFieldProps({\n appendInnerIcon: '$calendar',\n dirty: true,\n placeholder: 'mm/dd/yyyy',\n }),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n ...dateEmits,\n },\n\n setup (props, { slots }) {\n const { mobile } = useDisplay()\n const { adapter, model, inputMode, viewMode, displayDate, parseKeyboardDate } = createDateInput(props, false)\n\n const dialog = ref(false)\n const menu = ref(false)\n const inputModel = ref(model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '')\n\n function onBlur () {\n const { isEqual } = adapter\n const date = parseKeyboardDate(inputModel.value)\n\n if (date && (!model.value[0] || !isEqual(date, model.value[0]))) {\n model.value = date\n displayDate.value = date\n }\n }\n\n watch(model, val => {\n if (!val.length) return\n\n inputModel.value = adapter.format(val[0], 'keyboardDate')\n })\n\n function onSave () {\n dialog.value = false\n menu.value = false\n }\n\n function onCancel () {\n dialog.value = false\n menu.value = false\n }\n\n useRender(() => {\n const [textFieldProps] = VTextField.filterProps(props)\n\n return (\n <VTextField\n { ...textFieldProps }\n class=\"v-date-input\"\n v-model={ inputModel.value }\n onBlur={ onBlur }\n >\n {{\n ...slots,\n default: () => !mobile.value ? (\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n closeOnContentClick={ false }\n location=\"end bottom\"\n origin=\"top right\"\n >\n <VDateCard\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:inputMode={ inputMode.value }\n v-model:viewMode={ viewMode.value }\n onSave={ onSave }\n onCancel={ onCancel }\n />\n </VMenu>\n ) : (\n <VDialog\n v-model={ dialog.value }\n activator=\"parent\"\n contentClass=\"v-date-input__dialog-content\"\n >\n {{\n default: ({ isActive }) => (\n <VDatePicker\n key=\"date-picker\"\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:inputMode={ inputMode.value }\n v-model:viewMode={ viewMode.value }\n onSave={ onSave }\n onCancel={ onCancel }\n />\n ),\n }}\n </VDialog>\n ),\n }}\n </VTextField>\n )\n })\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { resolveDirective as _resolveDirective, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
|
+
// Styles
|
|
3
|
+
import "./VDateRangeInput.css";
|
|
4
|
+
|
|
5
|
+
// Components
|
|
6
|
+
import { VDateRangeCard, VDateRangePicker } from "../VDateRangePicker/index.mjs";
|
|
7
|
+
import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs";
|
|
8
|
+
import { VDialog } from "../../components/VDialog/index.mjs";
|
|
9
|
+
import { VMenu } from "../../components/VMenu/index.mjs";
|
|
10
|
+
import { VTextField } from "../../components/VTextField/index.mjs"; // Composables
|
|
11
|
+
import { createDateInput, dateEmits, makeDateProps } from "./composables.mjs";
|
|
12
|
+
import { useDisplay, useLocale } from "../../composables/index.mjs";
|
|
13
|
+
import { provideDefaults } from "../../composables/defaults.mjs"; // Utilities
|
|
14
|
+
import { ref, toRef, watch } from 'vue';
|
|
15
|
+
import { genericComponent, useRender } from "../../util/index.mjs"; // Types
|
|
16
|
+
export const VDateRangeInput = genericComponent()({
|
|
17
|
+
name: 'VDateRangeInput',
|
|
18
|
+
props: {
|
|
19
|
+
color: String,
|
|
20
|
+
prependIcon: {
|
|
21
|
+
type: String,
|
|
22
|
+
default: '$calendar'
|
|
23
|
+
},
|
|
24
|
+
placeholder: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: 'mm/dd/yyyy'
|
|
27
|
+
},
|
|
28
|
+
fromLabel: String,
|
|
29
|
+
toLabel: String,
|
|
30
|
+
dividerText: {
|
|
31
|
+
type: String,
|
|
32
|
+
default: '$vuetify.dateRangeInput.divider'
|
|
33
|
+
},
|
|
34
|
+
mobile: Boolean,
|
|
35
|
+
...makeDateProps(),
|
|
36
|
+
modelValue: {
|
|
37
|
+
type: null
|
|
38
|
+
},
|
|
39
|
+
displayDate: {
|
|
40
|
+
type: null
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
emits: {
|
|
44
|
+
...dateEmits
|
|
45
|
+
},
|
|
46
|
+
setup(props) {
|
|
47
|
+
const {
|
|
48
|
+
t
|
|
49
|
+
} = useLocale();
|
|
50
|
+
const {
|
|
51
|
+
adapter,
|
|
52
|
+
model,
|
|
53
|
+
inputMode,
|
|
54
|
+
viewMode,
|
|
55
|
+
displayDate
|
|
56
|
+
} = createDateInput(props, true);
|
|
57
|
+
const startInput = ref(model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '');
|
|
58
|
+
const endInput = ref(model.value.length > 1 ? adapter.format(model.value[1], 'keyboardDate') : '');
|
|
59
|
+
function handleBlur(index) {
|
|
60
|
+
const {
|
|
61
|
+
isValid,
|
|
62
|
+
isSameDay,
|
|
63
|
+
date
|
|
64
|
+
} = adapter;
|
|
65
|
+
if (index === 0 && isValid(startInput.value)) {
|
|
66
|
+
const newDate = date(startInput.value);
|
|
67
|
+
if (!isSameDay(newDate, model.value[0])) {
|
|
68
|
+
model.value = [newDate, model.value[1]];
|
|
69
|
+
displayDate.value = newDate;
|
|
70
|
+
}
|
|
71
|
+
} else if (index === 1 && isValid(endInput.value)) {
|
|
72
|
+
const newDate = date(endInput.value);
|
|
73
|
+
if (!isSameDay(newDate, model.value[1])) {
|
|
74
|
+
model.value = [model.value[0], newDate];
|
|
75
|
+
displayDate.value = newDate;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
watch(model, newValue => {
|
|
80
|
+
if (!newValue.length) return;
|
|
81
|
+
if (newValue[0]) {
|
|
82
|
+
startInput.value = adapter.format(newValue[0], 'keyboardDate');
|
|
83
|
+
}
|
|
84
|
+
if (newValue[1]) {
|
|
85
|
+
endInput.value = adapter.format(newValue[1], 'keyboardDate');
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const {
|
|
89
|
+
mobile
|
|
90
|
+
} = useDisplay();
|
|
91
|
+
provideDefaults({
|
|
92
|
+
VTextField: {
|
|
93
|
+
color: toRef(props, 'color')
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
useRender(() => {
|
|
97
|
+
if (mobile.value) {
|
|
98
|
+
return _createVNode(VDialog, {
|
|
99
|
+
"fullscreen": inputMode.value === 'calendar',
|
|
100
|
+
"contentClass": "v-date-range-input__dialog-content"
|
|
101
|
+
}, {
|
|
102
|
+
activator: _ref => {
|
|
103
|
+
let {
|
|
104
|
+
props: slotProps
|
|
105
|
+
} = _ref;
|
|
106
|
+
return _createVNode("div", _mergeProps({
|
|
107
|
+
"class": "v-date-range-input"
|
|
108
|
+
}, slotProps), [_createVNode(VTextField, {
|
|
109
|
+
"modelValue": startInput.value,
|
|
110
|
+
"onBlur": () => handleBlur(0),
|
|
111
|
+
"prependInnerIcon": props.prependIcon,
|
|
112
|
+
"placeholder": props.placeholder,
|
|
113
|
+
"label": props.fromLabel
|
|
114
|
+
}, null), _createVNode("div", {
|
|
115
|
+
"class": "v-date-range-input__divider"
|
|
116
|
+
}, [t(props.dividerText)]), _createVNode(VTextField, {
|
|
117
|
+
"modelValue": endInput.value,
|
|
118
|
+
"onBlur": () => handleBlur(1),
|
|
119
|
+
"prependInnerIcon": props.prependIcon,
|
|
120
|
+
"placeholder": props.placeholder,
|
|
121
|
+
"label": props.toLabel
|
|
122
|
+
}, null)]);
|
|
123
|
+
},
|
|
124
|
+
default: _ref2 => {
|
|
125
|
+
let {
|
|
126
|
+
isActive
|
|
127
|
+
} = _ref2;
|
|
128
|
+
return _createVNode(VDateRangePicker, {
|
|
129
|
+
"modelValue": model.value,
|
|
130
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
131
|
+
"displayDate": displayDate.value,
|
|
132
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
133
|
+
"viewMode": viewMode.value,
|
|
134
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
135
|
+
"inputMode": inputMode.value,
|
|
136
|
+
"onUpdate:inputMode": $event => inputMode.value = $event,
|
|
137
|
+
"onSave": () => {
|
|
138
|
+
isActive.value = false;
|
|
139
|
+
},
|
|
140
|
+
"onCancel": () => {
|
|
141
|
+
isActive.value = false;
|
|
142
|
+
}
|
|
143
|
+
}, null);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return _createVNode(VDefaultsProvider, {
|
|
148
|
+
"defaults": {
|
|
149
|
+
VOverlay: {
|
|
150
|
+
minWidth: '100%'
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
default: () => [_createVNode("div", {
|
|
155
|
+
"class": "v-date-range-input"
|
|
156
|
+
}, [_createVNode(VMenu, {
|
|
157
|
+
"offset": [-28, 0],
|
|
158
|
+
"closeOnContentClick": false,
|
|
159
|
+
"contentClass": "foo"
|
|
160
|
+
}, {
|
|
161
|
+
activator: _ref3 => {
|
|
162
|
+
let {
|
|
163
|
+
props: slotProps
|
|
164
|
+
} = _ref3;
|
|
165
|
+
return _createVNode("div", _mergeProps(slotProps, {
|
|
166
|
+
"style": "flex: 1 1 auto;"
|
|
167
|
+
}), [_createVNode(VTextField, {
|
|
168
|
+
"modelValue": startInput.value,
|
|
169
|
+
"onUpdate:modelValue": $event => startInput.value = $event,
|
|
170
|
+
"onBlur": () => handleBlur(0),
|
|
171
|
+
"prependInnerIcon": props.prependIcon,
|
|
172
|
+
"placeholder": props.placeholder,
|
|
173
|
+
"label": props.fromLabel
|
|
174
|
+
}, null)]);
|
|
175
|
+
},
|
|
176
|
+
default: () => _createVNode(VDateRangeCard, {
|
|
177
|
+
"modelValue": model.value,
|
|
178
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
179
|
+
"displayDate": displayDate.value,
|
|
180
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
181
|
+
"viewMode": viewMode.value,
|
|
182
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
183
|
+
"inputMode": inputMode.value,
|
|
184
|
+
"onUpdate:inputMode": $event => inputMode.value = $event
|
|
185
|
+
}, null)
|
|
186
|
+
}), _createVNode("div", {
|
|
187
|
+
"class": "v-date-range-input__divider"
|
|
188
|
+
}, [t(props.dividerText)]), _createVNode(VMenu, {
|
|
189
|
+
"key": "bar",
|
|
190
|
+
"offset": [-28, 0],
|
|
191
|
+
"closeOnContentClick": false
|
|
192
|
+
}, {
|
|
193
|
+
activator: _ref4 => {
|
|
194
|
+
let {
|
|
195
|
+
props: slotProps
|
|
196
|
+
} = _ref4;
|
|
197
|
+
return _createVNode("div", _mergeProps(slotProps, {
|
|
198
|
+
"style": "flex: 1 1 auto;"
|
|
199
|
+
}), [_createVNode(VTextField, {
|
|
200
|
+
"modelValue": endInput.value,
|
|
201
|
+
"onUpdate:modelValue": $event => endInput.value = $event,
|
|
202
|
+
"onBlur": () => handleBlur(1),
|
|
203
|
+
"prependInnerIcon": props.prependIcon,
|
|
204
|
+
"placeholder": props.placeholder,
|
|
205
|
+
"label": props.toLabel
|
|
206
|
+
}, null)]);
|
|
207
|
+
},
|
|
208
|
+
default: () => _createVNode(VDateRangeCard, {
|
|
209
|
+
"modelValue": model.value,
|
|
210
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
211
|
+
"displayDate": displayDate.value,
|
|
212
|
+
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
213
|
+
"viewMode": viewMode.value,
|
|
214
|
+
"onUpdate:viewMode": $event => viewMode.value = $event,
|
|
215
|
+
"inputMode": inputMode.value,
|
|
216
|
+
"onUpdate:inputMode": $event => inputMode.value = $event
|
|
217
|
+
}, null)
|
|
218
|
+
})])]
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=VDateRangeInput.mjs.map
|