playbook_ui 14.23.0 → 14.24.0.pre.alpha.PLAY1984responsivegapprops9652

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 (189) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/CustomCell.tsx +7 -6
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +8 -2
  5. data/app/pb_kits/playbook/pb_advanced_table/Components/SortIconButton.tsx +24 -25
  6. data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +10 -10
  7. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +11 -13
  8. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +7 -4
  9. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +1 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +112 -2
  11. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +13 -7
  12. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +2 -2
  13. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +14 -2
  14. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +90 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/advanced_table_action_bar.js +16 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.html.erb +43 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_vertical_border.jsx +64 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.jsx +60 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control.md +3 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row.jsx +57 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_padding_control_per_row.md +1 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.html.erb +46 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +7 -0
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.html.erb +1 -1
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.html.erb +1 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column.jsx +55 -0
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column.md +6 -0
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column_for_multi_column.jsx +80 -0
  29. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_per_column_for_multi_column.md +1 -0
  30. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -1
  31. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.jsx +107 -0
  32. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.md +1 -0
  33. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +51 -0
  34. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.md +1 -0
  35. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +9 -0
  36. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +6 -0
  37. data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +4 -11
  38. data/app/pb_kits/playbook/pb_advanced_table/index.js +108 -125
  39. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +7 -1
  40. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +7 -4
  41. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -1
  42. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +46 -4
  43. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +13 -4
  44. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +24 -5
  45. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +1 -1
  46. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +1 -1
  47. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +12 -1
  48. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +1 -1
  49. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +2 -1
  50. data/app/pb_kits/playbook/pb_checkbox/index.js +218 -26
  51. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +1 -1
  52. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.html.erb +10 -1
  53. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +2 -0
  54. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_input_options.html.erb +24 -0
  55. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_input_options.md +3 -0
  56. data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +1 -0
  57. data/app/pb_kits/playbook/pb_date/_date.tsx +5 -3
  58. data/app/pb_kits/playbook/pb_date/date.html.erb +6 -6
  59. data/app/pb_kits/playbook/pb_date/date.rb +2 -0
  60. data/app/pb_kits/playbook/pb_date/docs/_date_with_show_current_year.html.erb +4 -0
  61. data/app/pb_kits/playbook/pb_date/docs/_date_with_show_current_year.jsx +17 -0
  62. data/app/pb_kits/playbook/pb_date/docs/_date_with_show_current_year.md +1 -0
  63. data/app/pb_kits/playbook/pb_date/docs/example.yml +2 -0
  64. data/app/pb_kits/playbook/pb_date/docs/index.js +1 -0
  65. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +17 -1
  66. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +6 -0
  67. data/app/pb_kits/playbook/pb_dropdown/_dropdown_mixin.scss +36 -0
  68. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options.jsx +90 -0
  69. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options_react.md +4 -0
  70. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options.jsx +1 -0
  71. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options_react.md +1 -1
  72. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +3 -2
  73. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -1
  74. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +24 -0
  75. data/app/pb_kits/playbook/pb_dropdown/index.js +3 -0
  76. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +11 -1
  77. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.tsx +2 -2
  78. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.html.erb +22 -0
  79. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.jsx +43 -0
  80. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_no_icon.md +1 -0
  81. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +2 -0
  82. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
  83. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.html.erb +2 -1
  84. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +1 -1
  85. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.test.js +6 -0
  86. data/app/pb_kits/playbook/pb_flex/_flex.tsx +9 -6
  87. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.html.erb +12 -1
  88. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +26 -1
  89. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_rails.md +11 -0
  90. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_react.md +11 -0
  91. data/app/pb_kits/playbook/pb_flex/flex.rb +6 -12
  92. data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
  93. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
  94. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
  95. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
  96. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
  97. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
  98. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
  99. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
  100. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
  101. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
  102. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
  103. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
  104. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
  105. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
  106. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
  107. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
  108. data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
  109. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
  110. data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +1 -3
  111. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +36 -17
  112. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors_react.md +3 -0
  113. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +31 -16
  114. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +63 -31
  115. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.md +3 -0
  116. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +35 -16
  117. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +41 -16
  118. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +107 -62
  119. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +4 -7
  120. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
  121. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
  122. data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +16 -1
  123. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +18 -9
  124. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +3 -1
  125. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_show_checked_children.html.erb +75 -0
  126. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_show_checked_children.jsx +94 -0
  127. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_show_checked_children.md +3 -0
  128. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -1
  129. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  130. data/app/pb_kits/playbook/pb_pagination/_pagination.test.jsx +212 -0
  131. data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +12 -1
  132. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_rails.md +3 -1
  133. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_react.md +3 -1
  134. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_external_control.jsx +112 -0
  135. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_external_control_react.md +3 -0
  136. data/app/pb_kits/playbook/pb_pagination/docs/example.yml +1 -0
  137. data/app/pb_kits/playbook/pb_pagination/docs/index.js +1 -0
  138. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +14 -1
  139. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb +10 -0
  140. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx +26 -0
  141. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md +3 -0
  142. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  143. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  144. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  145. data/app/pb_kits/playbook/pb_select/select.rb +4 -2
  146. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +1 -0
  147. data/app/pb_kits/playbook/pb_table/styles/_vertical_border.scss +49 -1
  148. data/app/pb_kits/playbook/utilities/_gap.scss +12 -24
  149. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +2 -0
  150. data/app/pb_kits/playbook/utilities/globalProps.ts +28 -4
  151. data/dist/chunks/_line_graph-B9yItXkt.js +1 -0
  152. data/dist/chunks/_typeahead-Mbp0CWgZ.js +6 -0
  153. data/dist/chunks/_weekday_stacked-C-5U1QRT.js +37 -0
  154. data/dist/chunks/lib-CY5ZPzic.js +29 -0
  155. data/dist/chunks/{pb_form_validation-B7kuYG-_.js → pb_form_validation-D3b0JKHH.js} +1 -1
  156. data/dist/chunks/vendor.js +1 -1
  157. data/dist/menu.yml +4 -11
  158. data/dist/playbook-doc.js +2 -2
  159. data/dist/playbook-rails-react-bindings.js +1 -1
  160. data/dist/playbook-rails.js +1 -1
  161. data/dist/playbook.css +1 -1
  162. data/lib/playbook/classnames.rb +2 -0
  163. data/lib/playbook/spacing.rb +53 -1
  164. data/lib/playbook/version.rb +2 -2
  165. metadata +55 -27
  166. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +0 -9
  167. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
  168. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
  169. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
  170. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
  171. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.scss +0 -0
  172. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.tsx +0 -202
  173. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_continuous.jsx +0 -69
  174. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_default.jsx +0 -71
  175. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_multi_beacon.jsx +0 -110
  176. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_beacon.jsx +0 -76
  177. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_overlay.jsx +0 -76
  178. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_styled.jsx +0 -76
  179. data/app/pb_kits/playbook/pb_walkthrough/docs/example.yml +0 -10
  180. data/app/pb_kits/playbook/pb_walkthrough/docs/index.js +0 -6
  181. data/app/pb_kits/playbook/pb_walkthrough/walkthrough.test.jsx +0 -34
  182. data/dist/chunks/_circle_chart-D01WLw-z.js +0 -1
  183. data/dist/chunks/_typeahead-mrBE9f17.js +0 -22
  184. data/dist/chunks/_weekday_stacked-_LSSbN1y.js +0 -45
  185. data/dist/chunks/lib-CHh_1-Oj.js +0 -29
  186. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_row_styling.md → _advanced_table_row_styling_react.md} +0 -0
  187. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
  188. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
  189. /data/app/pb_kits/playbook/pb_line_graph/docs/{_line_graph_colors.md → _line_graph_colors_rails.md} +0 -0
