playbook_ui 14.22.0.pre.rc.7 → 14.23.0.pre.alpha.PLAY2205atborderbug9085

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.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +6 -7
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/SubRowHeaderRow.tsx +32 -11
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +10 -10
  5. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +2 -2
  6. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +72 -3
  7. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +15 -6
  8. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +1 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +13 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/advanced_table_action_bar.js +16 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.jsx +65 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.md +5 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.html.erb +46 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +7 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.jsx +69 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +51 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.md +1 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +13 -8
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +23 -2
  22. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +3 -1
  23. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -1
  24. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +36 -0
  25. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +13 -4
  26. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
  27. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -6
  28. data/app/pb_kits/playbook/pb_bar_graph/barGraphTheme.ts +106 -0
  29. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.jsx +33 -15
  30. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_default.jsx +33 -15
  31. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.jsx +52 -22
  32. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.md +3 -0
  33. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_horizontal.jsx +12 -16
  34. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +31 -15
  35. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +39 -16
  36. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +86 -38
  37. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +1 -1
  38. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_negative_numbers.jsx +32 -15
  39. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.jsx +72 -22
  40. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.md +1 -1
  41. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_spline.jsx +31 -15
  42. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_stacked.jsx +37 -16
  43. data/app/pb_kits/playbook/pb_bar_graph/docs/_description.md +1 -3
  44. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -3
  45. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -2
  46. data/app/pb_kits/playbook/pb_body/docs/_body_truncate.jsx +3 -3
  47. data/app/pb_kits/playbook/pb_body/docs/_body_truncate_react.md +4 -0
  48. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +36 -1
  49. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +71 -26
  50. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +29 -16
  51. data/app/pb_kits/playbook/pb_circle_chart/docs/{_circle_chart_colors.md → _circle_chart_colors_rails.md} +1 -1
  52. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors_react.md +2 -0
  53. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +28 -16
  54. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.md +4 -2
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +23 -15
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.jsx +81 -51
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +103 -75
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +4 -7
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +19 -13
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +30 -17
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.jsx +34 -20
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.jsx +29 -20
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.jsx +28 -20
  64. data/app/pb_kits/playbook/pb_circle_chart/docs/_description.md +1 -0
  65. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -1
  66. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +0 -1
  67. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +12 -4
  68. data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -2
  69. data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
  70. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
  71. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
  72. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
  73. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
  74. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
  75. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
  76. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
  77. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
  78. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
  79. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
  80. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
  81. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
  82. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
  83. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
  84. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
  85. data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
  86. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
  87. data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +1 -3
  88. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +36 -17
  89. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors_react.md +3 -0
  90. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +31 -16
  91. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +63 -31
  92. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.md +3 -0
  93. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +35 -16
  94. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +41 -16
  95. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +107 -62
  96. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +4 -7
  97. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
  98. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
  99. data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +16 -1
  100. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +30 -17
  101. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb +10 -0
  102. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx +26 -0
  103. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md +3 -0
  104. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  105. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  106. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  107. data/app/pb_kits/playbook/pb_table/_table.tsx +4 -4
  108. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +8 -8
  109. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +1 -1
  110. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +12 -12
  111. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +3 -3
  112. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +12 -12
  113. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +3 -3
  114. data/app/pb_kits/playbook/pb_title/docs/_title_truncate.jsx +3 -3
  115. data/app/pb_kits/playbook/pb_title/docs/_title_truncate_react.md +4 -0
  116. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open.html.erb +14 -0
  117. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open_rails.md +1 -0
  118. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  119. data/app/pb_kits/playbook/pb_tooltip/index.js +59 -36
  120. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +9 -2
  121. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.html.erb +18 -0
  122. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input_rails.md +1 -0
  123. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  124. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +3 -0
  125. data/dist/chunks/_line_graph-BfCo79KE.js +1 -0
  126. data/dist/chunks/_typeahead-Db4YQA5c.js +6 -0
  127. data/dist/chunks/_weekday_stacked-BNHSKTSw.js +61 -0
  128. data/dist/chunks/lib-DnQyMxO1.js +29 -0
  129. data/dist/chunks/{pb_form_validation-DqRmTS8m.js → pb_form_validation-kl-4Jv4t.js} +1 -1
  130. data/dist/chunks/vendor.js +1 -1
  131. data/dist/menu.yml +68 -8
  132. data/dist/playbook-doc.js +2 -2
  133. data/dist/playbook-rails-react-bindings.js +1 -1
  134. data/dist/playbook-rails.js +1 -1
  135. data/dist/playbook.css +1 -1
  136. data/lib/playbook/version.rb +2 -2
  137. metadata +43 -25
  138. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +0 -72
  139. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.md +0 -6
  140. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  141. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  142. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +0 -38
  143. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +0 -1
  144. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
  145. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
  146. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
  147. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
  148. data/dist/chunks/_typeahead-B7FRYVtS.js +0 -22
  149. data/dist/chunks/_weekday_stacked-B0oaGhTW.js +0 -45
  150. data/dist/chunks/lib-Carqm8Ip.js +0 -29
  151. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_row_styling.md → _advanced_table_row_styling_react.md} +0 -0
  152. /data/app/pb_kits/playbook/pb_body/docs/{_body_truncate.md → _body_truncate_rails.md} +0 -0
  153. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
  154. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
  155. /data/app/pb_kits/playbook/pb_line_graph/docs/{_line_graph_colors.md → _line_graph_colors_rails.md} +0 -0
  156. /data/app/pb_kits/playbook/pb_title/docs/{_title_truncate.md → _title_truncate_rails.md} +0 -0
  157. /data/app/pb_kits/playbook/pb_tooltip/docs/{_tooltip_click_open.md → _tooltip_click_open_react.md} +0 -0
  158. /data/app/pb_kits/playbook/pb_typeahead/docs/{_typeahead_preserve_input.md → _typeahead_preserve_input_react.md} +0 -0
