VDataTableVirtual.mjs.map 17 KB

1
  1. {"version":3,"file":"VDataTableVirtual.mjs","names":["makeDataTableProps","VDataTableHeaders","VDataTableRow","VDataTableRows","VTable","VVirtualScrollItem","provideExpanded","createGroupBy","makeDataTableGroupProps","provideGroupBy","useGroupedItems","createHeaders","useDataTableItems","useOptions","provideSelection","createSort","provideSort","useSortedItems","provideDefaults","makeFilterProps","useFilter","makeVirtualProps","useVirtual","computed","shallowRef","toRef","toRefs","convertToUnit","genericComponent","propsFactory","useRender","makeVDataTableVirtualProps","VDataTableVirtual","name","props","emits","value","setup","_ref","attrs","slots","groupBy","sortBy","multiSort","mustSort","disableSort","columns","headers","filterFunctions","sortFunctions","sortRawFunctions","showSelect","showExpand","items","search","filteredItems","transform","item","customKeyFilter","toggleSort","sortByWithGroups","opened","extractRows","isGroupOpen","toggleGroup","sortedItems","raw","flatItems","allItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","currentPage","isExpanded","toggleExpand","containerRef","markerRef","paddingTop","paddingBottom","computedItems","handleItemResize","handleScroll","handleScrollend","displayItems","map","page","itemsPerPage","hideNoData","noDataText","loading","loadingText","slotProps","internalItems","groupedItems","dataTableHeadersProps","filterProps","dataTableRowsProps","tableProps","_createVNode","_mergeProps","class","style","top","wrapper","height","colgroup","hideDefaultHeader","fixedHeader","hideDefaultBody","border","length","itemSlotProps","internalItem","index","default","_ref2","itemRef","bottom"],"sources":["../../../src/components/VDataTable/VDataTableVirtual.tsx"],"sourcesContent":["// Components\nimport { makeDataTableProps } from './VDataTable'\nimport { VDataTableHeaders } from './VDataTableHeaders'\nimport { VDataTableRow } from './VDataTableRow'\nimport { VDataTableRows } from './VDataTableRows'\nimport { VTable } from '@/components/VTable'\nimport { VVirtualScrollItem } from '@/components/VVirtualScroll/VVirtualScrollItem'\n\n// Composables\nimport { provideExpanded } from './composables/expand'\nimport { createGroupBy, makeDataTableGroupProps, provideGroupBy, useGroupedItems } from './composables/group'\nimport { createHeaders } from './composables/headers'\nimport { useDataTableItems } from './composables/items'\nimport { useOptions } from './composables/options'\nimport { provideSelection } from './composables/select'\nimport { createSort, provideSort, useSortedItems } from './composables/sort'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeVirtualProps, useVirtual } from '@/composables/virtual'\n\n// Utilities\nimport { computed, shallowRef, toRef, toRefs } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VDataTableSlotProps } from './VDataTable'\nimport type { VDataTableHeadersSlots } from './VDataTableHeaders'\nimport type { VDataTableRowsSlots } from './VDataTableRows'\nimport type { CellProps, RowProps } from '@/components/VDataTable/types'\nimport type { GenericProps, SelectItemKey, TemplateRef } from '@/util'\n\ntype VDataTableVirtualSlotProps<T> = Omit<\n VDataTableSlotProps<T>,\n | 'setItemsPerPage'\n | 'page'\n | 'pageCount'\n | 'itemsPerPage'\n>\n\nexport type VDataTableVirtualSlots<T> = VDataTableRowsSlots<T> & VDataTableHeadersSlots & {\n colgroup: VDataTableVirtualSlotProps<T>\n top: VDataTableVirtualSlotProps<T>\n headers: VDataTableHeadersSlots['headers']\n bottom: VDataTableVirtualSlotProps<T>\n 'body.prepend': VDataTableVirtualSlotProps<T>\n 'body.append': VDataTableVirtualSlotProps<T>\n item: {\n itemRef: TemplateRef\n }\n}\n\nexport const makeVDataTableVirtualProps = propsFactory({\n ...makeDataTableProps(),\n ...makeDataTableGroupProps(),\n ...makeVirtualProps(),\n ...makeFilterProps(),\n}, 'VDataTableVirtual')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VDataTableVirtual = genericComponent<new <T extends readonly any[], V>(\n props: {\n items?: T\n itemValue?: SelectItemKey<ItemType<T>>\n rowProps?: RowProps<ItemType<T>>\n cellProps?: CellProps<ItemType<T>>\n itemSelectable?: SelectItemKey<ItemType<T>>\n modelValue?: V\n 'onUpdate:modelValue'?: (value: V) => void\n },\n slots: VDataTableVirtualSlots<ItemType<T>>,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDataTableVirtual',\n\n props: makeVDataTableVirtualProps(),\n\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:sortBy': (value: any) => true,\n 'update:options': (value: any) => true,\n 'update:groupBy': (value: any) => true,\n 'update:expanded': (value: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const { groupBy } = createGroupBy(props)\n const { sortBy, multiSort, mustSort } = createSort(props)\n const { disableSort } = toRefs(props)\n\n const {\n columns,\n headers,\n filterFunctions,\n sortFunctions,\n sortRawFunctions,\n } = createHeaders(props, {\n groupBy,\n showSelect: toRef(props, 'showSelect'),\n showExpand: toRef(props, 'showExpand'),\n })\n const { items } = useDataTableItems(props, columns)\n\n const search = toRef(props, 'search')\n const { filteredItems } = useFilter(props, items, search, {\n transform: item => item.columns,\n customKeyFilter: filterFunctions,\n })\n\n const { toggleSort } = provideSort({ sortBy, multiSort, mustSort })\n const { sortByWithGroups, opened, extractRows, isGroupOpen, toggleGroup } = provideGroupBy({ groupBy, sortBy, disableSort })\n\n const { sortedItems } = useSortedItems(props, filteredItems, sortByWithGroups, {\n transform: item => ({ ...item.raw, ...item.columns }),\n sortFunctions,\n sortRawFunctions,\n })\n const { flatItems } = useGroupedItems(sortedItems, groupBy, opened)\n\n const allItems = computed(() => extractRows(flatItems.value))\n\n const { isSelected, select, selectAll, toggleSelect, someSelected, allSelected } = provideSelection(props, {\n allItems,\n currentPage: allItems,\n })\n const { isExpanded, toggleExpand } = provideExpanded(props)\n\n const {\n containerRef,\n markerRef,\n paddingTop,\n paddingBottom,\n computedItems,\n handleItemResize,\n handleScroll,\n handleScrollend,\n } = useVirtual(props, flatItems)\n const displayItems = computed(() => computedItems.value.map(item => item.raw))\n\n useOptions({\n sortBy,\n page: shallowRef(1),\n itemsPerPage: shallowRef(-1),\n groupBy,\n search,\n })\n\n provideDefaults({\n VDataTableRows: {\n hideNoData: toRef(props, 'hideNoData'),\n noDataText: toRef(props, 'noDataText'),\n loading: toRef(props, 'loading'),\n loadingText: toRef(props, 'loadingText'),\n },\n })\n\n const slotProps = computed<VDataTableVirtualSlotProps<any>>(() => ({\n sortBy: sortBy.value,\n toggleSort,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n isExpanded,\n toggleExpand,\n isGroupOpen,\n toggleGroup,\n items: allItems.value.map(item => item.raw),\n internalItems: allItems.value,\n groupedItems: flatItems.value,\n columns: columns.value,\n headers: headers.value,\n }))\n\n useRender(() => {\n const dataTableHeadersProps = VDataTableHeaders.filterProps(props)\n const dataTableRowsProps = VDataTableRows.filterProps(props)\n const tableProps = VTable.filterProps(props)\n\n return (\n <VTable\n class={[\n 'v-data-table',\n {\n 'v-data-table--loading': props.loading,\n },\n props.class,\n ]}\n style={ props.style }\n { ...tableProps }\n >\n {{\n top: () => slots.top?.(slotProps.value),\n wrapper: () => (\n <div\n ref={ containerRef }\n onScrollPassive={ handleScroll }\n onScrollend={ handleScrollend }\n class=\"v-table__wrapper\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <table>\n { slots.colgroup?.(slotProps.value) }\n { !props.hideDefaultHeader && (\n <thead key=\"thead\">\n <VDataTableHeaders\n { ...dataTableHeadersProps }\n sticky={ props.fixedHeader }\n v-slots={ slots }\n />\n </thead>\n )}\n { !props.hideDefaultBody && (\n <tbody>\n <tr ref={ markerRef } style={{ height: convertToUnit(paddingTop.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: 0, border: 0 }}></td>\n </tr>\n\n { slots['body.prepend']?.(slotProps.value) }\n\n <VDataTableRows\n { ...attrs }\n { ...dataTableRowsProps }\n items={ displayItems.value }\n >\n {{\n ...slots,\n item: itemSlotProps => (\n <VVirtualScrollItem\n key={ itemSlotProps.internalItem.index }\n renderless\n onUpdate:height={ height => handleItemResize(itemSlotProps.internalItem.index, height) }\n >\n { ({ itemRef }) => (\n slots.item?.({ ...itemSlotProps, itemRef }) ?? (\n <VDataTableRow\n { ...itemSlotProps.props }\n ref={ itemRef }\n key={ itemSlotProps.internalItem.index }\n index={ itemSlotProps.internalItem.index }\n v-slots={ slots }\n />\n )\n )}\n </VVirtualScrollItem>\n ),\n }}\n </VDataTableRows>\n\n { slots['body.append']?.(slotProps.value) }\n\n <tr style={{ height: convertToUnit(paddingBottom.value), border: 0 }}>\n <td colspan={ columns.value.length } style={{ height: 0, border: 0 }}></td>\n </tr>\n </tbody>\n )}\n </table>\n </div>\n ),\n bottom: () => slots.bottom?.(slotProps.value),\n }}\n </VTable>\n )\n })\n },\n})\n\nexport type VDataTableVirtual = InstanceType<typeof VDataTableVirtual>\n"],"mappings":";AAAA;AAAA,SACSA,kBAAkB;AAAA,SAClBC,iBAAiB;AAAA,SACjBC,aAAa;AAAA,SACbC,cAAc;AAAA,SACdC,MAAM;AAAA,SACNC,kBAAkB,oDAE3B;AAAA,SACSC,eAAe;AAAA,SACfC,aAAa,EAAEC,uBAAuB,EAAEC,cAAc,EAAEC,eAAe;AAAA,SACvEC,aAAa;AAAA,SACbC,iBAAiB;AAAA,SACjBC,UAAU;AAAA,SACVC,gBAAgB;AAAA,SAChBC,UAAU,EAAEC,WAAW,EAAEC,cAAc;AAAA,SACvCC,eAAe;AAAA,SACfC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,gBAAgB,EAAEC,UAAU,yCAErC;AACA,SAASC,QAAQ,EAAEC,UAAU,EAAEC,KAAK,EAAEC,MAAM,QAAQ,KAAK;AAAA,SAChDC,aAAa,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAEjE;AA2BA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrD,GAAG7B,kBAAkB,CAAC,CAAC;EACvB,GAAGQ,uBAAuB,CAAC,CAAC;EAC5B,GAAGa,gBAAgB,CAAC,CAAC;EACrB,GAAGF,eAAe,CAAC;AACrB,CAAC,EAAE,mBAAmB,CAAC;AAIvB,OAAO,MAAMa,iBAAiB,GAAGJ,gBAAgB,CAWF,CAAC,CAAC;EAC/CK,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAEH,0BAA0B,CAAC,CAAC;EAEnCI,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAY,IAAK,IAAI;IAC3C,eAAe,EAAGA,KAAU,IAAK,IAAI;IACrC,gBAAgB,EAAGA,KAAU,IAAK,IAAI;IACtC,gBAAgB,EAAGA,KAAU,IAAK,IAAI;IACtC,iBAAiB,EAAGA,KAAU,IAAK;EACrC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAoB;IAAA,IAAlB;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC5B,MAAM;MAAEG;IAAQ,CAAC,GAAGlC,aAAa,CAAC2B,KAAK,CAAC;IACxC,MAAM;MAAEQ,MAAM;MAAEC,SAAS;MAAEC;IAAS,CAAC,GAAG7B,UAAU,CAACmB,KAAK,CAAC;IACzD,MAAM;MAAEW;IAAY,CAAC,GAAGnB,MAAM,CAACQ,KAAK,CAAC;IAErC,MAAM;MACJY,OAAO;MACPC,OAAO;MACPC,eAAe;MACfC,aAAa;MACbC;IACF,CAAC,GAAGvC,aAAa,CAACuB,KAAK,EAAE;MACvBO,OAAO;MACPU,UAAU,EAAE1B,KAAK,CAACS,KAAK,EAAE,YAAY,CAAC;MACtCkB,UAAU,EAAE3B,KAAK,CAACS,KAAK,EAAE,YAAY;IACvC,CAAC,CAAC;IACF,MAAM;MAAEmB;IAAM,CAAC,GAAGzC,iBAAiB,CAACsB,KAAK,EAAEY,OAAO,CAAC;IAEnD,MAAMQ,MAAM,GAAG7B,KAAK,CAACS,KAAK,EAAE,QAAQ,CAAC;IACrC,MAAM;MAAEqB;IAAc,CAAC,GAAGnC,SAAS,CAACc,KAAK,EAAEmB,KAAK,EAAEC,MAAM,EAAE;MACxDE,SAAS,EAAEC,IAAI,IAAIA,IAAI,CAACX,OAAO;MAC/BY,eAAe,EAAEV;IACnB,CAAC,CAAC;IAEF,MAAM;MAAEW;IAAW,CAAC,GAAG3C,WAAW,CAAC;MAAE0B,MAAM;MAAEC,SAAS;MAAEC;IAAS,CAAC,CAAC;IACnE,MAAM;MAAEgB,gBAAgB;MAAEC,MAAM;MAAEC,WAAW;MAAEC,WAAW;MAAEC;IAAY,CAAC,GAAGvD,cAAc,CAAC;MAAEgC,OAAO;MAAEC,MAAM;MAAEG;IAAY,CAAC,CAAC;IAE5H,MAAM;MAAEoB;IAAY,CAAC,GAAGhD,cAAc,CAACiB,KAAK,EAAEqB,aAAa,EAAEK,gBAAgB,EAAE;MAC7EJ,SAAS,EAAEC,IAAI,KAAK;QAAE,GAAGA,IAAI,CAACS,GAAG;QAAE,GAAGT,IAAI,CAACX;MAAQ,CAAC,CAAC;MACrDG,aAAa;MACbC;IACF,CAAC,CAAC;IACF,MAAM;MAAEiB;IAAU,CAAC,GAAGzD,eAAe,CAACuD,WAAW,EAAExB,OAAO,EAAEoB,MAAM,CAAC;IAEnE,MAAMO,QAAQ,GAAG7C,QAAQ,CAAC,MAAMuC,WAAW,CAACK,SAAS,CAAC/B,KAAK,CAAC,CAAC;IAE7D,MAAM;MAAEiC,UAAU;MAAEC,MAAM;MAAEC,SAAS;MAAEC,YAAY;MAAEC,YAAY;MAAEC;IAAY,CAAC,GAAG5D,gBAAgB,CAACoB,KAAK,EAAE;MACzGkC,QAAQ;MACRO,WAAW,EAAEP;IACf,CAAC,CAAC;IACF,MAAM;MAAEQ,UAAU;MAAEC;IAAa,CAAC,GAAGvE,eAAe,CAAC4B,KAAK,CAAC;IAE3D,MAAM;MACJ4C,YAAY;MACZC,SAAS;MACTC,UAAU;MACVC,aAAa;MACbC,aAAa;MACbC,gBAAgB;MAChBC,YAAY;MACZC;IACF,CAAC,GAAG/D,UAAU,CAACY,KAAK,EAAEiC,SAAS,CAAC;IAChC,MAAMmB,YAAY,GAAG/D,QAAQ,CAAC,MAAM2D,aAAa,CAAC9C,KAAK,CAACmD,GAAG,CAAC9B,IAAI,IAAIA,IAAI,CAACS,GAAG,CAAC,CAAC;IAE9ErD,UAAU,CAAC;MACT6B,MAAM;MACN8C,IAAI,EAAEhE,UAAU,CAAC,CAAC,CAAC;MACnBiE,YAAY,EAAEjE,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5BiB,OAAO;MACPa;IACF,CAAC,CAAC;IAEFpC,eAAe,CAAC;MACdf,cAAc,EAAE;QACduF,UAAU,EAAEjE,KAAK,CAACS,KAAK,EAAE,YAAY,CAAC;QACtCyD,UAAU,EAAElE,KAAK,CAACS,KAAK,EAAE,YAAY,CAAC;QACtC0D,OAAO,EAAEnE,KAAK,CAACS,KAAK,EAAE,SAAS,CAAC;QAChC2D,WAAW,EAAEpE,KAAK,CAACS,KAAK,EAAE,aAAa;MACzC;IACF,CAAC,CAAC;IAEF,MAAM4D,SAAS,GAAGvE,QAAQ,CAAkC,OAAO;MACjEmB,MAAM,EAAEA,MAAM,CAACN,KAAK;MACpBuB,UAAU;MACVc,YAAY,EAAEA,YAAY,CAACrC,KAAK;MAChCsC,WAAW,EAAEA,WAAW,CAACtC,KAAK;MAC9BiC,UAAU;MACVC,MAAM;MACNC,SAAS;MACTC,YAAY;MACZI,UAAU;MACVC,YAAY;MACZd,WAAW;MACXC,WAAW;MACXX,KAAK,EAAEe,QAAQ,CAAChC,KAAK,CAACmD,GAAG,CAAC9B,IAAI,IAAIA,IAAI,CAACS,GAAG,CAAC;MAC3C6B,aAAa,EAAE3B,QAAQ,CAAChC,KAAK;MAC7B4D,YAAY,EAAE7B,SAAS,CAAC/B,KAAK;MAC7BU,OAAO,EAAEA,OAAO,CAACV,KAAK;MACtBW,OAAO,EAAEA,OAAO,CAACX;IACnB,CAAC,CAAC,CAAC;IAEHN,SAAS,CAAC,MAAM;MACd,MAAMmE,qBAAqB,GAAGhG,iBAAiB,CAACiG,WAAW,CAAChE,KAAK,CAAC;MAClE,MAAMiE,kBAAkB,GAAGhG,cAAc,CAAC+F,WAAW,CAAChE,KAAK,CAAC;MAC5D,MAAMkE,UAAU,GAAGhG,MAAM,CAAC8F,WAAW,CAAChE,KAAK,CAAC;MAE5C,OAAAmE,YAAA,CAAAjG,MAAA,EAAAkG,WAAA;QAAA,SAEW,CACL,cAAc,EACd;UACE,uBAAuB,EAAEpE,KAAK,CAAC0D;QACjC,CAAC,EACD1D,KAAK,CAACqE,KAAK,CACZ;QAAA,SACOrE,KAAK,CAACsE;MAAK,GACdJ,UAAU;QAGbK,GAAG,EAAEA,CAAA,KAAMjE,KAAK,CAACiE,GAAG,GAAGX,SAAS,CAAC1D,KAAK,CAAC;QACvCsE,OAAO,EAAEA,CAAA,KAAAL,YAAA;UAAA,OAECvB,YAAY;UAAA,mBACAM,YAAY;UAAA,eAChBC,eAAe;UAAA;UAAA,SAEtB;YACLsB,MAAM,EAAEhF,aAAa,CAACO,KAAK,CAACyE,MAAM;UACpC;QAAC,IAAAN,YAAA,iBAGG7D,KAAK,CAACoE,QAAQ,GAAGd,SAAS,CAAC1D,KAAK,CAAC,EACjC,CAACF,KAAK,CAAC2E,iBAAiB,IAAAR,YAAA;UAAA;QAAA,IAAAA,YAAA,CAAApG,iBAAA,EAAAqG,WAAA,CAGfL,qBAAqB;UAAA,UACjB/D,KAAK,CAAC4E;QAAW,IAChBtE,KAAK,GAGpB,EACC,CAACN,KAAK,CAAC6E,eAAe,IAAAV,YAAA,iBAAAA,YAAA;UAAA,OAEVtB,SAAS;UAAA,SAAU;YAAE4B,MAAM,EAAEhF,aAAa,CAACqD,UAAU,CAAC5C,KAAK,CAAC;YAAE4E,MAAM,EAAE;UAAE;QAAC,IAAAX,YAAA;UAAA,WACnEvD,OAAO,CAACV,KAAK,CAAC6E,MAAM;UAAA,SAAU;YAAEN,MAAM,EAAE,CAAC;YAAEK,MAAM,EAAE;UAAE;QAAC,YAGpExE,KAAK,CAAC,cAAc,CAAC,GAAGsD,SAAS,CAAC1D,KAAK,CAAC,EAAAiE,YAAA,CAAAlG,cAAA,EAAAmG,WAAA,CAGnC/D,KAAK,EACL4D,kBAAkB;UAAA,SACfb,YAAY,CAAClD;QAAK;UAGxB,GAAGI,KAAK;UACRiB,IAAI,EAAEyD,aAAa,IAAAb,YAAA,CAAAhG,kBAAA;YAAA,OAET6G,aAAa,CAACC,YAAY,CAACC,KAAK;YAAA;YAAA,mBAEpBT,MAAM,IAAIxB,gBAAgB,CAAC+B,aAAa,CAACC,YAAY,CAACC,KAAK,EAAET,MAAM;UAAC;YAAAU,OAAA,EAEpFC,KAAA;cAAA,IAAC;gBAAEC;cAAQ,CAAC,GAAAD,KAAA;cAAA,OACZ9E,KAAK,CAACiB,IAAI,GAAG;gBAAE,GAAGyD,aAAa;gBAAEK;cAAQ,CAAC,CAAC,IAAAlB,YAAA,CAAAnG,aAAA,EAAAoG,WAAA,CAElCY,aAAa,CAAChF,KAAK;gBAAA,OAClBqF,OAAO;gBAAA,OACPL,aAAa,CAACC,YAAY,CAACC,KAAK;gBAAA,SAC9BF,aAAa,CAACC,YAAY,CAACC;cAAK,IAC9B5E,KAAK,CAElB;YAAA;UACF;QAEJ,IAIHA,KAAK,CAAC,aAAa,CAAC,GAAGsD,SAAS,CAAC1D,KAAK,CAAC,EAAAiE,YAAA;UAAA,SAE9B;YAAEM,MAAM,EAAEhF,aAAa,CAACsD,aAAa,CAAC7C,KAAK,CAAC;YAAE4E,MAAM,EAAE;UAAE;QAAC,IAAAX,YAAA;UAAA,WACpDvD,OAAO,CAACV,KAAK,CAAC6E,MAAM;UAAA,SAAU;YAAEN,MAAM,EAAE,CAAC;YAAEK,MAAM,EAAE;UAAE;QAAC,YAGzE,IAGN;QACDQ,MAAM,EAAEA,CAAA,KAAMhF,KAAK,CAACgF,MAAM,GAAG1B,SAAS,CAAC1D,KAAK;MAAC;IAIrD,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}