@@ -1,6 +1,7 @@
1
1
  import React from 'react'
2
2
  import Flex from '../../pb_flex/_flex'
3
3
  import FlexItem from '../../pb_flex/_flex_item'
4
+ import Title from '../../pb_title/_title'
4
5
 
5
6
  const FlexGap = (props) => {
6
7
  const count = () => {
@@ -13,6 +14,8 @@ const FlexGap = (props) => {
13
14
 
14
15
  return (
15
16
  <>
17
+ <Title size={4}>Gap</Title>
18
+ <br />
16
19
  <div className="flex-doc-example">
17
20
  <Flex
18
21
  gap="xxs"
@@ -27,8 +30,10 @@ const FlexGap = (props) => {
27
30
  </Flex>
28
31
  </div>
29
32
 
30
- <br />
33
+ <br /><br />
31
34
 
35
+ <Title size={4}>Column Gap</Title>
36
+ <br />
32
37
  <div className="flex-doc-example">
33
38
  <Flex
34
39
  columnGap="lg"
@@ -48,6 +53,9 @@ const FlexGap = (props) => {
48
53
  </FlexItem>
49
54
  </Flex>
50
55
  </div>
56
+ <br /><br />
57
+
58
+ <Title size={4}>Row Gap</Title>
51
59
  <br />
52
60
  <div className="flex-doc-example">
53
61
  <Flex
@@ -69,6 +77,23 @@ const FlexGap = (props) => {
69
77
  </FlexItem>
70
78
  </Flex>
71
79
  </div>
80
+
81
+ <br /><br />
82
+ <Title size={4}>Responsive</Title>
83
+ <br />
84
+ <div className="flex-doc-example">
85
+ <Flex
86
+ gap={{ xs: "none", sm: "sm", md: "md", lg: "lg", xl: "xl" }}
87
+ wrap
88
+ {...props}
89
+ >
90
+ {count().map((v, key) => (
91
+ <FlexItem key={key}>
92
+ {v}
93
+ </FlexItem>
94
+ ))}
95
+ </Flex>
96
+ </div>
72
97
  </>
73
98
  )
74
99
  }
@@ -0,0 +1,11 @@
1
+ ##### Prop
2
+
3
+ `gap` | `row_gap` | `column_gap` | **Type**: String | Hash | **Values**: xxs | xs | sm | md | lg | xl | none
4
+
5
+ Setting the gap prop sets the `row_gap` and the `column_gap` props to the same size and creates equal space within a flex container.
6
+
7
+ Setting the `row_gap` prop creates space between rows in a flex container.
8
+
9
+ Setting the `column_gap` prop creates space between columns in a flex container.
10
+
11
+ You can also set responsive values by passing a hash with device sizes and values.
@@ -0,0 +1,11 @@
1
+ ##### Prop
2
+
3
+ `gap` | `rowGap` | `columnGap` | **Type**: String | Object | **Values**: xxs | xs | sm | md | lg | xl | none
4
+
5
+ Setting the gap prop sets the `rowGap` and the `columnGap` props to the same size and creates equal space within a flex container.
6
+
7
+ Setting the `rowGap` prop creates space between rows in a flex container.
8
+
9
+ Setting the `columnGap` prop creates space between columns in a flex container.
10
+
11
+ You can also set responsive values by passing an object with device sizes and values.
@@ -24,17 +24,11 @@ module Playbook
24
24
  default: "none",
25
25
  deprecated: true
26
26
 
27
- prop :gap, type: Playbook::Props::Enum,
28
- values: %w[xxs xs sm md lg xl none],
29
- default: "none"
27
+ prop :gap
30
28
 
31
- prop :row_gap, type: Playbook::Props::Enum,
32
- values: %w[xxs xs sm md lg xl none],
33
- default: "none"
29
+ prop :row_gap
34
30
 
35
- prop :column_gap, type: Playbook::Props::Enum,
36
- values: %w[xxs xs sm md lg xl none],
37
- default: "none"
31
+ prop :column_gap
38
32
 
39
33
  prop :reverse, type: Playbook::Props::Boolean,
40
34
  default: false
@@ -133,7 +127,7 @@ module Playbook
133
127
  end
134
128
 
135
129
  def gap_class
136
- if gap == "none"
130
+ if gap == "none" || gap.nil? || gap.is_a?(Hash)
137
131
  nil
138
132
  else
139
133
  "gap_#{gap}"
@@ -141,7 +135,7 @@ module Playbook
141
135
  end
142
136
 
143
137
  def row_gap_class
144
- if row_gap == "none"
138
+ if row_gap == "none" || row_gap.nil? || row_gap.is_a?(Hash)
145
139
  nil
146
140
  else
147
141
  "rowGap_#{row_gap}"
@@ -149,7 +143,7 @@ module Playbook
149
143
  end
150
144
 
151
145
  def column_gap_class
152
- if column_gap == "none"
146
+ if column_gap == "none" || column_gap.nil? || column_gap.is_a?(Hash)
153
147
  nil
154
148
  else
155
149
  "columnGap_#{column_gap}"
@@ -0,0 +1 @@
1
+ **Important Note for the React Kit**: In order to leverage this kit, you must install `highcharts` and `highcharts-react-official` into your project as shown below. To then apply Playbook styles to your Highchart, import gaugeTheme.ts from playbook-ui and merge it with your Highchart options. Then, pass the merged value to the options prop. Playbook’s styling will be applied automatically. See the examples in the documentation below.
@@ -1,19 +1,36 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
7
+ import colors from '../../tokens/exports/_colors.module.scss'
3
8
 
4
- const data = [
5
- { name: 'Name', value: 67 },
6
- ]
9
+ HighchartsMore(Highcharts);
10
+ SolidGauge(Highcharts);
7
11
 
8
- const GaugeColors = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- id="gauge-colors"
13
- {...props}
14
- colors={['data-7']}
15
- />
16
- </div>
17
- )
12
+ const data = [{ name: "Name", y: 67 }]
18
13
 
19
- export default GaugeColors
14
+ const baseOptions = {
15
+ series: [{ data: data }],
16
+ plotOptions: {
17
+ solidgauge: {
18
+ borderColor: colors.data_7,
19
+ }
20
+ },
21
+ };
22
+
23
+ const GaugeColors = () => {
24
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
25
+
26
+ return (
27
+ <div>
28
+ <HighchartsReact
29
+ highcharts={Highcharts}
30
+ options={options}
31
+ />
32
+ </div>
33
+ );
34
+ };
35
+
36
+ export default GaugeColors;
@@ -0,0 +1,2 @@
1
+ Custom data colors allow for color customization to match the needs of business requirements.
2
+ Pass the prop `plotOptions.solidgauge.borderColor` with a Playbook token like `colors.` + `data_1 | data_2 | data_3 | data_4 | data_5 | data_6 | data_7 | data_8`. Hex colors are also available `eg: #CA0095`
@@ -2,14 +2,44 @@ import React from "react";
2
2
 
3
3
  import Flex from '../../pb_flex/_flex'
4
4
  import FlexItem from '../../pb_flex/_flex_item'
5
- import Gauge from '../../pb_gauge/_gauge'
6
5
  import Card from '../../pb_card/_card'
7
6
  import Caption from '../../pb_caption/_caption'
8
7
  import Body from '../../pb_body/_body'
9
8
  import SectionSeparator from '../../pb_section_separator/_section_separator'
10
9
  import Title from '../../pb_title/_title'
10
+ import gaugeTheme from '../gaugeTheme'
11
+ import Highcharts from "highcharts"
12
+ import HighchartsReact from "highcharts-react-official"
13
+ import HighchartsMore from "highcharts/highcharts-more"
14
+ import SolidGauge from "highcharts/modules/solid-gauge"
15
+ import colors from '../../tokens/exports/_colors.module.scss'
16
+ import typography from '../../tokens/exports/_typography.module.scss'
11
17
 
12
- const data = [{ name: "Name", value: 10 }];
18
+ HighchartsMore(Highcharts);
19
+ SolidGauge(Highcharts);
20
+
21
+ const data = [{ name: "Name", y: 10 }];
22
+
23
+ const baseOptions = {
24
+ series: [{ data: data }],
25
+ chart: {
26
+ height: "150",
27
+ },
28
+ plotOptions: {
29
+ series: {
30
+ animation: false,
31
+ },
32
+ solidgauge: {
33
+ dataLabels: {
34
+ format:
35
+ `<span class="fix">{y:,f}</span>` +
36
+ `<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">%</span>`,
37
+ },
38
+ },
39
+ },
40
+ };
41
+
42
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
13
43
 
14
44
  const GaugeComplex = (props) => (
15
45
  <Flex
@@ -100,13 +130,9 @@ const GaugeComplex = (props) => (
100
130
  shrink
101
131
  {...props}
102
132
  >
103
- <Gauge
104
- chartData={data}
105
- disableAnimation
106
- height="150"
107
- id="gauge-complex"
108
- suffix="%"
109
- {...props}
133
+ <HighchartsReact
134
+ highcharts={Highcharts}
135
+ options={options}
110
136
  />
111
137
  </FlexItem>
112
138
  </Flex>
@@ -0,0 +1 @@
1
+ We are able to wrap the Highcharts Gauge kit within Playbook kits (such as Flex and Card components).
@@ -1,18 +1,30 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
3
7
 
4
- const data = [
5
- { name: 'Name', value: 45 },
6
- ]
8
+ HighchartsMore(Highcharts);
9
+ SolidGauge(Highcharts);
7
10
 
8
- const GaugeDefault = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- id="gauge-default"
13
- {...props}
14
- />
15
- </div>
16
- )
11
+ const data = [{ name: "Name", y: 45 }]
17
12
 
18
- export default GaugeDefault
13
+ const baseOptions = {
14
+ series: [{ data: data }],
15
+ };
16
+
17
+ const GaugeDefault = () => {
18
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
19
+
20
+ return (
21
+ <div>
22
+ <HighchartsReact
23
+ highcharts={Highcharts}
24
+ options={options}
25
+ />
26
+ </div>
27
+ );
28
+ };
29
+
30
+ export default GaugeDefault;
@@ -1,19 +1,36 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
3
7
 
4
- const data = [
5
- { name: 'Participants', value: 84 },
6
- ]
8
+ HighchartsMore(Highcharts);
9
+ SolidGauge(Highcharts);
7
10
 
8
- const GaugeDisableAnimation = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- disableAnimation
13
- id="gauge-disable-animation"
14
- {...props}
15
- />
16
- </div>
17
- )
11
+ const data = [{ name: "Participants", y: 84 }]
18
12
 
19
- export default GaugeDisableAnimation
13
+ const baseOptions = {
14
+ series: [{ data: data }],
15
+ plotOptions: {
16
+ series: {
17
+ animation: false,
18
+ },
19
+ },
20
+ };
21
+
22
+ const GaugeDisableAnimation = () => {
23
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
24
+
25
+ return (
26
+ <div>
27
+ <HighchartsReact
28
+ disableAnimation
29
+ highcharts={Highcharts}
30
+ options={options}
31
+ />
32
+ </div>
33
+ );
34
+ };
35
+
36
+ export default GaugeDisableAnimation;
@@ -1,21 +1,49 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
7
+ import colors from '../../tokens/exports/_colors.module.scss'
8
+ import typography from '../../tokens/exports/_typography.module.scss'
3
9
 
4
- const data = [
5
- { name: 'Capacity', value: 75 },
6
- ]
10
+ HighchartsMore(Highcharts);
11
+ SolidGauge(Highcharts);
7
12
 
8
- const GaugeFullCircle = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- fullCircle
13
- id="gauge-full-circle"
14
- suffix="%"
15
- title="Seating Capacity"
16
- {...props}
17
- />
18
- </div>
19
- )
13
+ const data = [{ name: "Capacity", y: 75 }]
20
14
 
21
- export default GaugeFullCircle
15
+ const baseOptions = {
16
+ title: {
17
+ text: "Seating Capacity",
18
+ },
19
+ series: [{ data: data }],
20
+ pane: {
21
+ startAngle: 0,
22
+ endAngle: 360,
23
+ },
24
+ plotOptions: {
25
+ solidgauge: {
26
+ dataLabels: {
27
+ format:
28
+ `<span class="fix">{y:,f}</span>` +
29
+ `<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">%</span>`,
30
+ },
31
+ },
32
+ },
33
+ };
34
+
35
+ const GaugeFullCircle = () => {
36
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
37
+
38
+ return (
39
+ <div>
40
+ <HighchartsReact
41
+ highcharts={Highcharts}
42
+ id="gauge-full-circle"
43
+ options={options}
44
+ />
45
+ </div>
46
+ );
47
+ };
48
+
49
+ export default GaugeFullCircle;
@@ -1,25 +1,62 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
7
+ import colors from '../../tokens/exports/_colors.module.scss'
8
+ import typography from '../../tokens/exports/_typography.module.scss'
3
9
 
4
- const GaugeHeight = (props) => (
5
- <div>
6
- <Gauge
7
- chartData={[ { name: 'Pixels', value: 400 } ]}
8
- height="400"
9
- id="gauge-height-px"
10
- suffix="px"
11
- title="Fixed Height in Pixels"
12
- {...props}
13
- />
14
- <Gauge
15
- chartData={[ { name: 'Percentage', value: 45 } ]}
16
- height="45%"
17
- id="gauge-height-percent"
18
- suffix="%"
19
- title="Height as Percentage of Width"
20
- {...props}
21
- />
22
- </div>
23
- )
10
+ HighchartsMore(Highcharts);
11
+ SolidGauge(Highcharts);
24
12
 
25
- export default GaugeHeight
13
+ const GaugeHeight = () => {
14
+ return (
15
+ <div>
16
+ <HighchartsReact
17
+ highcharts={Highcharts}
18
+ options={Highcharts.merge({}, gaugeTheme, {
19
+ title: {
20
+ text: "Fixed Height in Pixels",
21
+ },
22
+ chart: {
23
+ height: "400",
24
+ },
25
+ series: [{ data: [{ name: "Pixels", y: 400 }] }],
26
+ plotOptions: {
27
+ solidgauge: {
28
+ dataLabels: {
29
+ format:
30
+ `<span class="fix">{y:,f}</span>` +
31
+ `<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">px</span>`,
32
+ },
33
+ },
34
+ },
35
+ })}
36
+ />
37
+ <HighchartsReact
38
+ highcharts={Highcharts}
39
+ options={Highcharts.merge({}, gaugeTheme, {
40
+ title: {
41
+ text: "Height as Percentage of Width",
42
+ },
43
+ chart: {
44
+ height: "45%",
45
+ },
46
+ series: [{ data: [{ name: "Percentage", y: 45 }] }],
47
+ plotOptions: {
48
+ solidgauge: {
49
+ dataLabels: {
50
+ format:
51
+ `<span class="fix">{y:,f}</span>` +
52
+ `<span style="fill: ${colors.text_lt_light}; font-size: ${typography.text_larger};">%</span>`,
53
+ },
54
+ },
55
+ },
56
+ })}
57
+ />
58
+ </div>
59
+ );
60
+ };
61
+
62
+ export default GaugeHeight;
@@ -1,15 +1,31 @@
1
- import React, { useState } from 'react'
2
-
1
+ import React, { useState, useRef } from 'react'
3
2
  import Button from '../../pb_button/_button'
4
- import Gauge from '../../pb_gauge/_gauge'
3
+ import gaugeTheme from '../gaugeTheme'
4
+ import Highcharts from "highcharts"
5
+ import HighchartsReact from "highcharts-react-official"
6
+ import HighchartsMore from "highcharts/highcharts-more"
7
+ import SolidGauge from "highcharts/modules/solid-gauge"
8
+
9
+ HighchartsMore(Highcharts);
10
+ SolidGauge(Highcharts);
5
11
 
6
12
  const GaugeLiveData = (props) => {
7
13
  const [value, setValue] = useState(50)
8
14
  const [name, setName] = useState('Name')
15
+ const chartRef = useRef(null)
16
+
17
+ const namesArray = ['Name', 'Windows', 'Doors', 'Roofing', 'Siding', 'Gutters']
9
18
 
10
19
  const updateValue = () => {
11
- setValue(Math.floor(Math.random() * 100))
20
+ const newValue = Math.floor(Math.random() * 100)
21
+ setValue(newValue)
22
+
23
+ const chart = chartRef.current?.chart
24
+ if (chart) {
25
+ chart.series[0].points[0].update(newValue)
26
+ }
12
27
  }
28
+
13
29
  const updateName = () => {
14
30
  let index = namesArray.indexOf(name)
15
31
  if (namesArray.indexOf(name) == 5) {
@@ -18,8 +34,23 @@ const GaugeLiveData = (props) => {
18
34
  index += 1
19
35
  }
20
36
  setName(namesArray[index])
37
+
38
+ const chart = chartRef.current?.chart
39
+ if (chart) {
40
+ chart.series[0].points[0].update({ name: namesArray[index] })
41
+ }
21
42
  }
22
- const namesArray = ['Name', 'Windows', 'Doors', 'Roofing', 'Siding', 'Gutters']
43
+
44
+ const options = Highcharts.merge({}, gaugeTheme,
45
+ {
46
+ title: {
47
+ text: name,
48
+ },
49
+ series: [{
50
+ data: [{ name: name, y: value }]
51
+ }]
52
+ }
53
+ )
23
54
 
24
55
  return (
25
56
  <div>
@@ -33,10 +64,10 @@ const GaugeLiveData = (props) => {
33
64
  text="Update Name"
34
65
  {...props}
35
66
  />
36
- <Gauge
37
- chartData={[{ name: name, value: value }]}
38
- id="gauge-live-data"
39
- {...props}
67
+ <HighchartsReact
68
+ highcharts={Highcharts}
69
+ options={options}
70
+ ref={chartRef}
40
71
  />
41
72
  </div>
42
73
  )
@@ -1,22 +1,54 @@
1
1
  import React from 'react'
2
- import Gauge from '../../pb_gauge/_gauge'
2
+ import gaugeTheme from '../gaugeTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+ import HighchartsMore from "highcharts/highcharts-more"
6
+ import SolidGauge from "highcharts/modules/solid-gauge"
7
+ import colors from '../../tokens/exports/_colors.module.scss'
8
+ import typography from '../../tokens/exports/_typography.module.scss'
3
9
 
4
- const data = [{
5
- name: 'Rating', value: 4.5,
6
- }]
10
+ HighchartsMore(Highcharts);
11
+ SolidGauge(Highcharts);
7
12
 
8
- const GaugeMinMax = (props) => (
9
- <div>
10
- <Gauge
11
- chartData={data}
12
- id="gauge-min-max"
13
- max={5}
14
- min={0}
15
- showLabels
16
- title="Product Rating"
17
- {...props}
18
- />
19
- </div>
20
- )
13
+ const data = [{ name: "Rating", y: 4.5 }]
21
14
 
22
- export default GaugeMinMax
15
+ const baseOptions = {
16
+ title: {
17
+ text: "Product Rating",
18
+ },
19
+ yAxis: {
20
+ min: 0,
21
+ max: 5,
22
+ lineWidth: 0,
23
+ tickWidth: 0,
24
+ minorTickInterval: null,
25
+ tickAmount: 2,
26
+ tickPositions: [0, 5],
27
+ labels: {
28
+ y: 26,
29
+ enabled: true,
30
+ style: {
31
+ color: colors.neutral,
32
+ fontFamily: typography.font_family_base,
33
+ fontWeight: typography.bold,
34
+ }
35
+ },
36
+ },
37
+ series: [{ data: data }],
38
+ };
39
+
40
+ const GaugeMinMax = () => {
41
+ const options = Highcharts.merge({}, gaugeTheme, baseOptions);
42
+
43
+ return (
44
+ <div>
45
+ <HighchartsReact
46
+ highcharts={Highcharts}
47
+ id="gauge-min-max"
48
+ options={options}
49
+ />
50
+ </div>
51
+ );
52
+ };
53
+
54
+ export default GaugeMinMax;