element-plus
Version:
A Component Library for Vue 3
1 lines • 12.2 kB
Source Map (JSON)
{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/table/src/table.vue"],"sourcesContent":["<template>\n <div\n ref=\"tableWrapper\"\n :class=\"[\n {\n [ns.m('fit')]: fit,\n [ns.m('striped')]: stripe,\n [ns.m('border')]: border || isGroup,\n [ns.m('hidden')]: isHidden,\n [ns.m('group')]: isGroup,\n [ns.m('fluid-height')]: maxHeight,\n [ns.m('scrollable-x')]: layout.scrollX.value,\n [ns.m('scrollable-y')]: layout.scrollY.value,\n [ns.m('enable-row-hover')]: !store.states.isComplex.value,\n [ns.m('enable-row-transition')]:\n (store.states.data.value || []).length !== 0 &&\n (store.states.data.value || []).length < 100,\n 'has-footer': showSummary,\n },\n ns.m(tableSize),\n className,\n ns.b(),\n ns.m(`layout-${tableLayout}`),\n ]\"\n :style=\"style\"\n :data-prefix=\"ns.namespace.value\"\n @mouseleave=\"handleMouseLeave()\"\n >\n <div :class=\"ns.e('inner-wrapper')\">\n <div ref=\"hiddenColumns\" class=\"hidden-columns\">\n <slot></slot>\n </div>\n <div\n v-if=\"showHeader && tableLayout === 'fixed'\"\n ref=\"headerWrapper\"\n v-mousewheel=\"handleHeaderFooterMousewheel\"\n :class=\"ns.e('header-wrapper')\"\n >\n <table\n ref=\"tableHeader\"\n :class=\"ns.e('header')\"\n :style=\"tableBodyStyles\"\n border=\"0\"\n cellpadding=\"0\"\n cellspacing=\"0\"\n >\n <hColgroup\n :columns=\"store.states.columns.value\"\n :table-layout=\"tableLayout\"\n ></hColgroup>\n <table-header\n :border=\"border\"\n :default-sort=\"defaultSort\"\n :store=\"store\"\n @set-drag-visible=\"setDragVisible\"\n />\n </table>\n </div>\n <div ref=\"bodyWrapper\" :style=\"bodyHeight\" :class=\"ns.e('body-wrapper')\">\n <el-scrollbar\n ref=\"scrollWrapper\"\n :height=\"maxHeight ? undefined : height\"\n :max-height=\"maxHeight ? height : undefined\"\n >\n <table\n ref=\"tableBody\"\n :class=\"ns.e('body')\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n border=\"0\"\n :style=\"{\n width: bodyWidth,\n tableLayout,\n }\"\n >\n <hColgroup\n :columns=\"store.states.columns.value\"\n :table-layout=\"tableLayout\"\n ></hColgroup>\n <table-header\n v-if=\"showHeader && tableLayout === 'auto'\"\n :border=\"border\"\n :default-sort=\"defaultSort\"\n :store=\"store\"\n @set-drag-visible=\"setDragVisible\"\n />\n <table-body\n :context=\"context\"\n :highlight=\"highlightCurrentRow\"\n :row-class-name=\"rowClassName\"\n :tooltip-effect=\"tooltipEffect\"\n :row-style=\"rowStyle\"\n :store=\"store\"\n :stripe=\"stripe\"\n />\n </table>\n <div\n v-if=\"isEmpty\"\n ref=\"emptyBlock\"\n :style=\"emptyBlockStyle\"\n :class=\"ns.e('empty-block')\"\n >\n <span :class=\"ns.e('empty-text')\">\n <slot name=\"empty\">{{ computedEmptyText }}</slot>\n </span>\n </div>\n <div\n v-if=\"$slots.append\"\n ref=\"appendWrapper\"\n :class=\"ns.e('append-wrapper')\"\n >\n <slot name=\"append\"></slot>\n </div>\n </el-scrollbar>\n </div>\n <div v-if=\"border || isGroup\" :class=\"ns.e('border-left-patch')\"></div>\n </div>\n <div\n v-if=\"showSummary\"\n v-show=\"!isEmpty\"\n ref=\"footerWrapper\"\n v-mousewheel=\"handleHeaderFooterMousewheel\"\n :class=\"ns.e('footer-wrapper')\"\n >\n <table-footer\n :border=\"border\"\n :default-sort=\"defaultSort\"\n :store=\"store\"\n :style=\"tableBodyStyles\"\n :sum-text=\"computedSumText\"\n :summary-method=\"summaryMethod\"\n />\n </div>\n <div\n v-show=\"resizeProxyVisible\"\n ref=\"resizeProxy\"\n :class=\"ns.e('column-resize-proxy')\"\n ></div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance, computed, provide } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { Mousewheel } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { createStore } from './store/helper'\nimport TableLayout from './table-layout'\nimport TableHeader from './table-header'\nimport TableBody from './table-body'\nimport TableFooter from './table-footer'\nimport useUtils from './table/utils-helper'\nimport useStyle from './table/style-helper'\nimport defaultProps from './table/defaults'\nimport { TABLE_INJECTION_KEY } from './tokens'\nimport { hColgroup } from './h-helper'\n\nimport type { Table } from './table/defaults'\n\nlet tableIdSeed = 1\nexport default defineComponent({\n name: 'ElTable',\n directives: {\n Mousewheel,\n },\n components: {\n TableHeader,\n TableBody,\n TableFooter,\n ElScrollbar,\n hColgroup,\n },\n props: defaultProps,\n emits: [\n 'select',\n 'select-all',\n 'selection-change',\n 'cell-mouse-enter',\n 'cell-mouse-leave',\n 'cell-contextmenu',\n 'cell-click',\n 'cell-dblclick',\n 'row-click',\n 'row-contextmenu',\n 'row-dblclick',\n 'header-click',\n 'header-contextmenu',\n 'sort-change',\n 'filter-change',\n 'current-change',\n 'header-dragend',\n 'expand-change',\n ],\n setup(props) {\n type Row = typeof props.data[number]\n const { t } = useLocale()\n const ns = useNamespace('table')\n const table = getCurrentInstance() as Table<Row>\n provide(TABLE_INJECTION_KEY, table)\n const store = createStore<Row>(table, props)\n table.store = store\n const layout = new TableLayout<Row>({\n store: table.store,\n table,\n fit: props.fit,\n showHeader: props.showHeader,\n })\n table.layout = layout\n\n const isEmpty = computed(() => (store.states.data.value || []).length === 0)\n\n /**\n * open functions\n */\n const {\n setCurrentRow,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n sort,\n } = useUtils<Row>(store)\n const {\n isHidden,\n renderExpanded,\n setDragVisible,\n isGroup,\n handleMouseLeave,\n handleHeaderFooterMousewheel,\n tableSize,\n bodyHeight,\n height,\n emptyBlockStyle,\n handleFixedMousewheel,\n fixedHeight,\n fixedBodyHeight,\n resizeProxyVisible,\n bodyWidth,\n resizeState,\n doLayout,\n tableBodyStyles,\n tableLayout,\n } = useStyle<Row>(props, layout, store, table)\n\n const debouncedUpdateLayout = debounce(doLayout, 50)\n\n const tableId = `el-table_${tableIdSeed++}`\n table.tableId = tableId\n table.state = {\n isGroup,\n resizeState,\n doLayout,\n debouncedUpdateLayout,\n }\n const computedSumText = computed(\n () => props.sumText || t('el.table.sumText')\n )\n\n const computedEmptyText = computed(() => {\n return props.emptyText || t('el.table.emptyText')\n })\n\n return {\n ns,\n layout,\n store,\n handleHeaderFooterMousewheel,\n handleMouseLeave,\n tableId,\n tableSize,\n isHidden,\n isEmpty,\n renderExpanded,\n resizeProxyVisible,\n resizeState,\n isGroup,\n bodyWidth,\n bodyHeight,\n height,\n tableBodyStyles,\n emptyBlockStyle,\n debouncedUpdateLayout,\n handleFixedMousewheel,\n fixedHeight,\n fixedBodyHeight,\n setCurrentRow,\n toggleRowSelection,\n clearSelection,\n clearFilter,\n toggleAllSelection,\n toggleRowExpansion,\n clearSort,\n doLayout,\n sort,\n t,\n setDragVisible,\n context: table,\n computedSumText,\n computedEmptyText,\n tableLayout,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createCommentVNode","_withCtx","_createElementVNode"],"mappings":"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"}