UNPKG

tav-ui

Version:
1 lines 3.69 kB
{"version":3,"file":"useTableFooter2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useTableFooter.ts"],"sourcesContent":["import { computed, h, nextTick, unref, watchEffect } from 'vue'\nimport { useEventListener } from '@tav-ui/hooks/event/useEventListener'\nimport TableFooter from '../components/TableFooter.vue'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { BasicTableProps } from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\ntype Nullable<T> = T | null\ninterface ComponentElRef<T extends HTMLElement = HTMLDivElement> {\n $el: T\n}\ntype ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null\n\nexport function useTableFooter(\n propsRef: ComputedRef<BasicTableProps>,\n scrollRef: ComputedRef<{\n x: string | number | true\n y: Nullable<number>\n scrollToFirstRowOnChange: boolean\n }>,\n tableElRef: Ref<ComponentRef>,\n getDataSourceRef: ComputedRef<Recordable>\n) {\n const getIsEmptyData = computed(() => {\n return (unref(getDataSourceRef) || []).length === 0\n })\n\n const getFooterProps = computed((): Recordable | undefined => {\n const { summaryFunc, showSummary, summaryData } = unref(propsRef)\n return showSummary && !unref(getIsEmptyData)\n ? () => h(TableFooter, { summaryFunc, summaryData, scroll: unref(scrollRef) })\n : undefined\n })\n\n watchEffect(() => {\n handleSummary()\n })\n\n function handleSummary() {\n const { showSummary } = unref(propsRef)\n if (!showSummary || unref(getIsEmptyData)) return\n\n nextTick(() => {\n const tableEl = unref(tableElRef)\n if (!tableEl) return\n const bodyDomList = tableEl.$el.querySelectorAll('.ant-table-body')\n const bodyDom = bodyDomList[0]\n useEventListener({\n el: bodyDom,\n name: 'scroll',\n listener: () => {\n const footerBodyDom = tableEl.$el.querySelector(\n '.ant-table-footer .ant-table-body'\n ) as HTMLDivElement\n if (!footerBodyDom || !bodyDom) return\n footerBodyDom.scrollLeft = bodyDom.scrollLeft\n },\n wait: 0,\n options: true,\n })\n })\n }\n return { getFooterProps }\n}\n"],"names":[],"mappings":";;;;AAGO,SAAS,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE;AAClF,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;AACxC,IAAI,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC;AACxD,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;AACxC,IAAI,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtE,IAAI,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AACzI,GAAG,CAAC,CAAC;AACL,EAAE,WAAW,CAAC,MAAM;AACpB,IAAI,aAAa,EAAE,CAAC;AACpB,GAAG,CAAC,CAAC;AACL,EAAE,SAAS,aAAa,GAAG;AAC3B,IAAI,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC;AAC7C,MAAM,OAAO;AACb,IAAI,QAAQ,CAAC,MAAM;AACnB,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,OAAO;AAClB,QAAQ,OAAO;AACf,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AAC1E,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,gBAAgB,CAAC;AACvB,QAAQ,EAAE,EAAE,OAAO;AACnB,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,QAAQ,EAAE,MAAM;AACxB,UAAU,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;AAC/F,UAAU,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO;AACxC,YAAY,OAAO;AACnB,UAAU,aAAa,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxD,SAAS;AACT,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B;;;;"}