playbook_ui 14.18.1.pre.rc.0 → 14.19.0.pre.alpha.PLAY21297675
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/_playbook.scss +0 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +11 -1
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +148 -15
- data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +20 -3
- data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +23 -13
- data/app/pb_kits/playbook/pb_advanced_table/Utilities/VisibilityTree.ts +47 -0
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +313 -21
- data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +12 -3
- data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +6 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +0 -6
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.jsx +80 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.md +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.html.erb +58 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.md +3 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.jsx +57 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.md +4 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx +62 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx +82 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx +65 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +5 -1
- data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.jsx → _advanced_table_selectable_rows_no_subrows_react.jsx} +2 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +3 -2
- data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +10 -5
- data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +7 -2
- data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +106 -0
- data/app/pb_kits/playbook/pb_advanced_table/index.js +228 -11
- data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +1 -0
- data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +9 -1
- data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -3
- data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +1 -2
- data/app/pb_kits/playbook/pb_avatar/_avatar.scss +4 -0
- data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +3 -0
- data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +3 -3
- data/app/pb_kits/playbook/pb_avatar/avatar.rb +2 -0
- data/app/pb_kits/playbook/pb_avatar/avatar.test.js +18 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.html.erb +5 -0
- data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.jsx +16 -0
- data/app/pb_kits/playbook/pb_avatar/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_avatar/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
- data/app/pb_kits/playbook/pb_card/card.rb +12 -0
- data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +2 -2
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.html.erb +22 -1
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.html.erb +55 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line_rails.md +5 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_rails.md +5 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.jsx +59 -0
- data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners_react.md +1 -0
- data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
- data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +11 -1
- data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +11 -1
- data/app/pb_kits/playbook/pb_draggable/index.js +4 -2
- data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +33 -5
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +5 -0
- data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +5 -16
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +5 -2
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +28 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +17 -64
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +58 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_autocomplete_and_custom_display.jsx → _dropdown_with_autocomplete_with_subcomponents.jsx} +11 -25
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.md +1 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +61 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md +2 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +52 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.md +2 -0
- data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +7 -4
- data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +4 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +45 -1
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +10 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +3 -0
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +12 -2
- data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +3 -1
- data/app/pb_kits/playbook/pb_dropdown/index.js +57 -0
- data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +26 -0
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +3 -4
- data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +4 -4
- data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +8 -1
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.html.erb +27 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.html.erb +7 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.html.erb +12 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.html.erb +23 -0
- data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +5 -1
- data/app/pb_kits/playbook/pb_empty_state/empty_state.html.erb +19 -0
- data/app/pb_kits/playbook/pb_empty_state/empty_state.rb +123 -0
- data/app/pb_kits/playbook/pb_message/_message.tsx +3 -0
- data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.html.erb +9 -0
- data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.jsx +21 -0
- data/app/pb_kits/playbook/pb_message/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_message/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_message/message.html.erb +2 -1
- data/app/pb_kits/playbook/pb_message/message.rb +1 -0
- data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -1
- data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +1 -1
- data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +5 -4
- data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +2 -2
- data/app/pb_kits/playbook/pb_select/_select.scss +10 -0
- data/app/pb_kits/playbook/pb_select/docs/_select_error.html.erb +1 -1
- data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +7 -7
- data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +5 -5
- data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb +1 -1
- data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.html.erb +5 -1
- data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.html.erb +8 -1
- data/app/pb_kits/playbook/pb_user/_user.tsx +3 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.html.erb +6 -0
- data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.jsx +16 -0
- data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
- data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
- data/app/pb_kits/playbook/pb_user/user.html.erb +2 -1
- data/app/pb_kits/playbook/pb_user/user.rb +1 -0
- data/dist/chunks/{_typeahead-D8CsVBZO.js → _typeahead-BPSIWtFT.js} +3 -3
- data/dist/chunks/_weekday_stacked-BeuPAmxG.js +45 -0
- data/dist/chunks/{lib-BmTAc7Nc.js → lib-B20MXZcW.js} +2 -2
- data/dist/chunks/{pb_form_validation-BWjy4bFn.js → pb_form_validation-WWvUXPKD.js} +1 -1
- data/dist/chunks/vendor.js +1 -1
- data/dist/menu.yml +6 -14
- data/dist/playbook-doc.js +2 -2
- 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 +52 -21
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +0 -1
- data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +0 -79
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +0 -3
- data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +0 -72
- data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +0 -53
- data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +0 -7
- data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +0 -1
- data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +0 -19
- data/dist/chunks/_weekday_stacked-CHQsoCdP.js +0 -45
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_react.md → _advanced_table_selectable_rows.md} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.html.erb → _advanced_table_selectable_rows_no_subrows_rails.html.erb} +0 -0
- /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.html.erb → _advanced_table_selectable_rows_rails.html.erb} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_line.md → _draggable_drop_zones_line_react.md} +0 -0
- /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_event_listeners.md → _draggable_event_listeners_rails.md} +0 -0
@@ -13,6 +13,26 @@
|
|
13
13
|
.pb_advanced_table {
|
14
14
|
$border-color: 1px solid $border_light;
|
15
15
|
|
16
|
+
// Base vertical border color variable setup
|
17
|
+
--column-border-color: #{$border_light};
|
18
|
+
|
19
|
+
// Define color tokens once
|
20
|
+
$border_color_options: (
|
21
|
+
"text_lt_default": $text_lt_default,
|
22
|
+
"text_lt_light": $text_lt_light,
|
23
|
+
"text_lt_lighter": $text_lt_lighter,
|
24
|
+
"text_dk_default": $text_dk_default,
|
25
|
+
"text_dk_light": $text_dk_light,
|
26
|
+
"text_dk_lighter": $text_dk_lighter
|
27
|
+
);
|
28
|
+
|
29
|
+
// Generate classes for each color option
|
30
|
+
@each $color_name, $color_value in $border_color_options {
|
31
|
+
&.column-group-border-#{$color_name} {
|
32
|
+
--column-border-color: #{$color_value};
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
16
36
|
[id$="-span"] {
|
17
37
|
word-wrap: normal;
|
18
38
|
}
|
@@ -33,6 +53,15 @@
|
|
33
53
|
width: 100%;
|
34
54
|
}
|
35
55
|
|
56
|
+
.column-visibility-dropdown-wrapper {
|
57
|
+
position: unset !important;
|
58
|
+
}
|
59
|
+
.column-visibility-dropdown {
|
60
|
+
width: unset !important;
|
61
|
+
right: $space_xxs;
|
62
|
+
text-align: left;
|
63
|
+
}
|
64
|
+
|
36
65
|
// Virtualized table styles
|
37
66
|
.virtualized-table-row {
|
38
67
|
display: table !important;
|
@@ -346,13 +375,133 @@
|
|
346
375
|
}
|
347
376
|
}
|
348
377
|
|
349
|
-
//
|
378
|
+
// First column separator/border
|
350
379
|
.table-header-cells:first-child,
|
351
380
|
.table-header-cells-custom:first-child,
|
352
381
|
td:first-child,
|
353
382
|
.pb_table_td:first-child,
|
354
383
|
.checkbox-cell.checkbox-cell-header:first-child {
|
355
|
-
box-shadow: 1px 0px 0px 0px
|
384
|
+
box-shadow: 1px 0px 0px 0px var(--column-border-color) !important;
|
385
|
+
}
|
386
|
+
|
387
|
+
// Color for collapsible trail
|
388
|
+
.collapsible-trail {
|
389
|
+
background-color: $border_light !important;
|
390
|
+
position: absolute;
|
391
|
+
top: 0;
|
392
|
+
bottom: 0;
|
393
|
+
width: 2px;
|
394
|
+
}
|
395
|
+
|
396
|
+
// Make sure all horizontal borders use the default border color
|
397
|
+
tr, th, td {
|
398
|
+
border-top-color: $border_light !important;
|
399
|
+
border-bottom-color: $border_light !important;
|
400
|
+
}
|
401
|
+
|
402
|
+
// Apply border colors when columnGroupBorderColor is set
|
403
|
+
&[class*="column-group-border-"] {
|
404
|
+
// For top-level column groups
|
405
|
+
.pb_advanced_table_header {
|
406
|
+
// The main column group headers
|
407
|
+
> tr:first-child {
|
408
|
+
th[colspan]:not([colspan="1"]):not(:last-child) {
|
409
|
+
border-right: 1px solid var(--column-border-color) !important;
|
410
|
+
}
|
411
|
+
}
|
412
|
+
|
413
|
+
// Subgroup headers
|
414
|
+
> tr:nth-child(2) {
|
415
|
+
th[colspan]:not([colspan="1"]):not(:last-child) {
|
416
|
+
border-right: 1px solid var(--column-border-color) !important;
|
417
|
+
}
|
418
|
+
|
419
|
+
// Last cell in each subgroup
|
420
|
+
th.last-header-cell:not(:last-child) {
|
421
|
+
border-right: 1px solid var(--column-border-color) !important;
|
422
|
+
}
|
423
|
+
}
|
424
|
+
|
425
|
+
// Individual column headers at subgroup boundaries
|
426
|
+
> tr:last-child {
|
427
|
+
// Last cell in each subgroup
|
428
|
+
th.last-header-cell:not(:last-child) {
|
429
|
+
border-right: 1px solid var(--column-border-color) !important;
|
430
|
+
}
|
431
|
+
}
|
432
|
+
}
|
433
|
+
|
434
|
+
// For data cells at column group boundaries
|
435
|
+
.pb_advanced_table_body {
|
436
|
+
// Apply to cells that are at column group boundaries
|
437
|
+
td.last-cell:not(:last-child),
|
438
|
+
.pb_table_td.last-cell:not(:last-child) {
|
439
|
+
border-right: 1px solid var(--column-border-color) !important;
|
440
|
+
}
|
441
|
+
|
442
|
+
// Virtualized row cells at column group boundaries
|
443
|
+
tr.virtualized-table-row {
|
444
|
+
td.last-cell:not(:last-child) {
|
445
|
+
border-right: 1px solid var(--column-border-color) !important;
|
446
|
+
}
|
447
|
+
}
|
448
|
+
}
|
449
|
+
|
450
|
+
// Sub-row headers
|
451
|
+
.toggle-content {
|
452
|
+
td {
|
453
|
+
border-bottom: 1px solid $border_light !important;
|
454
|
+
}
|
455
|
+
}
|
456
|
+
}
|
457
|
+
|
458
|
+
// Restore vertical border styling when verticalBorder is true
|
459
|
+
.pb_table[data-vertical-border="true"] {
|
460
|
+
.pb_advanced_table_header {
|
461
|
+
> tr:not(:first-child) {
|
462
|
+
th:not(:last-child) {
|
463
|
+
border-right: 1px solid $border_light !important;
|
464
|
+
}
|
465
|
+
}
|
466
|
+
}
|
467
|
+
|
468
|
+
.pb_advanced_table_body {
|
469
|
+
td:not(:last-child),
|
470
|
+
.pb_table_td:not(:last-child) {
|
471
|
+
border-right: 1px solid $border_light !important;
|
472
|
+
}
|
473
|
+
}
|
474
|
+
|
475
|
+
tr.virtualized-table-row {
|
476
|
+
td:not(:last-child) {
|
477
|
+
border-right: 1px solid $border_light !important;
|
478
|
+
}
|
479
|
+
}
|
480
|
+
|
481
|
+
// When both verticalBorder AND columnGroupBorderColor are set,
|
482
|
+
// override the default border-light with the custom color
|
483
|
+
&.pb_advanced_table[class*="column-group-border-"] {
|
484
|
+
.pb_advanced_table_header {
|
485
|
+
> tr:not(:first-child) {
|
486
|
+
th:not(:last-child) {
|
487
|
+
border-right: 1px solid var(--column-border-color) !important;
|
488
|
+
}
|
489
|
+
}
|
490
|
+
}
|
491
|
+
|
492
|
+
.pb_advanced_table_body {
|
493
|
+
td:not(:last-child),
|
494
|
+
.pb_table_td:not(:last-child) {
|
495
|
+
border-right: 1px solid var(--column-border-color) !important;
|
496
|
+
}
|
497
|
+
}
|
498
|
+
|
499
|
+
tr.virtualized-table-row {
|
500
|
+
td:not(:last-child) {
|
501
|
+
border-right: 1px solid var(--column-border-color) !important;
|
502
|
+
}
|
503
|
+
}
|
504
|
+
}
|
356
505
|
}
|
357
506
|
|
358
507
|
@include chrome_styles($border-color);
|
@@ -375,12 +524,25 @@
|
|
375
524
|
height: auto;
|
376
525
|
}
|
377
526
|
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
527
|
+
// Mixin to apply sticky column styles for different color modes and themes
|
528
|
+
@mixin apply-sticky-colors($theme) {
|
529
|
+
@each $color_name, $color_value in $border_color_options {
|
530
|
+
&.column-group-border-#{$color_name} {
|
531
|
+
@if $theme == "light" {
|
532
|
+
@include advanced-table-sticky-mixin(
|
533
|
+
$color_value,
|
534
|
+
$white,
|
535
|
+
lighten($silver, $opacity_7)
|
536
|
+
);
|
537
|
+
} @else if $theme == "dark" {
|
538
|
+
@include advanced-table-sticky-mixin(
|
539
|
+
$color_value,
|
540
|
+
$bg_dark_card,
|
541
|
+
$bg_dark
|
542
|
+
);
|
543
|
+
}
|
544
|
+
}
|
545
|
+
}
|
384
546
|
}
|
385
547
|
|
386
548
|
// Sticky Left Columns Styling
|
@@ -397,6 +559,9 @@
|
|
397
559
|
$white,
|
398
560
|
lighten($silver, $opacity_7)
|
399
561
|
);
|
562
|
+
|
563
|
+
// Apply border colors for sticky columns
|
564
|
+
@include apply-sticky-colors("light");
|
400
565
|
}
|
401
566
|
|
402
567
|
// Responsive Styles
|
@@ -404,13 +569,29 @@
|
|
404
569
|
&[class*="advanced-table-responsive-scroll"] {
|
405
570
|
overflow-x: auto;
|
406
571
|
width: 100%;
|
572
|
+
|
573
|
+
// These are the responsive borders that should NOT inherit the custom color
|
407
574
|
@include advanced-table-sticky-mixin(
|
408
575
|
$border_light,
|
409
576
|
$white,
|
410
577
|
lighten($silver, $opacity_7)
|
411
578
|
);
|
579
|
+
|
580
|
+
// Override any columnGroupBorderColor inheritance for responsive borders
|
581
|
+
.sticky-left {
|
582
|
+
box-shadow: $shadow_deep !important;
|
583
|
+
}
|
584
|
+
|
585
|
+
.pb_advanced_table_header,
|
586
|
+
.pb_advanced_table_body {
|
587
|
+
th.sticky-left,
|
588
|
+
td.sticky-left {
|
589
|
+
border-right: 1px solid $border_light !important;
|
590
|
+
}
|
591
|
+
}
|
412
592
|
}
|
413
593
|
}
|
594
|
+
|
414
595
|
@media only screen and (min-width: $screen-xl-min) {
|
415
596
|
&[class*="advanced-table-responsive-scroll"] {
|
416
597
|
overflow-x: visible;
|
@@ -418,6 +599,20 @@
|
|
418
599
|
}
|
419
600
|
|
420
601
|
&.dark {
|
602
|
+
// Override default border color for dark mode
|
603
|
+
--column-border-color: #{$border_dark};
|
604
|
+
|
605
|
+
// Dark mode default border colors for trails and horizontal borders
|
606
|
+
.collapsible-trail {
|
607
|
+
background-color: $border_dark !important;
|
608
|
+
}
|
609
|
+
|
610
|
+
// Make sure all horizontal borders use the default border color in dark mode
|
611
|
+
tr, th, td {
|
612
|
+
border-top-color: $border_dark !important;
|
613
|
+
border-bottom-color: $border_dark !important;
|
614
|
+
}
|
615
|
+
|
421
616
|
.bg-white {
|
422
617
|
background: $bg_dark_card;
|
423
618
|
}
|
@@ -446,13 +641,104 @@
|
|
446
641
|
}
|
447
642
|
|
448
643
|
.table-header-cells:first-child,
|
644
|
+
.table-header-cells-custom:first-child,
|
449
645
|
td:first-child,
|
450
|
-
.pb_table_td:first-child
|
451
|
-
|
646
|
+
.pb_table_td:first-child,
|
647
|
+
.checkbox-cell.checkbox-cell-header:first-child {
|
648
|
+
box-shadow: 1px 0px 0px 0px var(--column-border-color) !important;
|
452
649
|
}
|
453
650
|
|
454
|
-
|
455
|
-
|
651
|
+
// Apply border colors in dark mode
|
652
|
+
&[class*="column-group-border-"] {
|
653
|
+
// For top-level column groups (ENROLLMENT DATA, PERFORMANCE DATA)
|
654
|
+
.pb_advanced_table_header {
|
655
|
+
// The main column group headers - NOT the last column
|
656
|
+
> tr:first-child {
|
657
|
+
th[colspan]:not([colspan="1"]):not(:last-child) {
|
658
|
+
border-right: 1px solid var(--column-border-color) !important;
|
659
|
+
}
|
660
|
+
}
|
661
|
+
|
662
|
+
// Subgroup headers
|
663
|
+
> tr:nth-child(2) {
|
664
|
+
th[colspan]:not([colspan="1"]):not(:last-child) {
|
665
|
+
border-right: 1px solid var(--column-border-color) !important;
|
666
|
+
}
|
667
|
+
|
668
|
+
// Last cell in each subgroup
|
669
|
+
th.last-header-cell:not(:last-child) {
|
670
|
+
border-right: 1px solid var(--column-border-color) !important;
|
671
|
+
}
|
672
|
+
}
|
673
|
+
|
674
|
+
// Individual column headers at subgroup boundaries
|
675
|
+
> tr:last-child {
|
676
|
+
// Last cell in each subgroup
|
677
|
+
th.last-header-cell:not(:last-child) {
|
678
|
+
border-right: 1px solid var(--column-border-color) !important;
|
679
|
+
}
|
680
|
+
}
|
681
|
+
}
|
682
|
+
|
683
|
+
// For data cells at column group boundaries in dark mode
|
684
|
+
.pb_advanced_table_body {
|
685
|
+
// Apply to cells that are at column group boundaries
|
686
|
+
td.last-cell:not(:last-child),
|
687
|
+
.pb_table_td.last-cell:not(:last-child) {
|
688
|
+
border-right: 1px solid var(--column-border-color) !important;
|
689
|
+
}
|
690
|
+
|
691
|
+
// Virtualized row cells at column group boundaries
|
692
|
+
tr.virtualized-table-row {
|
693
|
+
td.last-cell:not(:last-child) {
|
694
|
+
border-right: 1px solid var(--column-border-color) !important;
|
695
|
+
}
|
696
|
+
}
|
697
|
+
}
|
698
|
+
|
699
|
+
// Sub-row headers
|
700
|
+
.toggle-content {
|
701
|
+
td {
|
702
|
+
border-bottom: 1px solid $border_dark !important;
|
703
|
+
}
|
704
|
+
}
|
705
|
+
}
|
706
|
+
|
707
|
+
// Restore vertical border styling in dark mode when verticalBorder is true
|
708
|
+
.pb_table[data-vertical-border="true"] {
|
709
|
+
.pb_advanced_table_header {
|
710
|
+
> tr:not(:first-child) {
|
711
|
+
th:not(:last-child) {
|
712
|
+
border-right: 1px solid $border_dark !important;
|
713
|
+
}
|
714
|
+
}
|
715
|
+
}
|
716
|
+
|
717
|
+
.pb_advanced_table_body {
|
718
|
+
td:not(:last-child),
|
719
|
+
.pb_table_td:not(:last-child) {
|
720
|
+
border-right: 1px solid $border_dark !important;
|
721
|
+
}
|
722
|
+
}
|
723
|
+
|
724
|
+
// When both verticalBorder AND columnGroupBorderColor are set in dark mode,
|
725
|
+
// override the default border-dark with the custom color
|
726
|
+
&.pb_advanced_table[class*="column-group-border-"] {
|
727
|
+
.pb_advanced_table_header {
|
728
|
+
> tr:not(:first-child) {
|
729
|
+
th:not(:last-child) {
|
730
|
+
border-right: 1px solid var(--column-border-color) !important;
|
731
|
+
}
|
732
|
+
}
|
733
|
+
}
|
734
|
+
|
735
|
+
.pb_advanced_table_body {
|
736
|
+
td:not(:last-child),
|
737
|
+
.pb_table_td:not(:last-child) {
|
738
|
+
border-right: 1px solid var(--column-border-color) !important;
|
739
|
+
}
|
740
|
+
}
|
741
|
+
}
|
456
742
|
}
|
457
743
|
|
458
744
|
.sort-button-icon,
|
@@ -484,15 +770,6 @@
|
|
484
770
|
}
|
485
771
|
}
|
486
772
|
|
487
|
-
// Vertical separator
|
488
|
-
.table-header-cells:first-child,
|
489
|
-
.table-header-cells-custom:first-child,
|
490
|
-
td:first-child,
|
491
|
-
.pb_table_td:first-child,
|
492
|
-
.checkbox-cell.checkbox-cell-header:first-child {
|
493
|
-
box-shadow: 1px 0px 0px 0px $border_dark !important;
|
494
|
-
}
|
495
|
-
|
496
773
|
// Fullscreen
|
497
774
|
&.advanced-table-fullscreen {
|
498
775
|
background: $bg_dark;
|
@@ -526,11 +803,26 @@
|
|
526
803
|
}
|
527
804
|
}
|
528
805
|
}
|
806
|
+
|
807
|
+
// These are the responsive borders that should NOT inherit the custom color
|
529
808
|
@include advanced-table-sticky-mixin(
|
530
809
|
$border_dark,
|
531
810
|
$bg_dark_card,
|
532
811
|
$bg_dark
|
533
812
|
);
|
813
|
+
|
814
|
+
// Override any columnGroupBorderColor inheritance for responsive borders in dark mode
|
815
|
+
.sticky-left {
|
816
|
+
box-shadow: $shadow_deep !important;
|
817
|
+
}
|
818
|
+
|
819
|
+
.pb_advanced_table_header,
|
820
|
+
.pb_advanced_table_body {
|
821
|
+
th.sticky-left,
|
822
|
+
td.sticky-left {
|
823
|
+
border-right: 1px solid $border_dark !important;
|
824
|
+
}
|
825
|
+
}
|
534
826
|
}
|
535
827
|
}
|
536
828
|
}
|
@@ -34,6 +34,8 @@ type AdvancedTableProps = {
|
|
34
34
|
children?: React.ReactNode | React.ReactNode[]
|
35
35
|
className?: string
|
36
36
|
columnDefinitions: GenericObject[]
|
37
|
+
columnGroupBorderColor?: "text_lt_default" | "text_lt_light" | "text_lt_lighter" | "text_dk_default" | "text_dk_light" | "text_dk_lighter"
|
38
|
+
columnVisibilityControl?: GenericObject
|
37
39
|
dark?: boolean
|
38
40
|
data?: { [key: string]: string }
|
39
41
|
enableToggleExpansion?: "all" | "header" | "none"
|
@@ -71,6 +73,8 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
71
73
|
children,
|
72
74
|
className,
|
73
75
|
columnDefinitions,
|
76
|
+
columnGroupBorderColor,
|
77
|
+
columnVisibilityControl,
|
74
78
|
dark = false,
|
75
79
|
data = {},
|
76
80
|
enableToggleExpansion = "header",
|
@@ -130,7 +134,8 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
130
134
|
paginationProps,
|
131
135
|
virtualizedRows,
|
132
136
|
tableOptions,
|
133
|
-
onRowSelectionChange
|
137
|
+
onRowSelectionChange,
|
138
|
+
columnVisibilityControl,
|
134
139
|
});
|
135
140
|
|
136
141
|
// Initialize table actions
|
@@ -239,6 +244,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
239
244
|
'advanced-table-allow-fullscreen': allowFullScreen
|
240
245
|
},
|
241
246
|
{'advanced-table-sticky-left-columns': stickyLeftColumn && stickyLeftColumn.length > 0},
|
247
|
+
columnGroupBorderColor ? `column-group-border-${columnGroupBorderColor}` : '',
|
242
248
|
globalProps(props),
|
243
249
|
className
|
244
250
|
);
|
@@ -249,7 +255,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
249
255
|
: {};
|
250
256
|
|
251
257
|
// Visibility flag for action bar
|
252
|
-
const isActionBarVisible = selectableRows && showActionsBar && selectedRowsLength > 0;
|
258
|
+
const isActionBarVisible = (selectableRows && showActionsBar && selectedRowsLength > 0) || columnVisibilityControl;
|
253
259
|
|
254
260
|
return (
|
255
261
|
<>
|
@@ -282,6 +288,8 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
282
288
|
{renderFullscreenHeader()}
|
283
289
|
<AdvancedTableProvider
|
284
290
|
columnDefinitions={columnDefinitions}
|
291
|
+
columnGroupBorderColor={columnGroupBorderColor}
|
292
|
+
columnVisibilityControl={columnVisibilityControl}
|
285
293
|
enableToggleExpansion={enableToggleExpansion}
|
286
294
|
enableVirtualization={virtualizedRows}
|
287
295
|
expandByDepth={expandByDepth}
|
@@ -312,6 +320,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
312
320
|
actions={actions}
|
313
321
|
isVisible={isActionBarVisible}
|
314
322
|
selectedCount={selectedRowsLength}
|
323
|
+
type={columnVisibilityControl ? "column-visibility" : "row-selection"}
|
315
324
|
/>
|
316
325
|
|
317
326
|
{/* Main Table */}
|
@@ -334,7 +343,7 @@ const AdvancedTable = (props: AdvancedTableProps) => {
|
|
334
343
|
</Table>
|
335
344
|
</React.Fragment>
|
336
345
|
</AdvancedTableProvider>
|
337
|
-
|
346
|
+
|
338
347
|
</div>
|
339
348
|
{/* Bottom Pagination */}
|
340
349
|
{pagination && (
|
@@ -7,6 +7,9 @@ module Playbook
|
|
7
7
|
default: []
|
8
8
|
prop :column_definitions, type: Playbook::Props::Array,
|
9
9
|
default: []
|
10
|
+
prop :column_group_border_color, type: Playbook::Props::Enum,
|
11
|
+
values: %w[text_lt_default text_lt_light text_lt_lighter text_dk_default text_dk_light text_dk_lighter none],
|
12
|
+
default: "none"
|
10
13
|
prop :enable_toggle_expansion, type: Playbook::Props::Enum,
|
11
14
|
values: %w[all header none],
|
12
15
|
default: "header"
|
@@ -24,7 +27,9 @@ module Playbook
|
|
24
27
|
default: false
|
25
28
|
|
26
29
|
def classname
|
27
|
-
|
30
|
+
additional_classes = [responsive_classname, max_height_classname]
|
31
|
+
additional_classes << "column-group-border-#{column_group_border_color}" if column_group_border_color != "none"
|
32
|
+
generate_classname("pb_advanced_table", *additional_classes, separator: " ")
|
28
33
|
end
|
29
34
|
|
30
35
|
def responsive_classname
|
@@ -1,9 +1,3 @@
|
|
1
|
-
**BETA VERSION**
|
2
|
-
This kit's Rails version is currently under development. Some features may not work as expected, and breaking changes may still occur; use with caution.
|
3
|
-
<br />
|
4
|
-
<br />
|
5
|
-
<br />
|
6
|
-
|
7
1
|
The AdvancedTable kit accepts tree data and automatically renders expansion controls for nested subrows, to any depth, based on the data it is given. In it's simplest form, __the kit has two required props__:
|
8
2
|
|
9
3
|
### table_data
|
@@ -0,0 +1,80 @@
|
|
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 AdvancedTableColumnBorderColors = (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
|
+
label: "Enrollment Stats",
|
17
|
+
columns: [
|
18
|
+
{
|
19
|
+
accessor: "newEnrollments",
|
20
|
+
label: "New Enrollments",
|
21
|
+
},
|
22
|
+
{
|
23
|
+
accessor: "scheduledMeetings",
|
24
|
+
label: "Scheduled Meetings",
|
25
|
+
},
|
26
|
+
],
|
27
|
+
},
|
28
|
+
],
|
29
|
+
},
|
30
|
+
{
|
31
|
+
label: "Performance Data",
|
32
|
+
columns: [
|
33
|
+
{
|
34
|
+
label: "Completion Metrics",
|
35
|
+
columns: [
|
36
|
+
{
|
37
|
+
accessor: "completedClasses",
|
38
|
+
label: "Completed Classes",
|
39
|
+
},
|
40
|
+
{
|
41
|
+
accessor: "classCompletionRate",
|
42
|
+
label: "Class Completion Rate",
|
43
|
+
},
|
44
|
+
],
|
45
|
+
},
|
46
|
+
{
|
47
|
+
label: "Attendance",
|
48
|
+
columns: [
|
49
|
+
{
|
50
|
+
accessor: "attendanceRate",
|
51
|
+
label: "Attendance Rate",
|
52
|
+
},
|
53
|
+
{
|
54
|
+
accessor: "scheduledMeetings",
|
55
|
+
label: "Scheduled Meetings",
|
56
|
+
},
|
57
|
+
],
|
58
|
+
},
|
59
|
+
],
|
60
|
+
},
|
61
|
+
];
|
62
|
+
|
63
|
+
const tableProps = {
|
64
|
+
verticalBorder: true
|
65
|
+
}
|
66
|
+
|
67
|
+
return (
|
68
|
+
<>
|
69
|
+
<AdvancedTable
|
70
|
+
columnDefinitions={columnDefinitions}
|
71
|
+
columnGroupBorderColor="text_lt_default"
|
72
|
+
tableData={MOCK_DATA}
|
73
|
+
tableProps={tableProps}
|
74
|
+
{...props}
|
75
|
+
/>
|
76
|
+
</>
|
77
|
+
)
|
78
|
+
}
|
79
|
+
|
80
|
+
export default AdvancedTableColumnBorderColors
|
@@ -0,0 +1,3 @@
|
|
1
|
+
The borders of column groups can be set to a different color using the `columnGroupBorderColor` prop. In order for these borders to be visible, this prop must be used with `tableProps` and `verticalBorder` set to true.
|
2
|
+
|
3
|
+
The available colors for the border are Playbook's Text Colors, which can be found [here](https://playbook.powerapp.cloud/visual_guidelines/colors).
|
data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.html.erb
ADDED
@@ -0,0 +1,58 @@
|
|
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
|
+
label: "Enrollment Stats",
|
12
|
+
columns: [
|
13
|
+
{
|
14
|
+
accessor: "newEnrollments",
|
15
|
+
label: "New Enrollments",
|
16
|
+
},
|
17
|
+
{
|
18
|
+
accessor: "scheduledMeetings",
|
19
|
+
label: "Scheduled Meetings",
|
20
|
+
},
|
21
|
+
],
|
22
|
+
},
|
23
|
+
],
|
24
|
+
},
|
25
|
+
{
|
26
|
+
label: "Performance Data",
|
27
|
+
columns: [
|
28
|
+
{
|
29
|
+
label: "Completion Metrics",
|
30
|
+
columns: [
|
31
|
+
{
|
32
|
+
accessor: "completedClasses",
|
33
|
+
label: "Completed Classes",
|
34
|
+
},
|
35
|
+
{
|
36
|
+
accessor: "classCompletionRate",
|
37
|
+
label: "Class Completion Rate",
|
38
|
+
},
|
39
|
+
],
|
40
|
+
},
|
41
|
+
{
|
42
|
+
label: "Attendance",
|
43
|
+
columns: [
|
44
|
+
{
|
45
|
+
accessor: "attendanceRate",
|
46
|
+
label: "Attendance Rate",
|
47
|
+
},
|
48
|
+
{
|
49
|
+
accessor: "scheduledMeetings",
|
50
|
+
label: "Scheduled Meetings",
|
51
|
+
},
|
52
|
+
],
|
53
|
+
},
|
54
|
+
],
|
55
|
+
},
|
56
|
+
] %>
|
57
|
+
|
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 } }) %>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
The borders of column groups can be set to a different color using the `column_group_border_color` prop. In order for these borders to be visible, this prop must be used with `table_props` and `vertical_border` set to true.
|
2
|
+
|
3
|
+
The available colors for the border are Playbook's Text Colors, which can be found [here](https://playbook.powerapp.cloud/visual_guidelines/colors).
|