Skip to content

Commit f93fbda

Browse files
committed
minor enhancements and release version patch
1 parent be23bfe commit f93fbda

5 files changed

Lines changed: 177 additions & 7 deletions

File tree

examples/src/globals.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
@import 'tailwindcss';
1+
@layer theme, base, infinite-table, components, utilities;
2+
3+
@import 'tailwindcss/theme.css' layer(theme);
4+
@import 'tailwindcss/preflight.css' layer(base);
5+
@import 'tailwindcss/utilities.css' layer(utilities);
26

37
@import 'tw-animate-css';
48

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
import * as React from 'react';
2+
3+
import {
4+
InfiniteTable,
5+
InfiniteTablePropColumns,
6+
useInfiniteColumnCell,
7+
useInfiniteHeaderCell,
8+
} from '@infinite-table/infinite-react';
9+
import { DataSource } from '@infinite-table/infinite-react';
10+
11+
type Developer = {
12+
id: number;
13+
14+
firstName: string;
15+
lastName: string;
16+
17+
currency: string;
18+
preferredLanguage: string;
19+
stack: string;
20+
canDesign: 'yes' | 'no';
21+
22+
age: number;
23+
};
24+
25+
const data: Developer[] = [
26+
{
27+
id: 1,
28+
firstName: 'John',
29+
lastName: 'Bob',
30+
age: 20,
31+
canDesign: 'yes',
32+
currency: 'USD',
33+
preferredLanguage: 'JavaScript',
34+
stack: 'frontend',
35+
},
36+
{
37+
id: 2,
38+
firstName: 'Marry',
39+
lastName: 'Bob',
40+
age: 25,
41+
canDesign: 'yes',
42+
currency: 'USD',
43+
preferredLanguage: 'JavaScript',
44+
stack: 'frontend',
45+
},
46+
{
47+
id: 3,
48+
firstName: 'Bill',
49+
lastName: 'Bobson',
50+
age: 30,
51+
canDesign: 'no',
52+
currency: 'CAD',
53+
preferredLanguage: 'TypeScript',
54+
stack: 'frontend',
55+
},
56+
{
57+
id: 4,
58+
firstName: 'Mark',
59+
lastName: 'Twain',
60+
age: 31,
61+
canDesign: 'yes',
62+
currency: 'CAD',
63+
preferredLanguage: 'Rust',
64+
stack: 'backend',
65+
},
66+
{
67+
id: 5,
68+
firstName: 'Matthew',
69+
lastName: 'Hilson',
70+
age: 29,
71+
canDesign: 'yes',
72+
currency: 'CAD',
73+
preferredLanguage: 'Go',
74+
stack: 'backend',
75+
},
76+
];
77+
78+
const HeaderCell = (props: React.HTMLProps<HTMLDivElement>) => {
79+
const { domRef } = useInfiniteHeaderCell<Developer>();
80+
return (
81+
<div
82+
ref={domRef}
83+
{...props}
84+
data-name="header-cell-firstName"
85+
style={{
86+
...props.style,
87+
backgroundColor: 'red',
88+
}}
89+
>
90+
{props.children}!
91+
</div>
92+
);
93+
};
94+
95+
const ColumnCell = (props: React.HTMLProps<HTMLDivElement>) => {
96+
const { domRef } = useInfiniteColumnCell<Developer>();
97+
return (
98+
<div ref={domRef} {...props} data-name="column-cell-firstName">
99+
{props.children}!
100+
</div>
101+
);
102+
};
103+
104+
const columns: InfiniteTablePropColumns<Developer> = {
105+
firstName: {
106+
field: 'firstName',
107+
components: {
108+
HeaderCell,
109+
ColumnCell,
110+
},
111+
},
112+
age: {
113+
field: 'age',
114+
type: 'number',
115+
},
116+
117+
stack: { field: 'stack' },
118+
currency: { field: 'currency' },
119+
};
120+
121+
export default () => {
122+
const dataSource = React.useCallback(() => {
123+
return Promise.resolve(data.slice(0, 1));
124+
}, []);
125+
return (
126+
<>
127+
<React.StrictMode>
128+
<DataSource<Developer> data={dataSource} primaryKey="id">
129+
<InfiniteTable<Developer>
130+
columns={{
131+
firstName: columns.firstName,
132+
}}
133+
domProps={{
134+
style: {
135+
minHeight: 500,
136+
},
137+
}}
138+
/>
139+
</DataSource>
140+
</React.StrictMode>
141+
</>
142+
);
143+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { test, expect } from '@testing';
2+
3+
import {
4+
getLocatorComputedStylePropertyValue,
5+
toRGBString,
6+
} from '../../../testUtils';
7+
8+
export default test.describe.parallel('Custom Header component', () => {
9+
test('is correctly applied', async ({ page, headerModel }) => {
10+
await page.waitForInfinite();
11+
12+
const locator = headerModel.getHeaderCellLocator({
13+
colId: 'firstName',
14+
});
15+
16+
const bg = await getLocatorComputedStylePropertyValue({
17+
handle: locator,
18+
page,
19+
propertyName: 'background-color',
20+
});
21+
expect(toRGBString(bg)).toEqual('rgb(255, 0, 0)');
22+
});
23+
});
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export type InfiniteTableBodyProps<_T> = {
2-
rowHoverClassName?: string | string[];
2+
rowHoverClassNames?: string | string[];
33
};

source/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,16 +127,16 @@ function InfiniteTableBody<T>(props: InfiniteTableBodyProps<T>) {
127127
return undefined;
128128
}
129129

130-
if (props.rowHoverClassName) {
131-
return Array.isArray(props.rowHoverClassName)
132-
? [...InfiniteTableBody.rowHoverClassNames, ...props.rowHoverClassName]
133-
: [...InfiniteTableBody.rowHoverClassNames, props.rowHoverClassName];
130+
if (props.rowHoverClassNames) {
131+
return Array.isArray(props.rowHoverClassNames)
132+
? [...InfiniteTableBody.rowHoverClassNames, ...props.rowHoverClassNames]
133+
: [...InfiniteTableBody.rowHoverClassNames, props.rowHoverClassNames];
134134
}
135135

136136
return InfiniteTableBody.rowHoverClassNames;
137137
}, [
138138
showHoverRows,
139-
props.rowHoverClassName,
139+
props.rowHoverClassNames,
140140
InfiniteTableBody.rowHoverClassNames,
141141
]);
142142

0 commit comments

Comments
 (0)