playbook_ui 14.17.0.pre.alpha.PLAY1967bracketlayoutphase27205 → 14.17.0.pre.alpha.PLAY20267223
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 +23 -3
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +11 -1
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +60 -128
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.jsx +58 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.md +6 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +97 -0
- data/app/pb_kits/playbook/pb_layout/_layout.scss +1 -43
- data/app/pb_kits/playbook/pb_layout/_layout.tsx +0 -2
- data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx +118 -318
- data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md +1 -1
- data/app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx +41 -78
- data/dist/chunks/{_typeahead-DZZ1n1Oe.js → _typeahead-HqfDnjRe.js} +1 -1
- data/dist/chunks/_weekday_stacked-CPNaHtxQ.js +45 -0
- data/dist/chunks/vendor.js +1 -1
- data/dist/playbook-doc.js +1 -1
- 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 +1 -1
- metadata +6 -4
- data/app/pb_kits/playbook/pb_layout/subcomponents/_participant.tsx +0 -73
- data/dist/chunks/_weekday_stacked-DO7xRd7g.js +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a84667fe2c80d67890e145f5b8841ff6c207eb717b1319029b6ae249c8248ec
|
4
|
+
data.tar.gz: 8b9b31e2525c5cf403f73dbc4a3b1adf23b2ad469edb62b9aac96cb30250c077
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 467e9b001b9069d97c5f39e257ba810f980351c93772a54474ec829b4a227017a8a11ec5dfd01f32b0acef10402766f8d8f8d1e342866d5edf0acf6ff513aec4
|
7
|
+
data.tar.gz: 6eff90636fd9b005857d8b221b5db06dd4840a94b788bccf6eae6e3869e1be5a6454d7f4c1f18f3fdba9923549fe8a3f0b814b118e60acebc7f478cc79312584
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { useContext } from "react"
|
1
|
+
import React, { useContext, useEffect } from "react"
|
2
2
|
import classnames from "classnames"
|
3
3
|
import { flexRender, Row, Cell } from "@tanstack/react-table"
|
4
4
|
|
@@ -32,9 +32,21 @@ export const RegularTableView = ({
|
|
32
32
|
table,
|
33
33
|
selectableRows,
|
34
34
|
hasAnySubRows,
|
35
|
-
|
35
|
+
stickyLeftColumn
|
36
36
|
} = useContext(AdvancedTableContext)
|
37
37
|
|
38
|
+
|
39
|
+
useEffect(() => {
|
40
|
+
if (stickyLeftColumn && Array.isArray(stickyLeftColumn)) {
|
41
|
+
stickyLeftColumn.forEach((columnId) => {
|
42
|
+
const column = table.getColumn(columnId);
|
43
|
+
if (column && column.getCanPin()) {
|
44
|
+
column.pin('left');
|
45
|
+
}
|
46
|
+
});
|
47
|
+
}
|
48
|
+
},[stickyLeftColumn, table]);
|
49
|
+
|
38
50
|
const columnPinning = table.getState().columnPinning || { left: [] };
|
39
51
|
const columnDefinitions = table.options.meta?.columnDefinitions || [];
|
40
52
|
|
@@ -82,7 +94,7 @@ export const RegularTableView = ({
|
|
82
94
|
{row.getVisibleCells().map((cell: Cell<GenericObject, unknown>, i: number) => {
|
83
95
|
const isPinnedLeft = columnPinning.left.includes(cell.column.id);
|
84
96
|
const isLastCell = cell.column.parent?.columns?.at(-1)?.id === cell.column.id;
|
85
|
-
|
97
|
+
const { column } = cell;
|
86
98
|
return (
|
87
99
|
<td
|
88
100
|
align="right"
|
@@ -90,9 +102,17 @@ export const RegularTableView = ({
|
|
90
102
|
`${cell.id}-cell position_relative`,
|
91
103
|
isChrome() ? "chrome-styles" : "",
|
92
104
|
isPinnedLeft && 'pinned-left',
|
105
|
+
stickyLeftColumn && stickyLeftColumn.length > 0 && isPinnedLeft && 'sticky-left',
|
93
106
|
isLastCell && 'last-cell',
|
94
107
|
)}
|
95
108
|
key={`${cell.id}-data`}
|
109
|
+
style={{
|
110
|
+
left: isPinnedLeft
|
111
|
+
? i === 1 //Accounting for set min-width for first column
|
112
|
+
? '180px'
|
113
|
+
: `${column.getStart("left")}px`
|
114
|
+
: undefined,
|
115
|
+
}}
|
96
116
|
>
|
97
117
|
{collapsibleTrail && i === 0 && row.depth > 0 && renderCollapsibleTrail(row.depth)}
|
98
118
|
<span id={`${cell.id}-span`}>
|
@@ -45,6 +45,7 @@ export const TableHeaderCell = ({
|
|
45
45
|
selectableRows,
|
46
46
|
hasAnySubRows,
|
47
47
|
showActionsBar,
|
48
|
+
stickyLeftColumn,
|
48
49
|
inlineRowLoading,
|
49
50
|
isActionBarVisible,
|
50
51
|
} = useContext(AdvancedTableContext);
|
@@ -76,7 +77,9 @@ const cellClassName = classnames(
|
|
76
77
|
`${isChrome() ? "chrome-styles" : ""}`,
|
77
78
|
`${enableSorting ? "table-header-cells-active" : ""}`,
|
78
79
|
{ "pinned-left": responsive === "scroll" && isPinnedLeft },
|
79
|
-
isLastHeaderCell ? "last-header-cell" : ""
|
80
|
+
isLastHeaderCell ? "last-header-cell" : "",
|
81
|
+
stickyLeftColumn && stickyLeftColumn.length > 0 && isPinnedLeft ? 'sticky-left' : "",
|
82
|
+
|
80
83
|
);
|
81
84
|
|
82
85
|
const cellId = `${loading ?
|
@@ -111,6 +114,13 @@ const isToggleExpansionEnabled =
|
|
111
114
|
colSpan={header?.colSpan}
|
112
115
|
id={cellId}
|
113
116
|
key={`${header?.id}-header`}
|
117
|
+
style={{
|
118
|
+
left: isPinnedLeft
|
119
|
+
? header?.index === 1 //Accounting for set min-width for first column
|
120
|
+
? '180px'
|
121
|
+
: `${header?.column.getStart("left")}px`
|
122
|
+
: undefined,
|
123
|
+
}}
|
114
124
|
>
|
115
125
|
{header?.isPlaceholder ? null : headerChildren && header?.index === 0 ? (
|
116
126
|
<Flex alignItems="center">
|
@@ -8,6 +8,7 @@
|
|
8
8
|
@import "../tokens/screen_sizes";
|
9
9
|
@import "../tokens/shadows";
|
10
10
|
@import "../tokens/positioning";
|
11
|
+
@import "./scss_partials/advanced_table_sticky_mixin";
|
11
12
|
|
12
13
|
.pb_advanced_table {
|
13
14
|
$border-color: 1px solid $border_light;
|
@@ -93,8 +94,8 @@
|
|
93
94
|
border-right: 1px solid $border_light !important;
|
94
95
|
}
|
95
96
|
.table-header-cells-custom {
|
96
|
-
text-align:center;
|
97
|
-
[class^=pb_checkbox_kit] .pb_checkbox_label {
|
97
|
+
text-align: center;
|
98
|
+
[class^="pb_checkbox_kit"] .pb_checkbox_label {
|
98
99
|
padding-left: 0px;
|
99
100
|
}
|
100
101
|
}
|
@@ -104,7 +105,7 @@
|
|
104
105
|
}
|
105
106
|
// Right align header content of first data column in selectable row no subrow setup
|
106
107
|
&.selectable-rows-enabled {
|
107
|
-
tr {
|
108
|
+
tr {
|
108
109
|
th:nth-child(2),
|
109
110
|
.pb_flex_kit_orientation_row_justify_content_start_align_items_center_spacing_none.gap_none {
|
110
111
|
justify-content: flex-end;
|
@@ -122,7 +123,7 @@
|
|
122
123
|
}
|
123
124
|
|
124
125
|
// Set fixed width for checkbox column
|
125
|
-
&.table-header-cells-custom,
|
126
|
+
&.table-header-cells-custom,
|
126
127
|
&.checkbox-cell.checkbox-cell-header {
|
127
128
|
width: 40px !important;
|
128
129
|
min-width: 40px !important;
|
@@ -145,7 +146,7 @@
|
|
145
146
|
.checkbox-cell {
|
146
147
|
display: flex;
|
147
148
|
justify-content: center;
|
148
|
-
[class^=pb_checkbox_kit] .pb_checkbox_label {
|
149
|
+
[class^="pb_checkbox_kit"] .pb_checkbox_label {
|
149
150
|
padding-left: 0px;
|
150
151
|
}
|
151
152
|
}
|
@@ -173,7 +174,7 @@
|
|
173
174
|
}
|
174
175
|
}
|
175
176
|
td {
|
176
|
-
[class^=pb_text_input_kit] .text_input_wrapper input {
|
177
|
+
[class^="pb_text_input_kit"] .text_input_wrapper input {
|
177
178
|
padding: 0 $space_xxs;
|
178
179
|
font-size: 14px;
|
179
180
|
text-align: right;
|
@@ -230,12 +231,12 @@
|
|
230
231
|
max-height: 1920px;
|
231
232
|
overflow-y: auto;
|
232
233
|
}
|
233
|
-
|
234
|
+
|
234
235
|
// Fullscreen
|
235
236
|
&.advanced-table-allow-fullscreen {
|
236
237
|
transition: all 0.3s ease;
|
237
238
|
}
|
238
|
-
|
239
|
+
|
239
240
|
&.advanced-table-fullscreen {
|
240
241
|
background-color: $bg_light;
|
241
242
|
box-sizing: border-box;
|
@@ -248,7 +249,10 @@
|
|
248
249
|
z-index: $z_10;
|
249
250
|
|
250
251
|
.pb_table {
|
251
|
-
th,
|
252
|
+
th,
|
253
|
+
td,
|
254
|
+
div,
|
255
|
+
button {
|
252
256
|
font-size: calc(100%);
|
253
257
|
}
|
254
258
|
box-sizing: border-box;
|
@@ -266,7 +270,7 @@
|
|
266
270
|
}
|
267
271
|
}
|
268
272
|
}
|
269
|
-
|
273
|
+
|
270
274
|
.advanced-table-fullscreen-header {
|
271
275
|
background-color: $white;
|
272
276
|
height: 44px;
|
@@ -372,78 +376,32 @@
|
|
372
376
|
width: 2px;
|
373
377
|
}
|
374
378
|
|
379
|
+
// Sticky Left Columns Styling
|
380
|
+
&[class*="advanced-table-sticky-left-columns"] {
|
381
|
+
overflow-x: scroll;
|
382
|
+
.sticky-left {
|
383
|
+
position: sticky !important;
|
384
|
+
z-index: 2;
|
385
|
+
background-color: $white;
|
386
|
+
box-shadow: $shadow_deep;
|
387
|
+
}
|
388
|
+
@include advanced-table-sticky-mixin(
|
389
|
+
$border_light,
|
390
|
+
$white,
|
391
|
+
lighten($silver, $opacity_7)
|
392
|
+
);
|
393
|
+
}
|
394
|
+
|
375
395
|
// Responsive Styles
|
376
396
|
@media only screen and (max-width: $screen-xl-min) {
|
377
397
|
&[class*="advanced-table-responsive-scroll"] {
|
378
|
-
border-radius: 4px;
|
379
|
-
box-shadow: 1px 0 0 0px $border_light,
|
380
|
-
-1px 0 0 0px $border_light;
|
381
|
-
display: block;
|
382
398
|
overflow-x: auto;
|
383
399
|
width: 100%;
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
[class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:last-child {
|
390
|
-
border-right-width: 0px;
|
391
|
-
}
|
392
|
-
[class^=pb_table].table-sm.table-card tbody tr:last-child td:first-child,
|
393
|
-
[class^=pb_table].table-sm.table-card tbody tr:last-child td:last-child {
|
394
|
-
border-radius: 0 0 0 0;
|
395
|
-
}
|
396
|
-
.table-header-cells:first-child,
|
397
|
-
td:first-child,
|
398
|
-
.pb_table_td:first-child,
|
399
|
-
.checkbox-cell.checkbox-cell-header:first-child,
|
400
|
-
[class*="pinned-left"] {
|
401
|
-
background-color: $white;
|
402
|
-
box-shadow: $shadow_deep !important;
|
403
|
-
position: sticky !important;
|
404
|
-
left: 0;
|
405
|
-
z-index: 2;
|
406
|
-
}
|
407
|
-
.bg-silver td:first-child {
|
408
|
-
background-color: lighten($silver, $opacity_7);
|
409
|
-
}
|
410
|
-
.bg-white td:first-child {
|
411
|
-
background-color: $white;
|
412
|
-
}
|
413
|
-
|
414
|
-
.virtualized-table-row {
|
415
|
-
&.bg-silver td:first-child {
|
416
|
-
background-color: lighten($silver, $opacity_7);
|
417
|
-
}
|
418
|
-
&.bg-white td:first-child {
|
419
|
-
background-color: $white;
|
420
|
-
}
|
421
|
-
&.bg-row-selection td:first-child {
|
422
|
-
background-color: $info_subtle;
|
423
|
-
}
|
424
|
-
}
|
425
|
-
|
426
|
-
.row-selection-actions-card {
|
427
|
-
border-right-width: 0px;
|
428
|
-
border-left-width: 0px;
|
429
|
-
position: sticky;
|
430
|
-
top: 0;
|
431
|
-
left: 0;
|
432
|
-
border-radius: unset;
|
433
|
-
}
|
434
|
-
.checkbox-cell {
|
435
|
-
display: table-cell !important;
|
436
|
-
}
|
437
|
-
.sticky-header {
|
438
|
-
thead {
|
439
|
-
th:first-child {
|
440
|
-
box-shadow: 1px 0 10px -2px $border_light !important;
|
441
|
-
}
|
442
|
-
}
|
443
|
-
.pb_advanced_table_header {
|
444
|
-
box-shadow: none !important;
|
445
|
-
}
|
446
|
-
}
|
400
|
+
@include advanced-table-sticky-mixin(
|
401
|
+
$border_light,
|
402
|
+
$white,
|
403
|
+
lighten($silver, $opacity_7)
|
404
|
+
);
|
447
405
|
}
|
448
406
|
}
|
449
407
|
@media only screen and (min-width: $screen-xl-min) {
|
@@ -480,7 +438,9 @@
|
|
480
438
|
}
|
481
439
|
}
|
482
440
|
|
483
|
-
.table-header-cells:first-child,
|
441
|
+
.table-header-cells:first-child,
|
442
|
+
td:first-child,
|
443
|
+
.pb_table_td:first-child {
|
484
444
|
box-shadow: 1px 0px 0px 0px $border_dark !important;
|
485
445
|
}
|
486
446
|
|
@@ -488,12 +448,14 @@
|
|
488
448
|
background-color: $border_dark !important;
|
489
449
|
}
|
490
450
|
|
491
|
-
.sort-button-icon,
|
451
|
+
.sort-button-icon,
|
452
|
+
.header-sort-button > div,
|
453
|
+
.pb_th_link {
|
492
454
|
color: $white !important;
|
493
455
|
}
|
494
456
|
|
495
457
|
.gray-icon {
|
496
|
-
color:
|
458
|
+
color: $text_dk_light !important;
|
497
459
|
}
|
498
460
|
|
499
461
|
.sticky-header {
|
@@ -536,63 +498,33 @@
|
|
536
498
|
z-index: $z_10;
|
537
499
|
}
|
538
500
|
|
501
|
+
&[class*="advanced-table-sticky-left-columns"] {
|
502
|
+
.sticky-left {
|
503
|
+
background-color: $bg_dark;
|
504
|
+
}
|
505
|
+
@include advanced-table-sticky-mixin(
|
506
|
+
$border_dark,
|
507
|
+
$bg_dark_card,
|
508
|
+
$bg_dark
|
509
|
+
);
|
510
|
+
}
|
511
|
+
|
539
512
|
// Dark Mode Responsive Styles
|
540
513
|
@media only screen and (max-width: $screen-xl-min) {
|
541
514
|
&[class*="advanced-table-responsive-scroll"] {
|
542
|
-
border-radius: 4px;
|
543
|
-
box-shadow: 1px 0 0 0px $border_dark,
|
544
|
-
-1px 0 0 0px $border_dark;
|
545
|
-
display: block;
|
546
|
-
overflow-x: scroll;
|
547
|
-
width: 100%;
|
548
|
-
[class^=pb_table].table-sm.table-card thead tr th:first-child,
|
549
|
-
[class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:first-child {
|
550
|
-
border-left-width: 0px;
|
551
|
-
}
|
552
|
-
[class^=pb_table].table-sm.table-card thead tr th:last-child,
|
553
|
-
[class^=pb_table].table-sm:not(.no-hover).table-card tbody tr td:last-child {
|
554
|
-
border-right-width: 0px;
|
555
|
-
}
|
556
|
-
[class^=pb_table].table-sm.table-card tbody tr:last-child td:first-child,
|
557
|
-
[class^=pb_table].table-sm.table-card tbody tr:last-child td:last-child {
|
558
|
-
border-radius: 0 0 0 0;
|
559
|
-
}
|
560
|
-
.table-header-cells:first-child,
|
561
|
-
td:first-child,
|
562
|
-
.pb_table_td:first-child,
|
563
|
-
.checkbox-cell.checkbox-cell-header:first-child,
|
564
|
-
[class*="pinned-left"] {
|
565
|
-
background: $bg_dark_card;
|
566
|
-
border-right: $border_dark;
|
567
|
-
box-shadow: $shadow_deep !important;
|
568
|
-
position: sticky !important;
|
569
|
-
}
|
570
|
-
.bg-silver td:first-child {
|
571
|
-
background-color: $bg_dark;
|
572
|
-
}
|
573
|
-
.bg-white td:first-child {
|
574
|
-
background-color: $bg_dark_card;
|
575
|
-
}
|
576
|
-
|
577
|
-
// Dark mode virtualized rows
|
578
|
-
.virtualized-table-row {
|
579
|
-
&.bg-silver td:first-child {
|
580
|
-
background-color: $bg_dark;
|
581
|
-
}
|
582
|
-
&.bg-white td:first-child {
|
583
|
-
background-color: $bg_dark_card;
|
584
|
-
}
|
585
|
-
}
|
586
|
-
|
587
515
|
.sticky-header {
|
588
516
|
thead {
|
589
517
|
th:first-child {
|
590
|
-
background: $
|
591
|
-
box-shadow: 1px 0 10px -2px $border_dark !important;
|
518
|
+
background: $bg_dark_card;
|
592
519
|
}
|
593
520
|
}
|
594
521
|
}
|
522
|
+
@include advanced-table-sticky-mixin(
|
523
|
+
$border_dark,
|
524
|
+
$bg_dark_card,
|
525
|
+
$bg_dark
|
526
|
+
);
|
595
527
|
}
|
596
528
|
}
|
597
529
|
}
|
598
|
-
}
|
530
|
+
}
|
@@ -87,6 +87,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
87
87
|
showActionsBar = true,
|
88
88
|
selectableRows,
|
89
89
|
sortControl,
|
90
|
+
stickyLeftColumn,
|
90
91
|
tableData,
|
91
92
|
tableOptions,
|
92
93
|
tableProps,
|
@@ -233,6 +234,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
233
234
|
'advanced-table-fullscreen': isFullscreen,
|
234
235
|
'advanced-table-allow-fullscreen': allowFullScreen
|
235
236
|
},
|
237
|
+
{'advanced-table-sticky-left-columns': stickyLeftColumn && stickyLeftColumn.length > 0},
|
236
238
|
globalProps(props),
|
237
239
|
className
|
238
240
|
);
|
@@ -291,6 +293,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
291
293
|
setExpanded={setExpanded}
|
292
294
|
showActionsBar={showActionsBar}
|
293
295
|
sortControl={sortControl}
|
296
|
+
stickyLeftColumn={stickyLeftColumn}
|
294
297
|
subRowHeaders={tableOptions?.subRowHeaders}
|
295
298
|
table={table}
|
296
299
|
tableContainerRef={tableWrapperRef}
|
@@ -0,0 +1,58 @@
|
|
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 AdvancedTableStickyColumns = (props) => {
|
6
|
+
const columnDefinitions = [
|
7
|
+
{
|
8
|
+
accessor: "year",
|
9
|
+
label: "Year",
|
10
|
+
id: "year",
|
11
|
+
cellAccessors: ["quarter", "month", "day"],
|
12
|
+
},
|
13
|
+
{
|
14
|
+
accessor: "newEnrollments",
|
15
|
+
label: "New Enrollments",
|
16
|
+
id: "newEnrollments",
|
17
|
+
},
|
18
|
+
{
|
19
|
+
accessor: "scheduledMeetings",
|
20
|
+
label: "Scheduled Meetings",
|
21
|
+
id: "scheduledMeetings",
|
22
|
+
},
|
23
|
+
{
|
24
|
+
accessor: "attendanceRate",
|
25
|
+
label: "Attendance Rate",
|
26
|
+
id: "attendanceRate",
|
27
|
+
},
|
28
|
+
{
|
29
|
+
accessor: "completedClasses",
|
30
|
+
label: "Completed Classes",
|
31
|
+
id: "completedClasses",
|
32
|
+
},
|
33
|
+
{
|
34
|
+
accessor: "classCompletionRate",
|
35
|
+
label: "Class Completion Rate",
|
36
|
+
id: "classCompletionRate",
|
37
|
+
},
|
38
|
+
{
|
39
|
+
accessor: "graduatedStudents",
|
40
|
+
label: "Graduated Students",
|
41
|
+
id: "graduatedStudents",
|
42
|
+
},
|
43
|
+
]
|
44
|
+
|
45
|
+
return (
|
46
|
+
<div>
|
47
|
+
<AdvancedTable
|
48
|
+
columnDefinitions={columnDefinitions}
|
49
|
+
responsive="none"
|
50
|
+
stickyLeftColumn={["year", "newEnrollments"]}
|
51
|
+
tableData={MOCK_DATA}
|
52
|
+
{...props}
|
53
|
+
/>
|
54
|
+
</div>
|
55
|
+
)
|
56
|
+
}
|
57
|
+
|
58
|
+
export default AdvancedTableStickyColumns
|
@@ -0,0 +1,6 @@
|
|
1
|
+
To render sticky columns for the Advanced Table, you can use the `stickyLeftColumn` prop. This prop expects an array of the column ids you want to be sticky.
|
2
|
+
|
3
|
+
To achieve this:
|
4
|
+
- Make sure to provide an id for each column via columnDefinitions as shown below. Id can be any string.
|
5
|
+
- One or multiple columns can be made sticky, it is recommended to set the ids within `stickyLeftColumn` in the order in which the columns are rendered.
|
6
|
+
- It is recommended to set `responsive` to none when using `stickyLeftColumn` since responsive just makes the first column sticky and the slightly different styling for `responsive` and `stickyLeftColumn` may override each other in unexpected ways.
|
@@ -25,6 +25,7 @@ examples:
|
|
25
25
|
- advanced_table_collapsible_trail: Collapsible Trail
|
26
26
|
- advanced_table_table_options: Table Options
|
27
27
|
- advanced_table_table_props: Table Props
|
28
|
+
- advanced_table_sticky_columns: Sticky Columns
|
28
29
|
- advanced_table_table_props_sticky_header: Table Props Sticky Header
|
29
30
|
- advanced_table_inline_row_loading: Inline Row Loading
|
30
31
|
- advanced_table_responsive: Responsive Tables
|
@@ -22,4 +22,5 @@ export { default as AdvancedTableSelectableRowsActions } from './_advanced_table
|
|
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
24
|
export { default as AdvancedTableInlineEditing } from './_advanced_table_inline_editing.jsx'
|
25
|
-
export { default as AdvancedTableFullscreen } from './_advanced_table_fullscreen.jsx'
|
25
|
+
export { default as AdvancedTableFullscreen } from './_advanced_table_fullscreen.jsx'
|
26
|
+
export { default as AdvancedTableStickyColumns } from './_advanced_table_sticky_columns.jsx'
|
@@ -0,0 +1,97 @@
|
|
1
|
+
@mixin advanced-table-sticky-mixin(
|
2
|
+
$border-color,
|
3
|
+
$bg-main,
|
4
|
+
$bg-secondary,
|
5
|
+
$highlight: $info_subtle
|
6
|
+
) {
|
7
|
+
border-radius: 4px;
|
8
|
+
box-shadow: 1px 0 0 0px $border-color, -1px 0 0 0px $border-color;
|
9
|
+
display: block;
|
10
|
+
[class^="pb_table"].table-sm.table-card thead tr th:first-child,
|
11
|
+
[class^="pb_table"].table-sm:not(.no-hover).table-card
|
12
|
+
tbody
|
13
|
+
tr
|
14
|
+
td:first-child {
|
15
|
+
border-left-width: 0px !important;
|
16
|
+
}
|
17
|
+
[class^="pb_table"].table-sm.table-card thead tr th:last-child,
|
18
|
+
[class^="pb_table"].table-sm:not(.no-hover).table-card
|
19
|
+
tbody
|
20
|
+
tr
|
21
|
+
td:last-child {
|
22
|
+
border-right-width: 0px;
|
23
|
+
}
|
24
|
+
[class^="pb_table"].table-sm.table-card tbody tr:last-child td:first-child,
|
25
|
+
[class^="pb_table"].table-sm.table-card tbody tr:last-child td:last-child {
|
26
|
+
border-radius: 0 0 0 0;
|
27
|
+
}
|
28
|
+
.table-header-cells:first-child,
|
29
|
+
td:first-child,
|
30
|
+
.pb_table_td:first-child,
|
31
|
+
.checkbox-cell.checkbox-cell-header:first-child,
|
32
|
+
.table-header-cells.sticky-left,
|
33
|
+
[class*="pinned-left"] {
|
34
|
+
background-color: $bg-main;
|
35
|
+
box-shadow: $shadow_deep !important;
|
36
|
+
position: sticky !important;
|
37
|
+
left: 0;
|
38
|
+
z-index: 2;
|
39
|
+
}
|
40
|
+
|
41
|
+
.bg-silver {
|
42
|
+
td:first-child,
|
43
|
+
.sticky-left {
|
44
|
+
background-color: $bg-secondary;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
.bg-row-selection {
|
48
|
+
td:first-child,
|
49
|
+
.sticky-left {
|
50
|
+
background-color: $highlight;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
.bg-white {
|
55
|
+
td:first-child,
|
56
|
+
.sticky-left {
|
57
|
+
background-color: $bg-main;
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
.virtualized-table-row {
|
62
|
+
&.bg-silver td:first-child {
|
63
|
+
background-color: $bg-secondary;
|
64
|
+
}
|
65
|
+
&.bg-white td:first-child {
|
66
|
+
background-color: $bg-main;
|
67
|
+
}
|
68
|
+
&.bg-row-selection td:first-child {
|
69
|
+
background-color: $highlight;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
.row-selection-actions-card {
|
74
|
+
border-right-width: 0px;
|
75
|
+
border-left-width: 0px;
|
76
|
+
position: sticky;
|
77
|
+
top: 0;
|
78
|
+
left: 0;
|
79
|
+
border-radius: unset;
|
80
|
+
}
|
81
|
+
|
82
|
+
.checkbox-cell {
|
83
|
+
display: table-cell !important;
|
84
|
+
}
|
85
|
+
|
86
|
+
.sticky-header {
|
87
|
+
thead {
|
88
|
+
th:first-child {
|
89
|
+
box-shadow: 1px 0 10px -2px $border-color !important;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
.pb_advanced_table_header {
|
94
|
+
box-shadow: none !important;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
@@ -210,51 +210,10 @@ $bracket-border-width: 4px;
|
|
210
210
|
border-right: $bracket-border-width solid $border_light;
|
211
211
|
}
|
212
212
|
|
213
|
-
.polygon_node {
|
214
|
-
position: absolute;
|
215
|
-
top: calc(50% - 5px);
|
216
|
-
right: -10px;
|
217
|
-
|
218
|
-
width: 0;
|
219
|
-
height: 0;
|
220
|
-
border-top: 5px solid transparent;
|
221
|
-
border-bottom: 5px solid transparent;
|
222
|
-
border-left: 10px solid $border_light;
|
223
|
-
}
|
224
|
-
|
225
213
|
.layout_round_label {
|
226
214
|
display: none;
|
227
215
|
}
|
228
216
|
|
229
|
-
.layout_participant,
|
230
|
-
.layout_participant_winner,
|
231
|
-
.layout_participant_self {
|
232
|
-
height: 60px;
|
233
|
-
}
|
234
|
-
|
235
|
-
.layout_participant_winner,
|
236
|
-
.layout_participant_self {
|
237
|
-
position: relative;
|
238
|
-
|
239
|
-
&::after {
|
240
|
-
content: "";
|
241
|
-
position: absolute;
|
242
|
-
top: 0;
|
243
|
-
width: 4px;
|
244
|
-
height: 100%;
|
245
|
-
}
|
246
|
-
}
|
247
|
-
|
248
|
-
.layout_participant_winner::after {
|
249
|
-
right: 0;
|
250
|
-
background: $product_6_highlight;
|
251
|
-
}
|
252
|
-
|
253
|
-
.layout_participant_self::after {
|
254
|
-
left: 0;
|
255
|
-
background: $category_1;
|
256
|
-
}
|
257
|
-
|
258
217
|
@media (max-width: $screen-md-max) {
|
259
218
|
flex-direction: column;
|
260
219
|
.layout_round_label {
|
@@ -262,8 +221,7 @@ $bracket-border-width: 4px;
|
|
262
221
|
}
|
263
222
|
.layout_round .layout_game::after,
|
264
223
|
.connector_container,
|
265
|
-
.half_box
|
266
|
-
.polygon_node {
|
224
|
+
.half_box {
|
267
225
|
display: none !important;
|
268
226
|
}
|
269
227
|
}
|
@@ -6,7 +6,6 @@ import { GlobalProps, globalProps, globalInlineProps } from '../utilities/global
|
|
6
6
|
|
7
7
|
import { Round, RoundLabel } from "./subcomponents/_round";
|
8
8
|
import Game from "./subcomponents/_game";
|
9
|
-
import Participant from "./subcomponents/_participant";
|
10
9
|
|
11
10
|
type LayoutPropTypes = {
|
12
11
|
aria?: {[key: string]: string},
|
@@ -220,6 +219,5 @@ Layout.Footer = Footer
|
|
220
219
|
Layout.Round = Round
|
221
220
|
Layout.Game = Game
|
222
221
|
Layout.RoundLabel = RoundLabel
|
223
|
-
Layout.Participant = Participant
|
224
222
|
|
225
223
|
export default Layout
|