{"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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"}