@@ -0,0 +1,69 @@
1
+ import React from "react"
2
+ import AdvancedTable from '../../pb_advanced_table/_advanced_table'
3
+ import Icon from "../../pb_icon/_icon"
4
+ import Flex from "../../pb_flex/_flex"
5
+ import Caption from "../../pb_caption/_caption"
6
+ import Tooltip from "../../pb_tooltip/_tooltip"
7
+ import MOCK_DATA from "./advanced_table_mock_data.json"
8
+
9
+ const AdvancedTableWithCustomHeader = (props) => {
10
+ const columnDefinitions = [
11
+ {
12
+ accessor: "year",
13
+ label: "Year",
14
+ cellAccessors: ["quarter", "month", "day"],
15
+ },
16
+ {
17
+ accessor: "newEnrollments",
18
+ label: "New Enrollments",
19
+ header: () => (
20
+ <Flex alignItems="center"
21
+ justifyContent="center"
22
+ >
23
+ <Caption marginRight="xs">New Enrollments</Caption>
24
+ <Tooltip placement="top"
25
+ text="Whoa. I'm a Tooltip"
26
+ zIndex={10}
27
+ >
28
+ <Icon cursor="pointer"
29
+ icon="info"
30
+ size="xs"
31
+ />
32
+ </Tooltip>
33
+ </Flex>
34
+ ),
35
+ },
36
+ {
37
+ accessor: "scheduledMeetings",
38
+ label: "Scheduled Meetings",
39
+ },
40
+ {
41
+ accessor: "attendanceRate",
42
+ label: "Attendance Rate",
43
+ },
44
+ {
45
+ accessor: "completedClasses",
46
+ label: "Completed Classes",
47
+ },
48
+ {
49
+ accessor: "classCompletionRate",
50
+ label: "Class Completion Rate",
51
+ },
52
+ {
53
+ accessor: "graduatedStudents",
54
+ label: "Graduated Students",
55
+ },
56
+ ];
57
+
58
+ return (
59
+ <div>
60
+ <AdvancedTable
61
+ columnDefinitions={columnDefinitions}
62
+ tableData={MOCK_DATA}
63
+ {...props}
64
+ />
65
+ </div>
66
+ )
67
+ }
68
+
69
+ export default AdvancedTableWithCustomHeader
@@ -0,0 +1 @@
1
+ The optional `header` key/value pair can be used within `columnDefinitions` to render a custom header. This example shows an Icon and Tooltip being used but other kits can be used as well.
@@ -0,0 +1,51 @@
1
+ <%
2
+ column_definitions = [
3
+ {
4
+ accessor: "year",
5
+ label: "Year",
6
+ cellAccessors: ["quarter", "month", "day"],
7
+ },
8
+ {
9
+ accessor: "newEnrollments",
10
+ label: "New Enrollments",
11
+ header: ->(cell, label) {
12
+ capture do
13
+ pb_rails("flex", props: { align_items: "center", justify_content: "center" }) do
14
+ pb_rails("caption", props: { margin_right: "xs", text: "New Enrollments" }) +
15
+ pb_rails("icon", props: { id: "tooltip-interact", icon: "info", size: "xs" }) +
16
+ pb_rails("tooltip", props: {
17
+ trigger_element_id: "tooltip-interact",
18
+ tooltip_id: "example-custom-tooltip",
19
+ position: "top",
20
+ z_index: "10"
21
+ }) do
22
+ "Whoa. I'm a Tooltip"
23
+ end
24
+ end
25
+ end
26
+ }
27
+ },
28
+ {
29
+ accessor: "scheduledMeetings",
30
+ label: "Scheduled Meetings",
31
+ },
32
+ {
33
+ accessor: "attendanceRate",
34
+ label: "Attendance Rate",
35
+ },
36
+ {
37
+ accessor: "completedClasses",
38
+ label: "Completed Classes",
39
+ },
40
+ {
41
+ accessor: "classCompletionRate",
42
+ label: "Class Completion Rate",
43
+ },
44
+ {
45
+ accessor: "graduatedStudents",
46
+ label: "Graduated Students",
47
+ }
48
+ ]
49
+ %>
50
+
51
+ <%= pb_rails("advanced_table", props: { id: "custom_header_table", table_data: @table_data, column_definitions: column_definitions }) %>
@@ -0,0 +1 @@
1
+ The optional `header` item can be used within `column_definitions` to render a custom header. This example shows an Icon and Tooltip being used but other kits can be used as well.
@@ -10,23 +10,26 @@ examples:
10
10
  - advanced_table_beta_sort: Enable Sorting
