@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 33.5 kB
Source Map (JSON)
{"version":3,"file":"table-head-cell.vue2.mjs","sources":["../../../components/table/table-head-cell.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Button } from '@/components/button'\r\nimport { Checkbox } from '@/components/checkbox'\r\nimport { Ellipsis } from '@/components/ellipsis'\r\nimport { Renderer } from '@/components/renderer'\r\nimport { ResizeObserver } from '@/components/resize-observer'\r\nimport { Tooltip } from '@/components/tooltip'\r\n\r\nimport { computed, inject, ref, toRef } from 'vue'\r\n\r\nimport { useIcons, useNameHelper } from '@vexip-ui/config'\r\nimport TableIcon from './table-icon.vue'\r\nimport { useMoving, useRtl } from '@vexip-ui/hooks'\r\nimport { getLast, isFunction, nextFrameOnce } from '@vexip-ui/utils'\r\nimport { TABLE_ACTIONS, TABLE_HEAD_PREFIX, TABLE_STORE, columnTypes } from './symbol'\r\n\r\nimport type { PropType, StyleValue } from 'vue'\r\nimport type { MovingState } from '@vexip-ui/hooks'\r\nimport type {\r\n ColumnWithKey,\r\n ParsedFilterOptions,\r\n ParsedTableSorterOptions,\r\n TableRowState,\r\n TableSelectionColumn,\r\n TableTypeColumn,\r\n} from './symbol'\r\n\r\ndefineOptions({ name: 'TableHeadCell' })\r\n\r\nconst props = defineProps({\r\n column: {\r\n type: Object as PropType<ColumnWithKey>,\r\n default: () => ({}),\r\n },\r\n index: {\r\n type: Number,\r\n default: -1,\r\n },\r\n row: {\r\n type: Object as PropType<TableRowState>,\r\n default: () => ({}),\r\n },\r\n rowIndex: {\r\n type: Number,\r\n default: 0,\r\n },\r\n fixed: {\r\n type: String as PropType<'left' | 'right' | undefined>,\r\n default: null,\r\n },\r\n})\r\n\r\nconst { state, getters, mutations } = inject(TABLE_STORE)!\r\nconst tableActions = inject(TABLE_ACTIONS)!\r\n\r\nconst nh = useNameHelper('table')\r\nconst locale = toRef(state, 'locale')\r\nconst icons = useIcons()\r\nconst { isRtl } = useRtl()\r\n\r\nconst filterVisible = ref(false)\r\nconst resizable = toRef(state, 'colResizable')\r\nconst resizing = computed(() => state.colResizing)\r\n\r\nconst wrapper = ref<HTMLElement>()\r\n\r\nconst isGroup = computed(() => mutations.isGroupColumn(props.column))\r\nconst columns = computed(() => {\r\n return props.fixed === 'left'\r\n ? state.leftFixedColumns\r\n : props.fixed === 'right'\r\n ? state.rightFixedColumns\r\n : state.normalColumns\r\n})\r\nconst cellSpan = computed(() => {\r\n return (\r\n state.cellSpanMap.get(props.fixed || 'default')!.get(`h${props.rowIndex},${props.index}`) || {\r\n colSpan: 1,\r\n rowSpan: 1,\r\n }\r\n )\r\n})\r\nconst inLast = computed(() => {\r\n return isGroup.value\r\n ? props.column.last\r\n : props.column.index + cellSpan.value.colSpan >= state.columns.length\r\n})\r\n\r\nconst minWidth = 10\r\n\r\nlet currentWidth = 0\r\n\r\nfunction processColResize(payload: MovingState, lazy = false) {\r\n const width = Math.max(currentWidth + (payload.isRtl ? -1 : 1) * payload.deltaX, minWidth)\r\n\r\n !lazy &&\r\n mutations.handleColumnResize(\r\n state.columns\r\n .slice(props.column.index, props.column.index + cellSpan.value.colSpan)\r\n .map(column => column.key),\r\n width,\r\n )\r\n\r\n return width\r\n}\r\n\r\nconst { target: resizer } = useMoving({\r\n capture: false,\r\n onStart: (payload, event) => {\r\n if (!resizable.value || resizing.value || isGroup.value) return false\r\n\r\n const table = tableActions.getTableElement()\r\n\r\n if (!table || !wrapper.value) return false\r\n\r\n payload.xStart = payload.clientX - table.getBoundingClientRect().left\r\n payload.isRtl = isRtl.value\r\n currentWidth = wrapper.value.getBoundingClientRect().width\r\n\r\n mutations.setColumnResizing(true)\r\n mutations.setResizeLeft(payload.xStart)\r\n tableActions.emitColResize('Start', {\r\n ...buildEventPayload(event),\r\n width: currentWidth,\r\n })\r\n },\r\n onMove: (payload, event) => {\r\n payload.xEnd = Math.max(payload.xStart - currentWidth + minWidth, payload.xEnd)\r\n\r\n mutations.setResizeLeft(payload.xEnd)\r\n tableActions.emitColResize('Move', {\r\n ...buildEventPayload(event),\r\n width: processColResize(payload, state.colResizable !== 'responsive'),\r\n })\r\n },\r\n onEnd: (payload, event) => {\r\n mutations.setColumnResizing(false)\r\n tableActions.emitColResize('End', {\r\n ...buildEventPayload(event),\r\n width: processColResize(payload),\r\n })\r\n },\r\n})\r\n\r\nconst typed = computed(() => columnTypes.includes((props.column as TableTypeColumn).type))\r\nconst className = computed(() => {\r\n let customClass = null\r\n\r\n if (typeof state.headClass === 'function') {\r\n customClass = state.headClass({\r\n column: props.column,\r\n index: props.column.colIndex,\r\n rowIndex: props.rowIndex,\r\n })\r\n } else {\r\n customClass = state.headClass\r\n }\r\n\r\n return [\r\n nh.be('head-cell'),\r\n {\r\n [nh.bem('head-cell', 'group')]: isGroup.value,\r\n [nh.bem('head-cell', 'typed')]: typed.value,\r\n [nh.bem('head-cell', 'center')]: typed.value || props.column.textAlign === 'center',\r\n [nh.bem('head-cell', 'right')]: props.column.textAlign === 'right',\r\n [nh.bem('head-cell', 'last')]: inLast.value,\r\n },\r\n props.column.class,\r\n customClass,\r\n ]\r\n})\r\nconst customStyle = computed(() => {\r\n if (typeof state.headStyle === 'function') {\r\n return state.headStyle({\r\n column: props.column,\r\n index: props.column.colIndex,\r\n rowIndex: props.rowIndex,\r\n })\r\n }\r\n\r\n return state.headStyle\r\n})\r\nconst style = computed(() => {\r\n const totalWidths =\r\n props.fixed === 'left'\r\n ? getters.leftFixedWidths\r\n : props.fixed === 'right'\r\n ? getters.rightFixedWidths\r\n : getters.normalWidths\r\n const { colSpan, rowSpan } = cellSpan.value\r\n const noFixed = !getters.hasFixedColumn\r\n const padLeft = noFixed || columns.value[0]?.fixed === 'left' ? state.sidePadding[0] || 0 : 0\r\n const padRight =\r\n noFixed || getLast(columns.value)?.fixed === 'right' ? state.sidePadding[1] || 0 : 0\r\n const width = totalWidths[props.index + colSpan] - totalWidths[props.index]\r\n\r\n let height: number | undefined\r\n\r\n if (rowSpan > 1) {\r\n height = 0\r\n\r\n for (let i = 0; i < rowSpan; ++i) {\r\n height += state.rowMap.get(`${TABLE_HEAD_PREFIX}${props.rowIndex + i}`)?.height ?? 0\r\n }\r\n }\r\n\r\n return [\r\n props.column.style || '',\r\n customStyle.value,\r\n {\r\n display: !colSpan ? 'none' : undefined,\r\n width: `${(props.column.index ? 0 : padLeft) + (inLast.value ? padRight : 0) + width}px`,\r\n height: height ? `${height}px` : undefined,\r\n visibility: props.column.fixed && !props.fixed ? 'hidden' : undefined,\r\n borderRightWidth:\r\n !state.border && colSpan > 1 && props.index + colSpan >= totalWidths.length - 1\r\n ? 0\r\n : undefined,\r\n transform: `translate3d(${isRtl.value ? '-' : ''}${\r\n (props.column.index ? padLeft : 0) + totalWidths[props.index]\r\n }px, 0, 0)`,\r\n },\r\n ] as StyleValue\r\n})\r\nconst attrs = computed(() => {\r\n let customAttrs: Record<string, any>\r\n\r\n if (typeof state.headAttrs === 'function') {\r\n customAttrs = state.headAttrs({\r\n column: props.column,\r\n index: props.column.colIndex,\r\n rowIndex: props.rowIndex,\r\n })\r\n } else {\r\n customAttrs = state.headAttrs\r\n }\r\n\r\n return { ...(props.column.attrs || {}), ...(customAttrs || {}) }\r\n})\r\nconst sorter = computed(() => {\r\n return state.sorters.get(props.column.key) || ({} as ParsedTableSorterOptions)\r\n})\r\nconst filter = computed(() => {\r\n return state.filters.get(props.column.key) || ({} as ParsedFilterOptions)\r\n})\r\nconst hasFilterActive = computed(() => {\r\n const options = filter.value.options ?? []\r\n\r\n for (let i = 0, len = options.length; i < len; ++i) {\r\n if (options[i].active) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n})\r\nconst checkboxDisabled = computed(() => {\r\n if (!isSelection(props.column)) {\r\n return false\r\n }\r\n\r\n const records = Object.values(getters.disableCheckRows)\r\n\r\n return (\r\n getters.processedData.length === records.length &&\r\n !Object.values(getters.disableCheckRows).includes(false)\r\n )\r\n})\r\n\r\nconst refreshXScroll = () => nextFrameOnce(tableActions.refreshXScroll)\r\n\r\nfunction isSelection(column: unknown): column is TableSelectionColumn {\r\n return !isGroup.value && (column as TableTypeColumn).type === 'selection'\r\n}\r\n\r\nfunction buildEventPayload(event: Event) {\r\n return {\r\n column: props.column,\r\n index: props.column.colIndex,\r\n event,\r\n }\r\n}\r\n\r\nfunction handleMouseEnter(event: MouseEvent) {\r\n tableActions?.emitHeadEvent('Enter', buildEventPayload(event))\r\n}\r\n\r\nfunction handleMouseLeave(event: MouseEvent) {\r\n tableActions?.emitHeadEvent('Leave', buildEventPayload(event))\r\n}\r\n\r\nfunction handleClick(event: MouseEvent) {\r\n tableActions?.emitHeadEvent('Click', buildEventPayload(event))\r\n}\r\n\r\nfunction handleDblclick(event: MouseEvent) {\r\n tableActions?.emitHeadEvent('Dblclick', buildEventPayload(event))\r\n}\r\n\r\nfunction handleContextmenu(event: MouseEvent) {\r\n tableActions?.emitHeadEvent('Contextmenu', buildEventPayload(event))\r\n}\r\n\r\nfunction handleSortAsc() {\r\n const key = props.column.key\r\n const type = sorter.value.type === 'asc' ? null : 'asc'\r\n\r\n mutations.handleSort(key, type)\r\n tableActions.emitRowSort()\r\n}\r\n\r\nfunction handleSortDesc() {\r\n const key = props.column.key\r\n const type = sorter.value.type === 'desc' ? null : 'desc'\r\n\r\n mutations.handleSort(key, type)\r\n tableActions.emitRowSort()\r\n}\r\n\r\nfunction handleFilter(value: ParsedFilterOptions['active']) {\r\n mutations.handleFilter(props.column.key, value)\r\n}\r\n\r\nfunction handleFilterItemSelect(value: string | number, active: boolean) {\r\n mutations.toggleFilterItemActive({\r\n key: props.column.key,\r\n value,\r\n active,\r\n disableOthers: true,\r\n })\r\n handleFilter(value)\r\n filterVisible.value = false\r\n tableActions.emitRowFilter()\r\n}\r\n\r\nfunction handleFilterCheck(value: string | number, checked: boolean) {\r\n mutations.toggleFilterItemActive({\r\n key: props.column.key,\r\n value,\r\n active: checked,\r\n })\r\n}\r\n\r\nfunction handleFilterMultiple() {\r\n const options = filter.value.options ?? []\r\n const activeValues = []\r\n\r\n for (let i = 0, len = options.length; i < len; ++i) {\r\n const option = options[i]\r\n\r\n if (option.active) {\r\n activeValues.push(option.value)\r\n }\r\n }\r\n\r\n handleFilter(activeValues)\r\n filterVisible.value = false\r\n tableActions.emitRowFilter()\r\n}\r\n\r\nfunction handleResetFilter() {\r\n filterVisible.value = false\r\n handleFilter(null)\r\n mutations.toggleFilterItemActive({\r\n key: props.column.key,\r\n value: null,\r\n disableOthers: true,\r\n })\r\n tableActions.emitRowFilter()\r\n}\r\n\r\nfunction handleCheckAllRow() {\r\n mutations.handleCheckAll()\r\n tableActions.emitAllRowCheck(state.checkedAll, state.partial)\r\n}\r\n\r\nfunction handleCellResize(entry: ResizeObserverEntry) {\r\n mutations.setCellHeight(\r\n props.row.key,\r\n props.column.key,\r\n (entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height) + state.borderWidth,\r\n )\r\n}\r\n</script>\r\n\r\n<template>\r\n <div\r\n v-bind=\"attrs\"\r\n ref=\"wrapper\"\r\n :class=\"className\"\r\n role=\"columnheader\"\r\n scope=\"col\"\r\n :colspan=\"cellSpan.colSpan !== 1 ? cellSpan.colSpan : undefined\"\r\n :rowspan=\"cellSpan.rowSpan !== 1 ? cellSpan.rowSpan : undefined\"\r\n :style=\"style\"\r\n :aria-sort=\"\r\n !isGroup && sorter.able\r\n ? sorter.type\r\n ? sorter.type === 'asc'\r\n ? 'ascending'\r\n : 'descending'\r\n : 'none'\r\n : undefined\r\n \"\r\n @mouseenter=\"handleMouseEnter\"\r\n @mouseleave=\"handleMouseLeave\"\r\n @click=\"handleClick\"\r\n @dblclick=\"handleDblclick\"\r\n @contextmenu=\"handleContextmenu\"\r\n @transitionend=\"refreshXScroll\"\r\n >\r\n <div\r\n v-if=\"column.index === 0\"\r\n :class=\"nh.be('side-pad')\"\r\n role=\"none\"\r\n aria-hidden\r\n ></div>\r\n <template v-if=\"isSelection(column)\">\r\n <div v-if=\"!column.singleSelect\" :class=\"nh.be('content')\">\r\n <Checkbox\r\n inherit\r\n control\r\n :class=\"nh.be('selection')\"\r\n :checked=\"state.checkedAll\"\r\n :partial=\"state.partial\"\r\n :disabled=\"checkboxDisabled\"\r\n :size=\"column.selectionSize || 'default'\"\r\n @click.prevent=\"handleCheckAllRow\"\r\n ></Checkbox>\r\n </div>\r\n </template>\r\n <ResizeObserver\r\n v-else\r\n :disabled=\"column.ellipsis ?? state.ellipsis\"\r\n :on-resize=\"handleCellResize\"\r\n >\r\n <span :class=\"nh.be('content')\">\r\n <Ellipsis\r\n v-if=\"column.ellipsis ?? state.ellipsis\"\r\n inherit\r\n :class=\"nh.be('ellipsis')\"\r\n :tooltip-theme=\"state.tooltipTheme\"\r\n :tip-max-width=\"state.tooltipWidth\"\r\n >\r\n <Renderer\r\n v-if=\"isGroup && isFunction((column as any).renderer)\"\r\n :renderer=\"(column as any).renderer\"\r\n ></Renderer>\r\n <Renderer\r\n v-else-if=\"isFunction(column.headRenderer)\"\r\n :renderer=\"column.headRenderer\"\r\n :data=\"{ column, index }\"\r\n ></Renderer>\r\n <template v-else>\r\n {{ column.name }}\r\n </template>\r\n </Ellipsis>\r\n <template v-else>\r\n <Renderer\r\n v-if=\"isGroup && isFunction((column as any).renderer)\"\r\n :renderer=\"(column as any).renderer\"\r\n ></Renderer>\r\n <Renderer\r\n v-else-if=\"isFunction(column.headRenderer)\"\r\n :renderer=\"column.headRenderer\"\r\n :data=\"{ column, index }\"\r\n ></Renderer>\r\n <template v-else>\r\n {{ column.name }}\r\n </template>\r\n </template>\r\n <template v-if=\"!isGroup\">\r\n <div v-if=\"sorter.able\" :class=\"nh.be('sorter')\">\r\n <span\r\n :class=\"{\r\n [nh.bem('sorter', 'asc')]: true,\r\n [nh.bem('sorter', 'active')]: sorter.type === 'asc'\r\n }\"\r\n @click=\"handleSortAsc()\"\r\n >\r\n <TableIcon name=\"asc\" :origin=\"icons.angleUp\"></TableIcon>\r\n </span>\r\n <span\r\n :class=\"{\r\n [nh.bem('sorter', 'desc')]: true,\r\n [nh.bem('sorter', 'active')]: sorter.type === 'desc'\r\n }\"\r\n @click=\"handleSortDesc()\"\r\n >\r\n <TableIcon name=\"desc\" :origin=\"icons.angleDown\"></TableIcon>\r\n </span>\r\n </div>\r\n <template v-if=\"filter.able\">\r\n <Renderer\r\n v-if=\"isFunction(column.filterRenderer)\"\r\n :renderer=\"column.filterRenderer\"\r\n :data=\"{ column, index, filter, handleFilter }\"\r\n ></Renderer>\r\n <Tooltip\r\n v-else\r\n v-model:visible=\"filterVisible\"\r\n transfer\r\n placement=\"bottom\"\r\n trigger=\"click\"\r\n :class=\"{\r\n [nh.be('filter')]: true,\r\n [nh.bem('filter', 'visible')]: filterVisible,\r\n [nh.bem('filter', 'active')]: filter.active\r\n }\"\r\n :tip-class=\"{\r\n [nh.be('filter-wrapper')]: true,\r\n [nh.bs('vars')]: true,\r\n [nh.bem('filter-wrapper', 'multiple')]: filter.multiple\r\n }\"\r\n >\r\n <template #trigger>\r\n <div :class=\"nh.be('filter-trigger')\">\r\n <TableIcon name=\"filter\" :origin=\"icons.filter\"></TableIcon>\r\n </div>\r\n </template>\r\n <template v-if=\"filter.multiple\" #default>\r\n <div vertical :class=\"nh.be('filter-group')\">\r\n <Checkbox\r\n v-for=\"item in filter.options\"\r\n :key=\"item.value\"\r\n inherit\r\n :checked=\"item.active\"\r\n :label=\"item.label\"\r\n :value=\"item.value\"\r\n @change=\"handleFilterCheck(item.value, $event)\"\r\n ></Checkbox>\r\n </div>\r\n <div :class=\"nh.be('filter-actions')\">\r\n <Button\r\n inherit\r\n text\r\n size=\"small\"\r\n :disabled=\"!hasFilterActive\"\r\n @click=\"handleFilterMultiple()\"\r\n >\r\n {{ locale.filterConfirm }}\r\n </Button>\r\n <Button\r\n inherit\r\n text\r\n size=\"small\"\r\n @click=\"handleResetFilter\"\r\n >\r\n {{ locale.filterReset }}\r\n </Button>\r\n </div>\r\n </template>\r\n <template v-else #default>\r\n <div\r\n :class=\"{\r\n [nh.be('filter-item')]: true,\r\n [nh.bem('filter-item', 'active')]: !filter.active\r\n }\"\r\n @click=\"handleResetFilter\"\r\n >\r\n {{ locale.filterAll }}\r\n </div>\r\n <div\r\n v-for=\"item in filter.options\"\r\n :key=\"item.value\"\r\n :class=\"{\r\n [nh.be('filter-item')]: true,\r\n [nh.bem('filter-item', 'active')]: item.active\r\n }\"\r\n @click=\"handleFilterItemSelect(item.value, !item.active)\"\r\n >\r\n {{ item.label }}\r\n </div>\r\n </template>\r\n </Tooltip>\r\n </template>\r\n </template>\r\n </span>\r\n </ResizeObserver>\r\n <div\r\n v-if=\"!isGroup && resizable && !typed && !column.last\"\r\n ref=\"resizer\"\r\n :class=\"nh.be('resizer')\"\r\n ></div>\r\n <div\r\n v-if=\"inLast\"\r\n :class=\"[nh.be('side-pad'), nh.bem('side-pad', 'right')]\"\r\n role=\"none\"\r\n aria-hidden\r\n ></div>\r\n </div>\r\n</template>\r\n"],"names":["minWidth","props","__props","state","getters","mutations","inject","TABLE_STORE","tableActions","TABLE_ACTIONS","nh","useNameHelper","locale","toRef","icons","useIcons","isRtl","useRtl","filterVisible","ref","resizable","resizing","computed","wrapper","isGroup","columns","cellSpan","inLast","currentWidth","processColResize","payload","lazy","width","column","resizer","useMoving","event","table","buildEventPayload","typed","columnTypes","className","customClass","customStyle","style","totalWidths","colSpan","rowSpan","noFixed","padLeft","_a","padRight","_b","getLast","height","i","_c","TABLE_HEAD_PREFIX","attrs","customAttrs","sorter","filter","hasFilterActive","options","len","checkboxDisabled","isSelection","records","refreshXScroll","nextFrameOnce","handleMouseEnter","handleMouseLeave","handleClick","handleDblclick","handleContextmenu","handleSortAsc","key","type","handleSortDesc","handleFilter","value","handleFilterItemSelect","active","handleFilterCheck","checked","handleFilterMultiple","activeValues","option","handleResetFilter","handleCheckAllRow","handleCellResize","entry","_createElementBlock","_mergeProps","_normalizeClass","_unref","_Fragment","_createVNode","Checkbox","_createBlock","ResizeObserver","_createElementVNode","Ellipsis","isFunction","Renderer","_createTextVNode","_toDisplayString","TableIcon","Tooltip","$event","_openBlock","_renderList","item","Button","_hoisted_2"],"mappings":"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"}