playbook_ui 14.22.0 → 14.23.0.pre.alpha.PLAY2121enableexpandedfield9199

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 (200) 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/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/Components/TableHeaderCell.tsx +0 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +3 -3
  7. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +58 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +15 -6
  9. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +1 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +14 -2
  11. data/app/pb_kits/playbook/pb_advanced_table/advanced_table_action_bar.js +16 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.jsx +65 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_sort.md +5 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling.html.erb +46 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_row_styling_rails.md +7 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.jsx +69 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header.md +1 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.jsx +107 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_multi_header.md +1 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.html.erb +51 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_with_custom_header_rails.md +1 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +14 -8
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +3 -0
  24. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +7 -1
  25. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +3 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/table_header.html.erb +5 -1
  27. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +36 -0
  28. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +11 -2
  29. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +2 -0
  30. data/app/pb_kits/playbook/pb_badge/_badge.scss +5 -6
  31. data/app/pb_kits/playbook/pb_bar_graph/barGraphTheme.ts +106 -0
  32. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_colors.jsx +33 -15
  33. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_default.jsx +33 -15
  34. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.jsx +52 -22
  35. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.md +3 -0
  36. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_horizontal.jsx +12 -16
  37. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +31 -15
  38. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +39 -16
  39. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +86 -38
  40. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.md +1 -1
  41. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_negative_numbers.jsx +32 -15
  42. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.jsx +72 -22
  43. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_secondary_y_axis.md +1 -1
  44. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_spline.jsx +31 -15
  45. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_stacked.jsx +37 -16
  46. data/app/pb_kits/playbook/pb_bar_graph/docs/_description.md +1 -3
  47. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +1 -3
  48. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +0 -2
  49. data/app/pb_kits/playbook/pb_body/docs/_body_truncate.jsx +3 -3
  50. data/app/pb_kits/playbook/pb_body/docs/_body_truncate_react.md +4 -0
  51. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +12 -1
  52. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +1 -1
  53. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +2 -1
  54. data/app/pb_kits/playbook/pb_checkbox/index.js +3 -1
  55. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +36 -1
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +71 -26
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +29 -16
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/{_circle_chart_colors.md → _circle_chart_colors_rails.md} +1 -1
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors_react.md +2 -0
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +28 -16
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.md +4 -2
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +23 -15
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.jsx +81 -51
  64. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +103 -75
  65. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +4 -7
  66. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +19 -13
  67. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +30 -17
  68. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.jsx +34 -20
  69. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.jsx +29 -20
  70. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.jsx +28 -20
  71. data/app/pb_kits/playbook/pb_circle_chart/docs/_description.md +1 -0
  72. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -1
  73. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +0 -1
  74. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +12 -4
  75. data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -2
  76. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +17 -1
  77. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +6 -0
  78. data/app/pb_kits/playbook/pb_dropdown/_dropdown_mixin.scss +36 -0
  79. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options.jsx +90 -0
  80. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_active_style_options_react.md +4 -0
  81. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options.jsx +1 -0
  82. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_radio_options_react.md +1 -1
  83. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +3 -2
  84. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -1
  85. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +24 -0
  86. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +11 -1
  87. data/app/pb_kits/playbook/pb_gauge/docs/_description.md +1 -0
  88. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +32 -15
  89. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors_react.md +2 -0
  90. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +35 -9
  91. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex_react.md +1 -0
  92. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +26 -14
  93. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +32 -15
  94. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +45 -17
  95. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +59 -22
  96. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +40 -9
  97. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +50 -18
  98. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +31 -18
  99. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +34 -17
  100. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +64 -23
  101. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units_react.md +1 -0
  102. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +0 -1
  103. data/app/pb_kits/playbook/pb_gauge/docs/index.js +0 -1
  104. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +7 -1
  105. data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +1 -3
  106. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors.jsx +36 -17
  107. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_colors_react.md +3 -0
  108. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +31 -16
  109. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +63 -31
  110. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.md +3 -0
  111. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +35 -16
  112. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +41 -16
  113. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +107 -62
  114. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.md +4 -7
  115. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +0 -1
  116. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +0 -1
  117. data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +16 -1
  118. data/app/pb_kits/playbook/pb_multi_level_select/_helper_functions.tsx +18 -9
  119. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +3 -1
  120. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_show_checked_children.html.erb +75 -0
  121. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_show_checked_children.jsx +94 -0
  122. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_show_checked_children.md +3 -0
  123. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  124. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +2 -1
  125. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +3 -0
  126. data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +4 -0
  127. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_rails.md +3 -1
  128. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_react.md +3 -1
  129. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +30 -17
  130. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.html.erb +10 -0
  131. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.jsx +26 -0
  132. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_strict_mode.md +3 -0
  133. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  134. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  135. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  136. data/app/pb_kits/playbook/pb_select/select.rb +4 -2
  137. data/app/pb_kits/playbook/pb_table/_table.tsx +4 -4
  138. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns.jsx +8 -8
  139. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_columns_react.md +1 -1
  140. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns.jsx +12 -12
  141. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_left_columns_react.md +3 -3
  142. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns.jsx +12 -12
  143. data/app/pb_kits/playbook/pb_table/docs/_table_sticky_right_columns_react.md +3 -3
  144. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.html.erb +1 -0
  145. data/app/pb_kits/playbook/pb_title/docs/_title_truncate.jsx +3 -3
  146. data/app/pb_kits/playbook/pb_title/docs/_title_truncate_react.md +4 -0
  147. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open.html.erb +14 -0
  148. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_click_open_rails.md +1 -0
  149. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  150. data/app/pb_kits/playbook/pb_tooltip/index.js +59 -36
  151. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +9 -2
  152. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.html.erb +18 -0
  153. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input_rails.md +1 -0
  154. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  155. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +3 -0
  156. data/dist/chunks/_line_graph-Bz5CsVqz.js +1 -0
  157. data/dist/chunks/_typeahead-DuoHs8Ye.js +6 -0
  158. data/dist/chunks/_weekday_stacked-0GMpKTN_.js +37 -0
  159. data/dist/chunks/lib-DnQyMxO1.js +29 -0
  160. data/dist/chunks/{pb_form_validation-Dx1C9XCK.js → pb_form_validation-kl-4Jv4t.js} +1 -1
  161. data/dist/chunks/vendor.js +1 -1
  162. data/dist/menu.yml +68 -15
  163. data/dist/playbook-doc.js +2 -2
  164. data/dist/playbook-rails-react-bindings.js +1 -1
  165. data/dist/playbook-rails.js +1 -1
  166. data/dist/playbook.css +1 -1
  167. data/lib/playbook/version.rb +2 -2
  168. metadata +51 -36
  169. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.jsx +0 -72
  170. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_custom.md +0 -6
  171. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.jsx +0 -64
  172. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_pb_styles.md +0 -1
  173. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +0 -38
  174. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +0 -1
  175. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -30
  176. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +0 -1
  177. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +0 -52
  178. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +0 -1
  179. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.scss +0 -0
  180. data/app/pb_kits/playbook/pb_walkthrough/_walkthrough.tsx +0 -202
  181. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_continuous.jsx +0 -69
  182. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_default.jsx +0 -71
  183. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_multi_beacon.jsx +0 -110
  184. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_beacon.jsx +0 -76
  185. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_overlay.jsx +0 -76
  186. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_styled.jsx +0 -76
  187. data/app/pb_kits/playbook/pb_walkthrough/docs/example.yml +0 -10
  188. data/app/pb_kits/playbook/pb_walkthrough/docs/index.js +0 -6
  189. data/app/pb_kits/playbook/pb_walkthrough/walkthrough.test.jsx +0 -34
  190. data/dist/chunks/_typeahead-dOC1gq2X.js +0 -22
  191. data/dist/chunks/_weekday_stacked-Bh8iY5uA.js +0 -45
  192. data/dist/chunks/lib-DtCftrUN.js +0 -29
  193. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_row_styling.md → _advanced_table_row_styling_react.md} +0 -0
  194. /data/app/pb_kits/playbook/pb_body/docs/{_body_truncate.md → _body_truncate_rails.md} +0 -0
  195. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_colors.md → _gauge_colors_rails.md} +0 -0
  196. /data/app/pb_kits/playbook/pb_gauge/docs/{_gauge_complex.md → _gauge_complex_rails.md} +0 -0
  197. /data/app/pb_kits/playbook/pb_line_graph/docs/{_line_graph_colors.md → _line_graph_colors_rails.md} +0 -0
  198. /data/app/pb_kits/playbook/pb_title/docs/{_title_truncate.md → _title_truncate_rails.md} +0 -0
  199. /data/app/pb_kits/playbook/pb_tooltip/docs/{_tooltip_click_open.md → _tooltip_click_open_react.md} +0 -0
  200. /data/app/pb_kits/playbook/pb_typeahead/docs/{_typeahead_preserve_input.md → _typeahead_preserve_input_react.md} +0 -0