11
11
  - advanced_table_responsive: Responsive Tables
12
12
  - advanced_table_custom_cell_rails: Custom Components for Cells
13
+ - advanced_table_with_custom_header_rails: Custom Header Cell
13
14
  - advanced_table_column_headers: Multi-Header Columns
14
15
  - advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
15
- - advanced_table_column_border_color_rails: Column Group Border Color
16
16
  - advanced_table_no_subrows: Table with No Subrows or Expansion
17
17
  - advanced_table_selectable_rows_rails: Selectable Rows
18
18
  - advanced_table_selectable_rows_no_subrows_rails: Selectable Rows (No Subrows)
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
22
+ - advanced_table_row_styling: Row Styling
23
+ - advanced_table_column_styling_rails: Column Styling
24
+ - advanced_table_column_styling_column_headers_rails: Column Styling with Multiple Headers
25
+ - advanced_table_column_border_color_rails: Column Group Border Color
26
+
24
27
 
25
28
  react:
26
29
  - advanced_table_default: Default (Required Props)
27
- - advanced_table_loading: Loading State
28
30
  - advanced_table_sort: Enable Sorting
29
31
  - advanced_table_sort_control: Sort Control
32
+ - advanced_table_custom_sort: Custom Sort
30
33
  - advanced_table_expanded_control: Expanded Control
