4 changed files with 57 additions and 30 deletions
@ -1,41 +1,63 @@
|
||||
<script lang="ts" setup> |
||||
import { computed } from 'vue' |
||||
<script lang="tsx"> |
||||
import type { PropType } from 'vue' |
||||
import { computed, defineComponent } from 'vue' |
||||
import type { BasicColumn } from '../types/table' |
||||
import BasicHelp from '/@/components/Basic/src/BasicHelp.vue' |
||||
import EditTableHeaderCell from './EditTableHeaderIcon.vue' |
||||
import BasicHelp from '@/components/Basic/src/BasicHelp.vue' |
||||
import { useDesign } from '@/hooks/web/useDesign' |
||||
|
||||
defineOptions({ name: 'TableHeaderCell' }) |
||||
|
||||
const props = defineProps({ |
||||
column: { |
||||
type: Object as PropType<BasicColumn>, |
||||
default: () => ({}), |
||||
export default defineComponent({ |
||||
name: 'TableHeaderCell', |
||||
components: { |
||||
EditTableHeaderCell, |
||||
BasicHelp, |
||||
}, |
||||
}) |
||||
props: { |
||||
column: { |
||||
type: Object as PropType<BasicColumn>, |
||||
default: () => ({}), |
||||
}, |
||||
}, |
||||
setup(props) { |
||||
const { prefixCls } = useDesign('basic-table-header-cell') |
||||
|
||||
const { prefixCls } = useDesign('basic-table-header-cell') |
||||
const getIsEdit = computed(() => !!props.column?.edit) |
||||
const getTitle = computed(() => { |
||||
const column = props.column |
||||
if (typeof column.customHeaderRender === 'function') |
||||
return column.customHeaderRender(props.column) |
||||
|
||||
const getIsEdit = computed(() => !!props.column?.edit) |
||||
const getTitle = computed(() => props.column?.customTitle || props.column?.title) |
||||
const getHelpMessage = computed(() => props.column?.helpMessage) |
||||
</script> |
||||
return props.column?.customTitle || props.column?.title |
||||
}) |
||||
const getHelpMessage = computed(() => props.column?.helpMessage) |
||||
|
||||
<template> |
||||
<EditTableHeaderCell v-if="getIsEdit"> |
||||
{{ getTitle }} |
||||
</EditTableHeaderCell> |
||||
<span v-else>{{ getTitle }}</span> |
||||
<BasicHelp v-if="getHelpMessage" :text="getHelpMessage" :class="`${prefixCls}__help`" /> |
||||
</template> |
||||
return () => { |
||||
return ( |
||||
<div> |
||||
{getIsEdit.value |
||||
? ( |
||||
<EditTableHeaderCell>{getTitle.value}</EditTableHeaderCell> |
||||
) |
||||
: ( |
||||
<span class="default-header-cell">{getTitle.value}</span> |
||||
)} |
||||
{getHelpMessage.value && ( |
||||
<BasicHelp text={getHelpMessage.value} class={`${prefixCls}__help`} /> |
||||
)} |
||||
</div> |
||||
) |
||||
} |
||||
}, |
||||
}) |
||||
</script> |
||||
|
||||
<style lang="less"> |
||||
@prefix-cls: ~'@{namespace}-basic-table-header-cell'; |
||||
@prefix-cls: ~'@{namespace}-basic-table-header-cell'; |
||||
|
||||
.@{prefix-cls} { |
||||
&__help { |
||||
margin-left: 8px; |
||||
color: rgb(0 0 0 / 65%) !important; |
||||
.@{prefix-cls} { |
||||
&__help { |
||||
margin-left: 8px; |
||||
color: rgb(0 0 0 / 65%) !important; |
||||
} |
||||
} |
||||
} |
||||
</style> |
||||
|
Reference in new issue