@@ -1,32 +1,41 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
 
5
6
  const dataWithLegend = [{
6
7
  name: 'Bugs',
7
- value: 8,
8
-
8
+ y: 8,
9
9
  },
10
10
  {
11
11
  name: 'Chores',
12
- value: 1,
13
-
12
+ y: 1,
14
13
  },
15
14
  {
16
15
  name: 'Stories',
17
- value: 12,
18
- },
19
- ]
16
+ y: 12,
17
+ }]
18
+
19
+ const CircleChartWithLegendKit = () => {
20
+ const chartOptions = {
21
+ series: [{ data: dataWithLegend }],
22
+ plotOptions: {
23
+ pie: {
24
+ showInLegend: true
25
+ }
26
+ }
27
+ }
28
+
29
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
20
30
 
21
- const CircleChartWithLegendKit = (props) => (
22
- <div>
23
- <CircleChart
24
- chartData={dataWithLegend}
25
- id="with-legend-example"
26
- legend
27
- {...props}
28
- />
29
- </div>
30
- )
31
+ return (
32
+ <div>
33
+ <HighchartsReact
34
+ highcharts={Highcharts}
35
+ options={options}
36
+ />
37
+ </div>
38
+ )
39
+ }
31
40
 
32
- export default CircleChartWithLegendKit
41
+ export default CircleChartWithLegendKit
@@ -1,47 +1,55 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
 