31
34
  - advanced_table_expand_by_depth: Expand by Depth
32
35
  - advanced_table_subrow_headers: SubRow Headers
@@ -37,29 +40,31 @@ examples:
37
40
  - advanced_table_table_props_sticky_header: Sticky Header for Responsive Table
38
41
  - advanced_table_sticky_columns: Sticky Columns
39
42
  - advanced_table_sticky_columns_and_header: Sticky Columns with Sticky Header
40
- - advanced_table_inline_row_loading: Inline Row Loading
41
43
  - advanced_table_responsive: Responsive Tables
42
44
  - advanced_table_custom_cell: Custom Components for Cells
45
+ - advanced_table_with_custom_header: Custom Header Cell
43
46
  - advanced_table_pagination: Pagination
44
47
  - advanced_table_pagination_with_props: Pagination Props
48
+ - advanced_table_loading: Loading State
49
+ - advanced_table_inline_row_loading: Inline Row Loading
45
50
  - advanced_table_column_headers: Multi-Header Columns
46
51
  - advanced_table_column_headers_multiple: Multi-Header Columns (Multiple Levels)
47
52
  - advanced_table_column_headers_custom_cell: Multi-Header Columns with Custom Cells
48
- - advanced_table_column_border_color: Column Group Border Color
49
53
  - advanced_table_no_subrows: Table with No Subrows or Expansion
54
+ - advanced_table_pinned_rows: Pinned Rows
50
55
  - advanced_table_selectable_rows: Selectable Rows
51
56
  - advanced_table_selectable_rows_no_subrows_react: Selectable Rows (No Subrows)
52
57
  - advanced_table_selectable_rows_actions: Selectable Rows (With Actions)
53
58
  - advanced_table_selectable_rows_header: Selectable Rows (No Actions Bar)
54
59
  - advanced_table_inline_editing: Inline Cell Editing
55
- - advanced_table_fullscreen: Fullscreen
56
60
  - advanced_table_column_visibility: Column Visibility Control
57
61
  - advanced_table_column_visibility_with_state: Column Visibility Control With State
58
62
  - advanced_table_column_visibility_custom: Column Visibility Control with Custom Dropdown
59
63
  - advanced_table_column_visibility_multi: Column Visibility Control with Multi-Header Columns
60
- - advanced_table_pinned_rows: Pinned Rows
61
64
  - advanced_table_scrollbar_none: Advanced Table Scrollbar None
62
65
  - advanced_table_row_styling: Row Styling
63
66
  - advanced_table_column_styling: Column Styling
64
67
  - advanced_table_column_styling_column_headers: Column Styling with Multiple Headers
68
+ - advanced_table_column_border_color: Column Group Border Color
69
+ - advanced_table_fullscreen: Fullscreen
65
70
  - advanced_table_infinite_scroll: Infinite Scroll
@@ -38,3 +38,5 @@ export { default as AdvancedTableRowStyling } from './_advanced_table_row_stylin
38
38
  export { default as AdvancedTableColumnStyling } from './_advanced_table_column_styling.jsx'
39
39
  export { default as AdvancedTableColumnStylingColumnHeaders } from './_advanced_table_column_styling_column_headers.jsx'
40
40
  export { default as AdvancedTableInfiniteScroll} from './_advanced_table_infinite_scroll.jsx'
41
+ export {default as AdvancedTableWithCustomHeader} from './_advanced_table_with_custom_header.jsx'
42
+ export { default as AdvancedTableCustomSort } from './_advanced_table_custom_sort.jsx'
@@ -2,7 +2,8 @@
2
2
  $border-color,
3
3
  $bg-main,
