vuetify 3.1.11 → 3.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +8 -12
- package/dist/json/importMap.json +84 -84
- package/dist/json/tags.json +0 -1
- package/dist/json/web-types.json +19 -25
- package/dist/vuetify-labs.css +129 -135
- package/dist/vuetify-labs.d.ts +73 -66
- package/dist/vuetify-labs.esm.js +65 -36
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +64 -35
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +53 -59
- package/dist/vuetify.d.ts +66 -75
- package/dist/vuetify.esm.js +44 -30
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +44 -30
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +326 -325
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VBadge/VBadge.css +1 -0
- package/lib/components/VBadge/VBadge.sass +1 -0
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/index.d.ts +41 -50
- package/lib/components/VCombobox/VCombobox.mjs +9 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.css +11 -18
- package/lib/components/VDialog/VDialog.mjs +2 -2
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +8 -15
- package/lib/components/VField/VField.mjs +5 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VGrid/VCol.mjs +2 -2
- package/lib/components/VGrid/VCol.mjs.map +1 -1
- package/lib/components/VGrid/VRow.mjs +2 -2
- package/lib/components/VGrid/VRow.mjs.map +1 -1
- package/lib/components/VOverlay/VOverlay.css +1 -1
- package/lib/components/VOverlay/VOverlay.sass +1 -1
- package/lib/components/VTextField/VTextField.mjs +11 -6
- package/lib/components/VTextField/VTextField.mjs.map +1 -1
- package/lib/components/index.d.ts +41 -50
- package/lib/composables/forwardRefs.mjs +12 -15
- package/lib/composables/forwardRefs.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +25 -25
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRow.mjs +5 -4
- package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +3 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/items.mjs +14 -1
- package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +32 -16
- package/lib/labs/components.d.ts +32 -16
- package/lib/util/globals.mjs +1 -1
- package/lib/util/globals.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forwardRefs.mjs","names":["Refs","Symbol","
|
|
1
|
+
{"version":3,"file":"forwardRefs.mjs","names":["Refs","Symbol","getDescriptor","obj","key","currentObj","descriptor","Reflect","getOwnPropertyDescriptor","Object","getPrototypeOf","undefined","forwardRefs","target","refs","Proxy","get","has","ref","value","val","bind","startsWith","_","setupState","childRefs","queue","slice","length","shift","push"],"sources":["../../src/composables/forwardRefs.ts"],"sourcesContent":["import type { ComponentPublicInstance, Ref, UnwrapRef } from 'vue'\nimport type { UnionToIntersection } from '@/util'\n\nconst Refs = Symbol('Forwarded refs')\n\n/** Omit properties starting with P */\ntype OmitPrefix<T, P extends string> = [Extract<keyof T, `${P}${any}`>] extends [never] ? T : Omit<T, `${P}${any}`>\n\ntype OmitProps<T> = T extends { $props: any } ? Omit<T, keyof T['$props']> : never\n\nfunction getDescriptor (obj: any, key: PropertyKey) {\n let currentObj = obj\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key)\n if (descriptor) return descriptor\n currentObj = Object.getPrototypeOf(currentObj)\n }\n return undefined\n}\n\nexport function forwardRefs<T extends {}, U extends Ref<HTMLElement | Omit<ComponentPublicInstance, '$emit'> | undefined>[]> (\n target: T,\n ...refs: U\n): T & UnionToIntersection<{ [K in keyof U]: OmitPrefix<OmitProps<NonNullable<UnwrapRef<U[K]>>>, '$'> }[number]> {\n (target as any)[Refs] = refs\n\n return new Proxy(target, {\n get (target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key)\n return typeof val === 'function'\n ? val.bind(ref.value)\n : val\n }\n }\n },\n getOwnPropertyDescriptor (target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key)\n if (descriptor) return descriptor\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('__')) return\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined)\n if (descriptor) return descriptor\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (!childRefs) continue\n const queue = childRefs.slice()\n while (queue.length) {\n const ref = queue.shift()\n const descriptor = getDescriptor(ref.value, key)\n if (descriptor) return descriptor\n const childRefs = ref.value && (ref.value as any)[Refs]\n if (childRefs) queue.push(...childRefs)\n }\n }\n\n return undefined\n },\n }) as any\n}\n"],"mappings":"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"}
|
package/lib/entry-bundler.mjs
CHANGED
package/lib/framework.mjs
CHANGED
package/lib/index.d.ts
CHANGED
|
@@ -312,29 +312,23 @@ declare module '@vue/runtime-core' {
|
|
|
312
312
|
|
|
313
313
|
export interface GlobalComponents {
|
|
314
314
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
|
315
|
-
VForm: typeof import('vuetify/components')['VForm']
|
|
316
315
|
VContainer: typeof import('vuetify/components')['VContainer']
|
|
317
316
|
VCol: typeof import('vuetify/components')['VCol']
|
|
318
317
|
VRow: typeof import('vuetify/components')['VRow']
|
|
319
318
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
|
320
319
|
VHover: typeof import('vuetify/components')['VHover']
|
|
321
|
-
|
|
320
|
+
VForm: typeof import('vuetify/components')['VForm']
|
|
322
321
|
VLayout: typeof import('vuetify/components')['VLayout']
|
|
323
322
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
|
323
|
+
VLazy: typeof import('vuetify/components')['VLazy']
|
|
324
324
|
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
|
325
325
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
|
326
|
-
|
|
326
|
+
VParallax: typeof import('vuetify/components')['VParallax']
|
|
327
327
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
|
328
|
+
VRadio: typeof import('vuetify/components')['VRadio']
|
|
328
329
|
VResponsive: typeof import('vuetify/components')['VResponsive']
|
|
329
|
-
VParallax: typeof import('vuetify/components')['VParallax']
|
|
330
|
-
VValidation: typeof import('vuetify/components')['VValidation']
|
|
331
|
-
VApp: typeof import('vuetify/components')['VApp']
|
|
332
|
-
VAppBar: typeof import('vuetify/components')['VAppBar']
|
|
333
|
-
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
|
334
|
-
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
|
335
|
-
VAlert: typeof import('vuetify/components')['VAlert']
|
|
336
|
-
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
|
337
330
|
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
|
331
|
+
VValidation: typeof import('vuetify/components')['VValidation']
|
|
338
332
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
|
339
333
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
|
340
334
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
|
@@ -351,13 +345,22 @@ declare module '@vue/runtime-core' {
|
|
|
351
345
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
|
352
346
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
|
353
347
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
|
348
|
+
VApp: typeof import('vuetify/components')['VApp']
|
|
349
|
+
VAppBar: typeof import('vuetify/components')['VAppBar']
|
|
350
|
+
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
|
351
|
+
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
|
352
|
+
VAlert: typeof import('vuetify/components')['VAlert']
|
|
353
|
+
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
|
354
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
|
354
355
|
VAvatar: typeof import('vuetify/components')['VAvatar']
|
|
355
356
|
VBadge: typeof import('vuetify/components')['VBadge']
|
|
356
|
-
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
|
357
357
|
VBanner: typeof import('vuetify/components')['VBanner']
|
|
358
358
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
|
359
359
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
|
360
360
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
|
361
|
+
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
|
362
|
+
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
|
363
|
+
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
|
361
364
|
VBtn: typeof import('vuetify/components')['VBtn']
|
|
362
365
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
|
363
366
|
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
|
@@ -369,9 +372,6 @@ declare module '@vue/runtime-core' {
|
|
|
369
372
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
|
370
373
|
VCarousel: typeof import('vuetify/components')['VCarousel']
|
|
371
374
|
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
|
372
|
-
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
|
373
|
-
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
|
374
|
-
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
|
375
375
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
|
376
376
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
|
377
377
|
VChip: typeof import('vuetify/components')['VChip']
|
|
@@ -380,7 +380,6 @@ declare module '@vue/runtime-core' {
|
|
|
380
380
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
|
381
381
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
|
382
382
|
VCounter: typeof import('vuetify/components')['VCounter']
|
|
383
|
-
VDialog: typeof import('vuetify/components')['VDialog']
|
|
384
383
|
VDivider: typeof import('vuetify/components')['VDivider']
|
|
385
384
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
|
386
385
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
|
@@ -411,37 +410,38 @@ declare module '@vue/runtime-core' {
|
|
|
411
410
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
|
412
411
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
|
413
412
|
VMenu: typeof import('vuetify/components')['VMenu']
|
|
414
|
-
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
415
|
-
VMain: typeof import('vuetify/components')['VMain']
|
|
416
413
|
VMessages: typeof import('vuetify/components')['VMessages']
|
|
414
|
+
VMain: typeof import('vuetify/components')['VMain']
|
|
415
|
+
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
|
417
416
|
VOverlay: typeof import('vuetify/components')['VOverlay']
|
|
418
417
|
VPagination: typeof import('vuetify/components')['VPagination']
|
|
419
418
|
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
|
420
|
-
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
|
421
419
|
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
|
420
|
+
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
|
422
421
|
VRating: typeof import('vuetify/components')['VRating']
|
|
423
422
|
VSelect: typeof import('vuetify/components')['VSelect']
|
|
424
|
-
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
|
425
423
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
|
424
|
+
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
|
426
425
|
VSheet: typeof import('vuetify/components')['VSheet']
|
|
427
426
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
|
428
427
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
|
429
428
|
VSlider: typeof import('vuetify/components')['VSlider']
|
|
430
429
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
|
431
|
-
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
|
432
430
|
VSwitch: typeof import('vuetify/components')['VSwitch']
|
|
433
|
-
|
|
434
|
-
VTextarea: typeof import('vuetify/components')['VTextarea']
|
|
431
|
+
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
|
435
432
|
VTabs: typeof import('vuetify/components')['VTabs']
|
|
436
433
|
VTab: typeof import('vuetify/components')['VTab']
|
|
434
|
+
VTable: typeof import('vuetify/components')['VTable']
|
|
435
|
+
VTextarea: typeof import('vuetify/components')['VTextarea']
|
|
436
|
+
VTimeline: typeof import('vuetify/components')['VTimeline']
|
|
437
|
+
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
|
437
438
|
VTextField: typeof import('vuetify/components')['VTextField']
|
|
438
439
|
VToolbar: typeof import('vuetify/components')['VToolbar']
|
|
439
440
|
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
|
440
441
|
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
|
441
442
|
VTooltip: typeof import('vuetify/components')['VTooltip']
|
|
442
|
-
VTimeline: typeof import('vuetify/components')['VTimeline']
|
|
443
|
-
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
|
444
443
|
VWindow: typeof import('vuetify/components')['VWindow']
|
|
445
444
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
|
445
|
+
VDialog: typeof import('vuetify/components')['VDialog']
|
|
446
446
|
}
|
|
447
447
|
}
|
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
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, InternalDataTableHeader } from './types'\n\nexport type VDataTableSlots = VDataTableRowsSlots & {\n colgroup: [InternalDataTableHeader]\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>()({\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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"}
|
|
@@ -6,7 +6,8 @@ import { useExpanded } from "./composables/expand.mjs";
|
|
|
6
6
|
import { useHeaders } from "./composables/headers.mjs";
|
|
7
7
|
import { useSelection } from "./composables/select.mjs";
|
|
8
8
|
import { VDataTableColumn } from "./VDataTableColumn.mjs"; // Utilities
|
|
9
|
-
import {
|
|
9
|
+
import { withModifiers } from 'vue';
|
|
10
|
+
import { defineComponent, getPropertyFromItem, useRender } from "../../util/index.mjs"; // Types
|
|
10
11
|
export const VDataTableRow = defineComponent({
|
|
11
12
|
name: 'VDataTableRow',
|
|
12
13
|
props: {
|
|
@@ -60,7 +61,7 @@ export const VDataTableRow = defineComponent({
|
|
|
60
61
|
if (column.key === 'data-table-select') {
|
|
61
62
|
return slots['item.data-table-select']?.(slotProps) ?? _createVNode(VCheckboxBtn, {
|
|
62
63
|
"modelValue": isSelected([item]),
|
|
63
|
-
"onClick": () => toggleSelect(item)
|
|
64
|
+
"onClick": withModifiers(() => toggleSelect(item), ['stop'])
|
|
64
65
|
}, null);
|
|
65
66
|
}
|
|
66
67
|
if (column.key === 'data-table-expand') {
|
|
@@ -68,10 +69,10 @@ export const VDataTableRow = defineComponent({
|
|
|
68
69
|
"icon": isExpanded(item) ? '$collapse' : '$expand',
|
|
69
70
|
"size": "small",
|
|
70
71
|
"variant": "text",
|
|
71
|
-
"onClick": () => toggleExpand(item)
|
|
72
|
+
"onClick": withModifiers(() => toggleExpand(item), ['stop'])
|
|
72
73
|
}, null);
|
|
73
74
|
}
|
|
74
|
-
return item.columns
|
|
75
|
+
return getPropertyFromItem(item.columns, column.key);
|
|
75
76
|
}
|
|
76
77
|
}))]));
|
|
77
78
|
}
|
|
@@ -1 +1 @@
|
|
|
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
|
|
1
|
+
{"version":3,"file":"VDataTableRow.mjs","names":["VBtn","VCheckboxBtn","useExpanded","useHeaders","useSelection","VDataTableColumn","withModifiers","defineComponent","getPropertyFromItem","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 { withModifiers } from 'vue'\nimport { defineComponent, getPropertyFromItem, 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={ withModifiers(() => toggleSelect(item), ['stop']) }\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={ withModifiers(() => toggleExpand(item), ['stop']) }\n />\n )\n }\n\n return getPropertyFromItem(item.columns, column.key)\n },\n }}\n </VDataTableColumn>\n ))}\n </tr>\n ))\n },\n})\n\nexport type VDataTableRow = InstanceType<typeof VDataTableRow>\n"],"mappings":"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"}
|
|
@@ -127,7 +127,9 @@ export const VDataTableServer = genericComponent()({
|
|
|
127
127
|
"height": props.height
|
|
128
128
|
}, {
|
|
129
129
|
top: slots.top,
|
|
130
|
-
default: slots.default ?? (() => _createVNode(_Fragment, null, [
|
|
130
|
+
default: slots.default ?? (() => _createVNode(_Fragment, null, [slots.colgroup?.({
|
|
131
|
+
columns
|
|
132
|
+
}), _createVNode("thead", {
|
|
131
133
|
"class": "v-data-table__thead",
|
|
132
134
|
"role": "rowgroup"
|
|
133
135
|
}, [slots.headers ? slots.headers() : _createVNode(VDataTableHeaders, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableServer.mjs","names":["VTable","VDataTableFooter","VDataTableHeaders","VDataTableRows","provideDefaults","makeDataTableExpandProps","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","makeDataTableSelectProps","provideSelection","createSort","makeDataTableSortProps","provideSort","computed","provide","toRef","genericComponent","useRender","makeVDataTableProps","VDataTableServer","name","props","color","String","loading","Boolean","loadingText","type","default","itemsLength","Number","required","emits","value","page","sortBy","options","event","setup","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","showSelect","showExpand","items","toggleSort","opened","flatItems","hideNoData","noDataText","fixedHeader","fixedFooter","height","top","headers","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { createSort, makeDataTableSortProps, provideSort } from './composables/sort'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlots } from './VDataTable'\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: {\n color: String,\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeDataTableGroupProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (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 const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n provideExpanded(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 { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened } = provideGroupBy({ groupBy, sortBy })\n\n providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n provideSelection(props, items)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\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 <thead class=\"v-data-table__thead\" role=\"rowgroup\">\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n loading={ props.loading }\n color={ props.color }\n v-slots={ slots }\n />\n )}\n </thead>\n { slots.thead?.() }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ flatItems.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})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableServer.mjs","names":["VTable","VDataTableFooter","VDataTableHeaders","VDataTableRows","provideDefaults","makeDataTableExpandProps","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","useOptions","createPagination","makeDataTablePaginateProps","providePagination","makeDataTableSelectProps","provideSelection","createSort","makeDataTableSortProps","provideSort","computed","provide","toRef","genericComponent","useRender","makeVDataTableProps","VDataTableServer","name","props","color","String","loading","Boolean","loadingText","type","default","itemsLength","Number","required","emits","value","page","sortBy","options","event","setup","emit","slots","groupBy","multiSort","mustSort","itemsPerPage","parseInt","columns","showSelect","showExpand","items","toggleSort","opened","flatItems","hideNoData","noDataText","fixedHeader","fixedFooter","height","top","colgroup","headers","thead","body","tbody","tfoot","bottom","prepend"],"sources":["../../../src/labs/VDataTable/VDataTableServer.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableFooter } from './VDataTableFooter'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDataTableExpandProps, provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { createPagination, makeDataTablePaginateProps, providePagination } from './composables/paginate'\nimport { makeDataTableSelectProps, provideSelection } from './composables/select'\nimport { createSort, makeDataTableSortProps, provideSort } from './composables/sort'\n\n// Utilities\nimport { computed, provide, toRef } from 'vue'\nimport { genericComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\nimport type { VDataTableSlots } from './VDataTable'\n\nexport const VDataTableServer = genericComponent<VDataTableSlots>()({\n name: 'VDataTableServer',\n\n props: {\n color: String,\n loading: [Boolean, String],\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n itemsLength: {\n type: [Number, String],\n required: true,\n },\n\n ...makeVDataTableProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTablePaginateProps(),\n ...makeDataTableGroupProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:itemsPerPage': (page: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'update:expanded': (options: any) => true,\n 'update:groupBy': (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 const itemsLength = computed(() => parseInt(props.itemsLength, 10))\n\n provideExpanded(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 { toggleSort } = provideSort({ sortBy, multiSort, mustSort, page })\n\n const { opened } = provideGroupBy({ groupBy, sortBy })\n\n providePagination({ page, itemsPerPage, itemsLength })\n\n const { flatItems } = useGroupedItems(items, groupBy, opened)\n\n provideSelection(props, items)\n\n useOptions({\n page,\n itemsPerPage,\n sortBy,\n groupBy,\n })\n\n provide('v-data-table', {\n toggleSort,\n sortBy,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n useRender(() => (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\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 class=\"v-data-table__thead\" role=\"rowgroup\">\n { slots.headers ? slots.headers() : (\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n loading={ props.loading }\n color={ props.color }\n v-slots={ slots }\n />\n )}\n </thead>\n { slots.thead?.() }\n <tbody class=\"v-data-table__tbody\" role=\"rowgroup\">\n { slots.body ? slots.body() : (\n <VDataTableRows\n items={ flatItems.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})\n\nexport type VDataTableServer = InstanceType<typeof VDataTableServer>\n"],"mappings":"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"}
|
|
@@ -9,6 +9,19 @@ export const makeDataTableItemProps = propsFactory({
|
|
|
9
9
|
itemValue: 'id'
|
|
10
10
|
})
|
|
11
11
|
}, 'v-data-table-item');
|
|
12
|
+
function add(obj, key, value) {
|
|
13
|
+
const path = key.split('.');
|
|
14
|
+
while (path.length > 1) {
|
|
15
|
+
const part = path.shift();
|
|
16
|
+
if (obj[part] == null) {
|
|
17
|
+
obj[part] = {};
|
|
18
|
+
}
|
|
19
|
+
if (typeof obj[part] === 'object') {
|
|
20
|
+
obj = obj[part];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
obj[path[0]] = value;
|
|
24
|
+
}
|
|
12
25
|
export function useDataTableItems(props, columns) {
|
|
13
26
|
const {
|
|
14
27
|
items
|
|
@@ -18,7 +31,7 @@ export function useDataTableItems(props, columns) {
|
|
|
18
31
|
...item,
|
|
19
32
|
type: 'item',
|
|
20
33
|
columns: columns.value.reduce((obj, column) => {
|
|
21
|
-
obj
|
|
34
|
+
add(obj, column.key, getPropertyFromItem(item.raw, column.value ?? column.key));
|
|
22
35
|
return obj;
|
|
23
36
|
}, {})
|
|
24
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"items.mjs","names":["makeItemsProps","useItems","computed","getPropertyFromItem","propsFactory","makeDataTableItemProps","itemValue","useDataTableItems","props","columns","items","dataTableItems","
|
|
1
|
+
{"version":3,"file":"items.mjs","names":["makeItemsProps","useItems","computed","getPropertyFromItem","propsFactory","makeDataTableItemProps","itemValue","add","obj","key","value","path","split","length","part","shift","useDataTableItems","props","columns","items","dataTableItems","map","item","type","reduce","column","raw"],"sources":["../../../../src/labs/VDataTable/composables/items.ts"],"sourcesContent":["// Composables\nimport { makeItemsProps, useItems } from '@/composables/items'\n\n// Utilities\nimport { computed } from 'vue'\nimport { getPropertyFromItem, propsFactory } from '@/util'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { ItemProps } from '@/composables/items'\nimport type { DataTableItem, InternalDataTableHeader } from '../types'\n\nexport const makeDataTableItemProps = propsFactory({\n // TODO: Worth it to make specific datatable implementation\n // without title, children?\n ...makeItemsProps({\n itemValue: 'id',\n }),\n}, 'v-data-table-item')\n\nfunction add (obj: Record<string, unknown>, key: string, value: unknown) {\n const path = key.split('.')\n\n while (path.length > 1) {\n const part = path.shift()!\n if (obj[part] == null) {\n obj[part] = {}\n }\n\n if (typeof obj[part] === 'object') {\n obj = obj[part] as Record<string, unknown>\n }\n }\n\n obj[path[0]] = value\n}\n\nexport function useDataTableItems (props: ItemProps, columns: Ref<InternalDataTableHeader[]>) {\n const { items } = useItems(props)\n\n const dataTableItems = computed<DataTableItem[]>(() => items.value.map(item => {\n return {\n ...item,\n type: 'item',\n columns: columns.value.reduce((obj, column) => {\n add(obj, column.key, getPropertyFromItem(item.raw, column.value ?? column.key))\n return obj\n }, {} as Record<string, unknown>),\n }\n }))\n\n return { items: dataTableItems }\n}\n"],"mappings":"AAAA;AAAA,SACSA,cAAc,EAAEC,QAAQ,0CAEjC;AACA,SAASC,QAAQ,QAAQ,KAAK;AAAA,SACrBC,mBAAmB,EAAEC,YAAY,mCAE1C;AAKA,OAAO,MAAMC,sBAAsB,GAAGD,YAAY,CAAC;EACjD;EACA;EACA,GAAGJ,cAAc,CAAC;IAChBM,SAAS,EAAE;EACb,CAAC;AACH,CAAC,EAAE,mBAAmB,CAAC;AAEvB,SAASC,GAAG,CAAEC,GAA4B,EAAEC,GAAW,EAAEC,KAAc,EAAE;EACvE,MAAMC,IAAI,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC;EAE3B,OAAOD,IAAI,CAACE,MAAM,GAAG,CAAC,EAAE;IACtB,MAAMC,IAAI,GAAGH,IAAI,CAACI,KAAK,EAAG;IAC1B,IAAIP,GAAG,CAACM,IAAI,CAAC,IAAI,IAAI,EAAE;MACrBN,GAAG,CAACM,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB;IAEA,IAAI,OAAON,GAAG,CAACM,IAAI,CAAC,KAAK,QAAQ,EAAE;MACjCN,GAAG,GAAGA,GAAG,CAACM,IAAI,CAA4B;IAC5C;EACF;EAEAN,GAAG,CAACG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAGD,KAAK;AACtB;AAEA,OAAO,SAASM,iBAAiB,CAAEC,KAAgB,EAAEC,OAAuC,EAAE;EAC5F,MAAM;IAAEC;EAAM,CAAC,GAAGlB,QAAQ,CAACgB,KAAK,CAAC;EAEjC,MAAMG,cAAc,GAAGlB,QAAQ,CAAkB,MAAMiB,KAAK,CAACT,KAAK,CAACW,GAAG,CAACC,IAAI,IAAI;IAC7E,OAAO;MACL,GAAGA,IAAI;MACPC,IAAI,EAAE,MAAM;MACZL,OAAO,EAAEA,OAAO,CAACR,KAAK,CAACc,MAAM,CAAC,CAAChB,GAAG,EAAEiB,MAAM,KAAK;QAC7ClB,GAAG,CAACC,GAAG,EAAEiB,MAAM,CAAChB,GAAG,EAAEN,mBAAmB,CAACmB,IAAI,CAACI,GAAG,EAAED,MAAM,CAACf,KAAK,IAAIe,MAAM,CAAChB,GAAG,CAAC,CAAC;QAC/E,OAAOD,GAAG;MACZ,CAAC,EAAE,CAAC,CAAC;IACP,CAAC;EACH,CAAC,CAAC,CAAC;EAEH,OAAO;IAAEW,KAAK,EAAEC;EAAe,CAAC;AAClC"}
|