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

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 (174) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/SubRowHeaderRow.tsx +32 -11
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +0 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +3 -3
  5. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +19 -2
  6. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +6 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +1 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +2 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.jsx +65 -0
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.md +5 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.html.erb +46 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +7 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.jsx +69 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.jsx +107 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_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 +14 -8
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +3 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +16 -1
  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 +11 -2
  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_checkbox/checkbox.rb +12 -1
  49. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +1 -1
  50. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +2 -1
  51. data/app/pb_kits/playbook/pb_checkbox/index.js +3 -1
  52. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +36 -1
  53. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +71 -26
  54. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +29 -16
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/{_circle_chart_colors.md → _circle_chart_colors_rails.md} +1 -1
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors_react.md +2 -0
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +28 -16
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.md +4 -2
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +23 -15
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.jsx +81 -51
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +103 -75
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +4 -7
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +19 -13
  64. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +30 -17
  65. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.jsx +34 -20
  66. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.jsx +29 -20
  67. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.jsx +28 -20
  68. data/app/pb_kits/playbook/pb_circle_chart/docs/_description.md +1 -0
  69. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -1
  70. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +0 -1
  71. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +12 -4
  72. data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -2
  73. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +17 -1
  74. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +6 -0
  75. data/app/pb_kits/playbook/pb_dropdown/_dropdown_mixin.scss +36 -0
  76. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options.jsx +90 -0
  77. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options_react.md +4 -0
  78. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options.jsx +1 -0
  79. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options_react.md +1 -1
  80. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +3 -2
  81. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -1
  82. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +24 -0
  83. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +11 -1
  84. data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
  85. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
  86. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
  87. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
  88. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
  89. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
  90. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
  91. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
  92. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
  93. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
  94. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
  95. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
  96. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
  97. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
  98. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
  99. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
  100. data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
  101. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
  102. data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +1 -3
  103. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +36 -17
  104. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors_react.md +3 -0
  105. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +31 -16
  106. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +63 -31
  107. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.md +3 -0
  108. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +35 -16
  109. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +41 -16
  110. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +107 -62
  111. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +4 -7
  112. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
  113. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
  114. data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +16 -1
  115. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +30 -17
  116. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb +10 -0
  117. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx +26 -0
  118. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md +3 -0
  119. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  120. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  121. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  122. data/app/pb_kits/playbook/pb_table/_table.tsx +4 -4
  123. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +8 -8
  124. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +1 -1
  125. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +12 -12
  126. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +3 -3
  127. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +12 -12
  128. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +3 -3
  129. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +1 -0
  130. data/app/pb_kits/playbook/pb_title/docs/_title_truncate.jsx +3 -3
  131. data/app/pb_kits/playbook/pb_title/docs/_title_truncate_react.md +4 -0
  132. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open.html.erb +14 -0
  133. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open_rails.md +1 -0
  134. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  135. data/app/pb_kits/playbook/pb_tooltip/index.js +59 -36
  136. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +9 -2
  137. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.html.erb +18 -0
  138. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input_rails.md +1 -0
  139. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  140. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +3 -0
  141. data/dist/chunks/_line_graph-BfCo79KE.js +1 -0
  142. data/dist/chunks/_typeahead-Db4YQA5c.js +6 -0
  143. data/dist/chunks/_weekday_stacked-DVbweLBJ.js +61 -0
  144. data/dist/chunks/lib-DnQyMxO1.js +29 -0
  145. data/dist/chunks/{pb_form_validation-DqRmTS8m.js → pb_form_validation-kl-4Jv4t.js} +1 -1
  146. data/dist/chunks/vendor.js +1 -1
  147. data/dist/menu.yml +68 -8
  148. data/dist/playbook-doc.js +2 -2
  149. data/dist/playbook-rails-react-bindings.js +1 -1
  150. data/dist/playbook-rails.js +1 -1
  151. data/dist/playbook.css +1 -1
  152. data/lib/playbook/version.rb +2 -2
  153. metadata +48 -25
  154. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +0 -72
  155. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.md +0 -6
  156. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  157. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  158. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +0 -38
  159. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +0 -1
  160. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
  161. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
  162. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
  163. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
  164. data/dist/chunks/_typeahead-B7FRYVtS.js +0 -22
  165. data/dist/chunks/_weekday_stacked-B0oaGhTW.js +0 -45
  166. data/dist/chunks/lib-Carqm8Ip.js +0 -29
  167. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_row_styling.md → _advanced_table_row_styling_react.md} +0 -0
  168. /data/app/pb_kits/playbook/pb_body/docs/{_body_truncate.md → _body_truncate_rails.md} +0 -0
  169. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
  170. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
  171. /data/app/pb_kits/playbook/pb_line_graph/docs/{_line_graph_colors.md → _line_graph_colors_rails.md} +0 -0
  172. /data/app/pb_kits/playbook/pb_title/docs/{_title_truncate.md → _title_truncate_rails.md} +0 -0
  173. /data/app/pb_kits/playbook/pb_tooltip/docs/{_tooltip_click_open.md → _tooltip_click_open_react.md} +0 -0
  174. /data/app/pb_kits/playbook/pb_typeahead/docs/{_typeahead_preserve_input.md → _typeahead_preserve_input_react.md} +0 -0