5
6
  const dataWithTitle = [
6
7
  {
7
8
  name: 'Facebook',
8
- value: 2498,
9
+ y: 2498,
9
10
  },
10
11
  {
11
12
  name: 'YouTube',
12
- value: 2000,
13
+ y: 2000,
13
14
  },
14
15
  {
15
16
  name: 'WhatsApp',
16
- value: 2000,
17
+ y: 2000,
17
18
  },
18
19
  {
19
20
  name: 'Facebook Messenger',
20
- value: 1300,
21
+ y: 1300,
21
22
  },
22
23
  {
23
24
  name: 'WeChat',
24
- value: 1165,
25
+ y: 1165,
25
26
  },
26
27
  {
27
28
  name: 'Instagram',
28
- value: 1000,
29
+ y: 1000,
29
30
  },
30
31
  {
31
32
  name: 'Tik Tok',
32
- value: 800,
33
+ y: 800,
33
34
  },
34
35
  ]
35
36
 
36
- const CircleChartWithLegendKit = (props) => (
37
- <div>
38
- <CircleChart
39
- chartData={dataWithTitle}
40
- id="with-title-example"
41
- title="Active Users on Social Media"
42
- {...props}
43
- />
44
- </div>
45
- )
37
+ const CircleChartWithTitle = () => {
38
+ const chartOptions = {
39
+ title: { text: "Active Users on Social Media" },
40
+ series: [{ data: dataWithTitle }],
41
+ }
42
+
43
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
44
+
45
+ return (
46
+ <div>
47
+ <HighchartsReact
48
+ highcharts={Highcharts}
49
+ options={options}
50
+ />
51
+ </div>
52
+ )
53
+ }
46
54
 
