playbook_ui 14.17.0.pre.rc.1 → 14.18.0.pre.alpha.PLAY20787400

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 (220) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/Components/RegularTableView.tsx +23 -3
  3. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +67 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +1 -2
  5. data/app/pb_kits/playbook/pb_advanced_table/Utilities/ExpansionControlHelpers.tsx +29 -19
  6. data/app/pb_kits/playbook/pb_advanced_table/Utilities/types.ts +1 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +133 -124
  8. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +92 -2
  9. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +20 -7
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expand_by_depth.jsx +66 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expand_by_depth.md +10 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx +90 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.md +3 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.jsx +58 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns.md +6 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.jsx +64 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_columns_and_header.md +8 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.jsx +55 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header.md +3 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.html.erb +33 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sticky_header_rails.md +3 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.html.erb +1 -1
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +1 -2
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_rails.md +2 -2
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_react.md +1 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_rails.md +6 -2
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header_react.md +6 -2
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +9 -3
  29. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +6 -1
  30. data/app/pb_kits/playbook/pb_advanced_table/index.js +7 -0
  31. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +97 -0
  32. data/app/pb_kits/playbook/pb_advanced_table/table_row.html.erb +1 -1
  33. data/app/pb_kits/playbook/pb_background/_background.scss +26 -0
  34. data/app/pb_kits/playbook/pb_background/_background.tsx +5 -3
  35. data/app/pb_kits/playbook/pb_background/background.test.js +5 -0
  36. data/app/pb_kits/playbook/pb_background/docs/_background_overlay.jsx +35 -0
  37. data/app/pb_kits/playbook/pb_background/docs/_background_overlay.md +1 -0
  38. data/app/pb_kits/playbook/pb_background/docs/example.yml +1 -0
  39. data/app/pb_kits/playbook/pb_background/docs/index.js +1 -0
  40. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +1 -1
  41. data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +2 -2
  42. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +53 -0
  43. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.html.erb +2 -2
  44. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +1 -1
  45. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.html.erb +1 -1
  46. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +1 -1
  47. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.html.erb +1 -1
  48. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.html.erb +1 -1
  50. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +1 -1
  51. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.html.erb +1 -1
  52. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +1 -1
  53. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +2 -2
  54. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +38 -0
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +1 -0
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.html.erb +1 -1
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +2 -3
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +2 -1
  60. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.scss +39 -1
  61. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.tsx +4 -0
  62. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +9 -1
  63. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.test.js +14 -0
  64. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_size.html.erb +28 -0
  65. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_size.jsx +42 -0
  66. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_size.md +1 -0
  67. data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +2 -0
  68. data/app/pb_kits/playbook/pb_circle_icon_button/docs/index.js +1 -0
  69. data/app/pb_kits/playbook/pb_collapsible/__snapshots__/collapsible.test.js.snap +14 -7
  70. data/app/pb_kits/playbook/pb_contact/contact.test.js +7 -7
  71. data/app/pb_kits/playbook/pb_copy_button/_copy_button.tsx +19 -45
  72. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.jsx +54 -0
  73. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook.md +3 -0
  74. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook_rails.html.erb +14 -0
  75. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_hook_rails.md +3 -0
  76. data/app/pb_kits/playbook/pb_copy_button/docs/example.yml +2 -0
  77. data/app/pb_kits/playbook/pb_copy_button/docs/index.js +2 -1
  78. data/app/pb_kits/playbook/pb_copy_button/index.js +46 -20
  79. data/app/pb_kits/playbook/pb_copy_button/usePBCopy.ts +45 -0
  80. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +12 -0
  81. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +12 -0
  82. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +50 -1
  83. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_rails.md +4 -0
  84. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_range_limit.md +1 -1
  85. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_react.md +5 -1
  86. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.jsx +34 -0
  87. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.md +14 -0
  88. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.html.erb +20 -0
  89. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.md +14 -0
  90. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +2 -0
  91. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -0
  92. data/app/pb_kits/playbook/pb_date_picker/plugins/quickPick.tsx +10 -0
  93. data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.test.js +2 -2
  94. data/app/pb_kits/playbook/pb_date_range_stacked/date_range_stacked.test.js +1 -1
  95. data/app/pb_kits/playbook/pb_dialog/dialog.html.erb +10 -1
  96. data/app/pb_kits/playbook/pb_dialog/dialog.rb +2 -0
  97. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_turbo_frames.html.erb +117 -0
  98. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_turbo_frames_rails.md +9 -0
  99. data/app/pb_kits/playbook/pb_dialog/docs/example.yml +1 -0
  100. data/app/pb_kits/playbook/pb_dialog/index.js +106 -14
  101. data/app/pb_kits/playbook/pb_draggable/_draggable.scss +43 -20
  102. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +58 -17
  103. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.jsx +102 -105
  104. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.md +3 -3
  105. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.jsx +50 -48
  106. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.md +1 -1
  107. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.jsx +110 -0
  108. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.md +5 -0
  109. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.html.erb +42 -0
  110. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.md +1 -0
  111. data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_table_react.jsx → _draggable_with_table.jsx} +1 -1
  112. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +3 -1
  113. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +10 -6
  114. data/app/pb_kits/playbook/pb_draggable/docs/index.js +4 -1
  115. data/app/pb_kits/playbook/pb_draggable/draggable.test.jsx +71 -3
  116. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableContainer.tsx +4 -3
  117. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +1 -1
  118. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +6 -6
  119. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.jsx +6 -6
  120. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +6 -6
  121. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +8 -8
  122. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +3 -3
  123. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +1 -1
  124. data/app/pb_kits/playbook/pb_form_group/_form_group.scss +45 -3
  125. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.html.erb +15 -5
  126. data/app/pb_kits/playbook/pb_form_group/docs/_form_group_select.jsx +39 -6
  127. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +30 -0
  128. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.md +1 -0
  129. data/app/pb_kits/playbook/pb_gauge/docs/example.yml +1 -0
  130. data/app/pb_kits/playbook/pb_gauge/docs/index.js +1 -0
  131. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +85 -0
  132. data/app/pb_kits/playbook/pb_icon/icon.test.js +9 -9
  133. data/app/pb_kits/playbook/pb_icon_circle/icon_circle.test.js +1 -1
  134. data/app/pb_kits/playbook/pb_icon_stat_value/icon_stat_value.test.js +1 -1
  135. data/app/pb_kits/playbook/pb_icon_value/icon_value.test.js +1 -1
  136. data/app/pb_kits/playbook/pb_label_value/label_value.test.js +1 -1
  137. data/app/pb_kits/playbook/pb_layout/_layout.scss +127 -0
  138. data/app/pb_kits/playbook/pb_layout/_layout.tsx +47 -7
  139. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx +394 -0
  140. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md +5 -0
  141. data/app/pb_kits/playbook/pb_layout/docs/example.yml +1 -0
  142. data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -0
  143. data/app/pb_kits/playbook/pb_layout/layout.test.js +4 -0
  144. data/app/pb_kits/playbook/pb_layout/subcomponents/_game.tsx +121 -0
  145. data/app/pb_kits/playbook/pb_layout/subcomponents/_participant.tsx +79 -0
  146. data/app/pb_kits/playbook/pb_layout/subcomponents/_round.tsx +74 -0
  147. data/app/pb_kits/playbook/pb_link/link.test.jsx +2 -2
  148. data/app/pb_kits/playbook/pb_nav/_nav_item.test.js +5 -3
  149. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +83 -22
  150. data/app/pb_kits/playbook/pb_overlay/_overlay.tsx +39 -7
  151. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_color.jsx +63 -0
  152. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_color.md +3 -0
  153. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_default.md +1 -7
  154. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_background.jsx +49 -0
  155. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_background.md +1 -0
  156. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_opacity.jsx +81 -0
  157. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_fullscreen_opacity.md +1 -0
  158. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.jsx +39 -0
  159. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_gradient_opacity.md +1 -0
  160. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.jsx +40 -0
  161. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_layout.md +5 -0
  162. data/app/pb_kits/playbook/pb_overlay/docs/example.yml +5 -0
  163. data/app/pb_kits/playbook/pb_overlay/docs/index.js +5 -0
  164. data/app/pb_kits/playbook/pb_overlay/overlay.test.jsx +39 -1
  165. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.md +1 -0
  166. data/app/pb_kits/playbook/pb_stat_change/stat_change.test.js +8 -4
  167. data/app/pb_kits/playbook/pb_table/_table.tsx +2 -2
  168. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.md +3 -1
  169. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows_rails.md +3 -1
  170. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.md +3 -1
  171. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table_rails.md +3 -1
  172. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.html.erb +34 -0
  173. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_rails.md +1 -0
  174. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating.html.erb +36 -0
  175. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_rails.md +1 -0
  176. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_react.md +1 -1
  177. data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
  178. data/app/pb_kits/playbook/pb_table/styles/_collapsible.scss +1 -1
  179. data/app/pb_kits/playbook/pb_table/styles/_headers.scss +19 -7
  180. data/app/pb_kits/playbook/pb_table/styles/_striped.scss +3 -3
  181. data/app/pb_kits/playbook/pb_table/table.rb +13 -1
  182. data/app/pb_kits/playbook/pb_table/table_header.rb +13 -1
  183. data/app/pb_kits/playbook/pb_text_input/_text_input.tsx +13 -5
  184. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_sanitize.jsx +94 -0
  185. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_sanitize.md +1 -0
  186. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +2 -0
  187. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  188. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +8 -1
  189. data/app/pb_kits/playbook/pb_tooltip/tooltip.html.erb +2 -5
  190. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +4 -4
  191. data/app/pb_kits/playbook/pb_typeahead/typeahead.html.erb +2 -5
  192. data/app/pb_kits/playbook/pb_user/user.html.erb +1 -6
  193. data/app/pb_kits/playbook/pb_user_badge/user_badge.html.erb +1 -6
  194. data/dist/chunks/_typeahead-BX8IifKY.js +22 -0
  195. data/dist/chunks/_weekday_stacked-DfMD7HJz.js +45 -0
  196. data/dist/chunks/lib-96_ZmvAo.js +29 -0
  197. data/dist/chunks/{pb_form_validation-BvNy9Bd6.js → pb_form_validation-Vv2TqXVC.js} +1 -1
  198. data/dist/chunks/vendor.js +1 -1
  199. data/dist/menu.yml +2 -2
  200. data/dist/playbook-doc.js +19 -1
  201. data/dist/playbook-rails-react-bindings.js +1 -1
  202. data/dist/playbook-rails.js +1 -1
  203. data/dist/playbook.css +1 -1
  204. data/lib/playbook/kit_base.rb +4 -4
  205. data/lib/playbook/version.rb +2 -2
  206. metadata +79 -18
  207. data/dist/chunks/_typeahead-Djo6qCne.js +0 -22
  208. data/dist/chunks/_weekday_stacked-DIIHW0OV.js +0 -45
  209. data/dist/chunks/lib-BGzBzFZX.js +0 -29
  210. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_default_rails.html.erb → _draggable_default.html.erb} +0 -0
  211. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_default.md → _draggable_default_react.md} +0 -0
  212. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_multiple_containers_rails.html.erb → _draggable_multiple_containers.html.erb} +0 -0
  213. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_multiple_containers.md → _draggable_multiple_containers_react.md} +0 -0
  214. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_cards_rails.html.erb → _draggable_with_cards.html.erb} +0 -0
  215. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_cards.md → _draggable_with_cards_react.md} +0 -0
  216. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_list_rails.html.erb → _draggable_with_list.html.erb} +0 -0
  217. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_list.md → _draggable_with_list_react.md} +0 -0
  218. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_selectable_list_rails.html.erb → _draggable_with_selectable_list.html.erb} +0 -0
  219. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_selectable_list.md → _draggable_with_selectable_list_react.md} +0 -0
  220. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_table.md → _draggable_with_table_rails.md} +0 -0