@@ -38,3 +38,6 @@ 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'
43
+ export { default as AdvancedTableWithCustomHeaderMultiHeader } from './_advanced_table_with_custom_header_multi_header.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;
@@ -95,4 +96,18 @@
95
96
  box-shadow: none !important;
96
97
  }
97
98
  }
99
+
100
+ &.dark {
101
+ .bg-row-selection {
102
+ td:first-child,
103
+ .sticky-left {
104
+ background-color: $highlight-dark;
105
+ }
106
+ }
107
+ .virtualized-table-row {
108
+ &.bg-row-selection td:first-child {
109
+ background-color: $highlight-dark;
110
+ }
111
+ }
112
+ }
98
113
  }
@@ -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,7 +35,9 @@
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
42
  <%= pb_rails("icon", props: { id: "advanced-table_close_icon", icon: "circle-play", cursor: "pointer", rotation: 90 }) %>
34
43
  </button>
@@ -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
@@ -1,39 +1,69 @@
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: 'Number of Installations',
7
9
  data: [1475, 200, 3000, 654, 656],
8
10
  }]
9
11
 
10
- const BarGraphDefault = (props) => (
12
+ const pixelHeightChartOptions = {
13
+ chart: {
14
+ height: "300"
15
+ },
16
+ series: chartData,
17
+ title: {
18
+ text: "Fixed Height (300px)",
19
+ },
20
+ xAxis: {
21
+ categories: ["Jan", "Feb", "Mar", "Apr", "May"],
22
+ },
23
+ yAxis: {
24
+ title: {
25
+ text: "Number of Employees",
26
+ },
27
+ },
28
+ };
29
+
30
+ const percentageHeightChartOptions = {
31
+ chart: {
32
+ height: "50%"
33
+ },
34
+ series: chartData,
35
+ title: {
36
+ text: "Percentage Height (50%)",
37
+ },
38
+ xAxis: {
39
+ categories: ["Jan", "Feb", "Mar", "Apr", "May"],
40
+ },
41
+ yAxis: {
42
+ title: {
43
+ text: "Number of Employees",
44
+ },
45
+ },
46
+ };
47
+
48
+ const pixelOptions = Highcharts.merge({}, barGraphTheme, pixelHeightChartOptions)
49
+
50
+ const percentageOptions = Highcharts.merge({}, barGraphTheme, percentageHeightChartOptions)
51
+
52
+ const BarGraphHeight = () => (
11
53
  <div>
12
- <BarGraph
13
- axisTitle="Number of Employees"
14
- chartData={chartData}
15
- height="300"
16
- id="bar-fixed-height"
17
- title="Fixed Height (300px)"
18
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']}
19
- yAxisMin={0}
20
- {...props}
21
- />
54
+ <HighchartsReact
55
+ highcharts={Highcharts}
56
+ options={pixelOptions}
57
+ />
22
58
 
23
59
  <br />
24
60
  <br />
25
61
 
26
- <BarGraph
27
- axisTitle="Number of Employees"
28
- chartData={chartData}
29
- height="50%"
30
- id="bar-percentage-height"
31
- title="Percentage Height (50%)"
32
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']}
33
- yAxisMin={0}
34
- {...props}
62
+ <HighchartsReact
63
+ highcharts={Highcharts}
64
+ options={percentageOptions}
35
65
  />
36
66
  </div>
37
67
  )
38
68
 
39
- export default BarGraphDefault
69
+ export default BarGraphHeight
@@ -0,0 +1,3 @@
1
+ By default, Highcharts have a height of 400px, but this can be customized. You can override the default by specifying either a percentage or a fixed pixel value.
2
+
3
+ Using a percentage maintains a consistent aspect ratio across different responsive sizes. For example, setting the height to 50% makes the chart’s height half of its width.
@@ -1,9 +1,10 @@
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
-
6
- const barGraphOptions = {
7
+ const chartOptions = {
7
8
  chart: {
8
9
  type: 'bar'
9
10
  },
@@ -22,13 +23,8 @@ const barGraphOptions = {
22
23
  lineWidth: 0
23
24
  },
24
25
  yAxis: {
25
- min: 0,
26
26
  title: {
27
- text: 'Population (millions)',
28
- align: 'high'
29
- },
30
- labels: {
31
- overflow: 'justify'
27
+ text: '',
32
28
  },
33
29
  },
34
30
  tooltip: {
@@ -51,16 +47,16 @@ const barGraphOptions = {
51
47
  }, {
52
48
  name: 'Year 2018',
53
49
  data: [1276, 1007, 4561, 746]
54
- }]
50
+ }],
55
51
  }