47
- export default CircleChartWithLegendKit
55
+ export default CircleChartWithTitle
@@ -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 circleChartTheme.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.
@@ -14,7 +14,6 @@ examples:
14
14
 
15
15
  react:
16
16
  - circle_chart_default: Default Style
17
- - circle_chart_pb_styles: Playbook Styles
18
17
  - circle_chart_live_data: Live Data
19
18
  - circle_chart_rounded: Rounded Corners
20
19
  - circle_chart_block: Accepts Any Block
@@ -9,4 +9,3 @@ export { default as CircleChartLegendPosition } from './_circle_chart_legend_pos
9
9
  export { default as CircleChartWithTitle } from './_circle_chart_with_title.jsx'
10
10
  export { default as CircleChartInnerSizes } from './_circle_chart_inner_sizes.jsx'
11
11
  export { default as CircleChartCustomTooltip } from "./_circle_chart_custom_tooltip.jsx"
12
- export { default as CircleChartPbStyles } from "./_circle_chart_pb_styles.jsx"
@@ -3,7 +3,7 @@ import { InitialStateType, ActionType, DraggableProviderType } from "./types";
3
3
 
4
4
  const initialState: InitialStateType = {
5
5
  items: [],
6
- dragData: { id: "", initialGroup: "" },
6
+ dragData: { id: "", initialGroup: "", originId: "" },
7
7
  isDragging: "",
8
8
  activeContainer: ""
9
9
  };