4
4
  $bg-secondary,
5
- $highlight: $info_subtle
5
+ $highlight: #E5EEFA,
6
+ $highlight-dark: #202850,
6
7
  ) {
7
8
  border-radius: 4px;
8
9
  box-shadow: 1px 0 0 0px $border-color, -1px 0 0 0px $border-color;
@@ -78,8 +79,14 @@
78
79
  left: 0;
79
80
  border-radius: unset;
80
81
  z-index: 5;
81
- }
82
82
 
83
+ // Add proper border radius when action bar is visible
84
+ &.is-visible,
85
+ &.show-action-card {
86
+ border-top-left-radius: 4px !important;
87
+ border-top-right-radius: 4px !important;
88
+ }
89
+ }
83
90
  .checkbox-cell {
84
91
  display: table-cell !important;
85
92
  }
@@ -95,4 +102,18 @@
95
102
  box-shadow: none !important;
96
103
  }
97
104
  }
105
+
106
+ &.dark {
107
+ .bg-row-selection {
108
+ td:first-child,
109
+ .sticky-left {
110
+ background-color: $highlight-dark;
111
+ }
112
+ }
113
+ .virtualized-table-row {
114
+ &.bg-row-selection td:first-child {
115
+ background-color: $highlight-dark;
116
+ }
117
+ }
118
+ }
98
119
  }
@@ -23,6 +23,8 @@ module Playbook
23
23
  default: "scroll"
24
24
  prop :selectable_rows, type: Playbook::Props::Boolean,
25
25
  default: false
26
+ prop :row_styling, type: Playbook::Props::Array,
27
+ default: []
26
28
 
27
29
  def flatten_columns(columns)
28
30
  columns.flat_map do |col|
@@ -66,7 +68,7 @@ module Playbook
66
68
  end
67
69
 
68
70
  # Additional class and data attributes needed for toggle logic
69
- output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion })
71
+ output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion, row_styling: row_styling })
70
72
 
71
73
  if row[:children].present?
72
74
  row[:children].each do |child_row|
@@ -26,7 +26,11 @@
26
26
  <% end %>
27
27
  <% end %>
28
28
  <% end %>
29
- <%= cell[:label] %>
29
+ <% if object.has_header_renderer?(cell) %>
30
+ <%= raw(object.render_header(cell)) %>
31
+ <% else %>
32
+ <%= cell[:label] %>
33
+ <% end %>
30
34
  <% end %>
31
35
  <% end %>
32
36
  <% end %>
@@ -76,6 +76,30 @@ module Playbook
76
76
  end
77
77
  end
78
78
 
79
+ # Get original column definition for custom rendering
80
+ def find_original_column_def(accessor)
81
+ find_column_def_by_accessor(column_definitions, accessor)
82
+ end
83
+
84
+ # Check if a header cell has a custom renderer
85
+ def has_header_renderer?(cell)
86
+ return false unless cell[:accessor].present?
87
+
88
+ original_def = find_original_column_def(cell[:accessor])
89
+ original_def && original_def[:header].present?
90
+ end
91
+
92
+ # Render custom header content
93
+ def render_header(cell)
94
+ return cell[:label] unless has_header_renderer?(cell)
95
+
96
+ original_def = find_original_column_def(cell[:accessor])
97
+ custom_renderer = original_def[:header]
98
+
99
+ # Call the custom renderer with the cell data and label
100
+ custom_renderer.call(cell, cell[:label])
101
+ end
102
+
79
103
  private
80
104
 
81
105
  def compute_max_depth(columns)
@@ -148,6 +172,18 @@ module Playbook
148
172
  end
149
173
  wrapped
150
174
  end
175
+
176
+ def find_column_def_by_accessor(defs, target_accessor)
177
+ defs.each do |col|
178
+ return col if col[:accessor] == target_accessor
179
+
180
+ if col[:columns].is_a?(Array)
181
+ found = find_column_def_by_accessor(col[:columns], target_accessor)
182
+ return found if found
183
+ end
184
+ end
185
+ nil
186
+ end
151
187
  end