56
52
 
57
- const BarGraphHorizontal = (props) => (
53
+ const options = Highcharts.merge({}, barGraphTheme, chartOptions)
54
+
55
+ const BarGraphHorizontal = () => (
58
56
  <div>
59
- <BarGraph
60
- customOptions={barGraphOptions}
61
- id="bar-horizontal"
62
- yAxisMin={0}
63
- {...props}
57
+ <HighchartsReact
58
+ highcharts={Highcharts}
59
+ options={options}
64
60
  />
65
61
  </div>
66
62
  )
@@ -1,24 +1,40 @@
1
1
  import React from 'react'
2
- import BarGraph from "../../pb_bar_graph/_bar_graph"
2
+ import barGraphTheme from '../barGraphTheme';
3
+ import Highcharts from "highcharts";
4
+ import HighchartsReact from "highcharts-react-official";
5
+
3
6
 
4
7
  const chartData = [{
5
8
  name: 'Number of Installations',
6
9
  data: [1475, 200, 3000, 654, 656],
7
10
  }]
8
11
 
9
- const BarGraphLegend = (props) => (
10
- <div>
11
- <BarGraph
12
- axisTitle="Number of Employees"
13
- chartData={chartData}
14
- id="bar-test-2"
15
- legend
16
- title="Bar Graph with Legend"
17
- xAxisCategories={['Jan', 'Feb', 'Mar', 'Apr', 'May']}
18
- yAxisMin={0}
19
- {...props}
20
- />
21
- </div>
22
- )
12
+ const chartOptions = {
13
+ series: chartData,
14
+ title: {
15
+ text: 'Bar Graph with Legend',
16
+ },
17
+ xAxis: {
18
+ categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
19
+ },
20
+ yAxis: {
21
+ title: {
22
+ text: 'Number of Employees',
23
+ },
24
+ },
25
+ legend: { enabled: true },
26
+ }
23
27
 
28
+ const BarGraphLegend = () => {
29
+ const options = Highcharts.merge({}, barGraphTheme, chartOptions)
30
+
31
+ return (
32
+ <div>
33
+ <HighchartsReact
34
+ highcharts={Highcharts}
35
+ options={options}
36
+ />
37
+ </div>
38
+ )
39
+ }
24
40
  export default BarGraphLegend