diff --git a/packages/devui-vue/devui/table/src/body/body.scss b/packages/devui-vue/devui/table/src/body/body.scss index ea2657279dfcdaccd4f275b9704afe884975afe3..26e8dac0b5bcf46c90589316c39ae6b9f1efb97b 100644 --- a/packages/devui-vue/devui/table/src/body/body.scss +++ b/packages/devui-vue/devui/table/src/body/body.scss @@ -8,7 +8,7 @@ border-bottom: 1px solid $devui-dividing-line; background-color: $devui-global-bg-normal; - &:hover { + &.hover-enabled:hover { background-color: $devui-list-item-hover-bg; } @@ -18,3 +18,11 @@ } } } + + +.devui-sticky-cell { + position: sticky; + z-index: 5; + background-color: inherit; + box-shadow: rgba(0,0,0,.05) $devui-shadow-length-slide-right; +} \ No newline at end of file diff --git a/packages/devui-vue/devui/table/src/body/body.tsx b/packages/devui-vue/devui/table/src/body/body.tsx index 9b02b8679897d1deb3d3347c868d72b6e5ad4934..9e79d142cd01568f63d84cacef52c9d99cbdd7b6 100644 --- a/packages/devui-vue/devui/table/src/body/body.tsx +++ b/packages/devui-vue/devui/table/src/body/body.tsx @@ -1,33 +1,46 @@ -import { defineComponent } from 'vue'; +import { defineComponent, inject, computed } from 'vue'; import { TableBodyProps, TableBodyPropsTypes } from './body.type' -import { useTableBody } from './use-body'; +import { TABLE_TOKEN } from '../table.type'; +import { Checkbox } from '../../../checkbox'; + import './body.scss'; export default defineComponent({ name: 'DTableBody', - props: TableBodyProps, + // props: TableBodyProps, setup(props: TableBodyPropsTypes) { - const { rowColumns } = useTableBody(props); + const parent = inject(TABLE_TOKEN); + const { + _data: data, + _columns: columns, + _checkList: checkList + } = parent.store.states; + + // 移动到行上是否高亮 + const hoverEnabled = computed(() => parent.props.rowHoveredHighlight); - return { rowColumns }; - }, - render() { - const { rowColumns } = this; + // 行前的 checkbox + const renderCheckbox = (index: number) => parent.props.checkable ? ( +