index.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { createVNode as _createVNode } from "vue";
  2. import Summary from './Summary';
  3. import SummaryRow from './Row';
  4. import SummaryCell from './Cell';
  5. import { computed, defineComponent, reactive, toRef } from 'vue';
  6. import { useProvideSummary } from '../context/SummaryContext';
  7. import { useInjectTable } from '../context/TableContext';
  8. export default defineComponent({
  9. name: 'TableFooter',
  10. inheritAttrs: false,
  11. props: ['stickyOffsets', 'flattenColumns'],
  12. setup(props, _ref) {
  13. let {
  14. slots
  15. } = _ref;
  16. const tableContext = useInjectTable();
  17. useProvideSummary(reactive({
  18. stickyOffsets: toRef(props, 'stickyOffsets'),
  19. flattenColumns: toRef(props, 'flattenColumns'),
  20. scrollColumnIndex: computed(() => {
  21. const lastColumnIndex = props.flattenColumns.length - 1;
  22. const scrollColumn = props.flattenColumns[lastColumnIndex];
  23. return (scrollColumn === null || scrollColumn === void 0 ? void 0 : scrollColumn.scrollbar) ? lastColumnIndex : null;
  24. })
  25. }));
  26. return () => {
  27. var _a;
  28. const {
  29. prefixCls
  30. } = tableContext;
  31. return _createVNode("tfoot", {
  32. "class": `${prefixCls}-summary`
  33. }, [(_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)]);
  34. };
  35. }
  36. });
  37. export { SummaryRow, SummaryCell };
  38. export const FooterComponents = Summary;