@@ -1,11 +1,16 @@
1
- import React from 'react'
1
+ import React, {useState} from 'react'
2
2
 
3
3
  import FormGroup from '../_form_group'
4
4
  import PhoneNumberInput from '../../pb_phone_number_input/_phone_number_input'
5
5
  import Select from '../../pb_select/_select'
6
6
  import TextInput from '../../pb_text_input/_text_input'
7
+ import Flex from '../../pb_flex/_flex'
8
+ import Passphrase from '../../pb_passphrase/_passphrase'
7
9
 
8
10
  const FormGroupSelect = (props) => {
11
+ const [input, setInput] = useState("");
12
+ const handleChange = (e) => setInput(e.target.value);
13
+
9
14
  const options = [
10
15
  { value: 'Country' },
11
16
  { value: 'Pop' },
@@ -25,7 +30,10 @@ const FormGroupSelect = (props) => {
25
30
  ]
26
31
 
27
32
  return (
28
- <div>
33
+ <Flex
34
+ orientation="column"
35
+ rowGap="md"
36
+ >
29
37
  <FormGroup>
30
38
  <TextInput
31
39
  placeholder="Enter Artist Name"
@@ -37,18 +45,43 @@ const FormGroupSelect = (props) => {
37
45
  {...props}
38
46
  />
39
47
  </FormGroup>
40
- <br />
41
- <br />
42
48
  <FormGroup>
43
49
  <Select
44
50
  blankSelection="Phone"
45
51
  options={phoneOptions}
46
- />
52
+ {...props}
53
+ />
47
54
  <PhoneNumberInput
48
55
  id='default'
56
+ {...props}
49
57
  />
50
58
  </FormGroup>
51
- </div>
59
+ <FormGroup>
60
+ <PhoneNumberInput
61
+ id='default-2'
62
+ {...props}
63
+ />
64
+ <Select
65
+ blankSelection="Phone"
66
+ options={phoneOptions}
67
+ {...props}
68
+ />
69
+ </FormGroup>
70
+ <FormGroup>
71
+ <Select
72
+ blankSelection="Phone"
73
+ options={phoneOptions}
74
+ {...props}
75
+ />
76
+ <Passphrase
77
+ id="my-passphrase"
78
+ label=""
79
+ onChange={handleChange}
80
+ value={input}
81
+ {...props}
82
+ />
83
+ </FormGroup>
84
+ </Flex>
52
85
  )
53
86
  }
54
87
 
@@ -0,0 +1,30 @@
1
+ import React from 'react'
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
+
8
+ HighchartsMore(Highcharts);
9
+ SolidGauge(Highcharts);
10
+
11
+ const data = [{ name: "Name", y: 45 }]
12
+
13
+ const baseOptions = {
14
+ series: [{ data: data }],
15
+ };
16
+
17
+ const GaugePbStyles = () => {
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 GaugePbStyles;
@@ -0,0 +1 @@
1
+ You don't need to use the Gauge Kit to apply Playbook styles to your Highcharts gauge chart. Just import gaugeTheme.ts and merge it with your chart options—Playbook’s styling will apply automatically.
@@ -15,6 +15,7 @@ examples:
15
15
 
16
16
  react:
17
17
  - gauge_default: Default
18
+ - gauge_pb_styles: Playbook Styles
18
19
  - gauge_disable_animation: Disable Animation
19
20
  - gauge_title: Title
20
21
  - gauge_units: Units
@@ -1,4 +1,5 @@
1
1
  export { default as GaugeDefault } from './_gauge_default.jsx'
2
+ export { default as GaugePbStyles } from './_gauge_pb_styles.jsx'
2
3
  export { default as GaugeDisableAnimation } from './_gauge_disable_animation.jsx'
3
4
  export { default as GaugeFullCircle } from './_gauge_full_circle.jsx'
4
5
  export { default as GaugeHeight } from './_gauge_height.jsx'
@@ -0,0 +1,85 @@
1
+ import colors from '../tokens/exports/_colors.module.scss'
2
+ import typography from '../tokens/exports/_typography.module.scss'
3
+
4
+ const gaugeTheme = {
5
+ title: { text: "" },
6
+ chart: {
7
+ type: "solidgauge",
8
+ events: {
9
+ render() {
10
+ this.container
11
+ const arc = this.container.querySelector('path.gauge-pane');
12
+ if (arc) arc.setAttribute('stroke-linejoin', 'round');
13
+ }
14
+ }
15
+ },
16
+ pane: {
17
+ size: "90%",
18
+ startAngle: -100,
19
+ endAngle: 100,
20
+ background: [
21
+ {
22
+ borderWidth: 20,
23
+ innerRadius: "90%",
24
+ outerRadius: "90%",
25
+ shape: "arc",
26
+ className: "gauge-pane",
27
+ borderColor: colors.border_light,
28
+ borderRadius: '50%',
29
+ },
30
+ ],
31
+ },
32
+ tooltip: {
33
+ backgroundColor: {
34
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
35
+ stops: [
36
+ [0, colors.bg_dark],
37
+ [1, colors.bg_dark],
38
+ ],
39
+ },
40
+ pointFormat:
41
+ '<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: ' +
42
+ "<b>{point.y}</b>",
43
+ followPointer: true,
44
+ shadow: false,
45
+ borderWidth: 0,
46
+ borderRadius: 10,
47
+ style: {
48
+ fontFamily: typography.font_family_base,
49
+ color: colors.text_dk_default,
50
+ fontWeight: typography.regular,
51
+ fontSize: typography.text_smaller,
52
+ },
53
+ },
54
+ yAxis: {
55
+ min: 0,
56
+ max: 100,
57
+ lineWidth: 0,
58
+ tickPositions: [] as number[],
59
+ },
60
+ plotOptions: {
61
+ solidgauge: {
62
+ borderColor: colors.data_1,
63
+ borderWidth: 20,
64
+ color: colors.data_1,
65
+ radius: 90,
66
+ innerRadius: "90%",
67
+ y: -26,
68
+ dataLabels: {
69
+ borderWidth: 0,
70
+ color: colors.text_lt_default,
71
+ enabled: true,
72
+ format: '<span class="fix">{y:,f}</span>',
73
+ style: {
74
+ fontFamily: typography.font_family_base,
75
+ fontWeight: typography.regular,
76
+ fontSize: typography.heading_2,
77
+ },
78
+ y: -26,
79
+ },
80
+ },
81
+ },
82
+ credits: { enabled: false }
83
+ }
84
+
85
+ export default gaugeTheme;
@@ -16,7 +16,7 @@ describe("Icon Kit", () => {
16
16
  )
17
17
 
18
18
  const kit = screen.getByTestId(testId)
19
- expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw far")
19
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa svg_fw")
20
20
  })
21
21
 
22
22
  test("renders rotate prop", () => {[
@@ -31,7 +31,7 @@ describe("Icon Kit", () => {
31
31
  )
32
32
 
33
33
  const kit = screen.getByTestId(testId)
34
- expect(kit).toHaveClass(`fa-user pb_icon_kit fa-fw fa-rotate-${rotateProp} far`)
34
+ expect(kit).toHaveClass(`pb_custom_icon svg-inline--fa rotate_${rotateProp} svg_fw`)
35
35
 
36
36
  cleanup()
37
37
  })
@@ -48,7 +48,7 @@ describe("Icon Kit", () => {
48
48
  )
49
49
 
50
50
  const kit = screen.getByTestId(testId)
51
- expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw fa-flip-horizontal far")
51
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa flip_horizontal svg_fw")
52
52
  })
53
53
 
54
54
 
@@ -63,7 +63,7 @@ describe("Icon Kit", () => {
63
63
  )
64
64
 
65
65
  const kit = screen.getByTestId(testId)
66
- expect(kit).toHaveClass("fa-spinner pb_icon_kit fa-fw fa-spin far")
66
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa spin svg_fw")
67
67
  })
68
68
 
69
69
  test("renders pull icon", () => {
@@ -77,7 +77,7 @@ describe("Icon Kit", () => {
77
77
  )
78
78
 
79
79
  const kit = screen.getByTestId(testId)
80
- expect(kit).toHaveClass("fa-arrow-left pb_icon_kit fa-fw fa-pull-left far")
80
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa svg_fw pull_left")
81
81
  })
82
82
 
83
83
  test("renders pull icon", () => {
@@ -91,7 +91,7 @@ describe("Icon Kit", () => {
91
91
  )
92
92
 
93
93
  const kit = screen.getByTestId(testId)
94
- expect(kit).toHaveClass("fa-arrow-left pb_icon_kit fa-fw fa-pull-left far")
94
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa svg_fw pull_left")
95
95
  })
96
96
 
97
97
  test("renders border around icon", () => {
@@ -105,7 +105,7 @@ describe("Icon Kit", () => {
105
105
  )
106
106
 
107
107
  const kit = screen.getByTestId(testId)
108
- expect(kit).toHaveClass("fa-user pb_icon_kit fa-border fa-fw far")
108
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa svg_border svg_fw")
109
109
  })
110
110
 
111
111
  test("renders size prop", () => {
@@ -132,7 +132,7 @@ describe("Icon Kit", () => {
132
132
  )
133
133
 
134
134
  const kit = screen.getByTestId(testId)
135
- expect(kit).toHaveClass(`pb_icon_kit fa-user fa-fw fa-${sizeProp} far`)
135
+ expect(kit).toHaveClass(`pb_custom_icon svg-inline--fa svg_${sizeProp} svg_fw`)
136
136
 
137
137
  cleanup()
138
138
  })
@@ -149,7 +149,7 @@ describe("Icon Kit", () => {
149
149
  )
150
150
 
151
151
  const kit = screen.getByTestId(testId)
152
- expect(kit).toHaveClass("fa-user pb_icon_kit fa-fw fas")
152
+ expect(kit).toHaveClass("pb_custom_icon svg-inline--fa svg_fw")
153
153
  })
154
154
 
155
155
  test("renders with color prop", () => {
@@ -29,7 +29,7 @@ describe("IconCircle Kit", () => {
29
29
  )
30
30
 
31
31
  const kit = screen.getByTestId(testId)
32
- const icon = kit.querySelector('.pb_icon_kit')
32
+ const icon = kit.querySelector('.pb_custom_icon')
33
33
  expect(icon).toBeInTheDocument()
34
34
  })
35
35
 
@@ -33,7 +33,7 @@ describe("IconStatValue Kit", () => {
33
33
  )
34
34
 
35
35
  const kit = screen.getByTestId(testId)
36
- const icon = kit.querySelector(".fa-lightbulb-on.pb_icon_kit.fa-fw")
36
+ const icon = kit.querySelector(".pb_custom_icon")
37
37
  expect(icon).toBeInTheDocument()
38
38
  })
39
39
 
@@ -29,7 +29,7 @@ describe("IconValue Kit", () => {
29
29
  )
30
30
 
31
31
  const kit = screen.getByTestId(testId)
32
- const icon = kit.querySelector(".fa-clipboard.pb_icon_kit.fa-fw")
32
+ const icon = kit.querySelector(".pb_custom_icon")
33
33
  expect(icon).toBeInTheDocument()
34
34
  })
35
35
 
@@ -56,7 +56,7 @@ describe("LabelValue Kit", () => {
56
56
  />
57
57
  )
58
58
  const kit = screen.getByTestId(testId)
59
- const icon = kit.querySelector(".fa-truck.pb_icon_kit.fa-fw")
59
+ const icon = kit.querySelector(".pb_custom_icon")
60
60
  expect(icon).toBeInTheDocument()
61
61
  })
62
62
 
@@ -10,6 +10,8 @@ $list-header-height: $space_lg;
10
10
  $list-footer-height: $space_lg;
11
11
  $list-border-radius: $border_rad_lighter;
12
12
  $card-border-radius: $border_rad_lightest;
13
+ $bracket-connector-width: 45px;
14
+ $bracket-border-width: 4px;
13
15
 
14
16
 
15
17
  [class^=pb_layout_kit] {
@@ -168,6 +170,131 @@ $card-border-radius: $border_rad_lightest;
168
170
  }
169
171
  }
170
172
 
173
+ &[class*=_bracket]{
174
+ display: flex;
175
+ overflow-x: scroll;
176
+
177
+ div.layout_round {
178
+ display: flex;
179
+ flex-direction: column;
180
+ justify-content: space-around;
181
+ flex-grow: 1;
182
+ }
183
+
184
+ .connector_container {
185
+ display: flex;
186
+ flex-direction: column;
187
+ justify-content: space-around;
188
+ }
189
+ .right_connector {
190
+ border-top: $bracket-border-width solid $border_light;
191
+ width: $bracket-connector-width;
192
+ margin-left: $bracket-connector-width;
193
+ }
194
+
195
+ .layout_round .layout_game {
196
+ position: relative;
197
+ }
198
+
199
+ .half_box {
200
+ content: '';
201
+ position: absolute;
202
+ top: calc(50% - $bracket-border-width / 2);
203
+ height: calc(100% + $bracket-border-width);
204
+ width: $bracket-connector-width;
205
+ right: -$bracket-connector-width;
206
+ border-top-right-radius: $border_radius_lg;
207
+ border-bottom-right-radius: $border_radius_lg;
208
+ border-top: $bracket-border-width solid $border_light;
209
+ border-bottom: $bracket-border-width solid $border_light;
210
+ border-right: $bracket-border-width solid $border_light;
211
+ }
212
+
213
+ .polygon_node {
214
+ position: absolute;
215
+ top: calc(50% - 5px);
216
+ right: -10px;
217
+
218
+ width: 0;
219
+ height: 0;
220
+ border-top: 5px solid transparent;
221
+ border-bottom: 5px solid transparent;
222
+ border-left: 10px solid $border_light;
223
+ }
224
+
225
+ .layout_round_label {
226
+ display: none;
227
+ }
228
+
229
+ .layout_participant,
230
+ .layout_participant_winner,
231
+ .layout_participant_self,
232
+ .layout_participant_winner_self,
233
+ .layout_participant_winner_self_last {
234
+ height: 60px;
235
+ }
236
+
237
+ .layout_tbd {
238
+ height: 140px;
239
+ display: flex;
240
+ flex-direction: column;
241
+ justify-content: center;
242
+ }
243
+
244
+ .layout_participant_winner,
245
+ .layout_participant_self,
246
+ .layout_participant_winner_self,
247
+ .layout_participant_winner_self_last {
248
+ position: relative;
249
+
250
+ &::after {
251
+ content: "";
252
+ position: absolute;
253
+ top: 0;
254
+ width: 4px;
255
+ height: 100%;
256
+ }
257
+ }
258
+
259
+ .layout_participant_winner::after {
260
+ right: 0;
261
+ background: $product_6_highlight;
262
+ }
263
+
264
+ .layout_participant_self::after {
265
+ left: 0;
266
+ background: $category_1;
267
+ }
268
+
269
+ .layout_participant_winner_self::after {
270
+ right: 0;
271
+ background: $product_6_highlight;
272
+ }
273
+
274
+ .layout_participant_winner_self_last::after {
275
+ left: 0;
276
+ background: $category_1;
277
+ }
278
+
279
+ .game_separator {
280
+ &::before, &::after {
281
+ height: 2px;
282
+ }
283
+ }
284
+
285
+ @media (max-width: $screen-md-max) {
286
+ flex-direction: column;
287
+ .layout_round_label {
288
+ display: block;
289
+ }
290
+ .layout_round .layout_game::after,
291
+ .connector_container,
292
+ .half_box,
293
+ .polygon_node {
294
+ display: none !important;
295
+ }
296
+ }
297
+ }
171
298
 
172
299
  &[class*=_sidebar]{
173
300
  $layout_sizes: (
@@ -4,6 +4,10 @@ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../uti
4
4
 
5
5
  import { GlobalProps, globalProps, globalInlineProps } from '../utilities/globalProps'
6
6
 
7
+ import { Round, RoundLabel } from "./subcomponents/_round";
8
+ import Game from "./subcomponents/_game";
9
+ import Participant from "./subcomponents/_participant";
10
+
7
11
  type LayoutPropTypes = {
8
12
  aria?: {[key: string]: string},
9
13
  children?: React.ReactChild[] | React.ReactChild,
@@ -18,7 +22,7 @@ type LayoutPropTypes = {
18
22
  size?: "xs" | "sm" | "md" | "base" | "lg" | "xl",
19
23
  variant?: "light" | "dark" | "gradient",
20
24
  transparent?: boolean,
21
- layout?: "sidebar" | "collection" | "kanban" | "content" | "masonry",
25
+ layout?: "sidebar" | "collection" | "kanban" | "content" | "masonry" | "bracket",
22
26
  } & GlobalProps
23
27
 
24
28
  type LayoutSideProps = {
@@ -140,7 +144,7 @@ const Layout = (props: LayoutPropTypes) => {
140
144
  const htmlProps = buildHtmlProps(htmlOptions)
141
145
 
142
146
  const layoutCss =
143
- layout == 'collection'
147
+ (layout == 'collection' || layout == 'bracket')
144
148
  ? `pb_layout_kit_${layout}`
145
149
  : layout == 'kanban'
146
150
  ? `pb_layout_kit_${layout}${responsiveClass}`
@@ -151,11 +155,9 @@ const Layout = (props: LayoutPropTypes) => {
151
155
  })
152
156
 
153
157
  const layoutCollapseCss =
154
- layout == 'collection'
158
+ (layout == 'collection' || layout == 'kanban' || layout == 'bracket')
155
159
  ? ''
156
- : layout == 'kanban'
157
- ? ''
158
- : buildCss('layout', position, 'collapse', collapse)
160
+ : buildCss('layout', position, 'collapse', collapse)
159
161
 
160
162
  const layoutChildren = React.Children.toArray(children)
161
163
 
@@ -175,6 +177,40 @@ const Layout = (props: LayoutPropTypes) => {
175
177
  (child: React.ReactElement & {type: {displayName: string}}) => child.type?.displayName !== 'Side'
176
178
  )
177
179
 
180
+ const numberOfRounds = Array.isArray(children) ? React.Children.toArray(children).filter(
181
+ (child) => {
182
+ return (child as React.ReactElement).type === Layout.Round;
183
+ }
184
+ ).length : 0
185
+
186
+ const lastRoundWithSelf = React.Children.toArray(children).filter((child) => {
187
+ if ((child as React.ReactElement).type !== Layout.Round) {
188
+ return false
189
+ }
190
+
191
+ const roundElement = child as React.ReactElement
192
+
193
+ const gameChildren = React.Children.toArray(roundElement.props.children)
194
+
195
+ const hasWinningSelfParticipant = gameChildren.some((gameChild) => {
196
+ const gameElement = gameChild as React.ReactElement
197
+
198
+ const participantChildren = React.Children.toArray(gameElement.props.children)
199
+
200
+ return participantChildren.some((participantChild) => {
201
+ const participantElement = participantChild as React.ReactElement
202
+ const { self } = participantElement.props
203
+ return self === true
204
+ })
205
+ })
206
+
207
+ return hasWinningSelfParticipant
208
+ }).length
209
+
210
+ const bracketChildren = nonSideChildren.map(child =>
211
+ React.isValidElement(child) ? React.cloneElement(child, { numberOfRounds, lastRoundWithSelf }) : child
212
+ )
213
+
178
214
  const filteredProps = {...props}
179
215
  delete filteredProps?.position
180
216
 
@@ -196,7 +232,7 @@ const Layout = (props: LayoutPropTypes) => {
196
232
  style={dynamicInlineProps}
197
233
  >
198
234
  {subComponentTags('Side')}
199
- {nonSideChildren}
235
+ {layout === 'bracket' ? bracketChildren : nonSideChildren}
200
236
  </div>
201
237
  )
202
238
  }
@@ -206,5 +242,9 @@ Layout.Body = Body
206
242
  Layout.Item = Item
207
243
  Layout.Header = Header
208
244
  Layout.Footer = Footer
245
+ Layout.Round = Round
246
+ Layout.Game = Game
247
+ Layout.RoundLabel = RoundLabel
248
+ Layout.Participant = Participant
209
249
 
210
250
  export default Layout