152
188
  end
153
189
  end
@@ -1,3 +1,10 @@
1
+ <%
2
+ row_style = object.row_styling.find { |style| style[:row_id].to_s == object.row_id.to_s }
3
+ button_color = row_style&.[](:expand_button_color)
4
+ bg_color = row_style&.[](:background_color)
5
+ font_color = row_style&.[](:font_color)
6
+ %>
7
+
1
8
  <%= pb_content_tag(:tr) do %>
2
9
  <% has_separate_checkbox = object.selectable_rows && object.enable_toggle_expansion == "none" %>
3
10
  <% if has_separate_checkbox %>
@@ -5,7 +12,7 @@
5
12
  <% end %>
6
13
  <% object.column_definitions.each_with_index do |column, index| %>
7
14
  <% next unless column[:accessor].present? %>
8
- <%= pb_rails("table/table_cell", props: { classname:object.td_classname(column, index)}) do %>
15
+ <%= pb_rails("table/table_cell", props: { html_options: { style: { "background-color": bg_color, color: font_color } }, classname:object.td_classname(column, index)}) do %>
9
16
  <%= pb_rails("flex", props:{ align: "center", justify: object.justify_for(column, index), classname: object.loading ? "loading-cell" : "" }) do %>
10
17
  <% if collapsible_trail && index.zero? %>
11
18
  <% (1..depth).each do |i| %>
@@ -28,13 +35,15 @@
28
35
  <button
29
36
  id="<%= "#{object.id}_#{object.row.object_id}" %>"
30
37
  class="gray-icon expand-toggle-icon"
31
- data-advanced-table="true">
38
+ data-advanced-table="true"
39
+ style="color: <%= button_color %>"
40
+ >
32
41
  <%= pb_rails("icon", props: { id: "advanced-table_open_icon", icon: "circle-play", cursor: "pointer" }) %>
33
- <%= pb_rails("icon", props: { id: "advanced-table_close_icon", icon: "circle-play", cursor: "pointer", rotation: 90 }) %>
42
+ <%= pb_rails("icon", props: { id: "advanced-table_close_icon", icon: "circle-play-down", cursor: "pointer" }) %>
34
43
  </button>
35
44
  <% end %>
36
45
  <% end %>
37
- <%= pb_rails("flex/flex_item") do %>
46
+ <%= pb_rails("flex/flex_item") do %>
38
47
  <% if column[:custom_renderer].present? %>
39
48
  <%= raw(column[:custom_renderer].call(object.row, custom_renderer_value(column, index))) %>
40
49
  <% elsif index.zero? %>
@@ -27,6 +27,8 @@ module Playbook
27
27
  prop :enable_toggle_expansion, type: Playbook::Props::Enum,
28
28
  values: %w[all header none],
29
29
  default: "header"
30
+ prop :row_styling, type: Playbook::Props::Array,
31
+ default: []
30
32
 
31
33
  def data
32
34
  Hash(prop(:data)).merge(table_data_attributes)
@@ -5,7 +5,7 @@
5
5
  @import "../tokens/typography";
6
6
 
7
7
  [class^=pb_badge_kit] {
8
- $pb_badge_height: 18px;
8
+ $pb_badge_height_rounded: 16px;
9
9
 
10
10
  display: inline-flex;
11
11
  align-items: center;
@@ -13,7 +13,6 @@
13
13
  border-radius: $border_rad_light;
14
14
  padding: 0 $space_xs/2;
15
15
  border-width: 1px;
16
- border-style: solid;
17
16
  border-color: $card_light;
18
17
  white-space: nowrap;
19
18
 
@@ -31,10 +30,10 @@
31
30
  }
32
31
 
