playbook_ui 13.20.0 → 13.21.0.pre.alpha.PBNTR224letuserresetrowexpansion2441
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/pb_kits/playbook/index.js +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/CollapsibleTrail.tsx +6 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +5 -2
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +2 -0
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +45 -0
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +4 -0
- data/app/pb_kits/playbook/pb_date/docs/_date_alignment_swift.md +26 -6
- data/app/pb_kits/playbook/pb_date/docs/_date_default_swift.md +27 -8
- data/app/pb_kits/playbook/pb_message/docs/_description.md +1 -1
- data/app/pb_kits/playbook/pb_nav/_subtle_mixin.scss +4 -0
- data/app/pb_kits/playbook/pb_table/_table.tsx +13 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_side_highlight.jsx +24 -25
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents.jsx +47 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents.md +7 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_as_divs.html.erb +34 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_as_divs.jsx +48 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_as_divs.md +3 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_rails.html.erb +34 -0
- data/app/pb_kits/playbook/pb_table/docs/_table_with_subcomponents_rails.md +7 -0
- data/app/pb_kits/playbook/pb_table/docs/example.yml +6 -2
- data/app/pb_kits/playbook/pb_table/docs/index.js +2 -0
- data/app/pb_kits/playbook/pb_table/styles/_striped.scss +2 -2
- data/app/pb_kits/playbook/pb_table/styles/_structure.scss +4 -2
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_body.tsx +64 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_cell.tsx +66 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_head.tsx +64 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_header.tsx +66 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +74 -0
- data/app/pb_kits/playbook/pb_table/subcomponents/index.tsx +5 -0
- data/app/pb_kits/playbook/pb_table/table.test.js +142 -1
- data/app/pb_kits/playbook/pb_table/table_body.html.erb +17 -0
- data/app/pb_kits/playbook/pb_table/table_body.rb +15 -0
- data/app/pb_kits/playbook/pb_table/table_cell.html.erb +17 -0
- data/app/pb_kits/playbook/pb_table/table_cell.rb +17 -0
- data/app/pb_kits/playbook/pb_table/table_head.html.erb +17 -0
- data/app/pb_kits/playbook/pb_table/table_head.rb +15 -0
- data/app/pb_kits/playbook/pb_table/table_header.html.erb +49 -39
- data/app/pb_kits/playbook/pb_table/table_header.rb +8 -1
- data/app/pb_kits/playbook/pb_table/table_row.html.erb +17 -7
- data/app/pb_kits/playbook/pb_table/table_row.rb +8 -1
- data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +9 -5
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_add_on.jsx +20 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_presence_indicator_swift.md +30 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_props_table.md +2 -1
- data/app/pb_kits/playbook/pb_user/docs/example.yml +1 -0
- data/app/pb_kits/playbook/utilities/_positioning.scss +48 -7
- data/app/pb_kits/playbook/utilities/globalProps.ts +23 -1
- data/dist/playbook-rails.js +6 -6
- data/lib/playbook/bottom.rb +33 -0
- data/lib/playbook/classnames.rb +4 -0
- data/lib/playbook/kit_base.rb +8 -0
- data/lib/playbook/left.rb +33 -0
- data/lib/playbook/right.rb +33 -0
- data/lib/playbook/top.rb +33 -0
- data/lib/playbook/version.rb +2 -2
- metadata +31 -8
- data/app/pb_kits/playbook/pb_table/_table_row.tsx +0 -47
@@ -1,6 +1,5 @@
|
|
1
1
|
examples:
|
2
2
|
rails:
|
3
|
-
# - table_div: Div
|
4
3
|
- table_sm: Small
|
5
4
|
- table_md: Medium
|
6
5
|
- table_lg: Large
|
@@ -25,9 +24,11 @@ examples:
|
|
25
24
|
- table_with_background_kit: Table With Background Kit
|
26
25
|
- table_vertical_border: Vertical Borders
|
27
26
|
- table_striped: Striped Table
|
27
|
+
- table_with_subcomponents_rails: Table with Sub Components (Table Elements)
|
28
|
+
- table_with_subcomponents_as_divs: Table with Sub Components (Divs)
|
29
|
+
|
28
30
|
|
29
31
|
react:
|
30
|
-
# - table_div: Div
|
31
32
|
- table_sm: Small
|
32
33
|
- table_md: Medium
|
33
34
|
- table_lg: Large
|
@@ -51,3 +52,6 @@ examples:
|
|
51
52
|
- table_with_background_kit: Table With Background Kit
|
52
53
|
- table_vertical_border: Vertical Borders
|
53
54
|
- table_striped: Striped Table
|
55
|
+
- table_with_subcomponents: Table with Sub Components (Table Elements)
|
56
|
+
- table_with_subcomponents_as_divs: Table with Sub Components (Divs)
|
57
|
+
|
@@ -22,3 +22,5 @@ export { default as TableWithBackgroundKit } from './_table_with_background_kit.
|
|
22
22
|
export { default as TableVerticalBorder } from './_table_vertical_border.jsx'
|
23
23
|
export { default as TableStriped } from './_table_striped.jsx'
|
24
24
|
export { default as TableDiv } from './_table_div.jsx'
|
25
|
+
export { default as TableWithSubcomponents } from './_table_with_subcomponents.jsx'
|
26
|
+
export { default as TableWithSubcomponentsAsDivs } from './_table_with_subcomponents_as_divs.jsx'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
[class^=pb_table] {
|
2
2
|
&.striped {
|
3
3
|
tbody, .pb_table_tbody {
|
4
|
-
tr:nth-child(odd), .
|
4
|
+
tr:nth-child(odd), .pb_table_tr:nth-child(odd) {
|
5
5
|
background-color: $bg_light;
|
6
6
|
}
|
7
7
|
}
|
@@ -10,7 +10,7 @@
|
|
10
10
|
&.dark {
|
11
11
|
&.striped {
|
12
12
|
tbody, .pb_table_tbody {
|
13
|
-
tr:nth-child(odd), .
|
13
|
+
tr:nth-child(odd), .pb_table_tr:nth-child(odd) {
|
14
14
|
background-color: $bg_dark;
|
15
15
|
}
|
16
16
|
}
|
@@ -48,7 +48,8 @@
|
|
48
48
|
}
|
49
49
|
}
|
50
50
|
&.data_table {
|
51
|
-
thead tr th
|
51
|
+
thead tr th,
|
52
|
+
.pb_table_thead .pb_table_tr .pb_table_th {
|
52
53
|
padding-top: $cell-pad-sm;
|
53
54
|
padding-bottom: $cell-pad-sm;
|
54
55
|
&:first-child {
|
@@ -58,7 +59,8 @@
|
|
58
59
|
padding-right: $cell-pad-sm;
|
59
60
|
}
|
60
61
|
}
|
61
|
-
tbody tr td
|
62
|
+
tbody tr td,
|
63
|
+
.pb_table_tbody .pb_table_tr .pb_table_td {
|
62
64
|
padding-top: $cell-pad-sm;
|
63
65
|
padding-bottom: $cell-pad-sm;
|
64
66
|
&:first-child {
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import classnames from "classnames";
|
3
|
+
import {
|
4
|
+
buildAriaProps,
|
5
|
+
buildDataProps,
|
6
|
+
buildHtmlProps,
|
7
|
+
} from "../../utilities/props";
|
8
|
+
import { globalProps } from "../../utilities/globalProps";
|
9
|
+
|
10
|
+
type TableBodyPropTypes = {
|
11
|
+
aria?: { [key: string]: string };
|
12
|
+
children: React.ReactNode[] | React.ReactNode;
|
13
|
+
className: string;
|
14
|
+
data?: { [key: string]: string };
|
15
|
+
htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
|
16
|
+
id?: string;
|
17
|
+
tag?: "table" | "div";
|
18
|
+
};
|
19
|
+
|
20
|
+
const TableBody = (props: TableBodyPropTypes) => {
|
21
|
+
const {
|
22
|
+
aria = {},
|
23
|
+
children,
|
24
|
+
className,
|
25
|
+
data = {},
|
26
|
+
htmlOptions = {},
|
27
|
+
id,
|
28
|
+
tag = "table",
|
29
|
+
} = props;
|
30
|
+
|
31
|
+
const ariaProps = buildAriaProps(aria);
|
32
|
+
const dataProps = buildDataProps(data);
|
33
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
34
|
+
const classes = classnames("pb_table_tbody", globalProps(props), className);
|
35
|
+
const isTableTag = tag === "table";
|
36
|
+
|
37
|
+
return (
|
38
|
+
<>
|
39
|
+
{isTableTag ? (
|
40
|
+
<tbody
|
41
|
+
{...ariaProps}
|
42
|
+
{...dataProps}
|
43
|
+
{...htmlProps}
|
44
|
+
className={classes}
|
45
|
+
id={id}
|
46
|
+
>
|
47
|
+
{children}
|
48
|
+
</tbody>
|
49
|
+
) : (
|
50
|
+
<div
|
51
|
+
{...ariaProps}
|
52
|
+
{...dataProps}
|
53
|
+
{...htmlProps}
|
54
|
+
className={classes}
|
55
|
+
id={id}
|
56
|
+
>
|
57
|
+
{children}
|
58
|
+
</div>
|
59
|
+
)}
|
60
|
+
</>
|
61
|
+
);
|
62
|
+
};
|
63
|
+
|
64
|
+
export default TableBody;
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import classnames from "classnames";
|
3
|
+
import {
|
4
|
+
buildAriaProps,
|
5
|
+
buildDataProps,
|
6
|
+
buildHtmlProps,
|
7
|
+
} from "../../utilities/props";
|
8
|
+
import { globalProps } from "../../utilities/globalProps";
|
9
|
+
|
10
|
+
type TableCellPropTypes = {
|
11
|
+
aria?: { [key: string]: string };
|
12
|
+
children: React.ReactNode[] | React.ReactNode;
|
13
|
+
className: string;
|
14
|
+
data?: { [key: string]: string };
|
15
|
+
htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
|
16
|
+
id?: string;
|
17
|
+
tag?: "table" | "div";
|
18
|
+
text?: string
|
19
|
+
};
|
20
|
+
|
21
|
+
const TableCell = (props: TableCellPropTypes) => {
|
22
|
+
const {
|
23
|
+
aria = {},
|
24
|
+
children,
|
25
|
+
className,
|
26
|
+
data = {},
|
27
|
+
htmlOptions = {},
|
28
|
+
id,
|
29
|
+
tag = "table",
|
30
|
+
text,
|
31
|
+
} = props;
|
32
|
+
|
33
|
+
const ariaProps = buildAriaProps(aria);
|
34
|
+
const dataProps = buildDataProps(data);
|
35
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
36
|
+
const classes = classnames("pb_table_td", globalProps(props), className);
|
37
|
+
const isTableTag = tag === "table";
|
38
|
+
|
39
|
+
return (
|
40
|
+
<>
|
41
|
+
{isTableTag ? (
|
42
|
+
<td
|
43
|
+
{...ariaProps}
|
44
|
+
{...dataProps}
|
45
|
+
{...htmlProps}
|
46
|
+
className={classes}
|
47
|
+
id={id}
|
48
|
+
>
|
49
|
+
{text || children}
|
50
|
+
</td>
|
51
|
+
) : (
|
52
|
+
<div
|
53
|
+
{...ariaProps}
|
54
|
+
{...dataProps}
|
55
|
+
{...htmlProps}
|
56
|
+
className={classes}
|
57
|
+
id={id}
|
58
|
+
>
|
59
|
+
{text || children}
|
60
|
+
</div>
|
61
|
+
)}
|
62
|
+
</>
|
63
|
+
);
|
64
|
+
};
|
65
|
+
|
66
|
+
export default TableCell;
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import classnames from "classnames";
|
3
|
+
import {
|
4
|
+
buildAriaProps,
|
5
|
+
buildDataProps,
|
6
|
+
buildHtmlProps,
|
7
|
+
} from "../../utilities/props";
|
8
|
+
import { globalProps } from "../../utilities/globalProps";
|
9
|
+
|
10
|
+
type TableHeadPropTypes = {
|
11
|
+
aria?: { [key: string]: string };
|
12
|
+
children: React.ReactNode[] | React.ReactNode;
|
13
|
+
className: string;
|
14
|
+
data?: { [key: string]: string };
|
15
|
+
htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
|
16
|
+
id?: string;
|
17
|
+
tag?: "table" | "div";
|
18
|
+
};
|
19
|
+
|
20
|
+
const TableHead = (props: TableHeadPropTypes) => {
|
21
|
+
const {
|
22
|
+
aria = {},
|
23
|
+
children,
|
24
|
+
className,
|
25
|
+
data = {},
|
26
|
+
htmlOptions = {},
|
27
|
+
id,
|
28
|
+
tag = "table",
|
29
|
+
} = props;
|
30
|
+
|
31
|
+
const ariaProps = buildAriaProps(aria);
|
32
|
+
const dataProps = buildDataProps(data);
|
33
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
34
|
+
const classes = classnames("pb_table_thead", globalProps(props), className);
|
35
|
+
const isTableTag = tag === "table";
|
36
|
+
|
37
|
+
return (
|
38
|
+
<>
|
39
|
+
{isTableTag ? (
|
40
|
+
<thead
|
41
|
+
{...ariaProps}
|
42
|
+
{...dataProps}
|
43
|
+
{...htmlProps}
|
44
|
+
className={classes}
|
45
|
+
id={id}
|
46
|
+
>
|
47
|
+
{children}
|
48
|
+
</thead>
|
49
|
+
) : (
|
50
|
+
<div
|
51
|
+
{...ariaProps}
|
52
|
+
{...dataProps}
|
53
|
+
{...htmlProps}
|
54
|
+
className={classes}
|
55
|
+
id={id}
|
56
|
+
>
|
57
|
+
{children}
|
58
|
+
</div>
|
59
|
+
)}
|
60
|
+
</>
|
61
|
+
);
|
62
|
+
};
|
63
|
+
|
64
|
+
export default TableHead;
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import classnames from "classnames";
|
3
|
+
import {
|
4
|
+
buildAriaProps,
|
5
|
+
buildDataProps,
|
6
|
+
buildHtmlProps,
|
7
|
+
} from "../../utilities/props";
|
8
|
+
import { globalProps } from "../../utilities/globalProps";
|
9
|
+
|
10
|
+
type TableHeaderPropTypes = {
|
11
|
+
aria?: { [key: string]: string };
|
12
|
+
children: React.ReactNode[] | React.ReactNode;
|
13
|
+
className: string;
|
14
|
+
data?: { [key: string]: string };
|
15
|
+
htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
|
16
|
+
id?: string;
|
17
|
+
tag?: "table" | "div";
|
18
|
+
text?: string;
|
19
|
+
};
|
20
|
+
|
21
|
+
const TableHeader = (props: TableHeaderPropTypes) => {
|
22
|
+
const {
|
23
|
+
aria = {},
|
24
|
+
children,
|
25
|
+
className,
|
26
|
+
data = {},
|
27
|
+
htmlOptions = {},
|
28
|
+
id,
|
29
|
+
tag = "table",
|
30
|
+
text
|
31
|
+
} = props;
|
32
|
+
|
33
|
+
const ariaProps = buildAriaProps(aria);
|
34
|
+
const dataProps = buildDataProps(data);
|
35
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
36
|
+
const classes = classnames("pb_table_th", globalProps(props), className);
|
37
|
+
const isTableTag = tag === "table";
|
38
|
+
|
39
|
+
return (
|
40
|
+
<>
|
41
|
+
{isTableTag ? (
|
42
|
+
<th
|
43
|
+
{...ariaProps}
|
44
|
+
{...dataProps}
|
45
|
+
{...htmlProps}
|
46
|
+
className={classes}
|
47
|
+
id={id}
|
48
|
+
>
|
49
|
+
{text || children}
|
50
|
+
</th>
|
51
|
+
) : (
|
52
|
+
<div
|
53
|
+
{...ariaProps}
|
54
|
+
{...dataProps}
|
55
|
+
{...htmlProps}
|
56
|
+
className={classes}
|
57
|
+
id={id}
|
58
|
+
>
|
59
|
+
{text || children}
|
60
|
+
</div>
|
61
|
+
)}
|
62
|
+
</>
|
63
|
+
);
|
64
|
+
};
|
65
|
+
|
66
|
+
export default TableHeader;
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import classnames from "classnames";
|
3
|
+
import {
|
4
|
+
buildAriaProps,
|
5
|
+
buildCss,
|
6
|
+
buildDataProps,
|
7
|
+
buildHtmlProps,
|
8
|
+
} from "../../utilities/props";
|
9
|
+
import { globalProps } from "../../utilities/globalProps";
|
10
|
+
|
11
|
+
type TableRowPropTypes = {
|
12
|
+
aria?: { [key: string]: string };
|
13
|
+
children: React.ReactNode[] | React.ReactNode;
|
14
|
+
className: string;
|
15
|
+
data?: { [key: string]: string };
|
16
|
+
htmlOptions?: { [key: string]: string | number | boolean | (() => void) };
|
17
|
+
id?: string;
|
18
|
+
sideHighlightColor: string;
|
19
|
+
tag?: "table" | "div";
|
20
|
+
};
|
21
|
+
|
22
|
+
const TableRow = (props: TableRowPropTypes) => {
|
23
|
+
const {
|
24
|
+
aria = {},
|
25
|
+
children,
|
26
|
+
className,
|
27
|
+
data = {},
|
28
|
+
htmlOptions = {},
|
29
|
+
id,
|
30
|
+
sideHighlightColor = "none",
|
31
|
+
tag = "table",
|
32
|
+
} = props;
|
33
|
+
|
34
|
+
const ariaProps = buildAriaProps(aria);
|
35
|
+
const dataProps = buildDataProps(data);
|
36
|
+
const htmlProps = buildHtmlProps(htmlOptions);
|
37
|
+
const sideHighlightClass =
|
38
|
+
sideHighlightColor != "" ? `side_highlight_${sideHighlightColor}` : null;
|
39
|
+
const classes = classnames(
|
40
|
+
buildCss("pb_table_row_kit", sideHighlightClass),
|
41
|
+
"pb_table_tr",
|
42
|
+
globalProps(props),
|
43
|
+
className
|
44
|
+
);
|
45
|
+
const isTableTag = tag === "table";
|
46
|
+
|
47
|
+
return (
|
48
|
+
<>
|
49
|
+
{isTableTag ? (
|
50
|
+
<tr
|
51
|
+
{...ariaProps}
|
52
|
+
{...dataProps}
|
53
|
+
{...htmlProps}
|
54
|
+
className={classes}
|
55
|
+
id={id}
|
56
|
+
>
|
57
|
+
{children}
|
58
|
+
</tr>
|
59
|
+
) : (
|
60
|
+
<div
|
61
|
+
{...ariaProps}
|
62
|
+
{...dataProps}
|
63
|
+
{...htmlProps}
|
64
|
+
className={classes}
|
65
|
+
id={id}
|
66
|
+
>
|
67
|
+
{children}
|
68
|
+
</div>
|
69
|
+
)}
|
70
|
+
</>
|
71
|
+
);
|
72
|
+
};
|
73
|
+
|
74
|
+
export default TableRow;
|
@@ -0,0 +1,5 @@
|
|
1
|
+
export { default as TableHead } from './_table_head';
|
2
|
+
export { default as TableHeader } from './_table_header';
|
3
|
+
export { default as TableBody } from './_table_body';
|
4
|
+
export { default as TableRow } from './_table_row';
|
5
|
+
export { default as TableCell } from './_table_cell';
|
@@ -1,7 +1,58 @@
|
|
1
|
-
import
|
1
|
+
import React from "react";
|
2
|
+
import { ensureAccessible, renderKit, render, screen } from "../utilities/test-utils"
|
2
3
|
|
3
4
|
import Table from "./_table"
|
4
5
|
|
6
|
+
const DivsTable = () => {
|
7
|
+
return (
|
8
|
+
<>
|
9
|
+
<Table
|
10
|
+
data={{testid: "table"}}
|
11
|
+
size="sm"
|
12
|
+
tag="div"
|
13
|
+
>
|
14
|
+
<Table.Head tag="div">
|
15
|
+
<Table.Row tag="div">
|
16
|
+
<Table.Header tag="div">{"Column 1"}</Table.Header>
|
17
|
+
<Table.Header tag="div">{"Column 2"}</Table.Header>
|
18
|
+
</Table.Row>
|
19
|
+
</Table.Head>
|
20
|
+
<Table.Body tag="div">
|
21
|
+
<Table.Row tag="div">
|
22
|
+
<Table.Cell tag="div">{"Value 1"}</Table.Cell>
|
23
|
+
<Table.Cell tag="div">{"Value 2"}</Table.Cell>
|
24
|
+
</Table.Row>
|
25
|
+
</Table.Body>
|
26
|
+
</Table>
|
27
|
+
</>
|
28
|
+
);
|
29
|
+
};
|
30
|
+
|
31
|
+
const TableTagTable = () => {
|
32
|
+
return (
|
33
|
+
<>
|
34
|
+
<Table
|
35
|
+
data={{testid: "table"}}
|
36
|
+
size="sm"
|
37
|
+
>
|
38
|
+
<Table.Head>
|
39
|
+
<Table.Row>
|
40
|
+
<Table.Header>{"Column 1"}</Table.Header>
|
41
|
+
<Table.Header>{"Column 2"}</Table.Header>
|
42
|
+
</Table.Row>
|
43
|
+
</Table.Head>
|
44
|
+
<Table.Body>
|
45
|
+
<Table.Row>
|
46
|
+
<Table.Cell>{"Value 1"}</Table.Cell>
|
47
|
+
<Table.Cell>{"Value 2"}</Table.Cell>
|
48
|
+
</Table.Row>
|
49
|
+
</Table.Body>
|
50
|
+
</Table>
|
51
|
+
</>
|
52
|
+
);
|
53
|
+
};
|
54
|
+
|
55
|
+
|
5
56
|
const props = {
|
6
57
|
data: { testid: "table" },
|
7
58
|
sticky: false
|
@@ -20,3 +71,93 @@ test("when striped is true", () => {
|
|
20
71
|
const kit = renderKit(Table, props, { striped: true })
|
21
72
|
expect(kit).toHaveClass("pb_table table-sm table-responsive-collapse table-card striped table-collapse-sm")
|
22
73
|
})
|
74
|
+
|
75
|
+
test("Renders Table.Head subkit for Div Table", () => {
|
76
|
+
render (<DivsTable/>)
|
77
|
+
|
78
|
+
const kit = screen.getByTestId("table")
|
79
|
+
const head = kit.querySelector(".pb_table_thead")
|
80
|
+
expect(head).toBeInTheDocument()
|
81
|
+
expect(head.tagName).toBe("DIV")
|
82
|
+
})
|
83
|
+
|
84
|
+
test("Renders Table.Header subkit for Div Table", () => {
|
85
|
+
render (<DivsTable/>)
|
86
|
+
|
87
|
+
const kit = screen.getByTestId("table")
|
88
|
+
const head = kit.querySelector(".pb_table_th")
|
89
|
+
expect(head).toBeInTheDocument()
|
90
|
+
expect(head.tagName).toBe("DIV")
|
91
|
+
})
|
92
|
+
|
93
|
+
test("Renders Table.Body subkit for Div Table", () => {
|
94
|
+
render (<DivsTable/>)
|
95
|
+
|
96
|
+
const kit = screen.getByTestId("table")
|
97
|
+
const head = kit.querySelector(".pb_table_tbody")
|
98
|
+
expect(head).toBeInTheDocument()
|
99
|
+
expect(head.tagName).toBe("DIV")
|
100
|
+
})
|
101
|
+
|
102
|
+
test("Renders Table.Row subkit for Div Table", () => {
|
103
|
+
render (<DivsTable/>)
|
104
|
+
|
105
|
+
const kit = screen.getByTestId("table")
|
106
|
+
const head = kit.querySelector(".pb_table_tr")
|
107
|
+
expect(head).toBeInTheDocument()
|
108
|
+
expect(head.tagName).toBe("DIV")
|
109
|
+
})
|
110
|
+
|
111
|
+
test("Renders Table.Cell subkit for Div Table", () => {
|
112
|
+
render (<DivsTable/>)
|
113
|
+
|
114
|
+
const kit = screen.getByTestId("table")
|
115
|
+
const head = kit.querySelector(".pb_table_td")
|
116
|
+
expect(head).toBeInTheDocument()
|
117
|
+
expect(head.tagName).toBe("DIV")
|
118
|
+
})
|
119
|
+
|
120
|
+
test("Renders Table.Head subkit for HTML Table elements Table", () => {
|
121
|
+
render (<TableTagTable/>)
|
122
|
+
|
123
|
+
const kit = screen.getByTestId("table")
|
124
|
+
const head = kit.querySelector(".pb_table_thead")
|
125
|
+
expect(head).toBeInTheDocument()
|
126
|
+
expect(head.tagName).toBe("THEAD")
|
127
|
+
})
|
128
|
+
|
129
|
+
test("Renders Table.Header subkit for HTML Table elements Table", () => {
|
130
|
+
render (<TableTagTable/>)
|
131
|
+
|
132
|
+
const kit = screen.getByTestId("table")
|
133
|
+
const head = kit.querySelector(".pb_table_th")
|
134
|
+
expect(head).toBeInTheDocument()
|
135
|
+
expect(head.tagName).toBe("TH")
|
136
|
+
})
|
137
|
+
|
138
|
+
test("Renders Table.Body subkit for HTML Table elements Table", () => {
|
139
|
+
render (<TableTagTable/>)
|
140
|
+
|
141
|
+
const kit = screen.getByTestId("table")
|
142
|
+
const head = kit.querySelector(".pb_table_tbody")
|
143
|
+
expect(head).toBeInTheDocument()
|
144
|
+
expect(head.tagName).toBe("TBODY")
|
145
|
+
})
|
146
|
+
|
147
|
+
test("Renders Table.Row subkit for HTML Table elements Table", () => {
|
148
|
+
render (<TableTagTable/>)
|
149
|
+
|
150
|
+
const kit = screen.getByTestId("table")
|
151
|
+
const head = kit.querySelector(".pb_table_tr")
|
152
|
+
expect(head).toBeInTheDocument()
|
153
|
+
expect(head.tagName).toBe("TR")
|
154
|
+
})
|
155
|
+
|
156
|
+
test("Renders Table.Cell subkit for HTML Table elements Table", () => {
|
157
|
+
render (<TableTagTable/>)
|
158
|
+
|
159
|
+
const kit = screen.getByTestId("table")
|
160
|
+
const head = kit.querySelector(".pb_table_td")
|
161
|
+
expect(head).toBeInTheDocument()
|
162
|
+
expect(head.tagName).toBe("TD")
|
163
|
+
})
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<% if object.tag == "table" %>
|
2
|
+
<%= content_tag(:tbody,
|
3
|
+
aria: object.aria,
|
4
|
+
class: object.classname,
|
5
|
+
data: object.data,
|
6
|
+
id: object.id) do %>
|
7
|
+
<%= content.presence %>
|
8
|
+
<% end %>
|
9
|
+
<% else %>
|
10
|
+
<%= content_tag(:div,
|
11
|
+
aria: object.aria,
|
12
|
+
class: object.classname,
|
13
|
+
data: object.data,
|
14
|
+
id: object.id) do %>
|
15
|
+
<%= content.presence %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbTable
|
5
|
+
class TableBody < Playbook::KitBase
|
6
|
+
prop :tag, type: Playbook::Props::Enum,
|
7
|
+
values: %w[table div],
|
8
|
+
default: "table"
|
9
|
+
|
10
|
+
def classname
|
11
|
+
generate_classname("pb_table_tbody")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<% if object.tag == "table" %>
|
2
|
+
<%= content_tag(:td,
|
3
|
+
aria: object.aria,
|
4
|
+
class: object.classname,
|
5
|
+
data: object.data,
|
6
|
+
id: object.id) do %>
|
7
|
+
<%= content.presence || object.text %>
|
8
|
+
<% end %>
|
9
|
+
<% else %>
|
10
|
+
<%= content_tag(:div,
|
11
|
+
aria: object.aria,
|
12
|
+
class: object.classname,
|
13
|
+
data: object.data,
|
14
|
+
id: object.id) do %>
|
15
|
+
<%= content.presence || object.text %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbTable
|
5
|
+
class TableCell < Playbook::KitBase
|
6
|
+
prop :tag, type: Playbook::Props::Enum,
|
7
|
+
values: %w[table div],
|
8
|
+
default: "table"
|
9
|
+
prop :text, type: Playbook::Props::String,
|
10
|
+
default: ""
|
11
|
+
|
12
|
+
def classname
|
13
|
+
generate_classname("pb_table_td")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<% if object.tag == "table" %>
|
2
|
+
<%= content_tag(:thead,
|
3
|
+
aria: object.aria,
|
4
|
+
class: object.classname,
|
5
|
+
data: object.data,
|
6
|
+
id: object.id) do %>
|
7
|
+
<%= content.presence %>
|
8
|
+
<% end %>
|
9
|
+
<% else %>
|
10
|
+
<%= content_tag(:div,
|
11
|
+
aria: object.aria,
|
12
|
+
class: object.classname,
|
13
|
+
data: object.data,
|
14
|
+
id: object.id) do %>
|
15
|
+
<%= content.presence %>
|
16
|
+
<% end %>
|
17
|
+
<% end %>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Playbook
|
4
|
+
module PbTable
|
5
|
+
class TableHead < Playbook::KitBase
|
6
|
+
prop :tag, type: Playbook::Props::Enum,
|
7
|
+
values: %w[table div],
|
8
|
+
default: "table"
|
9
|
+
|
10
|
+
def classname
|
11
|
+
generate_classname("pb_table_thead")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|