hongluan-ui
Version:
Hongluan Component Library for Vue 3
1 lines • 16.4 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 'fit': fit,\n 'list': list,\n 'striped-odd': stripe === 'odd',\n 'striped-even': stripe === 'even' || typeof stripe === 'boolean' && stripe,\n 'bordered': border || isGroup,\n 'table-hidden': isHidden,\n 'table-group': isGroup,\n 'fluid-height': maxHeight,\n 'table-scrollable-x': layout.scrollX.value,\n 'table-scrollable-y': layout.scrollY.value,\n 'enable-row-hover': !store.states.isComplex.value,\n 'enable-row-transition':\n (store.states.data.value || []).length !== 0 &&\n (store.states.data.value || []).length < 100,\n 'has-footer': showSummary,\n },\n tableSize,\n className,\n namespace,\n `layout-${tableLayout}`,\n ]\"\n :style=\"style\"\n :data-prefix=\"defaultNamespace\"\n @mouseleave=\"handleMouseLeave\"\n >\n <div class=\"table-inner-wrapper\" :style=\"tableInnerStyle\">\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=\"table-header-wrapper\"\n >\n <table\n ref=\"tableHeader\"\n class=\"table-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 />\n <table-header\n ref=\"tableHeaderRef\"\n :border=\"border\"\n :default-sort=\"defaultSort\"\n :store=\"store\"\n @set-drag-visible=\"setDragVisible\"\n />\n </table>\n </div>\n <div ref=\"bodyWrapper\" class=\"table-body-wrapper\">\n <hl-scrollbar\n ref=\"scrollBarRef\"\n :view-style=\"scrollbarViewStyle\"\n :wrap-style=\"scrollbarStyle\"\n :always=\"scrollbarAlwaysOn\"\n >\n <table\n ref=\"tableBody\"\n class=\"table-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 />\n <table-header\n v-if=\"showHeader && tableLayout === 'auto'\"\n ref=\"tableHeaderRef\"\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 :tooltip-options=\"tooltipOptions\"\n :row-style=\"rowStyle\"\n :store=\"store\"\n :stripe=\"stripe\"\n />\n <table-footer\n v-if=\"showSummary && tableLayout === 'auto'\"\n class=\"table-body-footer\"\n :border=\"border\"\n :default-sort=\"defaultSort\"\n :store=\"store\"\n :sum-text=\"computedSumText\"\n :summary-method=\"summaryMethod\"\n />\n </table>\n <div\n v-if=\"isEmpty\"\n ref=\"emptyBlock\"\n :style=\"emptyBlockStyle\"\n class=\"table-empty-block\"\n >\n <span class=\"table-empty-text\">\n <slot name=\"empty\">{{ computedEmptyText }}</slot>\n </span>\n </div>\n <div\n v-if=\"$slots.append\"\n ref=\"appendWrapper\"\n class=\"table-append-wrapper\"\n >\n <slot name=\"append\"></slot>\n </div>\n </hl-scrollbar>\n </div>\n <div\n v-if=\"showSummary && tableLayout === 'fixed'\"\n v-show=\"!isEmpty\"\n ref=\"footerWrapper\"\n v-mousewheel=\"handleHeaderFooterMousewheel\"\n class=\"table-footer-wrapper\"\n >\n <table\n class=\"table-footer\"\n cellspacing=\"0\"\n cellpadding=\"0\"\n border=\"0\"\n :style=\"tableBodyStyles\"\n >\n <hColgroup\n :columns=\"store.states.columns.value\"\n :table-layout=\"tableLayout\"\n />\n <table-footer\n :border=\"border\"\n :default-sort=\"defaultSort\"\n :store=\"store\"\n :sum-text=\"computedSumText\"\n :summary-method=\"summaryMethod\"\n />\n </table>\n </div>\n <div v-if=\"border || isGroup\" class=\"table-border-left-patch\"></div>\n </div>\n <div\n v-show=\"resizeProxyVisible\"\n ref=\"resizeProxy\"\n class=\"table-column-resize-proxy\"\n ></div>\n </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { computed, defineComponent, getCurrentInstance, provide } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { Mousewheel } from '@hongluan-ui/directives'\nimport { useLocale, useNamespace } from '@hongluan-ui/hooks'\nimport HlScrollbar from '@hongluan-ui/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 { convertToRows } from './table-header/utils-helper'\nimport useUtils from './table/utils-helper'\nimport useStyle from './table/style-helper'\nimport useKeyRender from './table/key-render-helper'\nimport defaultProps from './table/defaults'\nimport { TABLE_INJECTION_KEY } from './tokens'\nimport { hColgroup } from './h-helper'\nimport { useScrollbar } from './composables/use-scrollbar'\n\nimport type { Table } from './table/defaults'\n\nlet tableIdSeed = 1\nexport default defineComponent({\n name: 'Table',\n directives: {\n Mousewheel,\n },\n components: {\n TableHeader,\n TableBody,\n TableFooter,\n HlScrollbar,\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 { namespace, defaultNamespace } = 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 getSelectionRows,\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 emptyBlockStyle,\n handleFixedMousewheel,\n resizeProxyVisible,\n bodyWidth,\n resizeState,\n doLayout,\n tableBodyStyles,\n tableLayout,\n scrollbarViewStyle,\n tableInnerStyle,\n scrollbarStyle,\n } = useStyle<Row>(props, layout, store, table)\n\n const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } =\n useScrollbar()\n\n const debouncedUpdateLayout = debounce(doLayout, 50)\n\n const tableId = `${namespace.value}-${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 const columns = computed(() => {\n return convertToRows(store.states.originColumns.value)[0]\n })\n\n useKeyRender(table)\n\n return {\n namespace,\n defaultNamespace,\n layout,\n store,\n columns,\n handleHeaderFooterMousewheel,\n handleMouseLeave,\n tableId,\n tableSize,\n isHidden,\n isEmpty,\n renderExpanded,\n resizeProxyVisible,\n resizeState,\n isGroup,\n bodyWidth,\n tableBodyStyles,\n emptyBlockStyle,\n debouncedUpdateLayout,\n handleFixedMousewheel,\n /**\n * @description used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection\n */\n setCurrentRow,\n /**\n * @description returns the currently selected rows\n */\n getSelectionRows,\n /**\n * @description used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected\n */\n toggleRowSelection,\n /**\n * @description used in multiple selection Table, clear user selection\n */\n clearSelection,\n /**\n * @description clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters\n */\n clearFilter,\n /**\n * @description used in multiple selection Table, toggle select all and deselect all\n */\n toggleAllSelection,\n /**\n * @description used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed\n */\n toggleRowExpansion,\n /**\n * @description clear sorting, restore data to the original order\n */\n clearSort,\n /**\n * @description refresh the layout of Table. When the visibility of Table changes, you may need to call this method to get a correct layout\n */\n doLayout,\n /**\n * @description sort Table manually. Property `prop` is used to set sort column, property `order` is used to set sort order\n */\n sort,\n t,\n setDragVisible,\n context: table,\n computedSumText,\n computedEmptyText,\n tableLayout,\n scrollbarViewStyle,\n tableInnerStyle,\n scrollbarStyle,\n scrollBarRef,\n /**\n * @description scrolls to a particular set of coordinates\n */\n scrollTo,\n /**\n * @description set horizontal scroll position\n */\n setScrollLeft,\n /**\n * @description set vertical scroll position\n */\n setScrollTop,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_renderSlot","_createVNode","_createBlock"],"mappings":"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"}