33
32
  &[class*=_rounded] {
34
- height: $pb_badge_height;
35
- min-height: $pb_badge_height;
36
- min-width: $pb_badge_height;
37
- border-radius: $pb_badge_height / 2;
33
+ height: $pb_badge_height_rounded;
34
+ min-height: $pb_badge_height_rounded;
35
+ min-width: $pb_badge_height_rounded;
36
+ border-radius: $pb_badge_height_rounded / 2;
38
37
  }
39
38
 
40
39
  &[class*=_notification] {
@@ -0,0 +1,106 @@
1
+ import colors from '../tokens/exports/_colors.module.scss'
2
+ import typography from '../tokens/exports/_typography.module.scss'
3
+
4
+ const barGraphTheme = {
5
+ title: {
6
+ text: "",
7
+ style: {
8
+ color: colors.text_lt_default,
9
+ fontFamily: typography.font_family_base,
10
+ fontWeight: typography.bold,
11
+ fontSize: typography.heading_3,
12
+ },
13
+ },
14
+ subtitle: {
15
+ text: "",
16
+ style: {
17
+ fontFamily: typography.font_family_base,
18
+ color: colors.text_lt_light,
19
+ fontWeight: typography.regular,
20
+ fontSize: typography.text_base,
21
+ },
22
+ },
23
+ chart: {
24
+ type: "column",
25
+ },
26
+ tooltip: {
27
+ backgroundColor: {
28
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
29
+ stops: [
30
+ [0, colors.bg_dark],
31
+ [1, colors.bg_dark],
32
+ ],
33
+ },
34
+ style: {
35
+ fontFamily: typography.font_family_base,
36
+ color: colors.text_dk_default,
37
+ fontWeight: typography.regular,
38
+ fontSize: typography.text_smaller,
39
+ },
40
+ },
41
+ colors: [
42
+ colors.data_1,
43
+ colors.data_2,
44
+ colors.data_3,
45
+ colors.data_4,
46
+ colors.data_5,
47
+ colors.data_6,
48
+ colors.data_7,
49
+ ],
50
+ credits: { enabled: false },
51
+ legend: {
52
+ enabled: false,
53
+ itemStyle: {
54
+ color: colors.text_lt_light,
55
+ fill: colors.text_lt_light,
56
+ fontSize: typography.text_smaller,
57
+ },
58
+ },
59
+ xAxis: {
60
+ gridLineWidth: 0,
61
+ lineColor: colors.border_light,
62
+ tickColor: colors.border_light,
63
+ labels: {
64
+ style: {
65
+ fontFamily: typography.font_family_base,
66
+ color: colors.text_lt_lighter,
67
+ fontWeight: typography.bold,
68
+ fontSize: typography.text_smaller,
69
+ },
70
+ },
71
+ title: {
72
+ style: {
73
+ color: colors.text_lt_default,
74
+ fontFamily: typography.font_family_base,
75
+ fontWeight: typography.regular,
76
+ fontSize: typography.heading_4,
77
+ },
78
+ },
79
+ },
80
+ yAxis: {
81
+ alternateGridColor: undefined as string | undefined,
82
+ minorTickInterval: null as number | null,
83
+ gridLineColor: colors.border_light,
84
+ minorGridLineColor: colors.border_light,
85
+ lineWidth: 0,
86
+ tickWidth: 0,
87
+ labels: {
88
+ style: {
89
+ fontFamily: typography.font_family_base,
90
+ color: colors.text_lt_lighter,
91
+ fontWeight: typography.bold,
92
+ fontSize: typography.text_smaller,
93
+ },
94
+ },
95
+ title: {
96
+ style: {
97
+ fontFamily: typography.font_family_base,
98
+ color: colors.text_lt_lighter,
99
+ fontWeight: typography.bold,
100
+ fontSize: typography.text_smaller,
101
+ },
102
+ },
103
+ },
104
+ }
105
+
106
+ export default barGraphTheme;
@@ -1,6 +1,10 @@
1
1
  import React from 'react'
2
+ import colors from '../../tokens/exports/_colors.module.scss'
3
+ import barGraphTheme from '../barGraphTheme';
4
+ import Highcharts from "highcharts";
5
+ import HighchartsReact from "highcharts-react-official";
6
+
2
7
 
3
- import BarGraph from '../_bar_graph'
4
8
 
5
9
  const chartData = [{
6
10
  name: 'Installation',
@@ -19,19 +23,33 @@ const chartData = [{
19
23
  data: [1111, 677, 3245, 500, 200],
20
24
  }]
21
25
 
22
- const BarGraphColors = (props) => (
23
- <div>
24
- <BarGraph
25
- axisTitle="Number of Employees"
26
- chartData={chartData}
27
- colors={['data-4', 'data-5', 'data-6', 'data-7', 'data-8']}
28
- id="bar-colors"
29
- title="Bar Graph with Custom Data Colors"
30
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May']}
31
- yAxisMin={0}
32
- {...props}
33
- />
34
- </div>
35
- )
26
+ const chartOptions = {
27
+ series: chartData,
28
+ title: {
29
+ text: "Bar Graph with Custom Data Colors",
30
+ },
31
+ xAxis: {
32
+ categories: ["Jan", "Feb", "Mar", "Apr", "May"],
33
+ },
34
+ yAxis: {
35
+ title: {
36
+ text: "Number of Employees",
37
+ },
38
+ },
39
+ colors: [colors.data_4, colors.data_5, colors.data_6, colors.data_7, colors.data_8],
40
+ }
41
+
42
+ const BarGraphColors = () => {
43
+ const options = Highcharts.merge({}, barGraphTheme, chartOptions)
44
+
45
+ return (
46
+ <div>
47
+ <HighchartsReact
48
+ highcharts={Highcharts}
49
+ options={options}
50
+ />
51
+ </div>
52
+ )
53
+ }
36
54
 
37
55
  export default BarGraphColors
@@ -1,6 +1,8 @@
1
1
  import React from 'react'
2
+ import barGraphTheme from '../barGraphTheme';
3
+ import Highcharts from "highcharts";
4
+ import HighchartsReact from "highcharts-react-official";
2
5
 
3
- import BarGraph from '../_bar_graph'
4
6
 
5
7
  const chartData = [{
6
8
  name: 'Installation',
@@ -19,19 +21,35 @@ const chartData = [{
19
21
  data: [1111, 677, 3245, 500, 200],
20
22
  }]
21
23
 
22
- const BarGraphDefault = (props) => (
23
- <div>
24
- <BarGraph
25
- axisTitle="Number of Employees"
26
- chartData={chartData}
27
- id="bar-default"
28
- subTitle="Source: thesolarfoundation.com"
29
- title="Solar Employment Growth by Sector, 2010-2016"
30
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May']}
31
- yAxisMin={0}
32
- {...props}
33
- />
34
- </div>
35
- )
24
+ const chartOptions = {
25
+ series: chartData,
26
+ title: {
27
+ text: 'Solar Employment Growth by Sector, 2010-2016',
28
+ },
29
+ subtitle: {
30
+ text: 'Source: thesolarfoundation.com',
31
+ },
32
+ xAxis: {
33
+ categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
34
+ },
35
+ yAxis: {
36
+ title: {
37
+ text: 'Number of Employees',
38
+ },
39
+ },
40
+ }
41
+
42
+ const BarGraphDefault = () => {
43
+ const options = Highcharts.merge({}, barGraphTheme, chartOptions)
44
+
45
+ return (
46
+ <div>
47
+ <HighchartsReact
48
+ highcharts={Highcharts}
49
+ options={options}
50
+ />
51
+ </div>
52
+ )
53
+ }
36
54
 
37
55
  export default BarGraphDefault