@vuetify/nightly 3.1.2-next-20230113.0 → 3.1.2
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 +15 -2
- package/dist/json/importMap.json +56 -56
- package/dist/vuetify-labs.css +178 -177
- package/dist/vuetify-labs.d.ts +40 -3
- package/dist/vuetify-labs.esm.js +158 -90
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +158 -90
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +203 -202
- package/dist/vuetify.d.ts +56 -19
- package/dist/vuetify.esm.js +105 -74
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +105 -74
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +52 -52
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.mjs +9 -3
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VCard/VCard.mjs +5 -2
- package/lib/components/VCard/VCard.mjs.map +1 -1
- package/lib/components/VCard/index.d.ts +8 -2
- package/lib/components/VCombobox/VCombobox.mjs +2 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.css +1 -0
- package/lib/components/VFileInput/VFileInput.sass +1 -0
- package/lib/components/VList/VListItem.css +1 -1
- package/lib/components/VList/VListItem.mjs +5 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +1 -1
- package/lib/components/VList/index.d.ts +20 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs +13 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VProgressLinear/index.d.ts +18 -0
- package/lib/components/VSelect/VSelect.mjs +1 -0
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.mjs +5 -1
- package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
- package/lib/components/index.d.ts +40 -3
- package/lib/composables/filter.mjs +3 -3
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +16 -16
- package/lib/labs/VDataTable/VDataTable.mjs +4 -1
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs +3 -3
- package/lib/labs/VDataTable/VDataTableGroupHeaderRow.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +36 -8
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +4 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/group.mjs +9 -4
- package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useExpanded","useHeaders","
|
|
1
|
+
{"version":3,"file":"VDataTableRows.mjs","names":["VDataTableGroupHeaderRow","VDataTableRow","useLocale","useExpanded","useHeaders","useSelection","useGroupBy","defineComponent","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"],"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 { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { DataTableItem, InternalDataTableItem } from './types'\n\nexport const VDataTableRows = defineComponent({\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 }) : (\n <VDataTableGroupHeaderRow\n key={ `group-header_${item.id}` }\n item={ item }\n v-slots={ slots }\n />\n )\n }\n\n return (\n <>\n { slots.item ? slots.item({\n index,\n item,\n columns: columns.value,\n isExpanded,\n toggleExpand,\n isSelected,\n toggleSelect,\n }) : (\n <VDataTableRow\n key={ `item_${item.value}` }\n onClick={ (event: Event) => {\n if (expandOnClick.value) {\n toggleExpand(item.value)\n }\n\n emit('click:row', event, { item })\n } }\n item={ item }\n v-slots={ slots }\n />\n ) }\n\n { isExpanded(item.value) && slots['expanded-row']?.({ item, columns: columns.value }) }\n </>\n )\n }) }\n </>\n ))\n\n return {}\n },\n})\n\nexport type VDataTableRows = InstanceType<typeof VDataTableRows>\n"],"mappings":"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"}
|
|
@@ -56,9 +56,12 @@ export const VDataTableVirtual = defineComponent({
|
|
|
56
56
|
const {
|
|
57
57
|
items
|
|
58
58
|
} = useDataTableItems(props, columns);
|
|
59
|
+
const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key));
|
|
59
60
|
const {
|
|
60
61
|
filteredItems
|
|
61
|
-
} = useFilter(props, items, toRef(props, 'search')
|
|
62
|
+
} = useFilter(props, items, toRef(props, 'search'), {
|
|
63
|
+
filterKeys
|
|
64
|
+
});
|
|
62
65
|
const {
|
|
63
66
|
sortBy
|
|
64
67
|
} = createSort(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDataTableVirtual.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","useProxiedModel","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","createExpanded","makeDataTableExpandProps","createSort","makeDataTableSortProps","useSortedItems","createGroupBy","makeDataTableGroupProps","useGroupedItems","createSelection","makeDataTableSelectProps","makeDataTableVirtualProps","useVirtual","useOptions","makeFilterProps","useFilter","provideDefaults","computed","ref","toRef","convertToUnit","defineComponent","useRender","makeVDataTableProps","VDataTableVirtual","name","props","search","String","emits","value","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","filteredItems","sortBy","sortByWithGroups","opened","extractRows","sortedItems","flatItems","allRows","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","length","pageCount","itemsPerPage","hideNoData","noDataText","height","fixedHeader","top","wrapper","multiSort","border","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { createSort, makeDataTableSortProps, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { useOptions } from './composables/options'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utlities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\n\nexport const VDataTableVirtual = defineComponent({\n name: 'VDataTableVirtual',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeVDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const { filteredItems } = useFilter<DataTableItem>(props, items, toRef(props, 'search'))\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 allRows = computed(() => extractRows(flatItems.value))\n\n createSelection(props, allRows)\n createExpanded(props)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n startIndex,\n stopIndex,\n itemHeight,\n handleScroll,\n } = useVirtual(props, flatItems)\n\n const visibleItems = computed(() => {\n return flatItems.value.slice(startIndex.value, stopIndex.value)\n })\n\n useOptions({\n sortBy,\n page: ref(1),\n startIndex: ref(0),\n stopIndex: computed(() => flatItems.value.length - 1),\n pageCount: ref(1),\n itemsPerPage: ref(-1),\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=\"v-data-table\"\n style={{\n '--v-table-row-height': convertToUnit(itemHeight.value),\n }}\n height={ props.height }\n fixedHeader={ props.fixedHeader }\n >\n {{\n top: slots.top,\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={columns.value.length} style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n items={visibleItems.value}\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={columns.value.length} style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: slots.bottom,\n }}\n </VTable>\n ))\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDataTableVirtual.mjs","names":["VTable","VDataTableHeaders","VDataTableRows","useProxiedModel","createHeaders","makeDataTableHeaderProps","makeDataTableItemProps","useDataTableItems","createExpanded","makeDataTableExpandProps","createSort","makeDataTableSortProps","useSortedItems","createGroupBy","makeDataTableGroupProps","useGroupedItems","createSelection","makeDataTableSelectProps","makeDataTableVirtualProps","useVirtual","useOptions","makeFilterProps","useFilter","provideDefaults","computed","ref","toRef","convertToUnit","defineComponent","useRender","makeVDataTableProps","VDataTableVirtual","name","props","search","String","emits","value","event","setup","emit","slots","groupBy","columns","showSelect","showExpand","items","filterKeys","map","c","key","filteredItems","sortBy","sortByWithGroups","opened","extractRows","sortedItems","flatItems","allRows","containerRef","paddingTop","paddingBottom","startIndex","stopIndex","itemHeight","handleScroll","visibleItems","slice","page","length","pageCount","itemsPerPage","hideNoData","noDataText","height","fixedHeader","top","wrapper","multiSort","border","bottom"],"sources":["../../../src/labs/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { VTable } from '@/components/VTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRows } from './VDataTableRows'\n\n// Composables\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { createHeaders, makeDataTableHeaderProps } from './composables/headers'\nimport { makeDataTableItemProps, useDataTableItems } from './composables/items'\nimport { createExpanded, makeDataTableExpandProps } from './composables/expand'\nimport { createSort, makeDataTableSortProps, useSortedItems } from './composables/sort'\nimport { createGroupBy, makeDataTableGroupProps, useGroupedItems } from './composables/group'\nimport { createSelection, makeDataTableSelectProps } from './composables/select'\nimport { makeDataTableVirtualProps, useVirtual } from './composables/virtual'\nimport { useOptions } from './composables/options'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utlities\nimport { computed, ref, toRef } from 'vue'\nimport { convertToUnit, defineComponent, useRender } from '@/util'\nimport { makeVDataTableProps } from './VDataTable'\n\n// Types\nimport type { DataTableItem } from './types'\n\nexport const VDataTableVirtual = defineComponent({\n name: 'VDataTableVirtual',\n\n props: {\n search: String,\n\n ...makeVDataTableProps(),\n ...makeVDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeDataTableExpandProps(),\n ...makeDataTableHeaderProps(),\n ...makeDataTableItemProps(),\n ...makeDataTableSelectProps(),\n ...makeDataTableSortProps(),\n ...makeDataTableVirtualProps(),\n ...makeFilterProps(),\n },\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n 'click:row': (event: Event, value: { item: DataTableItem }) => true,\n },\n\n setup (props, { emit, slots }) {\n const groupBy = useProxiedModel(props, 'groupBy')\n const { columns } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const filterKeys = computed(() => columns.value.map(c => 'columns.' + c.key))\n const { filteredItems } = useFilter<DataTableItem>(props, items, toRef(props, '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 allRows = computed(() => extractRows(flatItems.value))\n\n createSelection(props, allRows)\n createExpanded(props)\n\n const {\n containerRef,\n paddingTop,\n paddingBottom,\n startIndex,\n stopIndex,\n itemHeight,\n handleScroll,\n } = useVirtual(props, flatItems)\n\n const visibleItems = computed(() => {\n return flatItems.value.slice(startIndex.value, stopIndex.value)\n })\n\n useOptions({\n sortBy,\n page: ref(1),\n startIndex: ref(0),\n stopIndex: computed(() => flatItems.value.length - 1),\n pageCount: ref(1),\n itemsPerPage: ref(-1),\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=\"v-data-table\"\n style={{\n '--v-table-row-height': convertToUnit(itemHeight.value),\n }}\n height={ props.height }\n fixedHeader={ props.fixedHeader }\n >\n {{\n top: slots.top,\n wrapper: () => (\n <div\n ref={ containerRef }\n onScroll={ handleScroll }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n <thead>\n <VDataTableHeaders\n sticky={ props.fixedHeader }\n multiSort={ props.multiSort }\n v-slots={ slots }\n />\n </thead>\n <tbody>\n <tr style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={columns.value.length} style={{ height: convertToUnit(paddingTop.value), border: 0 }}></td>\n </tr>\n\n <VDataTableRows\n items={visibleItems.value}\n onClick:row={ (event, value) => emit('click:row', event, value) }\n v-slots={ slots }\n />\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={columns.value.length} style={{ height: convertToUnit(paddingBottom.value), border: 0 }}></td>\n </tr>\n </tbody>\n </table>\n </div>\n ),\n bottom: slots.bottom,\n }}\n </VTable>\n ))\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":"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"}
|
|
@@ -16,9 +16,13 @@ export function createGroupBy(props, groupBy, sortBy) {
|
|
|
16
16
|
order: val.order ?? false
|
|
17
17
|
})).concat(sortBy.value);
|
|
18
18
|
});
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
function isGroupOpen(group) {
|
|
20
|
+
return opened.value.has(group.id);
|
|
21
|
+
}
|
|
22
|
+
function toggleGroup(group) {
|
|
23
|
+
const newOpened = new Set(opened.value);
|
|
24
|
+
if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);
|
|
25
|
+
opened.value = newOpened;
|
|
22
26
|
}
|
|
23
27
|
function extractRows(items) {
|
|
24
28
|
function dive(group) {
|
|
@@ -51,7 +55,8 @@ export function createGroupBy(props, groupBy, sortBy) {
|
|
|
51
55
|
toggleGroup,
|
|
52
56
|
opened,
|
|
53
57
|
groupBy,
|
|
54
|
-
extractRows
|
|
58
|
+
extractRows,
|
|
59
|
+
isGroupOpen
|
|
55
60
|
};
|
|
56
61
|
provide(VDataTableGroupSymbol, data);
|
|
57
62
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.mjs","names":["computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","
|
|
1
|
+
{"version":3,"file":"group.mjs","names":["computed","inject","provide","ref","getObjectValueByPath","propsFactory","makeDataTableGroupProps","groupBy","type","Array","default","VDataTableGroupSymbol","Symbol","for","createGroupBy","props","sortBy","opened","Set","sortByWithGroups","value","map","val","order","concat","isGroupOpen","group","has","id","toggleGroup","newOpened","add","delete","extractRows","items","dive","arr","item","push","key","depth","data","useGroupBy","Error","groupItemsByProperty","length","groups","Map","raw","set","get","groupItems","prefix","groupedItems","rest","slice","forEach","flattenItems","flatItems","useGroupedItems"],"sources":["../../../../src/labs/VDataTable/composables/group.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref } from 'vue'\nimport { getObjectValueByPath, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableItem, GroupHeaderItem } from '../types'\nimport type { SortItem } from './sort'\n\nexport const makeDataTableGroupProps = propsFactory({\n groupBy: {\n type: Array as PropType<SortItem[]>,\n default: () => ([]),\n },\n}, 'data-table-group')\n\nconst VDataTableGroupSymbol: InjectionKey<{\n opened: Ref<Set<string>>\n toggleGroup: (group: GroupHeaderItem) => void\n isGroupOpen: (group: GroupHeaderItem) => boolean\n sortByWithGroups: Ref<SortItem[]>\n groupBy: Ref<readonly SortItem[]>\n extractRows: (items: (DataTableItem | GroupHeaderItem)[]) => DataTableItem[]\n}> = Symbol.for('vuetify:data-table-group')\n\ntype GroupProps = {\n}\n\nexport function createGroupBy (props: GroupProps, groupBy: Ref<readonly SortItem[]>, sortBy: Ref<readonly SortItem[]>) {\n const opened = ref(new Set<string>())\n\n const sortByWithGroups = computed(() => {\n return groupBy.value.map<SortItem>(val => ({\n ...val,\n order: val.order ?? false,\n })).concat(sortBy.value)\n })\n\n function isGroupOpen (group: GroupHeaderItem) {\n return opened.value.has(group.id)\n }\n\n function toggleGroup (group: GroupHeaderItem) {\n const newOpened = new Set(opened.value)\n if (!isGroupOpen(group)) newOpened.add(group.id)\n else newOpened.delete(group.id)\n\n opened.value = newOpened\n }\n\n function extractRows (items: (DataTableItem | GroupHeaderItem)[]) {\n function dive (group: GroupHeaderItem): DataTableItem[] {\n const arr = []\n\n for (const item of group.items) {\n if (item.type === 'item') arr.push(item)\n else {\n arr.push(...dive(item))\n }\n }\n\n return arr\n }\n return dive({ type: 'group-header', items, id: 'dummy', key: 'dummy', value: 'dummy', depth: 0 })\n }\n\n // onBeforeMount(() => {\n // for (const key of groupedItems.value.keys()) {\n // opened.value.add(key)\n // }\n // })\n\n const data = { sortByWithGroups, toggleGroup, opened, groupBy, extractRows, isGroupOpen }\n\n provide(VDataTableGroupSymbol, data)\n\n return data\n}\n\nexport function useGroupBy () {\n const data = inject(VDataTableGroupSymbol)\n\n if (!data) throw new Error('Missing group!')\n\n return data\n}\n\nfunction groupItemsByProperty (items: DataTableItem[], groupBy: string) {\n if (!items.length) return []\n\n const groups = new Map<any, DataTableItem[]>()\n for (const item of items) {\n const value = getObjectValueByPath(item.raw, groupBy)\n\n if (!groups.has(value)) {\n groups.set(value, [])\n }\n groups.get(value)!.push(item)\n }\n\n return groups\n}\n\nfunction groupItems (items: DataTableItem[], groupBy: string[], depth = 0, prefix = 'root') {\n if (!groupBy.length) return []\n\n const groupedItems = groupItemsByProperty(items, groupBy[0])\n const groups: GroupHeaderItem[] = []\n\n const rest = groupBy.slice(1)\n groupedItems.forEach((items, value) => {\n const key = groupBy[0]\n const id = `${prefix}_${key}_${value}`\n groups.push({\n depth,\n id,\n key,\n value,\n items: rest.length ? groupItems(items, rest, depth + 1, id) : items,\n type: 'group-header',\n })\n })\n\n return groups\n}\n\nfunction flattenItems (items: (DataTableItem | GroupHeaderItem)[], opened: Set<string>) {\n const flatItems: (DataTableItem | GroupHeaderItem)[] = []\n\n for (const item of items) {\n // TODO: make this better\n if (item.type === 'group-header') {\n if (item.value != null) {\n flatItems.push(item)\n }\n\n if (opened.has(item.id) || item.value == null) {\n flatItems.push(...flattenItems(item.items, opened))\n }\n } else {\n flatItems.push(item)\n }\n }\n\n return flatItems\n}\n\nexport function useGroupedItems (items: Ref<DataTableItem[]>, groupBy: Ref<readonly SortItem[]>, opened: Ref<Set<string>>) {\n const flatItems = computed(() => {\n if (!groupBy.value.length) return items.value\n\n const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key))\n\n return flattenItems(groupedItems, opened.value)\n })\n\n return { flatItems }\n}\n"],"mappings":"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"}
|