diff --git a/docs/examples/shadow.tsx b/docs/examples/shadow.tsx index e72b6fff7..e87fac617 100644 --- a/docs/examples/shadow.tsx +++ b/docs/examples/shadow.tsx @@ -138,23 +138,27 @@ const columns2: ColumnsType = [ title: 'Name0', fixed: 'left', dataIndex: 'name0', + width: 100, }, { key: 'name1', title: 'Name1', fixed: 'left', dataIndex: 'name1', + width: 100, }, { key: 'name2', title: 'Name2', dataIndex: 'name2', + width: 500, }, { key: 'name3', title: 'Name3', fixed: 'right', dataIndex: 'name3', + width: 100, }, ], }, diff --git a/tests/FixedColumn.spec.tsx b/tests/FixedColumn.spec.tsx index d4168af12..628073aa5 100644 --- a/tests/FixedColumn.spec.tsx +++ b/tests/FixedColumn.spec.tsx @@ -6,6 +6,7 @@ import { spyElementPrototypes } from 'rc-util/lib/test/domHook'; import { act } from 'react-dom/test-utils'; import Table, { type ColumnsType } from '../src'; import { safeAct } from './utils'; +import { RowColSpanWithFixed, RowColSpanWithFixed2 } from './__mocks__/shadowTest'; function triggerResize(ele: HTMLElement) { _rs([{ target: ele }] as any); @@ -298,4 +299,14 @@ describe('Table.FixedColumn', () => { expect(container.querySelector('.healer-table')).toBeTruthy(); }); }); + it('shadow should display correctly', async () => { + const { container, rerender } = render(); + expect(container.querySelectorAll('.rc-table-cell-fix-left-last').length).toBe(104); + expect(container.querySelectorAll('.rc-table-cell-fix-right-first').length).toBe(101); + expect(container).toMatchSnapshot(); + rerender(); + expect(container.querySelectorAll('.rc-table-cell-fix-left-last').length).toBe(4); + expect(container.querySelectorAll('.rc-table-cell-fix-right-first').length).toBe(4); + expect(container).toMatchSnapshot(); + }); }); diff --git a/tests/__mocks__/shadowTest.tsx b/tests/__mocks__/shadowTest.tsx new file mode 100644 index 000000000..42ed6debf --- /dev/null +++ b/tests/__mocks__/shadowTest.tsx @@ -0,0 +1,180 @@ +import React from 'react'; +import Table from '../../src'; +import '../../assets/index.less'; +import type { ColumnsType } from '../../src'; + +interface DataType { + key: React.Key; + name: string; + age: number; + street: string; + building: string; + number: number; + companyAddress: string; + companyName: string; + gender: string; +} + +const columns: ColumnsType = [ + { + title: 'Other', + fixed: 'left', + ellipsis: true, + children: [ + { + title: 'Age', + dataIndex: 'age', + key: 'age', + width: 150, + fixed: 'left', + ellipsis: true, + }, + { + title: 'Address', + children: [ + { + title: 'Street', + dataIndex: 'street', + key: 'street', + width: 150, + fixed: 'left', + ellipsis: true, + }, + { + title: 'Block', + children: [ + { + title: 'Door No.', + dataIndex: 'number', + key: 'number', + width: 100, + fixed: 'left', + ellipsis: true, + }, + { + title: 'Building', + dataIndex: 'building', + key: 'building', + width: 100, + fixed: 'left', + ellipsis: true, + }, + ], + }, + ], + }, + ], + }, + { + title: 'Name', + dataIndex: 'name', + key: 'name', + width: 100, + }, + { + title: 'Company', + children: [ + { + title: 'Company Address', + dataIndex: 'companyAddress', + key: 'companyAddress', + width: 200, + }, + { + title: 'Company Name', + dataIndex: 'companyName', + key: 'companyName', + }, + ], + }, + { + title: 'Gender', + dataIndex: 'gender', + key: 'gender', + width: 80, + fixed: 'right', + }, +]; + +const data: DataType[] = []; +for (let i = 0; i < 100; i++) { + data.push({ + key: i, + name: 'John Brown', + age: i + 1, + street: 'Lake Park', + building: 'C', + number: 2035, + companyAddress: 'Lake Street 42', + companyName: 'SoftLake Co', + gender: 'M', + }); +} + +interface User { + key: number; + name: string; +} + +const columns2: ColumnsType = [ + { + title: '父表头右侧的阴影导致整个表格最右侧有空隙', + key: 'title', + children: [ + { + key: 'name0', + title: 'Name0', + fixed: 'left', + dataIndex: 'name0', + width: 100, + }, + { + key: 'name1', + title: 'Name1', + fixed: 'left', + dataIndex: 'name1', + width: 100, + }, + { + key: 'name2', + title: 'Name2', + dataIndex: 'name2', + width: 500, + }, + { + key: 'name3', + title: 'Name3', + fixed: 'right', + dataIndex: 'name3', + width: 100, + }, + ], + }, +]; + +const data2: User[] = [ + { + key: 0, + name: 'Jack', + }, + { + key: 1, + name: 'Jack1', + }, + { + key: 2, + name: 'Jack1', + }, +]; + +export const RowColSpanWithFixed = () => ( + +); +export const RowColSpanWithFixed2 = () => ( +
+); + +export default { + RowColSpanWithFixed, + RowColSpanWithFixed2, +}; diff --git a/tests/__snapshots__/FixedColumn.spec.tsx.snap b/tests/__snapshots__/FixedColumn.spec.tsx.snap index 273f7f0c2..559ffb5eb 100644 --- a/tests/__snapshots__/FixedColumn.spec.tsx.snap +++ b/tests/__snapshots__/FixedColumn.spec.tsx.snap @@ -3143,3 +3143,6261 @@ LoadedCheerio { }, } `; + +exports[`Table.FixedColumn > shadow should display correctly 1`] = ` +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + Other + + + Name + + Company + + Gender + +
+ Age + + Address + + Company Address + + Company Name +
+ Street + + Block +
+ Door No. + + + Building + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 2 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 3 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 4 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 5 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 6 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 7 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 8 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 9 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 10 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 11 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 12 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 13 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 14 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 15 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 16 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 17 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 18 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 19 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 20 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 21 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 22 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 23 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 24 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 25 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 26 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 27 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 28 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 29 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 30 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 31 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 32 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 33 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 34 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 35 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 36 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 37 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 38 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 39 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 40 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 41 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 42 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 43 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 44 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 45 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 46 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 47 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 48 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 49 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 50 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 51 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 52 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 53 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 54 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 55 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 56 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 57 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 58 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 59 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 60 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 61 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 62 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 63 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 64 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 65 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 66 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 67 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 68 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 69 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 70 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 71 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 72 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 73 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 74 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 75 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 76 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 77 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 78 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 79 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 80 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 81 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 82 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 83 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 84 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 85 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 86 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 87 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 88 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 89 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 90 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 91 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 92 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 93 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 94 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 95 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 96 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 97 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 98 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 99 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+ 100 + + Lake Park + + 2035 + + + C + + + John Brown + + Lake Street 42 + + SoftLake Co + + M +
+
+ + + +`; + +exports[`Table.FixedColumn > shadow should display correctly 2`] = ` +
+
+
+
+ + + + + + + + + + + + + +
+ 父表头右侧的阴影导致整个表格最右侧有空隙 + +
+ Name0 + + Name1 + + Name2 + + Name3 +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + +
+
+
+
+
+`; diff --git a/tsconfig.json b/tsconfig.json index b7bdcf0fb..b9e1a1145 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,5 @@ }, "types": ["vitest/globals", "@testing-library/jest-dom"] }, - "include": [".dumirc.ts", "**/*.ts", "**/*.tsx"] + "include": [".dumirc.ts", "**/*.ts", "**/*.tsx", "tests/__mocks__/shadowTest.tsx"] } diff --git a/vitest.config.ts b/vitest.config.ts index 1702045a7..9e20d8717 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -6,6 +6,7 @@ export default defineConfig({ }, test: { include: ['**/tests/*.spec.*'], + exclude: ['**/coverage/**'], globals: true, setupFiles: './tests/setup.ts', environment: 'jsdom',