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