@@ -60,7 +60,8 @@ export const DraggableProvider = ({
60
60
  onDragEnd,
61
61
  onDrop,
62
62
  onDragOver,
63
- dropZone = { type: 'ghost', color: 'neutral', direction: 'vertical' }
63
+ dropZone = { type: 'ghost', color: 'neutral', direction: 'vertical' },
64
+ providerId = 'default', // fallback provided for backward compatibility, so this does not become a required prop
64
65
  }: DraggableProviderType) => {
65
66
  const [state, dispatch] = useReducer(reducer, initialState);
66
67
 
@@ -93,15 +94,17 @@ export const DraggableProvider = ({
93
94
  }, [state.items]);
94
95
 
95
96
  const handleDragStart = (id: string, container: string) => {
96
- dispatch({ type: 'SET_DRAG_DATA', payload: { id: id, initialGroup: container } });
97
+ dispatch({ type: 'SET_DRAG_DATA', payload: { id: id, initialGroup: container, originId: providerId } });
97
98
  dispatch({ type: 'SET_IS_DRAGGING', payload: id });
98
99
  if (onDragStart) onDragStart(id, container);
99
100
  };
100
101
 
101
102
  const handleDragEnter = (id: string, container: string) => {
103
+ if (state.dragData.originId !== providerId) return; // Ignore drag events from other providers
104
+
102
105
  if (state.dragData.id !== id) {
103
106
  dispatch({ type: 'REORDER_ITEMS', payload: { dragId: state.dragData.id, targetId: id } });
104
- dispatch({ type: 'SET_DRAG_DATA', payload: { id: state.dragData.id, initialGroup: container } });
107
+ dispatch({ type: 'SET_DRAG_DATA', payload: { id: state.dragData.id, initialGroup: container, originId: providerId } });
105
108
  }
106
109
  if (onDragEnter) onDragEnter(id, container);
107
110
  };
@@ -109,6 +112,7 @@ export const DraggableProvider = ({
109
112
  const handleDragEnd = () => {
110
113
  dispatch({ type: 'SET_IS_DRAGGING', payload: "" });
111
114
  dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: "" });
115
+ dispatch({ type: 'SET_DRAG_DATA', payload: { id: "", initialGroup: "", originId: "" } });
112
116
  if (onDragEnd) onDragEnd();
113
117
  };
114
118
 
@@ -117,6 +121,8 @@ export const DraggableProvider = ({
117
121
  };
118
122
 
119
123
  const handleDrop = (container: string) => {
124
+ if (state.dragData.originId !== providerId) return; // Ignore drop events from other providers
125
+
120
126
  dispatch({ type: 'SET_IS_DRAGGING', payload: "" });
121
127
  dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: "" });
122
128
  changeCategory(state.dragData.id, container);
@@ -124,6 +130,8 @@ export const DraggableProvider = ({
124
130
  };
125
131
 
126
132
  const handleDragOver = (e: Event, container: string) => {
133
+ if (state.dragData.originId !== providerId) return; // Ignore drag over events from other providers
134
+
127
135
  e.preventDefault();
128
136
  dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: container });
129
137
  if (onDragOver) onDragOver(e, container);
@@ -6,14 +6,16 @@ export interface ItemType {
6
6
 
7
7
  export interface InitialStateType {
8
8
  items: ItemType[];
9
- dragData: { id: string; initialGroup: string };
9
+ dragData: { id: string; initialGroup: string, originId?: string };
10
10
  isDragging: string;
11
11
  activeContainer: string;
12
12
  }
13
13
 
14
14
  export type ActionType =
15
15
  | { type: 'SET_ITEMS'; payload: ItemType[] }
16
- | { type: 'SET_DRAG_DATA'; payload: { id: string; initialGroup: string } }
16
+ | { type: 'SET_DRAG_DATA'; payload: {
17
+ originId: string; id: string; initialGroup: string
18
+ } }
17
19
  | { type: 'SET_IS_DRAGGING'; payload: string }
18
20
  | { type: 'SET_ACTIVE_CONTAINER'; payload: string }
19
21
  | { type: 'CHANGE_CATEGORY'; payload: { itemId: string; container: string } }
@@ -35,4 +37,5 @@ export type ActionType =
35
37
  onDrop?: (container: string) => void;
36
38
  onDragOver?: (e: Event, container: string) => void;
37
39
  dropZone?: DropZoneConfig | string; // Can accept string for backward compatibility
40
+ providerId?: string;
38
41
  }
@@ -8,6 +8,7 @@
8
8
  @import "../pb_textarea/textarea_mixin";
9
9
 
10
10
  @import "./scss_partials/dropdown_animation";
11
+ @import "dropdown_mixin";
11
12
 
12
13
  [class*="pb_dropdown"] {
13
14
  .dropdown_wrapper {
@@ -98,9 +99,23 @@
98
99
  [class^="pb_title_kit"], a {
99
100
  color: $white !important;
100
101
  }
102
+ border-bottom: 1px solid $border_light;
101
103
  &:hover {
102
- background-color: $product_1_background !important;
104
+ background-color: $product_1_background;
105
+ }
106
+
107
+ // activeStyle font color map
108
+ @each $name, $color in $font-colors {
109
+ &.font-#{$name} {
110
+ @include apply-font-color($color);
111
+ }
103
112
  }
113
+ // activeStyle background color map (no difference between selected and selected+hover custom colors)
114
+ @each $name, $bg in $background-colors {
115
+ &.bg-#{$name} {
116
+ background-color: $bg;
117
+ }
118
+ }
104
119
  }
105
120
  }
106
121
 
@@ -267,6 +282,7 @@
267
282
  }
268
283
  &[class*="selected"] {
269
284
  background-color: $primary;
285
+ border-bottom: rgba($white, 0.15);
270
286
  }
271
287
  }
272
288
  }
