UNPKG

hongluan-ui

Version:
1 lines 12.4 kB
{"version":3,"file":"cell.mjs","sources":["../../../../../../../packages/components/simple-table/src/body/cell.ts"],"sourcesContent":["import { defineComponent, h, withDirectives, vShow, toRefs, getCurrentInstance, inject } from 'vue'\nimport HlPopover from '@hongluan-ui/components/popover'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport HlSpinner from '@hongluan-ui/components/spinner'\nimport { SystemArrowRight } from '@hongluan-ui/components/system-icon'\nimport DefaultCellContent from './default-cell-content.vue'\nimport { simpleTableContextKey } from '../simple-table'\n\nimport type { PropType, VNode } from 'vue'\nimport type { Indexable } from '@hongluan-ui/utils'\nimport type { ColumnType, CellClassFunction, CellStyleFunction } from '../simple-table'\n\nexport default defineComponent({\n props: {\n row: {\n type: Object,\n required: true,\n },\n column: {\n type: Object as PropType<ColumnType>,\n required: true,\n },\n rowIndex: {\n type: Number,\n required: true,\n },\n columnIndex: {\n type: Number,\n required: true,\n },\n width: String,\n minWidth: String,\n maxWidth: String,\n expanded: Boolean,\n showTooltip: Boolean,\n hasChildren: Boolean,\n hasTreeData: Boolean,\n isLoading: Boolean,\n treeExpanded: Boolean,\n firstColumnIndex: Number,\n cellClassName: {\n type: [String, Function] as PropType<string | CellClassFunction>,\n default: '',\n },\n cellStyle: {\n type: [Object, Function] as PropType<Indexable<any> | CellStyleFunction>,\n default: () => ({}),\n },\n span: Object as PropType<{ rowspan: number; colspan: number; }>,\n },\n emits: ['mouseover', 'mouseleave', 'expand', 'tree-expand', 'cell-click'],\n setup(props, { emit, slots }) {\n const { row, column, rowIndex, columnIndex } = toRefs(props)\n\n const cellClassName = typeof props.cellClassName === 'string' ?\n props.cellClassName : props.cellClassName({ row: row.value, column: column.value, rowIndex: rowIndex.value, columnIndex: columnIndex.value })\n const cellStyle = typeof props.cellStyle === 'function' ?\n props.cellStyle({ row: row.value, column: column.value, rowIndex: rowIndex.value, columnIndex: columnIndex.value }) : props.cellStyle\n\n const { $parent } = getCurrentInstance()!.proxy as any\n const { isShowCol, getColFixed, hoverColIndex } = inject(simpleTableContextKey)!\n\n return () => {\n const width = props.width ?? (column.value.width ? column.value.width : false)\n const minWidth = props.minWidth ?? (column.value.minWidth ? column.value.minWidth : false)\n const maxWidth = props.maxWidth ?? (column.value.maxWidth ? column.value.maxWidth : false)\n const align = column.value.align ? column.value.align : false\n\n let treeNode: VNode | null = null\n if (props.columnIndex === props.firstColumnIndex) {\n if (props.isLoading) {\n treeNode = h('div', { class: 'expand-icon' }, [h(HlSpinner)])\n } else if (props.hasChildren) {\n treeNode = h('div', {\n class: 'expand-icon cursor-pointer',\n onClick: () => emit('tree-expand'),\n }, [\n h(HlIcon, null, { default: () => [h(SystemArrowRight)] }),\n ])\n } else if (($parent.$props as any).level){\n treeNode = h('div', {\n class: 'placeholder-icon',\n })\n } else if (!($parent.$props as any).level && props.hasTreeData) { // algin level = 0 row\n treeNode = h('div', {\n class: 'placeholder-icon',\n })\n }\n }\n\n let child: VNode | null = null\n if (!column.value.slotName) {\n const defaultCellContent = h(DefaultCellContent, {\n row: row.value,\n column: column.value,\n onCellClick: ($event: Event) => emit('cell-click', $event),\n onExpand: () => emit('expand'),\n }, treeNode ? {\n 'expand-icon': () => h(treeNode!),\n } : {})\n\n if (props.showTooltip) {\n child = h(HlPopover as any, {\n content: row.value[column.value.prop],\n placement: 'top',\n effect: 'dark',\n tooltip: true,\n ...column.value.tooltipProps,\n }, {\n reference: () => defaultCellContent,\n })\n } else {\n child = defaultCellContent\n }\n } else {\n child = h('div', {\n class: 'cell',\n style: [\n {\n 'justify-content': align,\n },\n ],\n onClick: ($event: Event) => emit('cell-click', $event),\n }, [treeNode, slots.default?.()])\n }\n\n const TdNode = withDirectives(h('td', {\n rowspan: props.span?.rowspan,\n colspan: props.span?.colspan,\n class: [\n align ? `align-${align}` : '',\n {\n 'show-tooltip': column.value.showTooltip,\n ['fixed-' + getColFixed(column.value).position]: !!column.value.fixed,\n 'show-shadow': getColFixed(column.value).hasShadow,\n 'expanded': props.expanded,\n 'first-column-index': props.columnIndex === props.firstColumnIndex,\n 'tree-expanded': props.columnIndex === props.firstColumnIndex && props.treeExpanded,\n },\n cellClassName,\n ],\n style: [\n {\n 'width': width,\n 'min-width': minWidth,\n 'max-width': maxWidth,\n },\n !!column.value.fixed && getColFixed(column.value, props.columnIndex).distance ? '--table-fixed-distance:' + getColFixed(column.value, props.columnIndex).distance : '',\n cellStyle,\n ],\n onMouseover: ($event: Event) => {\n hoverColIndex.value = props.columnIndex\n emit('mouseover', $event)\n },\n onMouseleave: ($event: Event) => emit('mouseleave', $event),\n }, [\n child,\n ]), [[vShow, isShowCol(column.value)]])\n\n if (!props.span?.rowspan || !props.span?.rowspan) return null\n else return TdNode\n }\n },\n})\n"],"names":[],"mappings":"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"}