UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 25.1 kB
{"version":3,"file":"table-cell.vue2.cjs","sources":["../../../components/table/table-cell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Checkbox } from '@/components/checkbox'\nimport { Ellipsis } from '@/components/ellipsis'\nimport { Radio } from '@/components/radio'\nimport { Renderer } from '@/components/renderer'\nimport { ResizeObserver } from '@/components/resize-observer'\n\nimport { computed, inject, nextTick, ref, watchEffect } from 'vue'\n\nimport { useIcons, useNameHelper } from '@vexip-ui/config'\nimport TableIcon from './table-icon.vue'\nimport { useRtl } from '@vexip-ui/hooks'\nimport { getLast, isFunction } from '@vexip-ui/utils'\nimport { TABLE_ACTIONS, TABLE_STORE, columnTypes, noopFormatter } from './symbol'\n\nimport type { PropType } from 'vue'\nimport type {\n ColumnWithKey,\n TableDragColumn,\n TableExpandColumn,\n TableOrderColumn,\n TableRowState,\n TableSelectionColumn,\n TableTypeColumn,\n} from './symbol'\n\ndefineOptions({ name: 'TableCell' })\n\nconst props = defineProps({\n row: {\n type: Object as PropType<TableRowState>,\n default: () => ({}),\n },\n rowIndex: {\n type: Number,\n default: -1,\n },\n column: {\n type: Object as PropType<ColumnWithKey>,\n default: () => ({}),\n },\n colIndex: {\n type: Number,\n default: -1,\n },\n fixed: {\n type: String as PropType<'left' | 'right' | undefined>,\n default: null,\n },\n})\n\nconst { state, getters, mutations } = inject(TABLE_STORE)!\nconst tableActions = inject(TABLE_ACTIONS)!\n\nconst nh = useNameHelper('table')\nconst icons = useIcons()\nconst { isRtl } = useRtl()\n\nconst contentHeight = ref(0)\n\nconst wrapper = ref<HTMLElement>()\n\nconst inLast = computed(() => {\n return props.column.index + cellSpan.value.colSpan >= state.columns.length\n})\nconst className = computed(() => {\n let customClass = null\n\n if (typeof state.cellClass === 'function') {\n customClass = state.cellClass({\n row: props.row.data,\n rowIndex: props.rowIndex,\n column: props.column,\n columnIndex: props.column.index,\n })\n } else {\n customClass = state.cellClass\n }\n\n const typed = columnTypes.includes((props.column as TableTypeColumn).type)\n\n return [\n nh.be('cell'),\n {\n [nh.bem('cell', 'typed')]: typed,\n [nh.bem('cell', 'center')]: typed || props.column.textAlign === 'center',\n [nh.bem('cell', 'right')]: props.column.textAlign === 'right',\n [nh.bem('cell', 'last')]: inLast.value,\n },\n props.column.class,\n customClass,\n ]\n})\nconst columns = computed(() => {\n return props.fixed === 'left'\n ? state.leftFixedColumns\n : props.fixed === 'right'\n ? state.rightFixedColumns\n : state.normalColumns\n})\nconst cellSpan = computed(() => {\n return (\n state.cellSpanMap\n .get(props.fixed || 'default')!\n .get(`${props.row.index},${props.column.index}`) || { colSpan: 1, rowSpan: 1 }\n )\n})\nconst customStyle = computed(() => {\n if (typeof state.cellStyle === 'function') {\n return state.cellStyle({\n row: props.row.data,\n rowIndex: props.rowIndex,\n column: props.column,\n columnIndex: props.column.index,\n })\n }\n\n return state.cellStyle\n})\nconst style = computed(() => {\n const totalWidths =\n props.fixed === 'left'\n ? getters.leftFixedWidths\n : props.fixed === 'right'\n ? getters.rightFixedWidths\n : getters.normalWidths\n const { colSpan, rowSpan } = cellSpan.value\n const noFixed = !getters.hasFixedColumn\n const padLeft = noFixed || columns.value[0]?.fixed === 'left' ? state.sidePadding[0] || 0 : 0\n const padRight =\n noFixed || getLast(columns.value)?.fixed === 'right' ? state.sidePadding[1] || 0 : 0\n const width = totalWidths[props.colIndex + colSpan] - totalWidths[props.colIndex]\n\n let height: number | undefined\n\n if (rowSpan > 1 && state.heightBITree) {\n height =\n state.heightBITree.sum(props.row.listIndex + rowSpan) -\n state.heightBITree.sum(props.row.listIndex)\n }\n\n return [\n props.column.style || '',\n customStyle.value,\n {\n display: !colSpan || !rowSpan ? 'none' : undefined,\n width: `${(props.column.index ? 0 : padLeft) + (inLast.value ? padRight : 0) + width}px`,\n height: height ? `${height}px` : undefined,\n visibility: props.column.fixed && !props.fixed ? 'hidden' : undefined,\n borderRightWidth:\n !state.border && colSpan > 1 && props.colIndex + colSpan >= totalWidths.length - 1\n ? 0\n : undefined,\n borderBottomWidth:\n rowSpan > 1 && props.rowIndex + rowSpan >= getters.processedData.length ? 0 : undefined,\n transform: `translate3d(${isRtl.value ? '-' : ''}${\n (props.column.index ? padLeft : 0) + totalWidths[props.colIndex]\n }px, 0, 0)`,\n },\n ]\n})\nconst attrs = computed(() => {\n let customAttrs: Record<string, any>\n\n if (typeof state.cellAttrs === 'function') {\n customAttrs = state.cellAttrs({\n row: props.row.data,\n rowIndex: props.rowIndex,\n column: props.column,\n columnIndex: props.colIndex,\n })\n } else {\n customAttrs = state.cellAttrs\n }\n\n return { ...(props.column.attrs || {}), ...(customAttrs || {}) }\n})\nconst formatter = computed(() => {\n return isFunction(props.column.formatter) ? props.column.formatter : noopFormatter\n})\nconst isTreeColumn = computed(() => {\n return (\n getters.usingTree &&\n (getters.indentedColumn ? props.column.key === getters.indentedColumn.key : props.column.first)\n )\n})\n\nwatchEffect(() => {\n if (isTypeColumn(props.column)) return\n\n mutations.setCellHeight(props.row.key, props.column.key, contentHeight.value)\n})\n\nfunction isSelectionColumn(column: unknown): column is TableSelectionColumn {\n return (column as TableTypeColumn).type === 'selection'\n}\n\nfunction isOrderColumn(column: unknown): column is TableOrderColumn {\n return (column as TableTypeColumn).type === 'order'\n}\n\nfunction isExpandColumn(column: unknown): column is TableExpandColumn {\n return (column as TableTypeColumn).type === 'expand'\n}\n\nfunction isDragColumn(column: unknown): column is TableDragColumn {\n return (column as TableTypeColumn).type === 'drag'\n}\n\nfunction isTypeColumn(column: unknown): column is TableTypeColumn {\n return (\n isSelectionColumn(column) ||\n isOrderColumn(column) ||\n isExpandColumn(column) ||\n isDragColumn(column)\n )\n}\n\nfunction buildEventPayload(event: Event) {\n return {\n row: props.row.data,\n key: props.row.key,\n rowIndex: props.rowIndex,\n column: props.column,\n columnIndex: props.colIndex,\n event,\n }\n}\n\nfunction handleMouseEnter(event: MouseEvent) {\n tableActions?.emitCellEvent('Enter', buildEventPayload(event))\n}\n\nfunction handleMouseLeave(event: MouseEvent) {\n tableActions?.emitCellEvent('Leave', buildEventPayload(event))\n}\n\nfunction handleClick(event: MouseEvent) {\n tableActions?.emitCellEvent('Click', buildEventPayload(event))\n}\n\nfunction handleDblclick(event: MouseEvent) {\n tableActions?.emitCellEvent('Dblclick', buildEventPayload(event))\n}\n\nfunction handleContextmenu(event: MouseEvent) {\n tableActions?.emitCellEvent('Contextmenu', buildEventPayload(event))\n}\n\nfunction handleCheckRow(row: TableRowState, event: MouseEvent, single = false) {\n if (!getters.disableCheckRows.has(row.key)) {\n const checked = !row.checked\n const { data, key, index } = row\n\n mutations.handleCheck(key, checked, single)\n tableActions.emitRowCheck({ row: data, key, index, event, checked })\n }\n}\n\nfunction handleExpandRow(row: TableRowState, event: MouseEvent) {\n if (!getters.disableExpandRows.has(row.key)) {\n const expanded = !row.expanded\n const { data, key, index } = row\n\n mutations.setRowProp(key, 'expandAnimate', true)\n nextTick(() => {\n mutations.handleExpand(key, expanded)\n tableActions.emitRowExpand({ row: data, key, index, event, expanded })\n })\n }\n}\n\nfunction handleDragRow(row: TableRowState) {\n if (!getters.disableDragRows.has(row.key)) {\n mutations.handleDrag(row.key, true)\n }\n}\n\nfunction handleExpandTree(row: TableRowState, event: MouseEvent) {\n if (!row.children?.length) return\n\n const expanded = !row.treeExpanded\n const { data, key, index } = row\n\n tableActions.runInLocked()\n mutations.setTreeExpanded(row.key, expanded)\n tableActions.emitRowExpand({ row: data, key, index, event, expanded })\n}\n\nfunction handleCellResize(entry: ResizeObserverEntry) {\n contentHeight.value =\n (entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height) + state.borderWidth\n}\n</script>\n\n<template>\n <div\n v-bind=\"attrs\"\n ref=\"wrapper\"\n :class=\"className\"\n role=\"cell\"\n :scope=\"column.first ? 'row' : undefined\"\n :colspan=\"cellSpan.colSpan !== 1 ? cellSpan.colSpan : undefined\"\n :rowspan=\"cellSpan.rowSpan !== 1 ? cellSpan.rowSpan : undefined\"\n :style=\"style\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n @click=\"handleClick\"\n @dblclick=\"handleDblclick\"\n @contextmenu=\"handleContextmenu\"\n >\n <div\n v-if=\"column.index === 0\"\n :class=\"nh.be('side-pad')\"\n role=\"none\"\n aria-hidden\n ></div>\n <div v-if=\"isTypeColumn(column)\" :class=\"nh.be('content')\">\n <template v-if=\"isSelectionColumn(column)\">\n <Radio\n v-if=\"column.singleSelect\"\n inherit\n :label=\"row.key\"\n :value=\"row.checked ? row.key : null\"\n :class=\"nh.be('selection')\"\n :size=\"column.selectionSize || 'default'\"\n :disabled=\"getters.disableCheckRows.has(row.key)\"\n @click.prevent.stop=\"handleCheckRow(row, $event, true)\"\n ></Radio>\n <Checkbox\n v-else\n inherit\n :class=\"nh.be('selection')\"\n :checked=\"row.checked\"\n :size=\"column.selectionSize || 'default'\"\n :disabled=\"getters.disableCheckRows.has(row.key)\"\n :partial=\"row.partial\"\n :control=\"!!row.children?.length\"\n @click.prevent.stop=\"handleCheckRow(row, $event)\"\n ></Checkbox>\n </template>\n <span v-else-if=\"isOrderColumn(column)\" :class=\"nh.be('order')\">\n {{ column.orderLabel && column.orderLabel(column.truthIndex ? row.index : rowIndex) }}\n </span>\n <template v-else-if=\"isExpandColumn(column)\">\n <button\n v-if=\"!getters.disableExpandRows.has(row.key)\"\n type=\"button\"\n :class=\"{\n [nh.be('expand')]: true,\n [nh.bem('expand', 'active')]: row.expanded,\n }\"\n @click.stop=\"handleExpandRow(row, $event)\"\n >\n <TableIcon name=\"expand\" :origin=\"icons.angleRight\"></TableIcon>\n </button>\n </template>\n <template v-else-if=\"isDragColumn(column)\">\n <button\n v-if=\"!getters.disableDragRows.has(row.key)\"\n type=\"button\"\n :class=\"nh.be('dragger')\"\n @mousedown=\"handleDragRow(row)\"\n >\n <TableIcon name=\"dragger\" :origin=\"icons.dragger\"></TableIcon>\n </button>\n </template>\n </div>\n <ResizeObserver v-else :on-resize=\"handleCellResize\">\n <span\n :class=\"{\n [nh.be('content')]: true,\n [nh.bem('content', 'ellipsis')]: column.ellipsis ?? state.ellipsis,\n }\"\n >\n <div v-if=\"isTreeColumn\" :class=\"nh.be('tree-append')\">\n <span\n :class=\"nh.be('pad')\"\n :style=\"{\n [nh.cv('row-depth')]: row.depth,\n }\"\n ></span>\n <button\n type=\"button\"\n :class=\"[\n nh.be('tree-expand'),\n !row.children?.length && nh.bem('tree-expand', 'hidden'),\n ]\"\n @click=\"handleExpandTree(row, $event)\"\n >\n <TableIcon v-if=\"row.treeExpanded\" name=\"minus\" :origin=\"icons.minusSquare\"></TableIcon>\n <TableIcon v-else name=\"plus\" :origin=\"icons.plusSquare\"></TableIcon>\n </button>\n </div>\n <Ellipsis\n v-if=\"column.ellipsis ?? state.ellipsis\"\n inherit\n :class=\"nh.be('ellipsis')\"\n :tip-disabled=\"state.barScrolling\"\n :tooltip-theme=\"state.tooltipTheme\"\n :tip-max-width=\"state.tooltipWidth\"\n >\n <Renderer\n v-if=\"isFunction(column.renderer)\"\n :renderer=\"column.renderer\"\n :data=\"{ row: row.data, rowIndex, column, columnIndex: column.index }\"\n ></Renderer>\n <template v-else-if=\"isFunction(column.accessor)\">\n {{ formatter(column.accessor(row.data, rowIndex)) }}\n </template>\n <template v-else>\n {{ formatter(row.data[column.key]) }}\n </template>\n </Ellipsis>\n <template v-else>\n <Renderer\n v-if=\"isFunction(column.renderer)\"\n :renderer=\"column.renderer\"\n :data=\"{ row: row.data, rowIndex, column, columnIndex: column.index }\"\n ></Renderer>\n <template v-else-if=\"isFunction(column.accessor)\">\n {{ formatter(column.accessor(row.data, rowIndex)) }}\n </template>\n <template v-else>\n {{ formatter(row.data[column.key]) }}\n </template>\n </template>\n </span>\n </ResizeObserver>\n <div\n v-if=\"inLast\"\n :class=\"[nh.be('side-pad'), nh.bem('side-pad', 'right')]\"\n role=\"none\"\n aria-hidden\n ></div>\n </div>\n</template>\n"],"names":["props","__props","state","getters","mutations","inject","TABLE_STORE","tableActions","TABLE_ACTIONS","nh","useNameHelper","icons","useIcons","isRtl","useRtl","contentHeight","ref","wrapper","inLast","computed","cellSpan","className","customClass","typed","columnTypes","columns","customStyle","style","totalWidths","colSpan","rowSpan","noFixed","padLeft","_a","padRight","getLast","width","height","attrs","customAttrs","formatter","isFunction","noopFormatter","isTreeColumn","watchEffect","isTypeColumn","isSelectionColumn","column","isOrderColumn","isExpandColumn","isDragColumn","buildEventPayload","event","handleMouseEnter","handleMouseLeave","handleClick","handleDblclick","handleContextmenu","handleCheckRow","row","single","checked","data","key","index","handleExpandRow","expanded","nextTick","handleDragRow","handleExpandTree","handleCellResize","entry","_b","_createElementBlock","_mergeProps","_normalizeClass","_unref","_Fragment","_createBlock","Radio","_cache","_withModifiers","$event","Checkbox","_toDisplayString","_createVNode","TableIcon","ResizeObserver","_createElementVNode","_normalizeStyle","Ellipsis","Renderer","_createTextVNode"],"mappings":"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"}