@vuetify/nightly 3.2.0-dev-20230309.0 → 3.2.0-dev-20230322.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -2
- package/dist/json/attributes.json +210 -30
- package/dist/json/importMap.json +4 -4
- package/dist/json/tags.json +47 -2
- package/dist/json/web-types.json +529 -63
- package/dist/vuetify-labs.css +1186 -1146
- package/dist/vuetify-labs.d.ts +56928 -14280
- package/dist/vuetify-labs.esm.js +557 -363
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +557 -363
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +204 -179
- package/dist/vuetify.d.ts +55330 -15866
- package/dist/vuetify.esm.js +400 -306
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +400 -306
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +668 -667
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.ts +6 -9
- package/lib/blueprints/md1.d.ts +6 -9
- package/lib/blueprints/md2.d.ts +6 -9
- package/lib/blueprints/md3.d.ts +6 -9
- package/lib/blueprints/md3.mjs +6 -0
- package/lib/blueprints/md3.mjs.map +1 -1
- package/lib/components/VAlert/VAlert.mjs +29 -15
- package/lib/components/VAlert/VAlert.mjs.map +1 -1
- package/lib/components/VAlert/index.d.ts +510 -82
- package/lib/components/VApp/VApp.css +1 -0
- package/lib/components/VApp/VApp.sass +1 -0
- package/lib/components/VApp/index.d.ts +158 -20
- package/lib/components/VAppBar/VAppBar.mjs +2 -2
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.ts +616 -110
- package/lib/components/VAutocomplete/VAutocomplete.mjs +13 -7
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +1656 -130
- package/lib/components/VAvatar/index.d.ts +205 -29
- package/lib/components/VBadge/index.d.ts +284 -42
- package/lib/components/VBanner/VBanner.mjs +19 -12
- package/lib/components/VBanner/VBanner.mjs.map +1 -1
- package/lib/components/VBanner/index.d.ts +478 -84
- package/lib/components/VBottomNavigation/index.d.ts +321 -40
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
- package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/index.d.ts +325 -45
- package/lib/components/VBtn/VBtn.css +0 -5
- package/lib/components/VBtn/VBtn.mjs +65 -58
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.sass +0 -7
- package/lib/components/VBtn/_variables.scss +0 -2
- package/lib/components/VBtn/index.d.ts +452 -69
- package/lib/components/VBtnGroup/VBtnGroup.mjs +1 -7
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
- package/lib/components/VBtnGroup/index.d.ts +185 -26
- package/lib/components/VBtnToggle/VBtnToggle.mjs +2 -2
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/index.d.ts +245 -35
- package/lib/components/VCard/VCard.mjs +10 -6
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/VCardItem.mjs +27 -23
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCard/index.d.ts +938 -172
- package/lib/components/VCarousel/index.d.ts +561 -123
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +1 -4
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.ts +831 -147
- package/lib/components/VChip/VChip.css +110 -90
- package/lib/components/VChip/VChip.mjs +70 -48
- package/lib/components/VChip/VChip.mjs.map +1 -1
- package/lib/components/VChip/_mixins.scss +27 -23
- package/lib/components/VChip/index.d.ts +474 -76
- package/lib/components/VChipGroup/index.d.ts +227 -32
- package/lib/components/VCode/index.d.ts +109 -16
- package/lib/components/VColorPicker/index.d.ts +284 -20
- package/lib/components/VCombobox/VCombobox.mjs +13 -7
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +1668 -130
- package/lib/components/VCounter/index.d.ts +1894 -87
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
- package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.d.ts +133 -21
- package/lib/components/VDialog/VDialog.css +31 -24
- package/lib/components/VDialog/VDialog.mjs +2 -2
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +19 -12
- package/lib/components/VDialog/index.d.ts +2362 -146
- package/lib/components/VDivider/index.d.ts +130 -23
- package/lib/components/VExpansionPanel/index.d.ts +719 -119
- package/lib/components/VField/index.d.ts +163 -21
- package/lib/components/VFileInput/index.d.ts +1038 -104
- package/lib/components/VFooter/VFooter.css +2 -0
- package/lib/components/VFooter/VFooter.sass +2 -0
- package/lib/components/VFooter/_variables.scss +2 -0
- package/lib/components/VFooter/index.d.ts +203 -28
- package/lib/components/VForm/index.d.ts +204 -23
- package/lib/components/VGrid/VCol.mjs +6 -5
- package/lib/components/VGrid/VCol.mjs.map +1 -1
- package/lib/components/VGrid/VRow.mjs +4 -4
- package/lib/components/VGrid/VRow.mjs.map +1 -1
- package/lib/components/VGrid/index.d.ts +733 -76
- package/lib/components/VHover/index.d.ts +182 -35
- package/lib/components/VIcon/index.d.ts +494 -50
- package/lib/components/VImg/VImg.mjs +2 -2
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/index.d.ts +275 -46
- package/lib/components/VInput/index.d.ts +315 -53
- package/lib/components/VItemGroup/index.d.ts +308 -52
- package/lib/components/VKbd/VKbd.css +1 -0
- package/lib/components/VKbd/VKbd.sass +1 -0
- package/lib/components/VKbd/_variables.scss +1 -0
- package/lib/components/VKbd/index.d.ts +109 -16
- package/lib/components/VLabel/index.d.ts +113 -20
- package/lib/components/VLayout/index.d.ts +296 -41
- package/lib/components/VLazy/VLazy.mjs +4 -1
- package/lib/components/VLazy/VLazy.mjs.map +1 -1
- package/lib/components/VLazy/index.d.ts +219 -30
- package/lib/components/VList/VListChildren.mjs +2 -2
- package/lib/components/VList/VListChildren.mjs.map +1 -1
- package/lib/components/VList/VListGroup.mjs +1 -4
- package/lib/components/VList/VListGroup.mjs.map +1 -1
- package/lib/components/VList/VListItem.mjs +23 -19
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.ts +1461 -223
- package/lib/components/VLocaleProvider/index.d.ts +121 -20
- package/lib/components/VMain/index.d.ts +118 -17
- package/lib/components/VMenu/VMenu.css +4 -4
- package/lib/components/VMenu/VMenu.mjs +2 -2
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.sass +1 -1
- package/lib/components/VMenu/index.d.ts +2368 -142
- package/lib/components/VMessages/index.d.ts +1921 -98
- package/lib/components/VNavigationDrawer/index.d.ts +379 -56
- package/lib/components/VOverlay/VOverlay.css +2 -2
- package/lib/components/VOverlay/VOverlay.mjs +1 -4
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.sass +1 -1
- package/lib/components/VOverlay/_variables.scss +1 -1
- package/lib/components/VOverlay/index.d.ts +519 -85
- package/lib/components/VPagination/index.d.ts +502 -68
- package/lib/components/VParallax/VParallax.mjs +3 -3
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VParallax/index.d.ts +141 -28
- package/lib/components/VProgressCircular/index.d.ts +186 -25
- package/lib/components/VProgressLinear/index.d.ts +319 -48
- package/lib/components/VRadio/index.d.ts +313 -57
- package/lib/components/VRadioGroup/VRadioGroup.mjs +4 -6
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/index.d.ts +463 -83
- package/lib/components/VRangeSlider/index.d.ts +528 -80
- package/lib/components/VRating/VRating.mjs.map +1 -1
- package/lib/components/VRating/index.d.ts +305 -43
- package/lib/components/VResponsive/index.d.ts +142 -27
- package/lib/components/VSelect/VSelect.mjs +13 -7
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +3060 -328
- package/lib/components/VSelectionControl/VSelectionControl.mjs +1 -4
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.ts +76 -4
- package/lib/components/VSelectionControlGroup/index.d.ts +242 -38
- package/lib/components/VSheet/VSheet.mjs +1 -7
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSheet/index.d.ts +194 -31
- package/lib/components/VSlideGroup/index.d.ts +475 -83
- package/lib/components/VSlider/VSliderTrack.mjs +1 -0
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/index.d.ts +521 -79
- package/lib/components/VSlider/slider.mjs +5 -6
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.css +2 -7
- package/lib/components/VSnackbar/VSnackbar.mjs +4 -3
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.sass +3 -8
- package/lib/components/VSnackbar/index.d.ts +1219 -81
- package/lib/components/VSwitch/VSwitch.mjs +2 -2
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/index.d.ts +498 -92
- package/lib/components/VSystemBar/index.d.ts +184 -27
- package/lib/components/VTable/index.d.ts +190 -35
- package/lib/components/VTabs/VTab.mjs +7 -23
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/index.d.ts +623 -71
- package/lib/components/VTextField/VTextField.mjs +8 -5
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/VTextField/index.d.ts +1404 -106
- package/lib/components/VTextarea/VTextarea.mjs +7 -1
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/index.d.ts +1014 -102
- package/lib/components/VThemeProvider/index.d.ts +124 -19
- package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
- package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
- package/lib/components/VTimeline/index.d.ts +441 -71
- package/lib/components/VToolbar/VToolbar.mjs +10 -9
- package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
- package/lib/components/VToolbar/index.d.ts +542 -93
- package/lib/components/VTooltip/VTooltip.css +3 -3
- package/lib/components/VTooltip/VTooltip.mjs +2 -2
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/VTooltip.sass +1 -1
- package/lib/components/VTooltip/index.d.ts +1276 -82
- package/lib/components/VValidation/index.d.ts +201 -30
- package/lib/components/VWindow/index.d.ts +527 -95
- package/lib/components/index.d.ts +55255 -15788
- package/lib/components/transitions/index.d.ts +2097 -308
- package/lib/composables/defaults.mjs +2 -0
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/display.mjs +2 -0
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/form.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +7 -10
- package/lib/labs/VDataTable/VDataTable.css +15 -0
- package/lib/labs/VDataTable/VDataTable.mjs +41 -17
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTable.sass +9 -0
- package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs +8 -2
- package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +2 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +39 -17
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +23 -12
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs +1 -1
- package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +12 -1
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +0 -12
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/select.mjs +1 -1
- package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/sort.mjs +19 -3
- package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +4179 -1017
- package/lib/labs/VVirtualScroll/index.d.ts +32 -1
- package/lib/labs/components.d.ts +4214 -1026
- package/lib/locale/adapters/vue-i18n.d.ts +1 -1
- package/lib/locale/adapters/vue-i18n.mjs +1 -1
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/styles/main.css +4 -0
- package/lib/styles/settings/_utilities.scss +7 -0
- package/lib/util/animation.mjs +8 -1
- package/lib/util/animation.mjs.map +1 -1
- package/lib/util/defineComponent.mjs +15 -7
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +4 -0
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +5 -10
|
@@ -14,6 +14,8 @@ export function provideDefaults(defaults, options) {
|
|
|
14
14
|
const injectedDefaults = useDefaults();
|
|
15
15
|
const providedDefaults = ref(defaults);
|
|
16
16
|
const newDefaults = computed(() => {
|
|
17
|
+
const disabled = unref(options?.disabled);
|
|
18
|
+
if (disabled) return injectedDefaults.value;
|
|
17
19
|
const scoped = unref(options?.scoped);
|
|
18
20
|
const reset = unref(options?.reset);
|
|
19
21
|
const root = unref(options?.root);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.mjs","names":["computed","inject","provide","ref","unref","mergeDeep","DefaultsSymbol","Symbol","for","createDefaults","options","useDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","scoped","reset","root","properties","
|
|
1
|
+
{"version":3,"file":"defaults.mjs","names":["computed","inject","provide","ref","unref","mergeDeep","DefaultsSymbol","Symbol","for","createDefaults","options","useDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","disabled","value","scoped","reset","root","properties","prev","len","Number","Infinity","i"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, unref } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function useDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = useDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n return properties\n }\n\n return mergeDeep(properties.prev, properties)\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAClDC,SAAS,6BAElB;AAWA,OAAO,MAAMC,cAAmD,GAAGC,MAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;AAEjG,OAAO,SAASC,cAAc,CAAEC,OAA0B,EAAyB;EACjF,OAAOP,GAAG,CAACO,OAAO,CAAC;AACrB;AAEA,OAAO,SAASC,WAAW,GAAI;EAC7B,MAAMC,QAAQ,GAAGX,MAAM,CAACK,cAAc,CAAC;EAEvC,IAAI,CAACM,QAAQ,EAAE,MAAM,IAAIC,KAAK,CAAC,4CAA4C,CAAC;EAE5E,OAAOD,QAAQ;AACjB;AAEA,OAAO,SAASE,eAAe,CAC7BF,QAAiD,EACjDF,OAKC,EACD;EACA,MAAMK,gBAAgB,GAAGJ,WAAW,EAAE;EACtC,MAAMK,gBAAgB,GAAGb,GAAG,CAACS,QAAQ,CAAC;EAEtC,MAAMK,WAAW,GAAGjB,QAAQ,CAAC,MAAM;IACjC,MAAMkB,QAAQ,GAAGd,KAAK,CAACM,OAAO,EAAEQ,QAAQ,CAAC;IAEzC,IAAIA,QAAQ,EAAE,OAAOH,gBAAgB,CAACI,KAAK;IAE3C,MAAMC,MAAM,GAAGhB,KAAK,CAACM,OAAO,EAAEU,MAAM,CAAC;IACrC,MAAMC,KAAK,GAAGjB,KAAK,CAACM,OAAO,EAAEW,KAAK,CAAC;IACnC,MAAMC,IAAI,GAAGlB,KAAK,CAACM,OAAO,EAAEY,IAAI,CAAC;IAEjC,IAAIC,UAAU,GAAGlB,SAAS,CAACW,gBAAgB,CAACG,KAAK,EAAE;MAAEK,IAAI,EAAET,gBAAgB,CAACI;IAAM,CAAC,CAAC;IAEpF,IAAIC,MAAM,EAAE,OAAOG,UAAU;IAE7B,IAAIF,KAAK,IAAIC,IAAI,EAAE;MACjB,MAAMG,GAAG,GAAGC,MAAM,CAACL,KAAK,IAAIM,QAAQ,CAAC;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIH,GAAG,EAAEG,CAAC,EAAE,EAAE;QAC7B,IAAI,CAACL,UAAU,IAAI,EAAE,MAAM,IAAIA,UAAU,CAAC,EAAE;UAC1C;QACF;QAEAA,UAAU,GAAGA,UAAU,CAACC,IAAI;MAC9B;MAEA,OAAOD,UAAU;IACnB;IAEA,OAAOlB,SAAS,CAACkB,UAAU,CAACC,IAAI,EAAED,UAAU,CAAC;EAC/C,CAAC,CAAkC;EAEnCrB,OAAO,CAACI,cAAc,EAAEW,WAAW,CAAC;EAEpC,OAAOA,WAAW;AACpB"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
import { inject, reactive, ref, shallowRef, toRefs, watchEffect } from 'vue';
|
|
3
3
|
import { mergeDeep } from "../util/index.mjs"; // Globals
|
|
4
4
|
import { IN_BROWSER, SUPPORTS_TOUCH } from "../util/globals.mjs"; // Types
|
|
5
|
+
export const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl']; // no xs
|
|
6
|
+
|
|
5
7
|
export const DisplaySymbol = Symbol.for('vuetify:display');
|
|
6
8
|
const defaultDisplayOptions = {
|
|
7
9
|
mobileBreakpoint: 'lg',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.mjs","names":["inject","reactive","ref","shallowRef","toRefs","watchEffect","mergeDeep","IN_BROWSER","SUPPORTS_TOUCH","DisplaySymbol","Symbol","for","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","parseDisplayOptions","options","getClientWidth","isHydrate","window","innerWidth","getClientHeight","innerHeight","getPlatform","userAgent","navigator","match","regexp","Boolean","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","ssr","createDisplay","height","platform","state","width","updateSize","value","update","name","breakpointValue","mobile","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","addEventListener","passive","useDisplay","display","Error"],"sources":["../../src/composables/display.ts"],"sourcesContent":["// Utilities\nimport { inject, reactive, ref, shallowRef, toRefs, watchEffect } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Globals\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nexport type DisplayBreakpoint = keyof DisplayThresholds\n\nexport interface DisplayThresholds {\n xs: number\n sm: number\n md: number\n lg: number\n xl: number\n xxl: number\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial<DisplayThresholds>\n}\n\nexport interface InternalDisplayOptions {\n mobileBreakpoint: number | DisplayBreakpoint\n thresholds: DisplayThresholds\n}\n\nexport interface DisplayPlatform {\n android: boolean\n ios: boolean\n cordova: boolean\n electron: boolean\n chrome: boolean\n edge: boolean\n firefox: boolean\n opera: boolean\n win: boolean\n mac: boolean\n linux: boolean\n touch: boolean\n ssr: boolean\n}\n\nexport interface DisplayInstance {\n xs: Ref<boolean>\n sm: Ref<boolean>\n md: Ref<boolean>\n lg: Ref<boolean>\n xl: Ref<boolean>\n xxl: Ref<boolean>\n smAndUp: Ref<boolean>\n mdAndUp: Ref<boolean>\n lgAndUp: Ref<boolean>\n xlAndUp: Ref<boolean>\n smAndDown: Ref<boolean>\n mdAndDown: Ref<boolean>\n lgAndDown: Ref<boolean>\n xlAndDown: Ref<boolean>\n name: Ref<DisplayBreakpoint>\n height: Ref<number>\n width: Ref<number>\n mobile: Ref<boolean>\n mobileBreakpoint: Ref<number | DisplayBreakpoint>\n platform: Ref<DisplayPlatform>\n thresholds: Ref<DisplayThresholds>\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey<DisplayInstance> = Symbol.for('vuetify:display')\n\nconst defaultDisplayOptions: DisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560,\n },\n}\n\nconst parseDisplayOptions = (options: DisplayOptions = defaultDisplayOptions) => {\n return mergeDeep(defaultDisplayOptions, options) as InternalDisplayOptions\n}\n\nfunction getClientWidth (isHydrate?: boolean) {\n return IN_BROWSER && !isHydrate\n ? window.innerWidth\n : 0\n}\n\nfunction getClientHeight (isHydrate?: boolean) {\n return IN_BROWSER && !isHydrate\n ? window.innerHeight\n : 0\n}\n\nfunction getPlatform (isHydrate?: boolean): DisplayPlatform {\n const userAgent = IN_BROWSER && !isHydrate\n ? window.navigator.userAgent\n : 'ssr'\n\n function match (regexp: RegExp) {\n return Boolean(userAgent.match(regexp))\n }\n\n const android = match(/android/i)\n const ios = match(/iphone|ipad|ipod/i)\n const cordova = match(/cordova/i)\n const electron = match(/electron/i)\n const chrome = match(/chrome/i)\n const edge = match(/edge/i)\n const firefox = match(/firefox/i)\n const opera = match(/opera/i)\n const win = match(/win/i)\n const mac = match(/mac/i)\n const linux = match(/linux/i)\n\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr',\n }\n}\n\nexport function createDisplay (options?: DisplayOptions, ssr?: boolean): DisplayInstance {\n const { thresholds, mobileBreakpoint } = parseDisplayOptions(options)\n\n const height = ref(getClientHeight(ssr))\n const platform = shallowRef(getPlatform(ssr))\n const state = reactive({} as DisplayInstance)\n const width = ref(getClientWidth(ssr))\n\n function updateSize () {\n height.value = getClientHeight()\n width.value = getClientWidth()\n }\n function update () {\n updateSize()\n platform.value = getPlatform()\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm\n const sm = width.value < thresholds.md && !xs\n const md = width.value < thresholds.lg && !(sm || xs)\n const lg = width.value < thresholds.xl && !(md || sm || xs)\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs)\n const xxl = width.value >= thresholds.xxl\n const name =\n xs ? 'xs'\n : sm ? 'sm'\n : md ? 'md'\n : lg ? 'lg'\n : xl ? 'xl'\n : 'xxl'\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint]\n const mobile = width.value < breakpointValue\n\n state.xs = xs\n state.sm = sm\n state.md = md\n state.lg = lg\n state.xl = xl\n state.xxl = xxl\n state.smAndUp = !xs\n state.mdAndUp = !(xs || sm)\n state.lgAndUp = !(xs || sm || md)\n state.xlAndUp = !(xs || sm || md || lg)\n state.smAndDown = !(md || lg || xl || xxl)\n state.mdAndDown = !(lg || xl || xxl)\n state.lgAndDown = !(xl || xxl)\n state.xlAndDown = !xxl\n state.name = name\n state.height = height.value\n state.width = width.value\n state.mobile = mobile\n state.mobileBreakpoint = mobileBreakpoint\n state.platform = platform.value\n state.thresholds = thresholds\n })\n\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, { passive: true })\n }\n\n return { ...toRefs(state), update, ssr: !!ssr }\n}\n\nexport function useDisplay () {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n return display\n}\n"],"mappings":"AAAA;AACA,SAASA,MAAM,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,EAAEC,MAAM,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACnEC,SAAS,6BAElB;AAAA,SACSC,UAAU,EAAEC,cAAc,+BAEnC;AAqEA,OAAO,MAAMC,aAA4C,GAAGC,MAAM,CAACC,GAAG,CAAC,iBAAiB,CAAC;AAEzF,MAAMC,qBAAqC,GAAG;EAC5CC,gBAAgB,EAAE,IAAI;EACtBC,UAAU,EAAE;IACVC,EAAE,EAAE,CAAC;IACLC,EAAE,EAAE,GAAG;IACPC,EAAE,EAAE,GAAG;IACPC,EAAE,EAAE,IAAI;IACRC,EAAE,EAAE,IAAI;IACRC,GAAG,EAAE;EACP;AACF,CAAC;AAED,MAAMC,mBAAmB,GAAG,YAAqD;EAAA,IAApDC,OAAuB,uEAAGV,qBAAqB;EAC1E,OAAON,SAAS,CAACM,qBAAqB,EAAEU,OAAO,CAAC;AAClD,CAAC;AAED,SAASC,cAAc,CAAEC,SAAmB,EAAE;EAC5C,OAAOjB,UAAU,IAAI,CAACiB,SAAS,GAC3BC,MAAM,CAACC,UAAU,GACjB,CAAC;AACP;AAEA,SAASC,eAAe,CAAEH,SAAmB,EAAE;EAC7C,OAAOjB,UAAU,IAAI,CAACiB,SAAS,GAC3BC,MAAM,CAACG,WAAW,GAClB,CAAC;AACP;AAEA,SAASC,WAAW,CAAEL,SAAmB,EAAmB;EAC1D,MAAMM,SAAS,GAAGvB,UAAU,IAAI,CAACiB,SAAS,GACtCC,MAAM,CAACM,SAAS,CAACD,SAAS,GAC1B,KAAK;EAET,SAASE,KAAK,CAAEC,MAAc,EAAE;IAC9B,OAAOC,OAAO,CAACJ,SAAS,CAACE,KAAK,CAACC,MAAM,CAAC,CAAC;EACzC;EAEA,MAAME,OAAO,GAAGH,KAAK,CAAC,UAAU,CAAC;EACjC,MAAMI,GAAG,GAAGJ,KAAK,CAAC,mBAAmB,CAAC;EACtC,MAAMK,OAAO,GAAGL,KAAK,CAAC,UAAU,CAAC;EACjC,MAAMM,QAAQ,GAAGN,KAAK,CAAC,WAAW,CAAC;EACnC,MAAMO,MAAM,GAAGP,KAAK,CAAC,SAAS,CAAC;EAC/B,MAAMQ,IAAI,GAAGR,KAAK,CAAC,OAAO,CAAC;EAC3B,MAAMS,OAAO,GAAGT,KAAK,CAAC,UAAU,CAAC;EACjC,MAAMU,KAAK,GAAGV,KAAK,CAAC,QAAQ,CAAC;EAC7B,MAAMW,GAAG,GAAGX,KAAK,CAAC,MAAM,CAAC;EACzB,MAAMY,GAAG,GAAGZ,KAAK,CAAC,MAAM,CAAC;EACzB,MAAMa,KAAK,GAAGb,KAAK,CAAC,QAAQ,CAAC;EAE7B,OAAO;IACLG,OAAO;IACPC,GAAG;IACHC,OAAO;IACPC,QAAQ;IACRC,MAAM;IACNC,IAAI;IACJC,OAAO;IACPC,KAAK;IACLC,GAAG;IACHC,GAAG;IACHC,KAAK;IACLC,KAAK,EAAEtC,cAAc;IACrBuC,GAAG,EAAEjB,SAAS,KAAK;EACrB,CAAC;AACH;AAEA,OAAO,SAASkB,aAAa,CAAE1B,OAAwB,EAAEyB,GAAa,EAAmB;EACvF,MAAM;IAAEjC,UAAU;IAAED;EAAiB,CAAC,GAAGQ,mBAAmB,CAACC,OAAO,CAAC;EAErE,MAAM2B,MAAM,GAAG/C,GAAG,CAACyB,eAAe,CAACoB,GAAG,CAAC,CAAC;EACxC,MAAMG,QAAQ,GAAG/C,UAAU,CAAC0B,WAAW,CAACkB,GAAG,CAAC,CAAC;EAC7C,MAAMI,KAAK,GAAGlD,QAAQ,CAAC,CAAC,CAAC,CAAoB;EAC7C,MAAMmD,KAAK,GAAGlD,GAAG,CAACqB,cAAc,CAACwB,GAAG,CAAC,CAAC;EAEtC,SAASM,UAAU,GAAI;IACrBJ,MAAM,CAACK,KAAK,GAAG3B,eAAe,EAAE;IAChCyB,KAAK,CAACE,KAAK,GAAG/B,cAAc,EAAE;EAChC;EACA,SAASgC,MAAM,GAAI;IACjBF,UAAU,EAAE;IACZH,QAAQ,CAACI,KAAK,GAAGzB,WAAW,EAAE;EAChC;;EAEA;EACAxB,WAAW,CAAC,MAAM;IAChB,MAAMU,EAAE,GAAGqC,KAAK,CAACE,KAAK,GAAGxC,UAAU,CAACE,EAAE;IACtC,MAAMA,EAAE,GAAGoC,KAAK,CAACE,KAAK,GAAGxC,UAAU,CAACG,EAAE,IAAI,CAACF,EAAE;IAC7C,MAAME,EAAE,GAAGmC,KAAK,CAACE,KAAK,GAAGxC,UAAU,CAACI,EAAE,IAAI,EAAEF,EAAE,IAAID,EAAE,CAAC;IACrD,MAAMG,EAAE,GAAGkC,KAAK,CAACE,KAAK,GAAGxC,UAAU,CAACK,EAAE,IAAI,EAAEF,EAAE,IAAID,EAAE,IAAID,EAAE,CAAC;IAC3D,MAAMI,EAAE,GAAGiC,KAAK,CAACE,KAAK,GAAGxC,UAAU,CAACM,GAAG,IAAI,EAAEF,EAAE,IAAID,EAAE,IAAID,EAAE,IAAID,EAAE,CAAC;IAClE,MAAMK,GAAG,GAAGgC,KAAK,CAACE,KAAK,IAAIxC,UAAU,CAACM,GAAG;IACzC,MAAMoC,IAAI,GACRzC,EAAE,GAAG,IAAI,GACPC,EAAE,GAAG,IAAI,GACTC,EAAE,GAAG,IAAI,GACTC,EAAE,GAAG,IAAI,GACTC,EAAE,GAAG,IAAI,GACT,KAAK;IACT,MAAMsC,eAAe,GAAG,OAAO5C,gBAAgB,KAAK,QAAQ,GAAGA,gBAAgB,GAAGC,UAAU,CAACD,gBAAgB,CAAC;IAC9G,MAAM6C,MAAM,GAAGN,KAAK,CAACE,KAAK,GAAGG,eAAe;IAE5CN,KAAK,CAACpC,EAAE,GAAGA,EAAE;IACboC,KAAK,CAACnC,EAAE,GAAGA,EAAE;IACbmC,KAAK,CAAClC,EAAE,GAAGA,EAAE;IACbkC,KAAK,CAACjC,EAAE,GAAGA,EAAE;IACbiC,KAAK,CAAChC,EAAE,GAAGA,EAAE;IACbgC,KAAK,CAAC/B,GAAG,GAAGA,GAAG;IACf+B,KAAK,CAACQ,OAAO,GAAG,CAAC5C,EAAE;IACnBoC,KAAK,CAACS,OAAO,GAAG,EAAE7C,EAAE,IAAIC,EAAE,CAAC;IAC3BmC,KAAK,CAACU,OAAO,GAAG,EAAE9C,EAAE,IAAIC,EAAE,IAAIC,EAAE,CAAC;IACjCkC,KAAK,CAACW,OAAO,GAAG,EAAE/C,EAAE,IAAIC,EAAE,IAAIC,EAAE,IAAIC,EAAE,CAAC;IACvCiC,KAAK,CAACY,SAAS,GAAG,EAAE9C,EAAE,IAAIC,EAAE,IAAIC,EAAE,IAAIC,GAAG,CAAC;IAC1C+B,KAAK,CAACa,SAAS,GAAG,EAAE9C,EAAE,IAAIC,EAAE,IAAIC,GAAG,CAAC;IACpC+B,KAAK,CAACc,SAAS,GAAG,EAAE9C,EAAE,IAAIC,GAAG,CAAC;IAC9B+B,KAAK,CAACe,SAAS,GAAG,CAAC9C,GAAG;IACtB+B,KAAK,CAACK,IAAI,GAAGA,IAAI;IACjBL,KAAK,CAACF,MAAM,GAAGA,MAAM,CAACK,KAAK;IAC3BH,KAAK,CAACC,KAAK,GAAGA,KAAK,CAACE,KAAK;IACzBH,KAAK,CAACO,MAAM,GAAGA,MAAM;IACrBP,KAAK,CAACtC,gBAAgB,GAAGA,gBAAgB;IACzCsC,KAAK,CAACD,QAAQ,GAAGA,QAAQ,CAACI,KAAK;IAC/BH,KAAK,CAACrC,UAAU,GAAGA,UAAU;EAC/B,CAAC,CAAC;EAEF,IAAIP,UAAU,EAAE;IACdkB,MAAM,CAAC0C,gBAAgB,CAAC,QAAQ,EAAEd,UAAU,EAAE;MAAEe,OAAO,EAAE;IAAK,CAAC,CAAC;EAClE;EAEA,OAAO;IAAE,GAAGhE,MAAM,CAAC+C,KAAK,CAAC;IAAEI,MAAM;IAAER,GAAG,EAAE,CAAC,CAACA;EAAI,CAAC;AACjD;AAEA,OAAO,SAASsB,UAAU,GAAI;EAC5B,MAAMC,OAAO,GAAGtE,MAAM,CAACS,aAAa,CAAC;EAErC,IAAI,CAAC6D,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,0CAA0C,CAAC;EAEzE,OAAOD,OAAO;AAChB"}
|
|
1
|
+
{"version":3,"file":"display.mjs","names":["inject","reactive","ref","shallowRef","toRefs","watchEffect","mergeDeep","IN_BROWSER","SUPPORTS_TOUCH","breakpoints","DisplaySymbol","Symbol","for","defaultDisplayOptions","mobileBreakpoint","thresholds","xs","sm","md","lg","xl","xxl","parseDisplayOptions","options","getClientWidth","isHydrate","window","innerWidth","getClientHeight","innerHeight","getPlatform","userAgent","navigator","match","regexp","Boolean","android","ios","cordova","electron","chrome","edge","firefox","opera","win","mac","linux","touch","ssr","createDisplay","height","platform","state","width","updateSize","value","update","name","breakpointValue","mobile","smAndUp","mdAndUp","lgAndUp","xlAndUp","smAndDown","mdAndDown","lgAndDown","xlAndDown","addEventListener","passive","useDisplay","display","Error"],"sources":["../../src/composables/display.ts"],"sourcesContent":["// Utilities\nimport { inject, reactive, ref, shallowRef, toRefs, watchEffect } from 'vue'\nimport { mergeDeep } from '@/util'\n\n// Globals\nimport { IN_BROWSER, SUPPORTS_TOUCH } from '@/util/globals'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\n\nexport const breakpoints = ['sm', 'md', 'lg', 'xl', 'xxl'] as const // no xs\n\nexport type Breakpoint = typeof breakpoints[number]\n\nexport type DisplayBreakpoint = 'xs' | Breakpoint\n\nexport type DisplayThresholds = {\n [key in DisplayBreakpoint]: number\n}\n\nexport interface DisplayOptions {\n mobileBreakpoint?: number | DisplayBreakpoint\n thresholds?: Partial<DisplayThresholds>\n}\n\nexport interface InternalDisplayOptions {\n mobileBreakpoint: number | DisplayBreakpoint\n thresholds: DisplayThresholds\n}\n\nexport interface DisplayPlatform {\n android: boolean\n ios: boolean\n cordova: boolean\n electron: boolean\n chrome: boolean\n edge: boolean\n firefox: boolean\n opera: boolean\n win: boolean\n mac: boolean\n linux: boolean\n touch: boolean\n ssr: boolean\n}\n\nexport interface DisplayInstance {\n xs: Ref<boolean>\n sm: Ref<boolean>\n md: Ref<boolean>\n lg: Ref<boolean>\n xl: Ref<boolean>\n xxl: Ref<boolean>\n smAndUp: Ref<boolean>\n mdAndUp: Ref<boolean>\n lgAndUp: Ref<boolean>\n xlAndUp: Ref<boolean>\n smAndDown: Ref<boolean>\n mdAndDown: Ref<boolean>\n lgAndDown: Ref<boolean>\n xlAndDown: Ref<boolean>\n name: Ref<DisplayBreakpoint>\n height: Ref<number>\n width: Ref<number>\n mobile: Ref<boolean>\n mobileBreakpoint: Ref<number | DisplayBreakpoint>\n platform: Ref<DisplayPlatform>\n thresholds: Ref<DisplayThresholds>\n\n /** @internal */\n ssr: boolean\n\n update (): void\n}\n\nexport const DisplaySymbol: InjectionKey<DisplayInstance> = Symbol.for('vuetify:display')\n\nconst defaultDisplayOptions: DisplayOptions = {\n mobileBreakpoint: 'lg',\n thresholds: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920,\n xxl: 2560,\n },\n}\n\nconst parseDisplayOptions = (options: DisplayOptions = defaultDisplayOptions) => {\n return mergeDeep(defaultDisplayOptions, options) as InternalDisplayOptions\n}\n\nfunction getClientWidth (isHydrate?: boolean) {\n return IN_BROWSER && !isHydrate\n ? window.innerWidth\n : 0\n}\n\nfunction getClientHeight (isHydrate?: boolean) {\n return IN_BROWSER && !isHydrate\n ? window.innerHeight\n : 0\n}\n\nfunction getPlatform (isHydrate?: boolean): DisplayPlatform {\n const userAgent = IN_BROWSER && !isHydrate\n ? window.navigator.userAgent\n : 'ssr'\n\n function match (regexp: RegExp) {\n return Boolean(userAgent.match(regexp))\n }\n\n const android = match(/android/i)\n const ios = match(/iphone|ipad|ipod/i)\n const cordova = match(/cordova/i)\n const electron = match(/electron/i)\n const chrome = match(/chrome/i)\n const edge = match(/edge/i)\n const firefox = match(/firefox/i)\n const opera = match(/opera/i)\n const win = match(/win/i)\n const mac = match(/mac/i)\n const linux = match(/linux/i)\n\n return {\n android,\n ios,\n cordova,\n electron,\n chrome,\n edge,\n firefox,\n opera,\n win,\n mac,\n linux,\n touch: SUPPORTS_TOUCH,\n ssr: userAgent === 'ssr',\n }\n}\n\nexport function createDisplay (options?: DisplayOptions, ssr?: boolean): DisplayInstance {\n const { thresholds, mobileBreakpoint } = parseDisplayOptions(options)\n\n const height = ref(getClientHeight(ssr))\n const platform = shallowRef(getPlatform(ssr))\n const state = reactive({} as DisplayInstance)\n const width = ref(getClientWidth(ssr))\n\n function updateSize () {\n height.value = getClientHeight()\n width.value = getClientWidth()\n }\n function update () {\n updateSize()\n platform.value = getPlatform()\n }\n\n // eslint-disable-next-line max-statements\n watchEffect(() => {\n const xs = width.value < thresholds.sm\n const sm = width.value < thresholds.md && !xs\n const md = width.value < thresholds.lg && !(sm || xs)\n const lg = width.value < thresholds.xl && !(md || sm || xs)\n const xl = width.value < thresholds.xxl && !(lg || md || sm || xs)\n const xxl = width.value >= thresholds.xxl\n const name =\n xs ? 'xs'\n : sm ? 'sm'\n : md ? 'md'\n : lg ? 'lg'\n : xl ? 'xl'\n : 'xxl'\n const breakpointValue = typeof mobileBreakpoint === 'number' ? mobileBreakpoint : thresholds[mobileBreakpoint]\n const mobile = width.value < breakpointValue\n\n state.xs = xs\n state.sm = sm\n state.md = md\n state.lg = lg\n state.xl = xl\n state.xxl = xxl\n state.smAndUp = !xs\n state.mdAndUp = !(xs || sm)\n state.lgAndUp = !(xs || sm || md)\n state.xlAndUp = !(xs || sm || md || lg)\n state.smAndDown = !(md || lg || xl || xxl)\n state.mdAndDown = !(lg || xl || xxl)\n state.lgAndDown = !(xl || xxl)\n state.xlAndDown = !xxl\n state.name = name\n state.height = height.value\n state.width = width.value\n state.mobile = mobile\n state.mobileBreakpoint = mobileBreakpoint\n state.platform = platform.value\n state.thresholds = thresholds\n })\n\n if (IN_BROWSER) {\n window.addEventListener('resize', updateSize, { passive: true })\n }\n\n return { ...toRefs(state), update, ssr: !!ssr }\n}\n\nexport function useDisplay () {\n const display = inject(DisplaySymbol)\n\n if (!display) throw new Error('Could not find Vuetify display injection')\n\n return display\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.mjs","names":["computed","inject","provide","ref","toRef","watch","useProxiedModel","consoleWarn","propsFactory","FormKey","Symbol","for","makeFormProps","disabled","Boolean","fastFail","readonly","modelValue","type","default","validateOn","String","createForm","props","model","isDisabled","isReadonly","isValidating","items","errors","validate","results","valid","value","item","itemErrorMessages","length","push","id","errorMessages","reset","forEach","resetValidation","invalid","isValid","deep","register","some","unregister","filter","update","found","find","useForm"],"sources":["../../src/composables/form.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, toRef, watch } from 'vue'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n validateOn: Ref<FormProps['validateOn']>\n}\n\
|
|
1
|
+
{"version":3,"file":"form.mjs","names":["computed","inject","provide","ref","toRef","watch","useProxiedModel","consoleWarn","propsFactory","FormKey","Symbol","for","makeFormProps","disabled","Boolean","fastFail","readonly","modelValue","type","default","validateOn","String","createForm","props","model","isDisabled","isReadonly","isValidating","items","errors","validate","results","valid","value","item","itemErrorMessages","length","push","id","errorMessages","reset","forEach","resetValidation","invalid","isValid","deep","register","some","unregister","filter","update","found","find","useForm"],"sources":["../../src/composables/form.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, toRef, watch } from 'vue'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { consoleWarn, propsFactory } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { ValidationProps } from './validation'\n\nexport interface FormProvide {\n register: (item: {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n }) => void\n unregister: (id: number | string) => void\n update: (id: number | string, isValid: boolean | null, errorMessages: string[]) => void\n items: Ref<FormField[]>\n isDisabled: ComputedRef<boolean>\n isReadonly: ComputedRef<boolean>\n isValidating: Ref<boolean>\n validateOn: Ref<FormProps['validateOn']>\n}\n\nexport interface FormField {\n id: number | string\n validate: () => Promise<string[]>\n reset: () => void\n resetValidation: () => void\n isValid: boolean | null\n errorMessages: string[]\n}\n\nexport interface FieldValidationResult {\n id: number | string\n errorMessages: string[]\n}\n\nexport interface FormValidationResult {\n valid: boolean\n errors: FieldValidationResult[]\n}\n\nexport interface SubmitEventPromise extends SubmitEvent, Promise<FormValidationResult> {}\n\nexport const FormKey: InjectionKey<FormProvide> = Symbol.for('vuetify:form')\n\nexport interface FormProps {\n disabled: boolean\n fastFail: boolean\n readonly: boolean\n modelValue: boolean | null\n 'onUpdate:modelValue': ((val: boolean | null) => void) | undefined\n validateOn: ValidationProps['validateOn']\n}\n\nexport const makeFormProps = propsFactory({\n disabled: Boolean,\n fastFail: Boolean,\n readonly: Boolean,\n modelValue: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n validateOn: {\n type: String as PropType<FormProps['validateOn']>,\n default: 'input',\n },\n}, 'form')\n\nexport function createForm (props: FormProps) {\n const model = useProxiedModel(props, 'modelValue')\n\n const isDisabled = computed(() => props.disabled)\n const isReadonly = computed(() => props.readonly)\n const isValidating = ref(false)\n const items = ref<FormField[]>([])\n const errors = ref<FieldValidationResult[]>([])\n\n async function validate () {\n const results = []\n let valid = true\n\n errors.value = []\n isValidating.value = true\n\n for (const item of items.value) {\n const itemErrorMessages = await item.validate()\n\n if (itemErrorMessages.length > 0) {\n valid = false\n\n results.push({\n id: item.id,\n errorMessages: itemErrorMessages,\n })\n }\n\n if (!valid && props.fastFail) break\n }\n\n errors.value = results\n isValidating.value = false\n\n return { valid, errors: errors.value }\n }\n\n function reset () {\n items.value.forEach(item => item.reset())\n model.value = null\n }\n\n function resetValidation () {\n items.value.forEach(item => item.resetValidation())\n errors.value = []\n model.value = null\n }\n\n watch(items, () => {\n let valid = 0\n let invalid = 0\n const results = []\n\n for (const item of items.value) {\n if (item.isValid === false) {\n invalid++\n results.push({\n id: item.id,\n errorMessages: item.errorMessages,\n })\n } else if (item.isValid === true) valid++\n }\n\n errors.value = results\n model.value =\n invalid > 0 ? false\n : valid === items.value.length ? true\n : null\n }, { deep: true })\n\n provide(FormKey, {\n register: ({ id, validate, reset, resetValidation }) => {\n if (items.value.some(item => item.id === id)) {\n consoleWarn(`Duplicate input name \"${id}\"`)\n }\n\n items.value.push({\n id,\n validate,\n reset,\n resetValidation,\n isValid: null,\n errorMessages: [],\n })\n },\n unregister: id => {\n items.value = items.value.filter(item => {\n return item.id !== id\n })\n },\n update: (id, isValid, errorMessages) => {\n const found = items.value.find(item => item.id === id)\n\n if (!found) return\n\n found.isValid = isValid\n found.errorMessages = errorMessages\n },\n isDisabled,\n isReadonly,\n isValidating,\n items,\n validateOn: toRef(props, 'validateOn'),\n })\n\n return {\n errors,\n isDisabled,\n isReadonly,\n isValidating,\n items,\n validate,\n reset,\n resetValidation,\n }\n}\n\nexport function useForm () {\n return inject(FormKey, null)\n}\n"],"mappings":"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"}
|
package/lib/entry-bundler.mjs
CHANGED
|
@@ -10,7 +10,7 @@ export const createVuetify = function () {
|
|
|
10
10
|
...options
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
|
-
export const version = "3.2.0-dev-
|
|
13
|
+
export const version = "3.2.0-dev-20230322.0";
|
|
14
14
|
createVuetify.version = version;
|
|
15
15
|
export { components, directives };
|
|
16
16
|
export * from "./composables/index.mjs";
|
package/lib/framework.mjs
CHANGED
package/lib/index.d.ts
CHANGED
|
@@ -91,15 +91,12 @@ interface ThemeInstance {
|
|
|
91
91
|
}
|
|
92
92
|
declare function useTheme(): ThemeInstance;
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
xl: number;
|
|
101
|
-
xxl: number;
|
|
102
|
-
}
|
|
94
|
+
declare const breakpoints: readonly ["sm", "md", "lg", "xl", "xxl"];
|
|
95
|
+
type Breakpoint = typeof breakpoints[number];
|
|
96
|
+
type DisplayBreakpoint = 'xs' | Breakpoint;
|
|
97
|
+
type DisplayThresholds = {
|
|
98
|
+
[key in DisplayBreakpoint]: number;
|
|
99
|
+
};
|
|
103
100
|
interface DisplayOptions {
|
|
104
101
|
mobileBreakpoint?: number | DisplayBreakpoint;
|
|
105
102
|
thresholds?: Partial<DisplayThresholds>;
|
|
@@ -424,11 +421,11 @@ declare module '@vue/runtime-core' {
|
|
|
424
421
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
|
425
422
|
VRating: typeof import('vuetify/components')['VRating']
|
|
426
423
|
VSelect: typeof import('vuetify/components')['VSelect']
|
|
424
|
+
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
427
425
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
|
428
426
|
VSheet: typeof import('vuetify/components')['VSheet']
|
|
429
427
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
|
430
428
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
|
431
|
-
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
432
429
|
VSlider: typeof import('vuetify/components')['VSlider']
|
|
433
430
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
|
434
431
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
.v-data-table__tr--focus {
|
|
12
12
|
border: 1px dotted black;
|
|
13
13
|
}
|
|
14
|
+
.v-data-table__tr--clickable {
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
}
|
|
14
17
|
|
|
15
18
|
.v-data-table .v-table__wrapper > table > thead > tr > td,
|
|
16
19
|
.v-data-table .v-table__wrapper > table > thead > tr th,
|
|
@@ -30,6 +33,18 @@
|
|
|
30
33
|
.v-data-table .v-table__wrapper > table tbody > tr th.v-data-table-column--align-end .v-data-table-header__content {
|
|
31
34
|
flex-direction: row-reverse;
|
|
32
35
|
}
|
|
36
|
+
.v-data-table .v-table__wrapper > table > thead > tr > td.v-data-table-column--align-center,
|
|
37
|
+
.v-data-table .v-table__wrapper > table > thead > tr th.v-data-table-column--align-center,
|
|
38
|
+
.v-data-table .v-table__wrapper > table tbody > tr > td.v-data-table-column--align-center,
|
|
39
|
+
.v-data-table .v-table__wrapper > table tbody > tr th.v-data-table-column--align-center {
|
|
40
|
+
text-align: center;
|
|
41
|
+
}
|
|
42
|
+
.v-data-table .v-table__wrapper > table > thead > tr > td.v-data-table-column--align-center .v-data-table-header__content,
|
|
43
|
+
.v-data-table .v-table__wrapper > table > thead > tr th.v-data-table-column--align-center .v-data-table-header__content,
|
|
44
|
+
.v-data-table .v-table__wrapper > table tbody > tr > td.v-data-table-column--align-center .v-data-table-header__content,
|
|
45
|
+
.v-data-table .v-table__wrapper > table tbody > tr th.v-data-table-column--align-center .v-data-table-header__content {
|
|
46
|
+
justify-content: center;
|
|
47
|
+
}
|
|
33
48
|
.v-data-table .v-table__wrapper > table > thead > tr > td.v-data-table-column--no-padding,
|
|
34
49
|
.v-data-table .v-table__wrapper > table > thead > tr th.v-data-table-column--no-padding,
|
|
35
50
|
.v-data-table .v-table__wrapper > table tbody > tr > td.v-data-table-column--no-padding,
|
|
@@ -7,14 +7,13 @@ import { VTable } from "../../components/VTable/index.mjs";
|
|
|
7
7
|
import { VDataTableHeaders } from "./VDataTableHeaders.mjs";
|
|
8
8
|
import { VDataTableRows } from "./VDataTableRows.mjs";
|
|
9
9
|
import { VDataTableFooter } from "./VDataTableFooter.mjs"; // Composables
|
|
10
|
-
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
|
11
10
|
import { makeDataTableItemProps, useDataTableItems } from "./composables/items.mjs";
|
|
12
11
|
import { createHeaders, makeDataTableHeaderProps } from "./composables/headers.mjs";
|
|
13
|
-
import { createSort, makeDataTableSortProps, useSortedItems } from "./composables/sort.mjs";
|
|
14
|
-
import { createGroupBy, makeDataTableGroupProps, useGroupedItems } from "./composables/group.mjs";
|
|
15
|
-
import { createPagination, makeDataTablePaginateProps, usePaginatedItems } from "./composables/paginate.mjs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
12
|
+
import { createSort, makeDataTableSortProps, provideSort, useSortedItems } from "./composables/sort.mjs";
|
|
13
|
+
import { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from "./composables/group.mjs";
|
|
14
|
+
import { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from "./composables/paginate.mjs";
|
|
15
|
+
import { makeDataTableSelectProps, provideSelection } from "./composables/select.mjs";
|
|
16
|
+
import { makeDataTableExpandProps, provideExpanded } from "./composables/expand.mjs";
|
|
18
17
|
import { useOptions } from "./composables/options.mjs";
|
|
19
18
|
import { provideDefaults } from "../../composables/defaults.mjs"; // Utilities
|
|
20
19
|
import { computed, toRef } from 'vue';
|
|
@@ -60,7 +59,18 @@ export const VDataTable = genericComponent()({
|
|
|
60
59
|
emit,
|
|
61
60
|
slots
|
|
62
61
|
} = _ref;
|
|
63
|
-
const
|
|
62
|
+
const {
|
|
63
|
+
groupBy
|
|
64
|
+
} = createGroupBy(props);
|
|
65
|
+
const {
|
|
66
|
+
sortBy,
|
|
67
|
+
multiSort,
|
|
68
|
+
mustSort
|
|
69
|
+
} = createSort(props);
|
|
70
|
+
const {
|
|
71
|
+
page,
|
|
72
|
+
itemsPerPage
|
|
73
|
+
} = createPagination(props);
|
|
64
74
|
const {
|
|
65
75
|
columns
|
|
66
76
|
} = createHeaders(props, {
|
|
@@ -78,32 +88,46 @@ export const VDataTable = genericComponent()({
|
|
|
78
88
|
} = useFilter(props, items, search, {
|
|
79
89
|
filterKeys
|
|
80
90
|
});
|
|
81
|
-
|
|
82
|
-
sortBy
|
|
83
|
-
|
|
91
|
+
provideSort({
|
|
92
|
+
sortBy,
|
|
93
|
+
multiSort,
|
|
94
|
+
mustSort,
|
|
95
|
+
page
|
|
96
|
+
});
|
|
84
97
|
const {
|
|
85
98
|
sortByWithGroups,
|
|
86
99
|
opened,
|
|
87
100
|
extractRows
|
|
88
|
-
} =
|
|
101
|
+
} = provideGroupBy({
|
|
102
|
+
groupBy,
|
|
103
|
+
sortBy
|
|
104
|
+
});
|
|
89
105
|
const {
|
|
90
106
|
sortedItems
|
|
91
107
|
} = useSortedItems(filteredItems, sortByWithGroups, columns);
|
|
92
108
|
const {
|
|
93
109
|
flatItems
|
|
94
110
|
} = useGroupedItems(sortedItems, groupBy, opened);
|
|
111
|
+
const itemsLength = computed(() => flatItems.value.length);
|
|
95
112
|
const {
|
|
96
|
-
page,
|
|
97
|
-
itemsPerPage,
|
|
98
113
|
startIndex,
|
|
99
114
|
stopIndex
|
|
100
|
-
} =
|
|
115
|
+
} = providePagination({
|
|
116
|
+
page,
|
|
117
|
+
itemsPerPage,
|
|
118
|
+
itemsLength
|
|
119
|
+
});
|
|
101
120
|
const {
|
|
102
121
|
paginatedItems
|
|
103
|
-
} = usePaginatedItems(
|
|
122
|
+
} = usePaginatedItems({
|
|
123
|
+
items: flatItems,
|
|
124
|
+
startIndex,
|
|
125
|
+
stopIndex,
|
|
126
|
+
itemsPerPage
|
|
127
|
+
});
|
|
104
128
|
const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value));
|
|
105
|
-
|
|
106
|
-
|
|
129
|
+
provideSelection(props, paginatedItemsWithoutGroups);
|
|
130
|
+
provideExpanded(props);
|
|
107
131
|
useOptions({
|
|
108
132
|
page,
|
|
109
133
|
itemsPerPage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTable.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","VDataTableFooter","useProxiedModel","makeDataTableItemProps","useDataTableItems","createHeaders","makeDataTableHeaderProps","createSort","makeDataTableSortProps","useSortedItems","createGroupBy","makeDataTableGroupProps","useGroupedItems","createPagination","makeDataTablePaginateProps","usePaginatedItems","createSelection","makeDataTableSelectProps","createExpanded","makeDataTableExpandProps","useOptions","provideDefaults","computed","toRef","genericComponent","propsFactory","useRender","makeFilterProps","useFilter","makeVDataTableProps","hideNoData","Boolean","noDataText","type","String","default","height","Number","width","fixedHeader","fixedFooter","VDataTable","name","props","search","emits","value","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortBy","sortByWithGroups","opened","extractRows","sortedItems","flatItems","page","itemsPerPage","startIndex","stopIndex","paginatedItems","paginatedItemsWithoutGroups","top","colgroup","headers","multiSort","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDataTableFooter } from './VDataTableFooter'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createSort, makeDataTableSortProps, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createPagination, makeDataTablePaginateProps, usePaginatedItems } from './composables/paginate'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { useOptions } from './composables/options'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Types\nimport type { DataTableItem } from './types'\n\nexport type VDataTableSlots = VDataTableRowsSlots & {\n default: []\n top: []\n headers: []\n body: []\n tbody: []\n thead: []\n tfoot: []\n bottom: []\n 'footer.prepend': []\n}\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTableItemProps(),\n ...makeDataTableHeaderProps(),\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n height: [String, Number],\n width: [String, Number],\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n}, 'v-data-table')\n\nexport const VDataTable = genericComponent<VDataTableSlots & { colgroup: [] }>()({\n name: 'VDataTable',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => 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': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { filterKeys })\n\n const { sortBy } = createSort(props)\n const { sortByWithGroups, opened, extractRows } = createGroupBy(props, groupBy, sortBy)\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const { page, itemsPerPage, startIndex, stopIndex } = createPagination(props, flatItems)\n const { paginatedItems } = usePaginatedItems(flatItems, startIndex, stopIndex, itemsPerPage)\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n createSelection(props, paginatedItemsWithoutGroups)\n\n createExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--show-select': props.showSelect,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n )}\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ paginatedItems.value }\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTable.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","VDataTableFooter","makeDataTableItemProps","useDataTableItems","createHeaders","makeDataTableHeaderProps","createSort","makeDataTableSortProps","provideSort","useSortedItems","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createPagination","makeDataTablePaginateProps","providePagination","usePaginatedItems","makeDataTableSelectProps","provideSelection","makeDataTableExpandProps","provideExpanded","useOptions","provideDefaults","computed","toRef","genericComponent","propsFactory","useRender","makeFilterProps","useFilter","makeVDataTableProps","hideNoData","Boolean","noDataText","type","String","default","height","Number","width","fixedHeader","fixedFooter","VDataTable","name","props","search","emits","value","event","setup","emit","slots","groupBy","sortBy","multiSort","mustSort","page","itemsPerPage","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortByWithGroups","opened","extractRows","sortedItems","flatItems","itemsLength","length","startIndex","stopIndex","paginatedItems","paginatedItemsWithoutGroups","top","colgroup","headers","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTable.tsx"],"sourcesContent":["// Styles\nimport './VDataTable.sass'\n\n// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VDataTableFooter } from './VDataTableFooter'\n\n// Composables\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { createSort, makeDataTableSortProps, provideSort, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createPagination, makeDataTablePaginateProps, providePagination, usePaginatedItems } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { useOptions } from './composables/options'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\n\n// Types\nimport type { DataTableItem } from './types'\n\nexport type VDataTableSlots = VDataTableRowsSlots & {\n default: []\n top: []\n headers: []\n body: []\n tbody: []\n thead: []\n tfoot: []\n bottom: []\n 'footer.prepend': []\n}\n\nexport const makeVDataTableProps = propsFactory({\n ...makeDataTableItemProps(),\n ...makeDataTableHeaderProps(),\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n height: [String, Number],\n width: [String, Number],\n fixedHeader: Boolean,\n fixedFooter: Boolean,\n}, 'v-data-table')\n\nexport const VDataTable = genericComponent<VDataTableSlots & { colgroup: [] }>()({\n name: 'VDataTable',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (value: number) => true,\n 'update:itemsPerPage': (value: number) => 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': (event: 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 const { page, itemsPerPage } = createPagination(props)\n\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter<DataTableItem>(props, items, search, { filterKeys })\n\n provideSort({ sortBy, multiSort, mustSort, page })\n const { sortByWithGroups, opened, extractRows } = provideGroupBy({ groupBy, sortBy })\n\n const { sortedItems } = useSortedItems(filteredItems, sortByWithGroups, columns)\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n const itemsLength = computed(() => flatItems.value.length)\n\n const { startIndex, stopIndex } = providePagination({ page, itemsPerPage, itemsLength })\n const { paginatedItems } = usePaginatedItems({ items: flatItems, startIndex, stopIndex, itemsPerPage })\n\n const paginatedItemsWithoutGroups = computed(() => extractRows(paginatedItems.value))\n\n provideSelection(props, paginatedItemsWithoutGroups)\n\n provideExpanded(props)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--show-select': props.showSelect,\n },\n ]}\n fixedHeader={ props.fixedHeader }\n fixedFooter={ props.fixedFooter }\n height={ props.height }\n >\n {{\n top: slots.top,\n default: slots.default ?? (() => (\n <>\n { slots.colgroup?.({ columns }) }\n <thead>\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n )}\n </thead>\n { slots.thead?.() }\n <tbody>\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ paginatedItems.value }\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n )}\n </tbody>\n { slots.tbody?.() }\n { slots.tfoot?.() }\n </>\n )),\n bottom: slots.bottom ?? (() => (\n <VDataTableFooter\n v-slots={{\n prepend: slots['footer.prepend'],\n }}\n />\n )),\n }}\n </VTable>\n ))\n\n return {}\n },\n})\n\nexport type VDataTable = InstanceType<typeof VDataTable>\n"],"mappings":"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"}
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
&--focus
|
|
15
15
|
border: 1px dotted black
|
|
16
16
|
|
|
17
|
+
&--clickable
|
|
18
|
+
cursor: pointer
|
|
19
|
+
|
|
17
20
|
.v-data-table
|
|
18
21
|
.v-table__wrapper
|
|
19
22
|
> table
|
|
@@ -29,6 +32,12 @@
|
|
|
29
32
|
|
|
30
33
|
.v-data-table-header__content
|
|
31
34
|
flex-direction: row-reverse
|
|
35
|
+
|
|
36
|
+
&.v-data-table-column--align-center
|
|
37
|
+
text-align: center
|
|
38
|
+
|
|
39
|
+
.v-data-table-header__content
|
|
40
|
+
justify-content: center
|
|
32
41
|
|
|
33
42
|
&.v-data-table-column--no-padding
|
|
34
43
|
padding: 0 8px
|
|
@@ -86,7 +86,8 @@ export const VDataTableFooter = genericComponent()({
|
|
|
86
86
|
startIndex,
|
|
87
87
|
stopIndex,
|
|
88
88
|
itemsLength,
|
|
89
|
-
itemsPerPage
|
|
89
|
+
itemsPerPage,
|
|
90
|
+
setItemsPerPage
|
|
90
91
|
} = usePagination();
|
|
91
92
|
const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => ({
|
|
92
93
|
...option,
|
|
@@ -99,7 +100,7 @@ export const VDataTableFooter = genericComponent()({
|
|
|
99
100
|
}, [_createVNode("span", null, [t(props.itemsPerPageText)]), _createVNode(VSelect, {
|
|
100
101
|
"items": itemsPerPageOptions.value,
|
|
101
102
|
"modelValue": itemsPerPage.value,
|
|
102
|
-
"onUpdate:modelValue": v =>
|
|
103
|
+
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
|
103
104
|
"density": "compact",
|
|
104
105
|
"variant": "outlined",
|
|
105
106
|
"hide-details": true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","useLocale","usePagination","computed","genericComponent","VDataTableFooter","name","props","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","setup","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","map","option","prepend","v","Number","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { usePagination } from './composables/paginate'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalItem } from '@/composables/items'\n\nexport const VDataTableFooter = genericComponent<{ prepend: [] }>()({\n name: 'VDataTableFooter',\n\n props: {\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType<InternalItem[]>,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => ({\n ...option,\n title: t(option.title),\n }))\n ))\n\n return () => (\n <div\n class=\"v-data-table-footer\"\n >\n { slots.prepend?.() }\n <div class=\"v-data-table-footer__items-per-page\">\n <span>{ t(props.itemsPerPageText) }</span>\n <VSelect\n items={ itemsPerPageOptions.value }\n modelValue={ itemsPerPage.value }\n onUpdate:modelValue={ v =>
|
|
1
|
+
{"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","useLocale","usePagination","computed","genericComponent","VDataTableFooter","name","props","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","setup","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","prepend","v","Number","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { usePagination } from './composables/paginate'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalItem } from '@/composables/items'\n\nexport const VDataTableFooter = genericComponent<{ prepend: [] }>()({\n name: 'VDataTableFooter',\n\n props: {\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType<InternalItem[]>,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => ({\n ...option,\n title: t(option.title),\n }))\n ))\n\n return () => (\n <div\n class=\"v-data-table-footer\"\n >\n { slots.prepend?.() }\n <div class=\"v-data-table-footer__items-per-page\">\n <span>{ t(props.itemsPerPageText) }</span>\n <VSelect\n items={ itemsPerPageOptions.value }\n modelValue={ itemsPerPage.value }\n onUpdate:modelValue={ v => setItemsPerPage(Number(v)) }\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n />\n </div>\n <div class=\"v-data-table-footer__info\">\n <div>\n { t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value) }\n </div>\n </div>\n <div class=\"v-data-table-footer__pagination\">\n <VBtn\n icon={ props.firstIcon }\n variant=\"plain\"\n onClick={ () => page.value = 1 }\n disabled={ page.value === 1 }\n aria-label={ t(props.firstPageLabel) }\n />\n <VBtn\n icon={ props.prevIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.max(1, page.value - 1) }\n disabled={ page.value === 1 }\n aria-label={ t(props.prevPageLabel) }\n />\n { props.showCurrentPage && (\n <span key=\"page\" class=\"v-data-table-footer__page\">{ page.value }</span>\n )}\n <VBtn\n icon={ props.nextIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.min(pageCount.value, page.value + 1) }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.nextPageLabel) }\n />\n <VBtn\n icon={ props.lastIcon }\n variant=\"plain\"\n onClick={ () => page.value = pageCount.value }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.lastPageLabel) }\n />\n </div>\n </div>\n )\n },\n})\n"],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@ import { defineComponent, useRender } from "../../util/index.mjs"; // Types
|
|
|
10
10
|
export const VDataTableRow = defineComponent({
|
|
11
11
|
name: 'VDataTableRow',
|
|
12
12
|
props: {
|
|
13
|
-
|
|
13
|
+
index: Number,
|
|
14
|
+
item: Object,
|
|
15
|
+
onClick: Function
|
|
14
16
|
},
|
|
15
17
|
setup(props, _ref) {
|
|
16
18
|
let {
|
|
@@ -28,7 +30,10 @@ export const VDataTableRow = defineComponent({
|
|
|
28
30
|
columns
|
|
29
31
|
} = useHeaders();
|
|
30
32
|
useRender(() => _createVNode("tr", {
|
|
31
|
-
"class": ['v-data-table__tr'
|
|
33
|
+
"class": ['v-data-table__tr', {
|
|
34
|
+
'v-data-table__tr--clickable': !!props.onClick
|
|
35
|
+
}],
|
|
36
|
+
"onClick": props.onClick
|
|
32
37
|
}, [!columns.value.length && _createVNode(VDataTableColumn, {
|
|
33
38
|
"key": "no-data"
|
|
34
39
|
}, slots), props.item && columns.value.map((column, i) => _createVNode(VDataTableColumn, {
|
|
@@ -43,6 +48,7 @@ export const VDataTableRow = defineComponent({
|
|
|
43
48
|
const item = props.item;
|
|
44
49
|
const slotName = `item.${column.key}`;
|
|
45
50
|
const slotProps = {
|
|
51
|
+
index: props.index,
|
|
46
52
|
item: props.item,
|
|
47
53
|
columns: columns.value,
|
|
48
54
|
isSelected,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","defineComponent","useRender","VDataTableRow","name","props","item","Object","setup","slots","isSelected","toggleSelect","isExpanded","toggleExpand","columns","value","length","map","column","i","align","fixed","fixedOffset","lastFixed","key","width","default","slotName","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Utilities\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem } from './types'\n\nexport const VDataTableRow = defineComponent({\n name: 'VDataTableRow',\n\n props: {\n item: Object as PropType<DataTableItem>,\n },\n\n setup (props, { slots }) {\n const { isSelected, toggleSelect } = useSelection()\n const { isExpanded, toggleExpand } = useExpanded()\n const { columns } = useHeaders()\n\n useRender(() => (\n <tr\n class={[\n 'v-data-table__tr',\n ]}\n >\n { !columns.value.length && (\n <VDataTableColumn\n key=\"no-data\"\n v-slots={ slots }\n />\n )}\n\n { props.item && columns.value.map((column, i) => (\n <VDataTableColumn\n align={ column.align }\n fixed={ column.fixed }\n fixedOffset={ column.fixedOffset }\n lastFixed={ column.lastFixed }\n noPadding={ column.key === 'data-table-select' || column.key === 'data-table-expand' }\n width={ column.width }\n >\n {{\n default: () => {\n const item = props.item!\n const slotName = `item.${column.key}`\n const slotProps = {\n item: props.item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand,\n }\n\n if (slots[slotName]) return slots[slotName]!(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? (\n <VCheckboxBtn\n modelValue={ isSelected([item]) }\n onClick={ () => toggleSelect(item) }\n />\n )\n }\n\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? (\n <VBtn\n icon={ isExpanded(item) ? '$collapse' : '$expand' }\n size=\"small\"\n variant=\"text\"\n onClick={ () => toggleExpand(item) }\n />\n )\n }\n\n return item.columns[column.key]\n },\n }}\n </VDataTableColumn>\n ))}\n </tr>\n ))\n },\n})\n\nexport type VDataTableRow = InstanceType<typeof VDataTableRow>\n"],"mappings":";AAAA;AAAA,SACSA,IAAI;AAAA,SACJC,YAAY,gDAErB;AAAA,SACSC,WAAW;AAAA,SACXC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,gBAAgB,kCAEzB;AAAA,SACSC,eAAe,EAAEC,SAAS,gCAEnC;AAIA,OAAO,MAAMC,aAAa,GAAGF,eAAe,CAAC;EAC3CG,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,IAAI,EAAEC;
|
|
1
|
+
{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","defineComponent","useRender","VDataTableRow","name","props","index","Number","item","Object","onClick","Function","setup","slots","isSelected","toggleSelect","isExpanded","toggleExpand","columns","value","length","map","column","i","align","fixed","fixedOffset","lastFixed","key","width","default","slotName","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRow.tsx"],"sourcesContent":["// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { VDataTableColumn } from './VDataTableColumn'\n\n// Utilities\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem } from './types'\n\nexport const VDataTableRow = defineComponent({\n name: 'VDataTableRow',\n\n props: {\n index: Number as PropType<Number>,\n item: Object as PropType<DataTableItem>,\n onClick: Function as PropType<(e: MouseEvent) => void>,\n },\n\n setup (props, { slots }) {\n const { isSelected, toggleSelect } = useSelection()\n const { isExpanded, toggleExpand } = useExpanded()\n const { columns } = useHeaders()\n\n useRender(() => (\n <tr\n class={[\n 'v-data-table__tr',\n {\n 'v-data-table__tr--clickable': !!props.onClick,\n },\n ]}\n onClick={ props.onClick }\n >\n { !columns.value.length && (\n <VDataTableColumn\n key=\"no-data\"\n v-slots={ slots }\n />\n )}\n\n { props.item && columns.value.map((column, i) => (\n <VDataTableColumn\n align={ column.align }\n fixed={ column.fixed }\n fixedOffset={ column.fixedOffset }\n lastFixed={ column.lastFixed }\n noPadding={ column.key === 'data-table-select' || column.key === 'data-table-expand' }\n width={ column.width }\n >\n {{\n default: () => {\n const item = props.item!\n const slotName = `item.${column.key}`\n const slotProps = {\n index: props.index,\n item: props.item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n isExpanded,\n toggleExpand,\n }\n\n if (slots[slotName]) return slots[slotName]!(slotProps)\n\n if (column.key === 'data-table-select') {\n return slots['item.data-table-select']?.(slotProps) ?? (\n <VCheckboxBtn\n modelValue={ isSelected([item]) }\n onClick={ () => toggleSelect(item) }\n />\n )\n }\n\n if (column.key === 'data-table-expand') {\n return slots['item.data-table-expand']?.(slotProps) ?? (\n <VBtn\n icon={ isExpanded(item) ? '$collapse' : '$expand' }\n size=\"small\"\n variant=\"text\"\n onClick={ () => toggleExpand(item) }\n />\n )\n }\n\n return item.columns[column.key]\n },\n }}\n </VDataTableColumn>\n ))}\n </tr>\n ))\n },\n})\n\nexport type VDataTableRow = InstanceType<typeof VDataTableRow>\n"],"mappings":";AAAA;AAAA,SACSA,IAAI;AAAA,SACJC,YAAY,gDAErB;AAAA,SACSC,WAAW;AAAA,SACXC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,gBAAgB,kCAEzB;AAAA,SACSC,eAAe,EAAEC,SAAS,gCAEnC;AAIA,OAAO,MAAMC,aAAa,GAAGF,eAAe,CAAC;EAC3CG,IAAI,EAAE,eAAe;EAErBC,KAAK,EAAE;IACLC,KAAK,EAAEC,MAA0B;IACjCC,IAAI,EAAEC,MAAiC;IACvCC,OAAO,EAAEC;EACX,CAAC;EAEDC,KAAK,CAAEP,KAAK,QAAa;IAAA,IAAX;MAAEQ;IAAM,CAAC;IACrB,MAAM;MAAEC,UAAU;MAAEC;IAAa,CAAC,GAAGhB,YAAY,EAAE;IACnD,MAAM;MAAEiB,UAAU;MAAEC;IAAa,CAAC,GAAGpB,WAAW,EAAE;IAClD,MAAM;MAAEqB;IAAQ,CAAC,GAAGpB,UAAU,EAAE;IAEhCI,SAAS,CAAC;MAAA,SAEC,CACL,kBAAkB,EAClB;QACE,6BAA6B,EAAE,CAAC,CAACG,KAAK,CAACK;MACzC,CAAC,CACF;MAAA,WACSL,KAAK,CAACK;IAAO,IAErB,CAACQ,OAAO,CAACC,KAAK,CAACC,MAAM;MAAA,OAEf;IAAS,GACHP,KAAK,CAElB,EAECR,KAAK,CAACG,IAAI,IAAIU,OAAO,CAACC,KAAK,CAACE,GAAG,CAAC,CAACC,MAAM,EAAEC,CAAC;MAAA,SAEhCD,MAAM,CAACE,KAAK;MAAA,SACZF,MAAM,CAACG,KAAK;MAAA,eACNH,MAAM,CAACI,WAAW;MAAA,aACpBJ,MAAM,CAACK,SAAS;MAAA,aAChBL,MAAM,CAACM,GAAG,KAAK,mBAAmB,IAAIN,MAAM,CAACM,GAAG,KAAK,mBAAmB;MAAA,SAC5EN,MAAM,CAACO;IAAK;MAGlBC,OAAO,EAAE,MAAM;QACb,MAAMtB,IAAI,GAAGH,KAAK,CAACG,IAAK;QACxB,MAAMuB,QAAQ,GAAI,QAAOT,MAAM,CAACM,GAAI,EAAC;QACrC,MAAMI,SAAS,GAAG;UAChB1B,KAAK,EAAED,KAAK,CAACC,KAAK;UAClBE,IAAI,EAAEH,KAAK,CAACG,IAAI;UAChBU,OAAO,EAAEA,OAAO,CAACC,KAAK;UACtBL,UAAU;UACVC,YAAY;UACZC,UAAU;UACVC;QACF,CAAC;QAED,IAAIJ,KAAK,CAACkB,QAAQ,CAAC,EAAE,OAAOlB,KAAK,CAACkB,QAAQ,CAAC,CAAEC,SAAS,CAAC;QAEvD,IAAIV,MAAM,CAACM,GAAG,KAAK,mBAAmB,EAAE;UACtC,OAAOf,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC;YAAA,cAElClB,UAAU,CAAC,CAACN,IAAI,CAAC,CAAC;YAAA,WACrB,MAAMO,YAAY,CAACP,IAAI;UAAC,QAErC;QACH;QAEA,IAAIc,MAAM,CAACM,GAAG,KAAK,mBAAmB,EAAE;UACtC,OAAOf,KAAK,CAAC,wBAAwB,CAAC,GAAGmB,SAAS,CAAC;YAAA,QAExChB,UAAU,CAACR,IAAI,CAAC,GAAG,WAAW,GAAG,SAAS;YAAA,QAC5C,OAAO;YAAA,WACJ,MAAM;YAAA,WACJ,MAAMS,YAAY,CAACT,IAAI;UAAC,QAErC;QACH;QAEA,OAAOA,IAAI,CAACU,OAAO,CAACI,MAAM,CAACM,GAAG,CAAC;MACjC;IAAC,EAGN,CAAC,EAEL,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -94,12 +94,13 @@ export const VDataTableRows = genericComponent()({
|
|
|
94
94
|
"key": `item_${item.value}`,
|
|
95
95
|
"onClick": event => {
|
|
96
96
|
if (expandOnClick.value) {
|
|
97
|
-
toggleExpand(item
|
|
97
|
+
toggleExpand(item);
|
|
98
98
|
}
|
|
99
99
|
emit('click:row', event, {
|
|
100
100
|
item
|
|
101
101
|
});
|
|
102
102
|
},
|
|
103
|
+
"index": index,
|
|
103
104
|
"item": item
|
|
104
105
|
}, slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
|
|
105
106
|
})]));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","useRender","VDataTableRows","name","props","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","emits","event","value","setup","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","undefined","length","map","item","index","id","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRows.tsx"],"sourcesContent":["// Components\nimport { VDataTableGroupHeaderRow } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, GroupHeaderItem, InternalDataTableHeader, InternalDataTableItem } from './types'\nimport type { PropType } from 'vue'\n\ntype GroupHeaderSlot = {\n index: number\n item: GroupHeaderItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n}\n\ntype ItemSlot = {\n index: number\n item: InternalDataTableItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n}\n\nexport type VDataTableRowsSlots = {\n default: []\n item: [ItemSlot]\n loading: []\n 'group-header': [GroupHeaderSlot]\n 'no-data': []\n 'expanded-row': [ItemSlot]\n 'item.data-table-select': [ItemSlot]\n 'item.data-table-expand': [ItemSlot]\n} & { [key: `item.${string}`]: [ItemSlot] }\n\nexport const VDataTableRows = genericComponent<VDataTableRowsSlots>()({\n name: 'VDataTableRows',\n\n props: {\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideNoData: Boolean,\n items: {\n type: Array as PropType<InternalDataTableItem[]>,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowHeight: Number,\n },\n\n emits: {\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { columns } = useHeaders()\n const { expandOnClick, toggleExpand, isExpanded } = useExpanded()\n const { isSelected, toggleSelect } = useSelection()\n const { toggleGroup, isGroupOpen } = useGroupBy()\n const { t } = useLocale()\n\n useRender(() => (\n <>\n { props.loading ? slots.loading?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"loading\"\n >\n { t(props.loadingText) }\n </VDataTableRow>\n ) : undefined }\n\n { !props.loading && !props.items.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"no-data\"\n >\n { t(props.noDataText) }\n </VDataTableRow>\n ))}\n\n { props.items.map((item, index) => {\n if (item.type === 'group-header') {\n return slots['group-header'] ? slots['group-header']({\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen,\n } as GroupHeaderSlot) : (\n <VDataTableGroupHeaderRow\n key={ `group-header_${item.id}` }\n item={ item }\n v-slots={ slots }\n />\n )\n }\n\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n } as ItemSlot\n\n return (\n <>\n { slots.item ? slots.item(slotProps) : (\n <VDataTableRow\n key={ `item_${item.value}` }\n onClick={ (event: Event) => {\n if (expandOnClick.value) {\n toggleExpand(item
|
|
1
|
+
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","genericComponent","useRender","VDataTableRows","name","props","loading","Boolean","String","loadingText","type","default","hideNoData","items","Array","noDataText","rowHeight","Number","emits","event","value","setup","emit","slots","columns","expandOnClick","toggleExpand","isExpanded","isSelected","toggleSelect","toggleGroup","isGroupOpen","t","undefined","length","map","item","index","id","slotProps"],"sources":["../../../src/labs/VDataTable/VDataTableRows.tsx"],"sourcesContent":["// Components\nimport { VDataTableGroupHeaderRow } from './VDataTableGroupHeaderRow'\nimport { VDataTableRow } from './VDataTableRow'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\nimport { useExpanded } from './composables/expand'\nimport { useHeaders } from './composables/headers'\nimport { useSelection } from './composables/select'\nimport { useGroupBy } from './composables/group'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { DataTableItem, GroupHeaderItem, InternalDataTableHeader, InternalDataTableItem } from './types'\nimport type { PropType } from 'vue'\n\ntype GroupHeaderSlot = {\n index: number\n item: GroupHeaderItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n}\n\ntype ItemSlot = {\n index: number\n item: InternalDataTableItem\n columns: InternalDataTableHeader[]\n isExpanded: (item: DataTableItem) => boolean\n toggleExpand: (item: DataTableItem) => void\n isSelected: (items: DataTableItem[]) => boolean\n toggleSelect: (item: DataTableItem) => void\n}\n\nexport type VDataTableRowsSlots = {\n default: []\n item: [ItemSlot]\n loading: []\n 'group-header': [GroupHeaderSlot]\n 'no-data': []\n 'expanded-row': [ItemSlot]\n 'item.data-table-select': [ItemSlot]\n 'item.data-table-expand': [ItemSlot]\n} & { [key: `item.${string}`]: [ItemSlot] }\n\nexport const VDataTableRows = genericComponent<VDataTableRowsSlots>()({\n name: 'VDataTableRows',\n\n props: {\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideNoData: Boolean,\n items: {\n type: Array as PropType<InternalDataTableItem[]>,\n default: () => ([]),\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n rowHeight: Number,\n },\n\n emits: {\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const { columns } = useHeaders()\n const { expandOnClick, toggleExpand, isExpanded } = useExpanded()\n const { isSelected, toggleSelect } = useSelection()\n const { toggleGroup, isGroupOpen } = useGroupBy()\n const { t } = useLocale()\n\n useRender(() => (\n <>\n { props.loading ? slots.loading?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"loading\"\n >\n { t(props.loadingText) }\n </VDataTableRow>\n ) : undefined }\n\n { !props.loading && !props.items.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VDataTableRow\n class=\"v-data-table-rows-no-data\"\n key=\"no-data\"\n >\n { t(props.noDataText) }\n </VDataTableRow>\n ))}\n\n { props.items.map((item, index) => {\n if (item.type === 'group-header') {\n return slots['group-header'] ? slots['group-header']({\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n toggleGroup,\n isGroupOpen,\n } as GroupHeaderSlot) : (\n <VDataTableGroupHeaderRow\n key={ `group-header_${item.id}` }\n item={ item }\n v-slots={ slots }\n />\n )\n }\n\n const slotProps = {\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n } as ItemSlot\n\n return (\n <>\n { slots.item ? slots.item(slotProps) : (\n <VDataTableRow\n key={ `item_${item.value}` }\n onClick={ (event: Event) => {\n if (expandOnClick.value) {\n toggleExpand(item)\n }\n\n emit('click:row', event, { item })\n }}\n index={ index }\n item={ item }\n v-slots={ slots }\n />\n )}\n\n { isExpanded(item) && slots['expanded-row']?.(slotProps) }\n </>\n )\n })}\n </>\n ))\n\n return {}\n },\n})\n\nexport type VDataTableRows = InstanceType<typeof VDataTableRows>\n"],"mappings":";AAAA;AAAA,SACSA,wBAAwB;AAAA,SACxBC,aAAa,+BAEtB;AAAA,SACSC,SAAS;AAAA,SACTC,WAAW;AAAA,SACXC,UAAU;AAAA,SACVC,YAAY;AAAA,SACZC,UAAU,mCAEnB;AAAA,SACSC,gBAAgB,EAAEC,SAAS,gCAEpC;AAqCA,OAAO,MAAMC,cAAc,GAAGF,gBAAgB,EAAuB,CAAC;EACpEG,IAAI,EAAE,gBAAgB;EAEtBC,KAAK,EAAE;IACLC,OAAO,EAAE,CAACC,OAAO,EAAEC,MAAM,CAAC;IAC1BC,WAAW,EAAE;MACXC,IAAI,EAAEF,MAAM;MACZG,OAAO,EAAE;IACX,CAAC;IACDC,UAAU,EAAEL,OAAO;IACnBM,KAAK,EAAE;MACLH,IAAI,EAAEI,KAA0C;MAChDH,OAAO,EAAE,MAAO;IAClB,CAAC;IACDI,UAAU,EAAE;MACVL,IAAI,EAAEF,MAAM;MACZG,OAAO,EAAE;IACX,CAAC;IACDK,SAAS,EAAEC;EACb,CAAC;EAEDC,KAAK,EAAE;IACL,WAAW,EAAE,CAACC,KAAY,EAAEC,KAA8B,KAAK;EACjE,CAAC;EAEDC,KAAK,CAAEhB,KAAK,QAAmB;IAAA,IAAjB;MAAEiB,IAAI;MAAEC;IAAM,CAAC;IAC3B,MAAM;MAAEC;IAAQ,CAAC,GAAG1B,UAAU,EAAE;IAChC,MAAM;MAAE2B,aAAa;MAAEC,YAAY;MAAEC;IAAW,CAAC,GAAG9B,WAAW,EAAE;IACjE,MAAM;MAAE+B,UAAU;MAAEC;IAAa,CAAC,GAAG9B,YAAY,EAAE;IACnD,MAAM;MAAE+B,WAAW;MAAEC;IAAY,CAAC,GAAG/B,UAAU,EAAE;IACjD,MAAM;MAAEgC;IAAE,CAAC,GAAGpC,SAAS,EAAE;IAEzBM,SAAS,CAAC,qCAEJG,KAAK,CAACC,OAAO,GAAGiB,KAAK,CAACjB,OAAO,IAAI;MAAA,SAEzB,2BAA2B;MAAA,OAC7B;IAAS;MAAA,gBAEX0B,CAAC,CAAC3B,KAAK,CAACI,WAAW,CAAC;IAAA,EAEzB,GAAGwB,SAAS,EAEX,CAAC5B,KAAK,CAACC,OAAO,IAAI,CAACD,KAAK,CAACQ,KAAK,CAACqB,MAAM,IAAI,CAAC7B,KAAK,CAACO,UAAU,KAAKW,KAAK,CAAC,SAAS,CAAC,IAAI;MAAA,SAE3E,2BAA2B;MAAA,OAC7B;IAAS;MAAA,gBAEXS,CAAC,CAAC3B,KAAK,CAACU,UAAU,CAAC;IAAA,EAExB,CAAC,EAEAV,KAAK,CAACQ,KAAK,CAACsB,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MACjC,IAAID,IAAI,CAAC1B,IAAI,KAAK,cAAc,EAAE;QAChC,OAAOa,KAAK,CAAC,cAAc,CAAC,GAAGA,KAAK,CAAC,cAAc,CAAC,CAAC;UACnDc,KAAK;UACLD,IAAI;UACJZ,OAAO,EAAEA,OAAO,CAACJ,KAAK;UACtBO,UAAU;UACVD,YAAY;UACZE,UAAU;UACVC,YAAY;UACZC,WAAW;UACXC;QACF,CAAC,CAAoB;UAAA,OAEV,gBAAeK,IAAI,CAACE,EAAG,EAAC;UAAA,QACxBF;QAAI,GACDb,KAAK,CAElB;MACH;MAEA,MAAMgB,SAAS,GAAG;QAChBF,KAAK;QACLD,IAAI;QACJZ,OAAO,EAAEA,OAAO,CAACJ,KAAK;QACtBO,UAAU;QACVD,YAAY;QACZE,UAAU;QACVC;MACF,CAAa;MAEb,sCAEMN,KAAK,CAACa,IAAI,GAAGb,KAAK,CAACa,IAAI,CAACG,SAAS,CAAC;QAAA,OAEzB,QAAOH,IAAI,CAAChB,KAAM,EAAC;QAAA,WACfD,KAAY,IAAK;UAC1B,IAAIM,aAAa,CAACL,KAAK,EAAE;YACvBM,YAAY,CAACU,IAAI,CAAC;UACpB;UAEAd,IAAI,CAAC,WAAW,EAAEH,KAAK,EAAE;YAAEiB;UAAK,CAAC,CAAC;QACpC,CAAC;QAAA,SACOC,KAAK;QAAA,QACND;MAAI,GACDb,KAAK,CAElB,EAECI,UAAU,CAACS,IAAI,CAAC,IAAIb,KAAK,CAAC,cAAc,CAAC,GAAGgB,SAAS,CAAC;IAG9D,CAAC,CAAC,EAEL,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
|