playbook_ui 14.21.2.pre.alpha.PLAY22558410 → 14.21.2
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/CustomCell.tsx +2 -5
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +4 -20
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +5 -25
- data/app/pb_kits/playbook/pb_advanced_table/Components/VirtualizedTableView.tsx +16 -36
- data/app/pb_kits/playbook/pb_advanced_table/Context/AdvancedTableContext.tsx +5 -18
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +17 -37
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +5 -30
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableBody.tsx +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +40 -91
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/CellRendererUtils.tsx +1 -4
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/TableContainerStyles.ts +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +4 -49
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +18 -36
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +2 -105
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_sort.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pinned_rows.jsx +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pinned_rows_react.md +3 -5
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions.jsx +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.html.erb +2 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +0 -6
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +0 -4
- data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +84 -60
- data/app/pb_kits/playbook/pb_advanced_table/index.js +213 -125
- data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +1 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -5
- data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -33
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.jsx +4 -7
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_value.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_value.jsx +4 -7
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.jsx +4 -7
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.jsx +10 -19
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.jsx +10 -19
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.html.erb +10 -10
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.html.erb +10 -10
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.html.erb +10 -10
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.jsx +11 -20
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.jsx +8 -8
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.html.erb +10 -10
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.jsx +14 -23
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_separators_hidden.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_separators_hidden.jsx +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subcomponent_structure.jsx +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subcomponent_structure_rails.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.jsx +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +4 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.jsx +4 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +4 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +4 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options.jsx +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options_rails.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.jsx +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger.jsx +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger_rails.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.jsx +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +3 -6
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +3 -3
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +0 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +1 -3
- data/app/pb_kits/playbook/pb_filter/Filter/index.tsx +0 -13
- data/app/pb_kits/playbook/pb_filter/_filter.scss +0 -4
- data/app/pb_kits/playbook/pb_filter/docs/example.yml +0 -1
- data/app/pb_kits/playbook/pb_filter/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.html.erb +8 -8
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_rails.md +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.html.erb +12 -12
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_rails.md +2 -2
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.html.erb +12 -12
- data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_rails.md +2 -2
- data/app/pb_kits/playbook/pb_table/index.ts +4 -4
- data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +0 -4
- data/dist/chunks/_typeahead-BlPRej0F.js +22 -0
- data/dist/chunks/_weekday_stacked-CzxoxxCR.js +45 -0
- data/dist/chunks/lazysizes-DHz07jlL.js +1 -0
- data/dist/chunks/lib-D4vXIZF5.js +29 -0
- data/dist/chunks/{pb_form_validation-BVF3TmcL.js → pb_form_validation-DyvJ8iPe.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +3 -3
- data/dist/playbook-rails-react-bindings.js +1 -1
- data/dist/playbook-rails.js +1 -1
- data/dist/playbook.css +1 -1
- data/lib/playbook/version.rb +2 -2
- metadata +7 -31
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/ColumnStylingHelper.ts +0 -15
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table_action_bar.js +0 -36
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.jsx +0 -51
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling.md +0 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.jsx +0 -77
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers_rails.html.erb +0 -63
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_column_headers_rails.md +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.html.erb +0 -38
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_styling_rails.md +0 -7
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_infinite_scroll.md +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.jsx +0 -64
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.md +0 -7
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_icon_options.html.erb +0 -52
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_icon_options.jsx +0 -99
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_icon_options_rails.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_icon_options_react.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options.html.erb +0 -28
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options.jsx +0 -47
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options_rails.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options_react.md +0 -1
- data/app/pb_kits/playbook/pb_filter/Filter/FilterSection.tsx +0 -49
- data/app/pb_kits/playbook/pb_filter/Filter/FilterSidebar.tsx +0 -69
- data/app/pb_kits/playbook/pb_filter/docs/_filter_sidebar.jsx +0 -224
- data/dist/chunks/_typeahead-B80UsDrG.js +0 -22
- data/dist/chunks/_weekday_stacked-D1bqIne1.js +0 -45
- data/dist/chunks/lazysizes-B7xYodB-.js +0 -1
- data/dist/chunks/lib-CTkMyvfQ.js +0 -29
@@ -40,13 +40,9 @@ export const TableHeader = ({
|
|
40
40
|
showActionsBar,
|
41
41
|
selectableRows,
|
42
42
|
responsive,
|
43
|
-
headerRef
|
44
|
-
virtualizedRows,
|
45
|
-
enableVirtualization,
|
43
|
+
headerRef
|
46
44
|
} = useContext(AdvancedTableContext)
|
47
45
|
|
48
|
-
const isVirtualized = virtualizedRows || enableVirtualization;
|
49
|
-
|
50
46
|
const classes = classnames(
|
51
47
|
buildCss("pb_advanced_table_header"),
|
52
48
|
globalProps(props),
|
@@ -61,93 +57,46 @@ export const TableHeader = ({
|
|
61
57
|
`${isChrome() ? "chrome-styles" : ""}`,
|
62
58
|
`${responsive === "scroll" && "pinned-left"}`,
|
63
59
|
);
|
64
|
-
|
65
|
-
const renderRegularTableHeader = () => (
|
66
|
-
<thead className={classes}
|
67
|
-
id={id}
|
68
|
-
>
|
69
|
-
{table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>, index: number) => (
|
70
|
-
<tr
|
71
|
-
key={`${headerGroup.id}-headerGroup`}
|
72
|
-
ref={index === 0 ? headerRef : null}
|
73
|
-
>
|
74
|
-
{!hasAnySubRows && selectableRows && (
|
75
|
-
<th className={customCellClassnames}>
|
76
|
-
<Checkbox
|
77
|
-
checked={table?.getIsAllRowsSelected()}
|
78
|
-
indeterminate={table?.getIsSomeRowsSelected()}
|
79
|
-
onChange={table?.getToggleAllRowsSelectedHandler()}
|
80
|
-
/>
|
81
|
-
</th>
|
82
|
-
)}
|
83
|
-
{headerGroup.headers.map(header => {
|
84
|
-
const isPinnedLeft = columnPinning.left.includes(header.id)
|
85
|
-
return (
|
86
|
-
<TableHeaderCell
|
87
|
-
enableSorting={enableSorting}
|
88
|
-
enableToggleExpansion={enableToggleExpansion}
|
89
|
-
handleExpandOrCollapse={handleExpandOrCollapse}
|
90
|
-
header={header}
|
91
|
-
headerChildren={children}
|
92
|
-
isPinnedLeft={isPinnedLeft}
|
93
|
-
key={`${header.id}-header`}
|
94
|
-
loading={loading}
|
95
|
-
sortIcon={sortIcon}
|
96
|
-
table={table}
|
97
|
-
/>
|
98
|
-
)
|
99
|
-
})}
|
100
|
-
</tr>
|
101
|
-
))}
|
102
|
-
</thead>
|
103
|
-
);
|
104
|
-
|
105
|
-
const renderVirtualizedTableHeader = () => (
|
106
|
-
<thead
|
107
|
-
className={classes}
|
108
|
-
data-virtualized="true"
|
109
|
-
id={id}
|
110
|
-
>
|
111
|
-
{table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>, index: number) => (
|
112
|
-
<tr
|
113
|
-
className="virtualized-header-row-header"
|
114
|
-
key={`${headerGroup.id}-headerGroup-virtualized`}
|
115
|
-
ref={index === 0 ? headerRef : null}
|
116
|
-
>
|
117
|
-
{!hasAnySubRows && selectableRows && (
|
118
|
-
<th className={classnames(customCellClassnames, "virtualized-header-cell")}>
|
119
|
-
<Checkbox
|
120
|
-
checked={table?.getIsAllRowsSelected()}
|
121
|
-
indeterminate={table?.getIsSomeRowsSelected()}
|
122
|
-
onChange={table?.getToggleAllRowsSelectedHandler()}
|
123
|
-
/>
|
124
|
-
</th>
|
125
|
-
)}
|
126
|
-
{headerGroup.headers.map(header => {
|
127
|
-
const isPinnedLeft = columnPinning.left.includes(header.id)
|
128
|
-
return (
|
129
|
-
<TableHeaderCell
|
130
|
-
enableSorting={enableSorting}
|
131
|
-
enableToggleExpansion={enableToggleExpansion}
|
132
|
-
handleExpandOrCollapse={handleExpandOrCollapse}
|
133
|
-
header={header}
|
134
|
-
headerChildren={children}
|
135
|
-
isPinnedLeft={isPinnedLeft}
|
136
|
-
isVirtualized
|
137
|
-
key={`${header.id}-header-virtualized`}
|
138
|
-
loading={loading}
|
139
|
-
sortIcon={sortIcon}
|
140
|
-
table={table}
|
141
|
-
/>
|
142
|
-
)
|
143
|
-
})}
|
144
|
-
</tr>
|
145
|
-
))}
|
146
|
-
</thead>
|
147
|
-
);
|
148
60
|
return (
|
149
|
-
<>
|
150
|
-
{
|
61
|
+
<>
|
62
|
+
<thead className={classes}
|
63
|
+
id={id}
|
64
|
+
>
|
65
|
+
{/* Get the header groups (only one in this example) */}
|
66
|
+
{table.getHeaderGroups().map((headerGroup: HeaderGroup<GenericObject>, index: number) => (
|
67
|
+
<tr
|
68
|
+
key={`${headerGroup.id}-headerGroup`}
|
69
|
+
ref={index === 0 ? headerRef : null}
|
70
|
+
>
|
71
|
+
{!hasAnySubRows && selectableRows && (
|
72
|
+
<th className={customCellClassnames}>
|
73
|
+
<Checkbox
|
74
|
+
checked={table?.getIsAllRowsSelected()}
|
75
|
+
indeterminate={table?.getIsSomeRowsSelected()}
|
76
|
+
onChange={table?.getToggleAllRowsSelectedHandler()}
|
77
|
+
/>
|
78
|
+
</th>
|
79
|
+
)}
|
80
|
+
{headerGroup.headers.map(header => {
|
81
|
+
const isPinnedLeft = columnPinning.left.includes(header.id)
|
82
|
+
return (
|
83
|
+
<TableHeaderCell
|
84
|
+
enableSorting={enableSorting}
|
85
|
+
enableToggleExpansion={enableToggleExpansion}
|
86
|
+
handleExpandOrCollapse={handleExpandOrCollapse}
|
87
|
+
header={header}
|
88
|
+
headerChildren={children}
|
89
|
+
isPinnedLeft={isPinnedLeft}
|
90
|
+
key={`${header.id}-header`}
|
91
|
+
loading={loading}
|
92
|
+
sortIcon={sortIcon}
|
93
|
+
table={table}
|
94
|
+
/>
|
95
|
+
)
|
96
|
+
})}
|
97
|
+
</tr>
|
98
|
+
))}
|
99
|
+
</thead>
|
151
100
|
</>
|
152
101
|
)
|
153
102
|
}
|
@@ -17,8 +17,7 @@ export const createCellFunction = (
|
|
17
17
|
customRenderer?: (row: Row<GenericObject>, value: any) => JSX.Element,
|
18
18
|
isFirstColumn?: boolean,
|
19
19
|
onRowToggleClick?: (row: Row<GenericObject>) => void,
|
20
|
-
selectableRows?: boolean
|
21
|
-
rowStyling?: GenericObject
|
20
|
+
selectableRows?: boolean
|
22
21
|
) => {
|
23
22
|
// Add display name to the returned function
|
24
23
|
const cellRenderer = ({
|
@@ -29,7 +28,6 @@ export const createCellFunction = (
|
|
29
28
|
getValue: Getter<string>
|
30
29
|
}) => {
|
31
30
|
const rowData = row.original;
|
32
|
-
const customStyle = rowStyling?.length > 0 && rowStyling?.find((s:GenericObject) => s?.rowId === row.id);
|
33
31
|
|
34
32
|
if (isFirstColumn) {
|
35
33
|
switch (row.depth) {
|
@@ -37,7 +35,6 @@ export const createCellFunction = (
|
|
37
35
|
return (
|
38
36
|
<CustomCell
|
39
37
|
customRenderer={customRenderer}
|
40
|
-
customStyle={customStyle}
|
41
38
|
getValue={getValue}
|
42
39
|
onRowToggleClick={onRowToggleClick}
|
43
40
|
row={row}
|
@@ -57,6 +57,7 @@ export const getVirtualizedContainerStyles = (maxHeight?: string): React.CSSProp
|
|
57
57
|
position: 'absolute',
|
58
58
|
top: 0,
|
59
59
|
left: 0,
|
60
|
+
width: '100%',
|
60
61
|
height: '40px', // Match standard table row height
|
61
62
|
transform: `translateY(${startPosition}px)`,
|
62
63
|
tableLayout: 'fixed',
|
@@ -66,14 +67,12 @@ export const getVirtualizedContainerStyles = (maxHeight?: string): React.CSSProp
|
|
66
67
|
/**
|
67
68
|
* Get height estimates for different row types
|
68
69
|
*/
|
69
|
-
export const getRowHeightEstimate = (rowType: 'header' | 'row' | 'loading'
|
70
|
+
export const getRowHeightEstimate = (rowType: 'header' | 'row' | 'loading') => {
|
70
71
|
switch (rowType) {
|
71
72
|
case 'header':
|
72
73
|
return 40; // Header height
|
73
74
|
case 'loading':
|
74
75
|
return 30; // Loading indicator height
|
75
|
-
case 'footer':
|
76
|
-
return 40
|
77
76
|
case 'row':
|
78
77
|
default:
|
79
78
|
return 40; // Standard row height - match this to your design system
|
@@ -63,30 +63,11 @@
|
|
63
63
|
width: 100%;
|
64
64
|
}
|
65
65
|
|
66
|
-
// Virtualized
|
67
|
-
scrollbar-gutter: stable right-edges;
|
68
|
-
.virtualized-header-row-header {
|
69
|
-
width: 100% !important;
|
70
|
-
.table-header-cells:first-child {
|
71
|
-
min-width: 180px;
|
72
|
-
}
|
73
|
-
}
|
74
|
-
|
75
|
-
.virtualized-footer {
|
76
|
-
width: 100% !important;
|
77
|
-
td {
|
78
|
-
border-bottom-left-radius: 4px !important;
|
79
|
-
border-bottom-right-radius: 4px !important;
|
80
|
-
display: flex;
|
81
|
-
justify-content: center;
|
82
|
-
align-items: center;
|
83
|
-
}
|
84
|
-
}
|
85
|
-
|
66
|
+
// Virtualized table styles
|
86
67
|
.virtualized-table-row {
|
87
68
|
display: table !important;
|
88
69
|
table-layout: fixed !important;
|
89
|
-
|
70
|
+
width: 100% !important;
|
90
71
|
|
91
72
|
td {
|
92
73
|
display: table-cell !important;
|
@@ -123,7 +104,7 @@
|
|
123
104
|
|
124
105
|
-ms-overflow-style: none !important;
|
125
106
|
scrollbar-width: none !important;
|
126
|
-
|
107
|
+
}
|
127
108
|
|
128
109
|
|
129
110
|
.row-selection-actions-card {
|
@@ -212,6 +193,7 @@
|
|
212
193
|
|
213
194
|
// Fix virtualized row borders
|
214
195
|
tr.virtualized-table-row {
|
196
|
+
border-bottom: 1px solid $border_light;
|
215
197
|
|
216
198
|
&.bg-silver {
|
217
199
|
td:first-child {
|
@@ -624,16 +606,6 @@
|
|
624
606
|
td.sticky-left {
|
625
607
|
border-right: 1px solid $border_light !important;
|
626
608
|
}
|
627
|
-
// Virtualized Table in Responsive Styles
|
628
|
-
.virtualized-header,
|
629
|
-
.virtualized-header-row-header,
|
630
|
-
.virtualized-table-row,
|
631
|
-
.virtualized-footer {
|
632
|
-
border-right: 1px solid $border_light !important;
|
633
|
-
.table-header-cells:first-child {
|
634
|
-
box-shadow: 0 0 10px 0 rgba($shadow, 0.16) !important;
|
635
|
-
}
|
636
|
-
}
|
637
609
|
}
|
638
610
|
}
|
639
611
|
}
|
@@ -649,23 +621,6 @@
|
|
649
621
|
box-shadow: 0 4px 10px 0 rgba($shadow, 0.16) !important;
|
650
622
|
}
|
651
623
|
|
652
|
-
// For Rails, we can't target the &:last-child since collapsed rows are display: none;
|
653
|
-
// With JS, we add a .last-visible-row class and add rounded corners to bottom row
|
654
|
-
.last-visible-row {
|
655
|
-
td, .pb_table_td {
|
656
|
-
border-width: 0 0 1px 0;
|
657
|
-
|
658
|
-
&:first-child {
|
659
|
-
border-radius: 0 0 0 4px;
|
660
|
-
border-width: 0 0 1px 1px;
|
661
|
-
}
|
662
|
-
&:last-child {
|
663
|
-
border-radius: 0 0 4px 0;
|
664
|
-
border-width: 0 1px 1px 0;
|
665
|
-
}
|
666
|
-
}
|
667
|
-
}
|
668
|
-
|
669
624
|
&.dark {
|
670
625
|
// Override default border color for dark mode
|
671
626
|
--column-border-color: #{$border_dark};
|
@@ -57,7 +57,6 @@ type AdvancedTableProps = {
|
|
57
57
|
onChange?: (value: RowPinningState) => void;
|
58
58
|
};
|
59
59
|
responsive?: "scroll" | "none",
|
60
|
-
rowStyling?: GenericObject[],
|
61
60
|
scrollBarNone?: boolean,
|
62
61
|
selectableRows?: boolean,
|
63
62
|
showActionsBar?: boolean,
|
@@ -99,7 +98,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
99
98
|
paginationProps,
|
100
99
|
pinnedRows,
|
101
100
|
responsive = "scroll",
|
102
|
-
rowStyling,
|
103
101
|
scrollBarNone= false,
|
104
102
|
showActionsBar = true,
|
105
103
|
selectableRows,
|
@@ -146,7 +144,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
146
144
|
onRowSelectionChange,
|
147
145
|
columnVisibilityControl,
|
148
146
|
pinnedRows,
|
149
|
-
rowStyling
|
150
147
|
});
|
151
148
|
|
152
149
|
// Initialize table actions
|
@@ -269,29 +266,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
269
266
|
// Visibility flag for action bar
|
270
267
|
const isActionBarVisible = (selectableRows && showActionsBar && selectedRowsLength > 0) || columnVisibilityControl;
|
271
268
|
|
272
|
-
// The actual Main <Table /> element
|
273
|
-
const tableElement = (
|
274
|
-
<Table
|
275
|
-
className={`${loading ? "content-loading" : ""}`}
|
276
|
-
dark={dark}
|
277
|
-
dataTable
|
278
|
-
numberSpacing="tabular"
|
279
|
-
responsive="none"
|
280
|
-
{...tableProps}
|
281
|
-
>
|
282
|
-
{children ? (
|
283
|
-
children
|
284
|
-
) : (
|
285
|
-
<>
|
286
|
-
<TableHeader />
|
287
|
-
<TableBody
|
288
|
-
isFetching={isFetching}
|
289
|
-
/>
|
290
|
-
</>
|
291
|
-
)}
|
292
|
-
</Table>
|
293
|
-
)
|
294
|
-
|
295
269
|
return (
|
296
270
|
<>
|
297
271
|
{/* Top Pagination */}
|
@@ -339,7 +313,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
339
313
|
onExpandByDepthClick={onExpandByDepthClick}
|
340
314
|
pinnedRows={pinnedRows}
|
341
315
|
responsive={responsive}
|
342
|
-
rowStyling={rowStyling}
|
343
316
|
selectableRows={selectableRows}
|
344
317
|
setExpanded={setExpanded}
|
345
318
|
showActionsBar={showActionsBar}
|
@@ -349,7 +322,6 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
349
322
|
table={table}
|
350
323
|
tableContainerRef={tableWrapperRef}
|
351
324
|
toggleExpansionIcon={toggleExpansionIcon}
|
352
|
-
totalAvailableCount={fullData.length}
|
353
325
|
virtualizedRows={virtualizedRows}
|
354
326
|
>
|
355
327
|
<React.Fragment>
|
@@ -361,14 +333,24 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
361
333
|
type={columnVisibilityControl ? "column-visibility" : "row-selection"}
|
362
334
|
/>
|
363
335
|
|
364
|
-
{/*
|
365
|
-
|
366
|
-
|
367
|
-
{
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
336
|
+
{/* Main Table */}
|
337
|
+
<Table
|
338
|
+
className={`${loading ? "content-loading" : ""}`}
|
339
|
+
dark={dark}
|
340
|
+
dataTable
|
341
|
+
numberSpacing="tabular"
|
342
|
+
responsive="none"
|
343
|
+
{...tableProps}
|
344
|
+
>
|
345
|
+
{children ? (
|
346
|
+
children
|
347
|
+
) : (
|
348
|
+
<>
|
349
|
+
<TableHeader />
|
350
|
+
<TableBody />
|
351
|
+
</>
|
352
|
+
)}
|
353
|
+
</Table>
|
372
354
|
</React.Fragment>
|
373
355
|
</AdvancedTableProvider>
|
374
356
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React, {useState} from "react"
|
2
2
|
import { render, screen, waitFor } from "../utilities/test-utils"
|
3
3
|
|
4
|
-
import { AdvancedTable, Pill
|
4
|
+
import { AdvancedTable, Pill } from "playbook-ui"
|
5
5
|
|
6
6
|
global.ResizeObserver = class {
|
7
7
|
observe() {}
|
@@ -572,107 +572,4 @@ test("pinnedRows prop renders pinned rows at top", () => {
|
|
572
572
|
const firstPinnedRow = pinnedRows[0]
|
573
573
|
expect(firstPinnedRow).toHaveStyle("position: sticky")
|
574
574
|
expect(firstPinnedRow).toHaveStyle("background-color: white")
|
575
|
-
})
|
576
|
-
|
577
|
-
test("columnStyling.headerAlignment aligns header as expected", () => {
|
578
|
-
const styledColumnDefs = [
|
579
|
-
{
|
580
|
-
accessor: "year",
|
581
|
-
label: "Year",
|
582
|
-
cellAccessors: ["quarter", "month", "day"],
|
583
|
-
},
|
584
|
-
{
|
585
|
-
accessor: "newEnrollments",
|
586
|
-
label: "New Enrollments",
|
587
|
-
columnStyling: { headerAlignment: "left" },
|
588
|
-
},
|
589
|
-
{
|
590
|
-
accessor: "scheduledMeetings",
|
591
|
-
label: "Scheduled Meetings",
|
592
|
-
},
|
593
|
-
];
|
594
|
-
|
595
|
-
render(
|
596
|
-
<AdvancedTable
|
597
|
-
columnDefinitions={styledColumnDefs}
|
598
|
-
data={{ testid: testId }}
|
599
|
-
tableData={MOCK_DATA}
|
600
|
-
/>
|
601
|
-
);
|
602
|
-
|
603
|
-
const headerCell = screen.getByText("New Enrollments").closest("th");
|
604
|
-
expect(headerCell).toHaveAttribute("align", "left");
|
605
|
-
});
|
606
|
-
|
607
|
-
test("columnStyling.cellAlignment sets each <td> align attribute as expected", () => {
|
608
|
-
const styledColumnDefs = [
|
609
|
-
{
|
610
|
-
accessor: "year",
|
611
|
-
label: "Year",
|
612
|
-
cellAccessors: ["quarter", "month", "day"],
|
613
|
-
},
|
614
|
-
{
|
615
|
-
accessor: "newEnrollments",
|
616
|
-
label: "New Enrollments",
|
617
|
-
columnStyling: { cellAlignment: "left" },
|
618
|
-
},
|
619
|
-
{
|
620
|
-
accessor: "scheduledMeetings",
|
621
|
-
label: "Scheduled Meetings",
|
622
|
-
},
|
623
|
-
];
|
624
|
-
|
625
|
-
render(
|
626
|
-
<AdvancedTable
|
627
|
-
columnDefinitions={styledColumnDefs}
|
628
|
-
data={{ testid: testId }}
|
629
|
-
tableData={MOCK_DATA}
|
630
|
-
/>
|
631
|
-
);
|
632
|
-
|
633
|
-
const firstEnrollmentCell = screen.getAllByText("20")[0].closest("td");
|
634
|
-
expect(firstEnrollmentCell).toHaveAttribute("align", "left");
|
635
|
-
});
|
636
|
-
|
637
|
-
test("renders virtualized table rows and header", () => {
|
638
|
-
render(
|
639
|
-
<AdvancedTable
|
640
|
-
columnDefinitions={columnDefinitions}
|
641
|
-
data={{ testid: testId }}
|
642
|
-
tableData={MOCK_DATA_WITH_ID}
|
643
|
-
virtualizedRows
|
644
|
-
/>
|
645
|
-
)
|
646
|
-
|
647
|
-
const kit = screen.getByTestId(testId)
|
648
|
-
|
649
|
-
const virtualizedHeader = kit.querySelector('.virtualized-header-row-header')
|
650
|
-
expect(virtualizedHeader).toBeInTheDocument()
|
651
|
-
|
652
|
-
const virtualizedRows = kit.querySelectorAll('.virtualized-table-row')
|
653
|
-
expect(virtualizedRows.length).toBeLessThan(MOCK_DATA_WITH_ID.length)
|
654
|
-
})
|
655
|
-
|
656
|
-
test("rowStyling prop works as expected", () => {
|
657
|
-
const rowStyling = [
|
658
|
-
{
|
659
|
-
rowId: "1",
|
660
|
-
backgroundColor: colors.white,
|
661
|
-
fontColor: colors.black
|
662
|
-
},
|
663
|
-
];
|
664
|
-
|
665
|
-
render(
|
666
|
-
<AdvancedTable
|
667
|
-
columnDefinitions={columnDefinitions}
|
668
|
-
data={{ testid: testId }}
|
669
|
-
rowStyling={rowStyling}
|
670
|
-
tableData={MOCK_DATA_WITH_ID}
|
671
|
-
/>
|
672
|
-
)
|
673
|
-
|
674
|
-
const kit = screen.getByTestId(testId)
|
675
|
-
const tableBody = kit.querySelector('tbody')
|
676
|
-
const row1 = tableBody.querySelector('tr:nth-child(1)')
|
677
|
-
expect(row1).toHaveStyle({backgroundColor: colors.white, color: colors.black})
|
678
|
-
})
|
575
|
+
})
|
@@ -51,7 +51,7 @@
|
|
51
51
|
]
|
52
52
|
%>
|
53
53
|
|
54
|
-
<%= pb_rails("advanced_table", props: { table_data: @table_data, column_definitions: column_definitions
|
54
|
+
<%= pb_rails("advanced_table", props: { table_data: @table_data, column_definitions: column_definitions }) do %>
|
55
55
|
<%= pb_rails("advanced_table/table_header", props: { column_definitions: column_definitions }) %>
|
56
56
|
<%= pb_rails("advanced_table/table_body", props: { id: "beta_sort", table_data: @table_data, column_definitions: column_definitions, enable_toggle_expansion: "all" }) %>
|
57
57
|
<% end %>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
subrow_headers = ["Quarter", "Month", "Day"]
|
35
35
|
%>
|
36
36
|
|
37
|
-
<%= pb_rails("advanced_table", props: { table_data: @table_data, column_definitions: column_definitions
|
37
|
+
<%= pb_rails("advanced_table", props: { table_data: @table_data, column_definitions: column_definitions }) do %>
|
38
38
|
<%= pb_rails("advanced_table/table_header", props: { column_definitions: column_definitions }) %>
|
39
39
|
<%= pb_rails("advanced_table/table_body", props: { id: "test_table", table_data: @table_data, column_definitions: column_definitions, subrow_headers: subrow_headers, enable_toggle_expansion: "all" }) %>
|
40
40
|
<% end %>
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.html.erb
CHANGED
@@ -55,4 +55,4 @@
|
|
55
55
|
},
|
56
56
|
] %>
|
57
57
|
|
58
|
-
<%= pb_rails("advanced_table", props: { id: "
|
58
|
+
<%= pb_rails("advanced_table", props: { id: "beta_table_with_muilti_headers", table_data: @table_data, column_definitions: column_definitions, column_group_border_color: "text_lt_default", table_props: { vertical_border: true } }) %>
|
@@ -30,4 +30,4 @@
|
|
30
30
|
}
|
31
31
|
] %>
|
32
32
|
|
33
|
-
<%= pb_rails("advanced_table", props: { id: "
|
33
|
+
<%= pb_rails("advanced_table", props: { id: "beta_table", table_data: @table_data, column_definitions: column_definitions, loading: true }) %>
|
@@ -1,7 +1,5 @@
|
|
1
|
-
Use the `pinnedRows` prop to pin specific rows to the top of an Advanced Table. Pinned rows will remain at the top when scrolling through table data and
|
1
|
+
Use the `pinnedRows` prop to pin specific rows to the top of an Advanced Table. Pinned rows will remain at the top when scrolling through table data and reorganizing via sorting.
|
2
2
|
|
3
|
-
**NOTE:**
|
3
|
+
**NOTE:** This prop is in Beta. Current Requirements for V1:
|
4
4
|
- Sticky header required: Pinned rows must be used with `sticky: true` via `tableProps` (works with both responsive and non-responsive tables)
|
5
|
-
- Row ids required:
|
6
|
-
- `pinnedRows` takes an array of row ids to the `top` property as shown in the code snippet below.
|
7
|
-
- For expandable rows, use the parent id in `pinnedRows`, all its children will automatically be pinned with it. If id for a child is passed in without parent being pinned, nothing will be pinned.
|
5
|
+
- Row ids required: Pass an array of row ids to the `top` property. For expandable rows, both parent and all its child row ids must be included individually
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions.jsx
CHANGED
@@ -47,14 +47,14 @@ const CustomActions = () => {
|
|
47
47
|
<CircleIconButton
|
48
48
|
icon="file-csv"
|
49
49
|
onClick={() =>
|
50
|
-
alert(rowIds.length === 0 ? "No Selection Made" :
|
50
|
+
alert(rowIds.length === 0 ? "No Selection Made" : `Row ids ${rowIds.join(", ")} will be exported!`)
|
51
51
|
}
|
52
52
|
variant="link"
|
53
53
|
/>
|
54
54
|
<CircleIconButton
|
55
55
|
icon="trash-alt"
|
56
56
|
onClick={() =>
|
57
|
-
alert(rowIds.length === 0 ? "No Selection Made" :
|
57
|
+
alert(rowIds.length === 0 ? "No Selection Made" : `Row ids ${rowIds.join(", ")} will be deleted!`)
|
58
58
|
}
|
59
59
|
variant="link"
|
60
60
|
/>
|
@@ -88,11 +88,10 @@ actions = [
|
|
88
88
|
if (!selectedRowIds || selectedRowIds.length === 0) {
|
89
89
|
alert('No Selection Made');
|
90
90
|
} else {
|
91
|
-
const selectedRowsString = selectedRowIds.join(', ');
|
92
91
|
if (actionType === 'export') {
|
93
|
-
alert(
|
92
|
+
alert(`Row ids ${selectedRowIds.join(', ')} will be exported!`);
|
94
93
|
} else if (actionType === 'delete') {
|
95
|
-
alert(
|
94
|
+
alert(`Row ids ${selectedRowIds.join(', ')} will be deleted!`);
|
96
95
|
}
|
97
96
|
}
|
98
97
|
};
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.html.erb
CHANGED
@@ -30,4 +30,4 @@
|
|
30
30
|
}
|
31
31
|
] %>
|
32
32
|
|
33
|
-
<%= pb_rails("advanced_table", props: { id: "
|
33
|
+
<%= pb_rails("advanced_table", props: { id: "table_props_table", table_data: @table_data, column_definitions: column_definitions, max_height: "xs", table_props: { sticky: true }}) %>
|
@@ -19,8 +19,6 @@ examples:
|
|
19
19
|
- advanced_table_selectable_rows_actions_rails: Selectable Rows (With Actions)
|
20
20
|
- advanced_table_selectable_rows_header_rails: Selectable Rows (No Actions Bar)
|
21
21
|
- advanced_table_scrollbar_none: Advanced Table Scrollbar None
|
22
|
-
# - advanced_table_column_styling_rails: Column Styling
|
23
|
-
# - advanced_table_column_styling_column_headers_rails: Column Styling with Multiple Headers
|
24
22
|
|
25
23
|
react:
|
26
24
|
- advanced_table_default: Default (Required Props)
|
@@ -59,7 +57,3 @@ examples:
|
|
59
57
|
- advanced_table_column_visibility_multi: Column Visibility Control with Multi-Header Columns
|
60
58
|
- advanced_table_pinned_rows: Pinned Rows
|
61
59
|
- advanced_table_scrollbar_none: Advanced Table Scrollbar None
|
62
|
-
- advanced_table_row_styling: Row Styling
|
63
|
-
- advanced_table_column_styling: Column Styling
|
64
|
-
- advanced_table_column_styling_column_headers: Column Styling with Multiple Headers
|
65
|
-
- advanced_table_infinite_scroll: Infinite Scroll
|
@@ -34,7 +34,3 @@ export { default as AdvancedTableColumnVisibilityMulti } from './_advanced_table
|
|
34
34
|
export { default as AdvancedTableColumnVisibilityWithState } from './_advanced_table_column_visibility_with_state.jsx'
|
35
35
|
export { default as AdvancedTablePinnedRows } from './_advanced_table_pinned_rows.jsx'
|
36
36
|
export { default as AdvancedTableScrollbarNone} from './_advanced_table_scrollbar_none.jsx'
|
37
|
-
export { default as AdvancedTableRowStyling } from './_advanced_table_row_styling.jsx'
|
38
|
-
export { default as AdvancedTableColumnStyling } from './_advanced_table_column_styling.jsx'
|
39
|
-
export { default as AdvancedTableColumnStylingColumnHeaders } from './_advanced_table_column_styling_column_headers.jsx'
|
40
|
-
export { default as AdvancedTableInfiniteScroll} from './_advanced_table_infinite_scroll.jsx'
|