@@ -39,6 +39,10 @@ type DropdownProps = {
39
39
  options: GenericObject;
40
40
  separators?: boolean;
41
41
  variant?: "default" | "subtle";
42
+ activeStyle?: {
43
+ backgroundColor?: string;
44
+ fontColor?: string;
45
+ };
42
46
  };
43
47
 
44
48
  interface DropdownComponent
@@ -69,6 +73,7 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
69
73
  options,
70
74
  separators = true,
71
75
  variant = "default",
76
+ activeStyle,
72
77
  } = props;
73
78
 
74
79
  const ariaProps = buildAriaProps(aria);
@@ -251,6 +256,7 @@ let Dropdown = (props: DropdownProps, ref: any): React.ReactElement | null => {
251
256
  >
252
257
  <DropdownContext.Provider
253
258
  value={{
259
+ activeStyle,
254
260
  autocomplete,
255
261
  dropdownContainerRef,
256
262
  filteredOptions,
@@ -0,0 +1,36 @@
1
+ @import "../tokens/colors";
2
+
3
+ // activeStyle fontColor sass map to go through text colors + set of custom colors
4
+ $custom-font-colors: (
5
+ primary: $primary
6
+ );
7
+
8
+ $merged-font-colors: map-merge($text_colors, $custom-font-colors);
9
+
10
+ $font-colors: ();
11
+
12
+ @each $key, $val in $merged-font-colors {
13
+ $font-colors: map-merge($font-colors, ($key: $val));
14
+ }
15
+
16
+ @mixin apply-font-color($color) {
17
+ color: $color;
18
+
19
+ [class^="pb_body"],
20
+ [class^="pb_title_kit"],
21
+ a {
22
+ color: $color !important;
23
+ }
24
+ }
25
+
26
+ // activeStyle backgroundColor map (set of custom colors)
27
+ $custom-background-colors: (
28
+ "bg_light": $bg_light,
29
+ "white": $white,
30
+ );
31
+
32
+ $background-colors: ();
33
+
34
+ @each $key, $val in $custom-background-colors {
35
+ $background-colors: map-merge($background-colors, ($key: $val));
36
+ }
@@ -0,0 +1,90 @@
1
+ import React from 'react'
2
+ import Dropdown from '../_dropdown'
3
+
4
+ const DropdownCustomActiveStyleOptions = (props) => {
5
+
6
+
7
+ const options = [
8
+ {
9
+ label: "United States",
10
+ value: "unitedStates",
11
+ id: "us"
12
+ },
13
+ {
14
+ label: "Canada",
15
+ value: "canada",
16
+ id: "ca"
17
+ },
18
+ {
19
+ label: "Pakistan",
20
+ value: "pakistan",
21
+ id: "pk"
22
+ }
23
+ ];
24
+
25
+
26
+ return (
27
+ <div>
28
+ <Dropdown
29
+ activeStyle={{
30
+ backgroundColor: "bg_light",
31
+ fontColor: "primary",
32
+ }}
33
+ label="Background Color: bg_light; Font Color: primary"
34
+ marginBottom="sm"
35
+ options={options}
36
+ {...props}
37
+ >
38
+ <Dropdown.Trigger/>
39
+ <Dropdown.Container>
40
+ {options.map((option) => (
41
+ <Dropdown.Option key={option.id}
42
+ option={option}
43
+ />
44
+ ))}
45
+ </Dropdown.Container>
46
+ </Dropdown>
47
+ <Dropdown
48
+ activeStyle={{
49
+ backgroundColor: "white",
50
+ fontColor: "primary",
51
+ }}
52
+ label="Background Color: white; Font Color: primary"
53
+ marginBottom="sm"
54
+ options={options}
55
+ {...props}
56
+ />
57
+ <Dropdown
58
+ activeStyle={{
59
+ backgroundColor: "bg_light",
60
+ fontColor: "text_lt_default",
61
+ }}
62
+ autocomplete
63
+ label="Background Color: bg_light; Font Color: text_lt_default"
64
+ marginBottom="sm"
65
+ options={options}
66
+ {...props}
67
+ />
68
+ <Dropdown
69
+ activeStyle={{
70
+ fontColor: "text_lt_lighter",
71
+ }}
72
+ label="Font Color: text_lt_lighter"
73
+ marginBottom="sm"
74
+ options={options}
75
+ {...props}
76
+ >
77
+ <Dropdown.Trigger/>
78
+ <Dropdown.Container>
79
+ {options.map((option) => (
80
+ <Dropdown.Option key={option.id}
81
+ option={option}
82
+ />
83
+ ))}
84
+ </Dropdown.Container>
85
+ </Dropdown>
86
+ </div>
87
+ )
88
+ }
89
+
90
+ export default DropdownCustomActiveStyleOptions
@@ -0,0 +1,4 @@
1
+ The `activeStyle` prop can be used to customize the appearance of the dropdown selection indicator. It accepts an object with the following keys: `backgroundColor` sets the background color of the selected item (and its hover state); `fontColor` sets the font color of the selected item.
2
+
3
+ `backgroundColor` **Type**: String | **Values**: bg_light | white | **Default**: (no selection) is primary
4
+ `fontColor` **Type**: String | **Values**: primary | all [Playbook Text Colors](https://playbook.powerapp.cloud/visual_guidelines/colors) | **Default**: (no selection) is white
@@ -18,6 +18,7 @@ const DropdownCustomRadioOptions = (props) => {
18
18
  return (
19
19
  <div>
20
20
  <Dropdown
21
+ activeStyle={{ backgroundColor: "bg_light", fontColor: "text_lt_default" }}
21
22
  label="Select Item"
22
23
  onSelect={(selectedItem) => setSelectedValue(selectedItem?.value)}
23
24
  options={options}
@@ -1 +1 @@
1
- Radio inputs can be used inside `Dropdown.Option` for a custom layout that mimics form-like selection within a dropdown.
1
+ Radio inputs can be used inside `Dropdown.Option` for a custom layout that mimics form-like selection within a dropdown. Use the [activeStyle](https://playbook.powerapp.cloud/kits/dropdown/react#custom-active-style-options) `backgroundColor` and `fontColor` props to create contrast between the Radio selection indicator and the Dropdown selection background indicator.
@@ -16,7 +16,7 @@ examples:
16
16
  - dropdown_with_search_rails: Custom Trigger Dropdown with Search
17
17
  - dropdown_with_custom_padding: Custom Option Padding
18
18
  - dropdown_with_custom_icon_options: Custom Icon Options
19
- # - dropdown_with_custom_radio_options: Custom Radio Options # TODO: Update and publish doc ex in [PLAY-2146](https://runway.powerhrg.com/backlog_items/PLAY-2146) (remove this comment afterwards)
19
+ # - dropdown_with_custom_radio_options: Custom Radio Options # TODO: Update and publish doc ex in the Rails follow up to [PLAY-2146](https://runway.powerhrg.com/backlog_items/PLAY-2146) (remove this comment afterwards)
20
20
  - dropdown_error: Dropdown with Error
21
21
  - dropdown_default_value: Default Value
22
22
  - dropdown_multi_select_with_default: Multi Select Default Value
@@ -39,8 +39,9 @@ examples:
39
39
  - dropdown_with_custom_trigger: Custom Trigger
40
40
  - dropdown_with_search: Custom Trigger Dropdown with Search
41
41
  - dropdown_with_custom_padding: Custom Option Padding
42
+ - dropdown_with_custom_active_style_options: Custom Active Style Options
42
43
  - dropdown_with_custom_icon_options: Custom Icon Options
43
- # - dropdown_with_custom_radio_options: Custom Radio Options # TODO: Update and publish doc ex in [PLAY-2146](https://runway.powerhrg.com/backlog_items/PLAY-2146) (remove this comment afterwards)
44
+ - dropdown_with_custom_radio_options: Custom Radio Options
44
45
  - dropdown_error: Dropdown with Error
45
46
  - dropdown_default_value: Default Value
46
47
  - dropdown_multi_select_with_default: Multi Select Default Value
@@ -21,4 +21,5 @@ export { default as DropdownMultiSelectWithAutocomplete } from './_dropdown_mult
21
21
  export { default as DropdownMultiSelectWithDefault } from './_dropdown_multi_select_with_default.jsx'
22
22
  export { default as DropdownMultiSelectWithCustomOptions } from './_dropdown_multi_select_with_custom_options.jsx'
23
23
  export {default as DropdownWithCustomIconOptions} from './_dropdown_with_custom_icon_options.jsx'
24
- export {default as DropdownWithCustomRadioOptions} from './_dropdown_with_custom_radio_options.jsx'
24
+ export {default as DropdownWithCustomRadioOptions} from './_dropdown_with_custom_radio_options.jsx'
25
+ export {default as DropdownWithCustomActiveStyleOptions} from './_dropdown_with_custom_active_style_options.jsx'
@@ -369,4 +369,28 @@ test("defaultValue works with multiSelect", () => {
369
369
  const option2 = Array.from(kit.querySelectorAll(".pb_dropdown_option_list"));
370
370
  const firstOpt = options[0].label
371
371
  expect(option2[0]).not.toHaveTextContent(firstOpt)
372
+ })
373
+
374
+ test("applies activeStyle backgroundColor and fontColor when selected", () => {
375
+ render(
376
+ <Dropdown
377
+ activeStyle={{
378
+ backgroundColor: "bg_light",
379
+ fontColor: "primary",
380
+ }}
381
+ data={{ testid: testId }}
382
+ options={options}
383
+ />
384
+ )
385
+
386
+ const kit = screen.getByTestId(testId)
387
+ const option = kit.querySelectorAll(".pb_dropdown_option_list")[1]
388
+
389
+ fireEvent.click(option)
390
+
391
+ const selected = kit.querySelector(".pb_dropdown_option_selected")
392
+
393
+ expect(selected).toBeInTheDocument()
394
+ expect(selected).toHaveClass("bg-bg_light")
395
+ expect(selected).toHaveClass("font-primary")
372
396
  })
@@ -41,6 +41,7 @@ const DropdownOption = (props: DropdownOptionProps) => {
41
41
  } = props;
42
42
 
43
43
  const {
44
+ activeStyle,
44
45
  filteredOptions,
45
46
  filterItem,
46
47
  focusedOptionIndex,
@@ -59,7 +60,6 @@ const DropdownOption = (props: DropdownOptionProps) => {
59
60
  ? selected.some((item) => item.label === option?.label)
60
61
  : (selected as GenericObject)?.label === option?.label;
61
62
 
62
-
63
63
  if (!isItemMatchingFilter(option) || (multiSelect && isSelected)) {
64
64
  return null;
65
65
  }
@@ -70,6 +70,14 @@ const DropdownOption = (props: DropdownOptionProps) => {
70
70
 
71
71
  const selectedClass = isSelected ? "selected" : "list";
72
72
 
73
+
74
+ const bgTokenClass = activeStyle?.backgroundColor
75
+ ? `bg-${activeStyle.backgroundColor}`
76
+ : "";
77
+ const fontTokenClass = activeStyle?.fontColor
78
+ ? `font-${activeStyle.fontColor}`
79
+ : "";
80
+
73
81
  const ariaProps = buildAriaProps(aria);
74
82
  const dataProps = buildDataProps(data);
75
83
  const htmlProps = buildHtmlProps(htmlOptions);
@@ -79,6 +87,8 @@ const DropdownOption = (props: DropdownOptionProps) => {
79
87
  selectedClass,
80
88
  focusedClass,
81
89
  ),
90
+ bgTokenClass,
91
+ fontTokenClass,
82
92
  globalProps(props),
83
93
  className
84
94
  );
@@ -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`