playbook_ui 14.24.0.pre.alpha.PLAY19989342 → 14.24.0.pre.alpha.play23479502
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/pb_advanced_table/Components/RegularTableView.tsx +4 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +1 -2
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +34 -0
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +56 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.html.erb +43 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +64 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.jsx +60 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.md +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row.jsx +57 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +4 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +4 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +1 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +2 -2
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.html.erb +22 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.jsx +43 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.md +1 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +2 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +1 -1
- data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +6 -0
- data/app/pb_kits/playbook/pb_pagination/_pagination.test.jsx +212 -0
- data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +8 -1
- data/app/pb_kits/playbook/pb_pagination/docs/_pagination_external_control.jsx +112 -0
- data/app/pb_kits/playbook/pb_pagination/docs/_pagination_external_control_react.md +3 -0
- data/app/pb_kits/playbook/pb_pagination/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_pagination/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +49 -1
- data/dist/chunks/{_weekday_stacked-CJIFKKe7.js → _weekday_stacked-irgZUVGj.js} +2 -2
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +2 -2
- data/dist/playbook-doc.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +1 -1
- metadata +15 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4ccc02520ca6f12c398e5c4417dcfeb08b24b1b68bed3ca430137584fd25bf8
|
4
|
+
data.tar.gz: d916bb54b939ce9cbec50449fe9bf90791ae6ac0e330337f54c8fc8f5375c5cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3c9a37eb5044d3a60ac5d4843fec307a2c183ac800d9fdb940a93503a00cd1dd21f5c28df556096909eae5e7f6369df0f78ea108a0ca37761a595390ead7c0e
|
7
|
+
data.tar.gz: '0845b9c473a82d7322b6ee1d1d9a17e1a4221453ef23a105d66b01d6de4682fdfd6abe77ba38877ae66cdfa3dae70a2b4bfa9602d1808ba11df4aece44607714'
|
@@ -58,7 +58,9 @@ const TableCellRenderer = ({
|
|
58
58
|
// Find the “owning” colDefinition by accessor. Needed for multi column logic
|
59
59
|
const colDef = findColumnDefByAccessor(columnDefinitions ?? [], column.id)
|
60
60
|
const cellAlignment = colDef?.columnStyling?.cellAlignment ?? "right"
|
61
|
-
|
61
|
+
const paddingValue = colDef?.columnStyling?.cellPadding ?? customRowStyle?.cellPadding
|
62
|
+
const paddingClass = paddingValue ? `p_${paddingValue}` : undefined
|
63
|
+
|
62
64
|
return (
|
63
65
|
<td
|
64
66
|
align={cellAlignment}
|
@@ -68,6 +70,7 @@ const TableCellRenderer = ({
|
|
68
70
|
isPinnedLeft && 'pinned-left',
|
69
71
|
stickyLeftColumn && stickyLeftColumn.length > 0 && isPinnedLeft && 'sticky-left',
|
70
72
|
isLastCell && 'last-cell',
|
73
|
+
paddingClass
|
71
74
|
)}
|
72
75
|
key={`${cell.id}-data`}
|
73
76
|
style={{
|
@@ -113,7 +113,6 @@ export const TableHeaderCell = ({
|
|
113
113
|
return visibleSiblings.at(-1) === header.column;
|
114
114
|
})();
|
115
115
|
|
116
|
-
|
117
116
|
const cellClassName = classnames(
|
118
117
|
"table-header-cells",
|
119
118
|
`${showActionsBar && isActionBarVisible && "header-cells-with-actions"}`,
|
@@ -122,7 +121,7 @@ const cellClassName = classnames(
|
|
122
121
|
{ "pinned-left": responsive === "scroll" && isPinnedLeft },
|
123
122
|
isLastHeaderCell ? "last-header-cell" : "",
|
124
123
|
stickyLeftColumn && stickyLeftColumn.length > 0 && isPinnedLeft ? 'sticky-left' : "",
|
125
|
-
|
124
|
+
colDef?.columnStyling?.headerPadding && `p_${colDef?.columnStyling?.headerPadding}`
|
126
125
|
);
|
127
126
|
|
128
127
|
const cellId = `${loading ?
|
@@ -971,6 +971,40 @@
|
|
971
971
|
}
|
972
972
|
}
|
973
973
|
}
|
974
|
+
|
975
|
+
// Firefox-specific fix for last-header-cell and last-cell vertical borders
|
976
|
+
@-moz-document url-prefix() {
|
977
|
+
.pb_advanced_table_header {
|
978
|
+
.last-header-cell {
|
979
|
+
border-right: none !important;
|
980
|
+
box-shadow: 1px 0 0 0 $border_light !important;
|
981
|
+
}
|
982
|
+
}
|
983
|
+
|
984
|
+
.pb_advanced_table_body {
|
985
|
+
.last-cell {
|
986
|
+
border-right: none !important;
|
987
|
+
box-shadow: 1px 0 0 0 $border_light !important;
|
988
|
+
}
|
989
|
+
}
|
990
|
+
|
991
|
+
// Dark mode Firefox fixes
|
992
|
+
&.dark {
|
993
|
+
.pb_advanced_table_header {
|
994
|
+
.last-header-cell {
|
995
|
+
border-right: none !important;
|
996
|
+
box-shadow: 1px 0 0 0 $border_dark !important;
|
997
|
+
}
|
998
|
+
}
|
999
|
+
|
1000
|
+
.pb_advanced_table_body {
|
1001
|
+
.last-cell {
|
1002
|
+
border-right: none !important;
|
1003
|
+
box-shadow: 1px 0 0 0 $border_dark !important;
|
1004
|
+
}
|
1005
|
+
}
|
1006
|
+
}
|
1007
|
+
}
|
974
1008
|
}
|
975
1009
|
|
976
1010
|
// Outside of the pb_advanced_table class for popover
|
@@ -651,6 +651,36 @@ test("columnStyling.cellAlignment sets each <td> align attribute as expected", (
|
|
651
651
|
expect(firstEnrollmentCell).toHaveAttribute("align", "left");
|
652
652
|
});
|
653
653
|
|
654
|
+
test("columnStyling.cellPadding sets cell padding", () => {
|
655
|
+
const styledColumnDefs = [
|
656
|
+
{
|
657
|
+
accessor: "year",
|
658
|
+
label: "Year",
|
659
|
+
cellAccessors: ["quarter", "month", "day"],
|
660
|
+
},
|
661
|
+
{
|
662
|
+
accessor: "newEnrollments",
|
663
|
+
label: "New Enrollments",
|
664
|
+
columnStyling: { cellPadding: "none" },
|
665
|
+
},
|
666
|
+
{
|
667
|
+
accessor: "scheduledMeetings",
|
668
|
+
label: "Scheduled Meetings",
|
669
|
+
},
|
670
|
+
];
|
671
|
+
|
672
|
+
render(
|
673
|
+
<AdvancedTable
|
674
|
+
columnDefinitions={styledColumnDefs}
|
675
|
+
data={{ testid: testId }}
|
676
|
+
tableData={MOCK_DATA}
|
677
|
+
/>
|
678
|
+
);
|
679
|
+
|
680
|
+
const firstEnrollmentCell = screen.getAllByText("20")[0].closest("td");
|
681
|
+
expect(firstEnrollmentCell).toHaveClass('p_none')
|
682
|
+
});
|
683
|
+
|
654
684
|
test("renders virtualized table rows and header", () => {
|
655
685
|
render(
|
656
686
|
<AdvancedTable
|
@@ -694,6 +724,32 @@ test("rowStyling prop works as expected", () => {
|
|
694
724
|
expect(row1).toHaveStyle({backgroundColor: colors.white, color: colors.black})
|
695
725
|
})
|
696
726
|
|
727
|
+
test("rowStyling prop to allow padding control", () => {
|
728
|
+
const rowStyling = [
|
729
|
+
{
|
730
|
+
rowId: "1",
|
731
|
+
cellPadding: "lg"
|
732
|
+
},
|
733
|
+
];
|
734
|
+
|
735
|
+
render(
|
736
|
+
<AdvancedTable
|
737
|
+
columnDefinitions={columnDefinitions}
|
738
|
+
data={{ testid: testId }}
|
739
|
+
rowStyling={rowStyling}
|
740
|
+
tableData={MOCK_DATA_WITH_ID}
|
741
|
+
/>
|
742
|
+
)
|
743
|
+
|
744
|
+
const kit = screen.getByTestId(testId)
|
745
|
+
const tableBody = kit.querySelector('tbody')
|
746
|
+
const row1 = tableBody.querySelector('tr:nth-child(1)')
|
747
|
+
const cells = row1.querySelectorAll("td");
|
748
|
+
cells.forEach((cell) => {
|
749
|
+
expect(cell.classList.contains("p_lg")).toBe(true);
|
750
|
+
});
|
751
|
+
})
|
752
|
+
|
697
753
|
test("Sort icon renders with enableSort on individual columns", () => {
|
698
754
|
render(
|
699
755
|
<AdvancedTable
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<% column_definitions = [
|
2
|
+
{
|
3
|
+
accessor: "year",
|
4
|
+
label: "Year",
|
5
|
+
cellAccessors: ["quarter", "month", "day"],
|
6
|
+
},
|
7
|
+
{
|
8
|
+
label: "Enrollment Data",
|
9
|
+
columns: [
|
10
|
+
{
|
11
|
+
accessor: "newEnrollments",
|
12
|
+
label: "New Enrollments",
|
13
|
+
},
|
14
|
+
{
|
15
|
+
accessor: "scheduledMeetings",
|
16
|
+
label: "Scheduled Meetings",
|
17
|
+
},
|
18
|
+
],
|
19
|
+
},
|
20
|
+
{
|
21
|
+
label: "Performance Data",
|
22
|
+
columns: [
|
23
|
+
{
|
24
|
+
accessor: "attendanceRate",
|
25
|
+
label: "Attendance Rate",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
accessor: "completedClasses",
|
29
|
+
label: "Completed Classes",
|
30
|
+
},
|
31
|
+
{
|
32
|
+
accessor: "classCompletionRate",
|
33
|
+
label: "Class Completion Rate",
|
34
|
+
},
|
35
|
+
{
|
36
|
+
accessor: "graduatedStudents",
|
37
|
+
label: "Graduated Students",
|
38
|
+
},
|
39
|
+
],
|
40
|
+
},
|
41
|
+
] %>
|
42
|
+
|
43
|
+
<%= pb_rails("advanced_table", props: { id: "table_multi_headers_vertical_borders", table_data: @table_data, column_definitions: column_definitions, table_props: { vertical_border: true } }) %>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import AdvancedTable from '../../pb_advanced_table/_advanced_table'
|
3
|
+
import MOCK_DATA from "./advanced_table_mock_data.json"
|
4
|
+
|
5
|
+
const AdvancedTableColumnHeadersVerticalBorder = (props) => {
|
6
|
+
const columnDefinitions = [
|
7
|
+
{
|
8
|
+
accessor: "year",
|
9
|
+
label: "Year",
|
10
|
+
cellAccessors: ["quarter", "month", "day"],
|
11
|
+
},
|
12
|
+
{
|
13
|
+
label: "Enrollment Data",
|
14
|
+
columns: [
|
15
|
+
{
|
16
|
+
accessor: "newEnrollments",
|
17
|
+
label: "New Enrollments",
|
18
|
+
},
|
19
|
+
{
|
20
|
+
accessor: "scheduledMeetings",
|
21
|
+
label: "Scheduled Meetings",
|
22
|
+
},
|
23
|
+
],
|
24
|
+
},
|
25
|
+
{
|
26
|
+
label: "Performance Data",
|
27
|
+
columns: [
|
28
|
+
{
|
29
|
+
accessor: "attendanceRate",
|
30
|
+
label: "Attendance Rate",
|
31
|
+
},
|
32
|
+
{
|
33
|
+
accessor: "completedClasses",
|
34
|
+
label: "Completed Classes",
|
35
|
+
},
|
36
|
+
{
|
37
|
+
accessor: "classCompletionRate",
|
38
|
+
label: "Class Completion Rate",
|
39
|
+
},
|
40
|
+
{
|
41
|
+
accessor: "graduatedStudents",
|
42
|
+
label: "Graduated Students",
|
43
|
+
},
|
44
|
+
],
|
45
|
+
},
|
46
|
+
];
|
47
|
+
|
48
|
+
const tableProps = {
|
49
|
+
verticalBorder: true
|
50
|
+
}
|
51
|
+
|
52
|
+
return (
|
53
|
+
<>
|
54
|
+
<AdvancedTable
|
55
|
+
columnDefinitions={columnDefinitions}
|
56
|
+
tableData={MOCK_DATA}
|
57
|
+
tableProps={tableProps}
|
58
|
+
{...props}
|
59
|
+
/>
|
60
|
+
</>
|
61
|
+
)
|
62
|
+
}
|
63
|
+
|
64
|
+
export default AdvancedTableColumnHeadersVerticalBorder
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import AdvancedTable from '../_advanced_table'
|
3
|
+
import Background from '../../pb_background/_background'
|
4
|
+
import MOCK_DATA from "./advanced_table_mock_data_with_id.json"
|
5
|
+
|
6
|
+
const AdvancedTablePaddingControl = (props) => {
|
7
|
+
const columnDefinitions = [
|
8
|
+
{
|
9
|
+
accessor: "year",
|
10
|
+
label: "Year",
|
11
|
+
cellAccessors: ["quarter", "month", "day"],
|
12
|
+
},
|
13
|
+
{
|
14
|
+
accessor: "newEnrollments",
|
15
|
+
label: "New Enrollments",
|
16
|
+
columnStyling:{cellPadding: "none"},
|
17
|
+
customRenderer: (row, value) => (
|
18
|
+
<Background
|
19
|
+
backgroundColor={row.original.newEnrollments > 20 ? "success_secondary" : "warning_secondary"}
|
20
|
+
padding="xs"
|
21
|
+
>
|
22
|
+
{value}
|
23
|
+
</Background>
|
24
|
+
),
|
25
|
+
|
26
|
+
},
|
27
|
+
{
|
28
|
+
accessor: "scheduledMeetings",
|
29
|
+
label: "Scheduled Meetings",
|
30
|
+
},
|
31
|
+
{
|
32
|
+
accessor: "attendanceRate",
|
33
|
+
label: "Attendance Rate",
|
34
|
+
},
|
35
|
+
{
|
36
|
+
accessor: "completedClasses",
|
37
|
+
label: "Completed Classes",
|
38
|
+
},
|
39
|
+
{
|
40
|
+
accessor: "classCompletionRate",
|
41
|
+
label: "Class Completion Rate",
|
42
|
+
},
|
43
|
+
{
|
44
|
+
accessor: "graduatedStudents",
|
45
|
+
label: "Graduated Students",
|
46
|
+
},
|
47
|
+
]
|
48
|
+
|
49
|
+
return (
|
50
|
+
<div>
|
51
|
+
<AdvancedTable
|
52
|
+
columnDefinitions={columnDefinitions}
|
53
|
+
tableData={MOCK_DATA}
|
54
|
+
{...props}
|
55
|
+
/>
|
56
|
+
</div>
|
57
|
+
)
|
58
|
+
}
|
59
|
+
|
60
|
+
export default AdvancedTablePaddingControl
|
@@ -0,0 +1,3 @@
|
|
1
|
+
`columnStyling` can also be used to control padding on all cells in a given column via the use of the `cellPadding` key/value pair. `cellPadding` lets you use 'xxs', 'xs', 'sm', 'md', 'lg', 'xl' and 'none'.
|
2
|
+
|
3
|
+
This control can be used in conjunction with the `customRenderer` item within each columnDefinition to achieve custom background colors for individual cells as seen here.
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import React from "react"
|
2
|
+
import AdvancedTable from '../_advanced_table'
|
3
|
+
import MOCK_DATA from "./advanced_table_mock_data_with_id.json"
|
4
|
+
|
5
|
+
const AdvancedTablePaddingControlPerRow = (props) => {
|
6
|
+
const columnDefinitions = [
|
7
|
+
{
|
8
|
+
accessor: "year",
|
9
|
+
label: "Year",
|
10
|
+
cellAccessors: ["quarter", "month", "day"],
|
11
|
+
},
|
12
|
+
{
|
13
|
+
accessor: "newEnrollments",
|
14
|
+
label: "New Enrollments",
|
15
|
+
},
|
16
|
+
{
|
17
|
+
accessor: "scheduledMeetings",
|
18
|
+
label: "Scheduled Meetings",
|
19
|
+
},
|
20
|
+
{
|
21
|
+
accessor: "attendanceRate",
|
22
|
+
label: "Attendance Rate",
|
23
|
+
},
|
24
|
+
{
|
25
|
+
accessor: "completedClasses",
|
26
|
+
label: "Completed Classes",
|
27
|
+
},
|
28
|
+
{
|
29
|
+
accessor: "classCompletionRate",
|
30
|
+
label: "Class Completion Rate",
|
31
|
+
},
|
32
|
+
{
|
33
|
+
accessor: "graduatedStudents",
|
34
|
+
label: "Graduated Students",
|
35
|
+
},
|
36
|
+
]
|
37
|
+
|
38
|
+
const rowStyling = [
|
39
|
+
{
|
40
|
+
rowId: "1",
|
41
|
+
cellPadding:"md"
|
42
|
+
},
|
43
|
+
];
|
44
|
+
|
45
|
+
return (
|
46
|
+
<div>
|
47
|
+
<AdvancedTable
|
48
|
+
columnDefinitions={columnDefinitions}
|
49
|
+
rowStyling={rowStyling}
|
50
|
+
tableData={MOCK_DATA}
|
51
|
+
{...props}
|
52
|
+
/>
|
53
|
+
</div>
|
54
|
+
)
|
55
|
+
}
|
56
|
+
|
57
|
+
export default AdvancedTablePaddingControlPerRow
|
@@ -0,0 +1 @@
|
|
1
|
+
`rowStyling` can also be used to control padding on all cells in a given row via the use of the `cellPadding` key/value pair as shown here. `cellPadding` lets you use 'xxs', 'xs', 'sm', 'md', 'lg', 'xl' and 'none'.
|
@@ -13,6 +13,7 @@ examples:
|
|
13
13
|
- advanced_table_with_custom_header_rails: Custom Header Cell
|
14
14
|
- advanced_table_column_headers: Multi-Header Columns
|
15
15
|
- advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
|
16
|
+
- advanced_table_column_headers_vertical_border: Multi-Header Columns with Vertical Borders
|
16
17
|
- advanced_table_no_subrows: Table with No Subrows or Expansion
|
17
18
|
- advanced_table_selectable_rows_rails: Selectable Rows
|
18
19
|
- advanced_table_selectable_rows_no_subrows_rails: Selectable Rows (No Subrows)
|
@@ -53,6 +54,7 @@ examples:
|
|
53
54
|
- advanced_table_column_headers: Multi-Header Columns
|
54
55
|
- advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
|
55
56
|
- advanced_table_column_headers_custom_cell: Multi-Header Columns with Custom Cells
|
57
|
+
- advanced_table_column_headers_vertical_border: Multi-Header Columns with Vertical Borders
|
56
58
|
- advanced_table_no_subrows: Table with No Subrows or Expansion
|
57
59
|
- advanced_table_pinned_rows: Pinned Rows
|
58
60
|
- advanced_table_selectable_rows: Selectable Rows
|
@@ -66,8 +68,10 @@ examples:
|
|
66
68
|
- advanced_table_column_visibility_multi: Column Visibility Control with Multi-Header Columns
|
67
69
|
- advanced_table_scrollbar_none: Advanced Table Scrollbar None
|
68
70
|
- advanced_table_row_styling: Row Styling
|
71
|
+
- advanced_table_padding_control_per_row: Padding Control using Row Styling
|
69
72
|
- advanced_table_column_styling: Column Styling
|
70
73
|
- advanced_table_column_styling_column_headers: Column Styling with Multiple Headers
|
74
|
+
- advanced_table_padding_control: Padding Control using Column Styling
|
71
75
|
- advanced_table_column_border_color: Column Group Border Color
|
72
76
|
- advanced_table_fullscreen: Fullscreen
|
73
77
|
- advanced_table_infinite_scroll: Infinite Scroll
|
@@ -21,6 +21,7 @@ export { default as AdvancedTableSelectableRowsHeader } from './_advanced_table_
|
|
21
21
|
export { default as AdvancedTableSelectableRowsActions } from './_advanced_table_selectable_rows_actions.jsx'
|
22
22
|
export { default as AdvancedTableTablePropsStickyHeader } from './_advanced_table_table_props_sticky_header.jsx'
|
23
23
|
export { default as AdvancedTableColumnHeadersCustomCell } from './_advanced_table_column_headers_custom_cell.jsx'
|
24
|
+
export { default as AdvancedTableColumnHeadersVerticalBorder } from './_advanced_table_column_headers_vertical_border.jsx'
|
24
25
|
export { default as AdvancedTableInlineEditing } from './_advanced_table_inline_editing.jsx'
|
25
26
|
export { default as AdvancedTableFullscreen } from './_advanced_table_fullscreen.jsx'
|
26
27
|
export { default as AdvancedTableStickyColumns } from './_advanced_table_sticky_columns.jsx'
|
@@ -42,4 +43,6 @@ export {default as AdvancedTableWithCustomHeader} from './_advanced_table_with_c
|
|
42
43
|
export { default as AdvancedTableCustomSort } from './_advanced_table_custom_sort.jsx'
|
43
44
|
export { default as AdvancedTableWithCustomHeaderMultiHeader } from './_advanced_table_with_custom_header_multi_header.jsx'
|
44
45
|
export { default as AdvancedTableSortPerColumn } from './_advanced_table_sort_per_column.jsx'
|
45
|
-
export { default as AdvancedTableSortPerColumnForMultiColumn } from './_advanced_table_sort_per_column_for_multi_column.jsx'
|
46
|
+
export { default as AdvancedTableSortPerColumnForMultiColumn } from './_advanced_table_sort_per_column_for_multi_column.jsx'
|
47
|
+
export { default as AdvancedTablePaddingControl } from './_advanced_table_padding_control.jsx'
|
48
|
+
export { default as AdvancedTablePaddingControlPerRow } from './_advanced_table_padding_control_per_row.jsx'
|
@@ -43,7 +43,7 @@ module Playbook
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def td_classname(column, index)
|
46
|
-
classes = %w[id-cell
|
46
|
+
classes = %w[id-cell]
|
47
47
|
classes << "last-cell" if column[:is_last_in_group]
|
48
48
|
classes << "pinned-left" if index.zero? && is_pinned_left && responsive == "scroll"
|
49
49
|
classes.join(" ")
|
@@ -52,7 +52,7 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React
|
|
52
52
|
} = props;
|
53
53
|
|
54
54
|
const returnedIcon = icon || iconMap[status]
|
55
|
-
const iconClass = icon ? "custom_icon" : ""
|
55
|
+
const iconClass = icon && icon !== "none" ? "custom_icon" : ""
|
56
56
|
|
57
57
|
const css = classnames(
|
58
58
|
`pb_fixed_confirmation_toast_kit_${status}`,
|
@@ -92,7 +92,7 @@ const FixedConfirmationToast = (props: FixedConfirmationToastProps): React.React
|
|
92
92
|
onClick={handleClick}
|
93
93
|
{...htmlProps}
|
94
94
|
>
|
95
|
-
{returnedIcon && (
|
95
|
+
{returnedIcon && icon !== "none" && (
|
96
96
|
<Icon
|
97
97
|
className="pb_icon"
|
98
98
|
fixedWidth
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%= pb_rails("fixed_confirmation_toast", props: {
|
2
|
+
text: "Error Message",
|
3
|
+
status: "error",
|
4
|
+
icon: "none",
|
5
|
+
closeable: true
|
6
|
+
})%>
|
7
|
+
|
8
|
+
<br><br>
|
9
|
+
|
10
|
+
<%= pb_rails("fixed_confirmation_toast", props: {
|
11
|
+
text: "Items Successfully Moved",
|
12
|
+
status: "success",
|
13
|
+
icon: "none"
|
14
|
+
})%>
|
15
|
+
|
16
|
+
<br><br>
|
17
|
+
|
18
|
+
<%= pb_rails("fixed_confirmation_toast", props: {
|
19
|
+
text: "Scan to Assign Selected Items",
|
20
|
+
status: "neutral",
|
21
|
+
icon: "none"
|
22
|
+
})%>
|
data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.jsx
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
|
3
|
+
import FixedConfirmationToast from '../_fixed_confirmation_toast'
|
4
|
+
|
5
|
+
const FixedConfirmationToastNoIcon = (props) => {
|
6
|
+
return (
|
7
|
+
<div>
|
8
|
+
<div>
|
9
|
+
<FixedConfirmationToast
|
10
|
+
closeable
|
11
|
+
icon="none"
|
12
|
+
status="error"
|
13
|
+
text="Error Message"
|
14
|
+
{...props}
|
15
|
+
/>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<br />
|
19
|
+
|
20
|
+
<div>
|
21
|
+
<FixedConfirmationToast
|
22
|
+
icon="none"
|
23
|
+
status="success"
|
24
|
+
text="Items Successfully Moved"
|
25
|
+
{...props}
|
26
|
+
/>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<br />
|
30
|
+
|
31
|
+
<div>
|
32
|
+
<FixedConfirmationToast
|
33
|
+
icon="none"
|
34
|
+
status="neutral"
|
35
|
+
text="Scan to Assign Selected Items"
|
36
|
+
{...props}
|
37
|
+
/>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
)
|
41
|
+
}
|
42
|
+
|
43
|
+
export default FixedConfirmationToastNoIcon
|
data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Setting `icon` prop to "none" will render the fixed confirmation toast without the left side icon.
|
@@ -8,6 +8,7 @@ examples:
|
|
8
8
|
- fixed_confirmation_toast_auto_close: Click to Show Auto Close
|
9
9
|
- fixed_confirmation_toast_children: Children
|
10
10
|
- fixed_confirmation_toast_custom_icon: Custom Icon
|
11
|
+
- fixed_confirmation_toast_no_icon: No Icon
|
11
12
|
|
12
13
|
react:
|
13
14
|
- fixed_confirmation_toast_default: Default
|
@@ -17,6 +18,7 @@ examples:
|
|
17
18
|
- fixed_confirmation_toast_auto_close: Click to Show Auto Close
|
18
19
|
- fixed_confirmation_toast_children: Children
|
19
20
|
- fixed_confirmation_toast_custom_icon: Custom Icon
|
21
|
+
- fixed_confirmation_toast_no_icon: No Icon
|
20
22
|
|
21
23
|
swift:
|
22
24
|
- fixed_confirmation_toast_default_swift: Default
|
@@ -5,3 +5,4 @@ export { default as FixedConfirmationToastPositions } from './_fixed_confirmatio
|
|
5
5
|
export { default as FixedConfirmationToastAutoClose } from './_fixed_confirmation_toast_auto_close.jsx'
|
6
6
|
export { default as FixedConfirmationToastChildren } from './_fixed_confirmation_toast_children.jsx'
|
7
7
|
export { default as FixedConfirmationToastCustomIcon } from './_fixed_confirmation_toast_custom_icon.jsx'
|
8
|
+
export { default as FixedConfirmationToastNoIcon } from './_fixed_confirmation_toast_no_icon.jsx'
|
@@ -1,6 +1,7 @@
|
|
1
1
|
<%= pb_content_tag do %>
|
2
|
+
<% if object.icon_value && object.icon_value != "none" %>
|
2
3
|
<%= pb_rails("icon", props: { icon: object.icon_value, classname: "pb_icon", fixed_width: true }) %>
|
3
|
-
|
4
|
+
<% end %>
|
4
5
|
<% if content %>
|
5
6
|
<%= content %>
|
6
7
|
<% elsif object.show_text? %>
|
@@ -56,6 +56,12 @@ test('renders custom icon when provided', () => {
|
|
56
56
|
expect(container.querySelector('.custom_icon')).toBeInTheDocument();
|
57
57
|
});
|
58
58
|
|
59
|
+
test("renders no icon when icon prop is 'none'", () => {
|
60
|
+
const { container } = render(<FixedConfirmationToast icon="none" />);
|
61
|
+
expect(container.querySelector('.pb_icon')).not.toBeInTheDocument();
|
62
|
+
expect(container.querySelector('.custom_icon')).not.toBeInTheDocument();
|
63
|
+
});
|
64
|
+
|
59
65
|
test('renders correctly with multiLine prop', () => {
|
60
66
|
const { container } = render(<FixedConfirmationToast multiLine />);
|
61
67
|
expect(container.querySelector('._multi_line')).toBeInTheDocument();
|