playbook_ui 14.18.0 → 14.19.0.pre.alpha.PLAY1968typeaheadpreservesearchreact7796

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 (273) 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/RegularTableView.tsx +11 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +148 -15
  5. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +20 -3
  6. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +23 -13
  7. data/app/pb_kits/playbook/pb_advanced_table/Utilities/VisibilityTree.ts +47 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +313 -21
  9. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +12 -3
  10. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +6 -1
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +0 -6
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.jsx +80 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color.md +3 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.html.erb +58 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_border_color_rails.md +3 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.jsx +57 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.md +4 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx +62 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md +1 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx +82 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md +1 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx +65 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md +1 -0
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +5 -1
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.jsx → _advanced_table_selectable_rows_no_subrows_react.jsx} +2 -2
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +3 -2
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +10 -5
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +7 -2
  29. data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +106 -0
  30. data/app/pb_kits/playbook/pb_advanced_table/index.js +228 -11
  31. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +1 -0
  32. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +9 -1
  33. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +0 -3
  34. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +1 -2
  35. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +4 -0
  36. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +3 -0
  37. data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +3 -3
  38. data/app/pb_kits/playbook/pb_avatar/avatar.rb +2 -0
  39. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +18 -0
  40. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.html.erb +5 -0
  41. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.jsx +16 -0
  42. data/app/pb_kits/playbook/pb_avatar/docs/example.yml +2 -0
  43. data/app/pb_kits/playbook/pb_avatar/docs/index.js +1 -0
  44. data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
  45. data/app/pb_kits/playbook/pb_card/card.rb +12 -0
  46. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.tsx +1 -1
  47. data/app/pb_kits/playbook/pb_circle_chart/circleChart.test.js +2 -2
  48. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +53 -0
  49. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.html.erb +2 -2
  50. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +1 -1
  51. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.html.erb +1 -1
  52. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +1 -1
  53. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.html.erb +1 -1
  54. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +1 -1
  55. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.html.erb +1 -1
  56. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +1 -1
  57. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.html.erb +1 -1
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +2 -2
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +38 -0
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +1 -0
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.html.erb +1 -1
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +1 -1
  64. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +2 -3
  65. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +2 -1
  66. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +12 -0
  67. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +12 -0
  68. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.ts +50 -1
  69. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +2 -2
  70. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.jsx +4 -1
  71. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_rails.md +4 -0
  72. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_range_limit.md +1 -1
  73. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_quick_pick_react.md +5 -1
  74. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.jsx +34 -0
  75. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern.md +14 -0
  76. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.html.erb +20 -0
  77. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range_pattern_rails.md +14 -0
  78. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +2 -0
  79. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +1 -0
  80. data/app/pb_kits/playbook/pb_date_picker/plugins/quickPick.tsx +10 -0
  81. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.html.erb +64 -0
  82. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.html.erb +55 -0
  83. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors_rails.md +1 -0
  84. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.html.erb +55 -0
  85. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line_rails.md +5 -0
  86. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_rails.md +5 -0
  87. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.jsx +59 -0
  88. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners_react.md +1 -0
  89. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +4 -1
  90. data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
  91. data/app/pb_kits/playbook/pb_draggable/draggable.rb +9 -1
  92. data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +11 -1
  93. data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +11 -1
  94. data/app/pb_kits/playbook/pb_draggable/index.js +141 -142
  95. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +33 -5
  96. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +5 -0
  97. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +5 -16
  98. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +5 -2
  99. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.jsx +4 -1
  100. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +28 -0
  101. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +17 -64
  102. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +58 -0
  103. data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_autocomplete_and_custom_display.jsx → _dropdown_with_autocomplete_with_subcomponents.jsx} +11 -25
  104. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md +1 -0
  105. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +11 -0
  106. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.md +1 -1
  107. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +33 -2
  108. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.md +3 -1
  109. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.md +1 -0
  110. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +61 -0
  111. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md +2 -0
  112. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +52 -0
  113. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.md +2 -0
  114. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +7 -4
  115. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +2 -2
  116. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +2 -2
  117. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +4 -0
  118. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +45 -1
  119. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +10 -0
  120. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +3 -0
  121. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +12 -2
  122. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +3 -1
  123. data/app/pb_kits/playbook/pb_dropdown/index.js +71 -1
  124. data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +26 -0
  125. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +3 -4
  126. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +5 -5
  127. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +8 -1
  128. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.html.erb +27 -0
  129. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.html.erb +7 -0
  130. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.html.erb +12 -0
  131. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.html.erb +23 -0
  132. data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +5 -1
  133. data/app/pb_kits/playbook/pb_empty_state/empty_state.html.erb +19 -0
  134. data/app/pb_kits/playbook/pb_empty_state/empty_state.rb +123 -0
  135. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +13 -0
  136. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +11 -1
  137. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.html.erb +1 -0
  138. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.jsx +41 -0
  139. data/app/pb_kits/playbook/pb_file_upload/docs/example.yml +2 -0
  140. data/app/pb_kits/playbook/pb_file_upload/docs/index.js +1 -0
  141. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -0
  142. data/app/pb_kits/playbook/pb_file_upload/file_upload.rb +7 -1
  143. data/app/pb_kits/playbook/pb_file_upload/fileupload.test.js +18 -0
  144. data/app/pb_kits/playbook/pb_filter/docs/_filter_within_turbo_frames.html.erb +41 -0
  145. data/app/pb_kits/playbook/pb_filter/docs/_filter_within_turbo_frames.md +1 -0
  146. data/app/pb_kits/playbook/pb_filter/docs/example.yml +1 -0
  147. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +22 -18
  148. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +19 -12
  149. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_pb_styles.jsx +0 -1
  150. data/app/pb_kits/playbook/pb_gauge/gaugeTheme.ts +3 -1
  151. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +13 -7
  152. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.jsx +52 -0
  153. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_pb_styles.md +1 -0
  154. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +1 -0
  155. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +1 -0
  156. data/app/pb_kits/playbook/pb_line_graph/lineGraphTheme.ts +110 -0
  157. data/app/pb_kits/playbook/pb_message/_message.tsx +3 -0
  158. data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.html.erb +9 -0
  159. data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.jsx +21 -0
  160. data/app/pb_kits/playbook/pb_message/docs/example.yml +2 -0
  161. data/app/pb_kits/playbook/pb_message/docs/index.js +1 -0
  162. data/app/pb_kits/playbook/pb_message/message.html.erb +2 -1
  163. data/app/pb_kits/playbook/pb_message/message.rb +1 -0
  164. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +2 -2
  165. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.html.erb +11 -11
  166. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.jsx +11 -11
  167. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb +11 -11
  168. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +11 -11
  169. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +11 -11
  170. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.jsx +11 -11
  171. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.html.erb +11 -11
  172. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.jsx +11 -11
  173. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.html.erb +11 -11
  174. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.jsx +11 -11
  175. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.html.erb +11 -11
  176. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.jsx +11 -11
  177. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.html.erb +11 -11
  178. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.jsx +11 -11
  179. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.html.erb +11 -11
  180. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.jsx +11 -11
  181. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +11 -11
  182. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +11 -11
  183. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_react_hook.jsx +11 -11
  184. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +11 -11
  185. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb +11 -11
  186. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx +11 -11
  187. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +11 -11
  188. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +2 -0
  189. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.jsx +11 -11
  190. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.md +3 -1
  191. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.html.erb +22 -22
  192. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.jsx +22 -22
  193. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb +22 -22
  194. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx +22 -22
  195. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +11 -11
  196. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +11 -11
  197. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_form.html.erb +11 -11
  198. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -1
  199. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +1 -1
  200. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +5 -4
  201. data/app/pb_kits/playbook/pb_person/_person.tsx +12 -2
  202. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +21 -8
  203. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +3 -1
  204. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_country_search.html.erb +10 -0
  205. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_country_search.jsx +20 -0
  206. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_country_search.md +1 -0
  207. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +8 -1
  208. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +2 -0
  209. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  210. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  211. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.test.js +19 -0
  212. data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.html.erb +46 -0
  213. data/app/pb_kits/playbook/pb_popover/docs/_popover_append_to.md +1 -0
  214. data/app/pb_kits/playbook/pb_popover/docs/example.yml +1 -0
  215. data/app/pb_kits/playbook/pb_popover/index.ts +13 -1
  216. data/app/pb_kits/playbook/pb_popover/popover.rb +2 -0
  217. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +2 -2
  218. data/app/pb_kits/playbook/pb_select/_select.scss +10 -0
  219. data/app/pb_kits/playbook/pb_select/docs/_select_error.html.erb +1 -1
  220. data/app/pb_kits/playbook/pb_select/docs/_select_error.jsx +7 -2
  221. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +7 -7
  222. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +5 -5
  223. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +4 -2
  224. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb +1 -1
  225. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.jsx +9 -1
  226. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.html.erb +5 -1
  227. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.jsx +7 -1
  228. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +70 -3
  229. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.html.erb +8 -1
  230. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.jsx +6 -2
  231. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.jsx +23 -0
  232. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.md +1 -0
  233. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  234. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -0
  235. data/app/pb_kits/playbook/pb_user/_user.tsx +3 -0
  236. data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.html.erb +6 -0
  237. data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.jsx +16 -0
  238. data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
  239. data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
  240. data/app/pb_kits/playbook/pb_user/user.html.erb +2 -1
  241. data/app/pb_kits/playbook/pb_user/user.rb +1 -0
  242. data/dist/chunks/_typeahead-D8guY7O0.js +22 -0
  243. data/dist/chunks/_weekday_stacked-8LDnfK3v.js +45 -0
  244. data/dist/chunks/lazysizes-B7xYodB-.js +1 -0
  245. data/dist/chunks/lib-B20MXZcW.js +29 -0
  246. data/dist/chunks/{pb_form_validation-BRjyJrKh.js → pb_form_validation-WWvUXPKD.js} +1 -1
  247. data/dist/chunks/vendor.js +1 -1
  248. data/dist/menu.yml +6 -14
  249. data/dist/playbook-doc.js +2 -2
  250. data/dist/playbook-rails-react-bindings.js +1 -1
  251. data/dist/playbook-rails.js +1 -1
  252. data/dist/playbook.css +1 -1
  253. data/lib/playbook/version.rb +2 -2
  254. metadata +79 -24
  255. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +0 -1
  256. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +0 -79
  257. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +0 -3
  258. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +0 -72
  259. data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +0 -53
  260. data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +0 -7
  261. data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +0 -1
  262. data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +0 -19
  263. data/dist/chunks/_typeahead-C_FX7o_S.js +0 -22
  264. data/dist/chunks/_weekday_stacked-B4RLTeDo.js +0 -45
  265. data/dist/chunks/lazysizes-DHz07jlL.js +0 -1
  266. data/dist/chunks/lib-ySl8uEpT.js +0 -29
  267. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_react.md → _advanced_table_selectable_rows.md} +0 -0
  268. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.html.erb → _advanced_table_selectable_rows_no_subrows_rails.html.erb} +0 -0
  269. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.html.erb → _advanced_table_selectable_rows_rails.html.erb} +0 -0
  270. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_colors.md → _draggable_drop_zones_colors_react.md} +0 -0
  271. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_line.md → _draggable_drop_zones_line_react.md} +0 -0
  272. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones.md → _draggable_drop_zones_react.md} +0 -0
  273. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_event_listeners.md → _draggable_event_listeners_rails.md} +0 -0
@@ -22,6 +22,7 @@ type FileUploadProps = {
22
22
  maxSize?: number,
23
23
  onFilesAccepted: Callback<File, File>,
24
24
  onFilesRejected: (error: string, files: readonly FileRejection[]) => void,
25
+ error?: string,
25
26
  }
26
27
 
27
28
  const getFormattedFileSize = (fileSize: number): string => {
@@ -36,6 +37,7 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
36
37
  customMessage,
37
38
  dark = false,
38
39
  data = {},
40
+ error,
39
41
  htmlOptions = {},
40
42
  maxSize,
41
43
  onFilesAccepted = noop,
@@ -100,7 +102,7 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
100
102
 
101
103
  return (
102
104
  <div
103
- className={classnames(buildCss('pb_file_upload_kit'), globalProps(props), className)}
105
+ className={classnames(buildCss('pb_file_upload_kit'), { 'error': error }, globalProps(props), className)}
104
106
  {...dataProps}
105
107
  {...htmlProps}
106
108
  {...getRootProps()}
@@ -118,6 +120,14 @@ const FileUpload = (props: FileUploadProps): React.ReactElement => {
118
120
  }
119
121
  </Body>
120
122
  </Card>
123
+ {error && (
124
+ <Body
125
+ dark={dark}
126
+ marginTop="xxs"
127
+ status="negative"
128
+ text={error}
129
+ />
130
+ )}
121
131
  </div>
122
132
  )
123
133
  }
@@ -0,0 +1 @@
1
+ <%= pb_rails("file_upload", props: {id: "error", error: raw(pb_rails("icon", props: { icon: "warning" }) + " Please upload a valid file")}) %>
@@ -0,0 +1,41 @@
1
+ import React, { useState } from 'react'
2
+ import FileUpload from '../_file_upload'
3
+ import List from '../../pb_list/_list'
4
+ import ListItem from '../../pb_list/_list_item'
5
+ import Icon from '../../pb_icon/_icon'
6
+
7
+ const AcceptedFilesList = ({ files }) => (
8
+ <List>
9
+ {files.map((file) => (
10
+ <ListItem key={file.name}>{file.name}</ListItem>
11
+ ))}
12
+ </List>
13
+ )
14
+
15
+ const FileUploadError = (props) => {
16
+ const [filesToUpload, setFilesToUpload] = useState([])
17
+
18
+ const handleOnFilesAccepted = (files) => {
19
+ setFilesToUpload([...filesToUpload, ...files])
20
+ }
21
+
22
+ const error = (<>
23
+ <Icon icon="warning" /> Please upload a valid file
24
+ </>)
25
+
26
+ return (
27
+ <div>
28
+ <AcceptedFilesList
29
+ files={filesToUpload}
30
+ {...props}
31
+ />
32
+ <FileUpload
33
+ error={error}
34
+ onFilesAccepted={handleOnFilesAccepted}
35
+ {...props}
36
+ />
37
+ </div>
38
+ )
39
+ }
40
+
41
+ export default FileUploadError
@@ -3,6 +3,7 @@ examples:
3
3
  rails:
4
4
  - file_upload_default: File Upload
5
5
  - file_upload_custom: Custom
6
+ - file_upload_error: Error
6
7
 
7
8
  react:
8
9
  - file_upload_default: Default List of files to upload
@@ -10,3 +11,4 @@ examples:
10
11
  - file_upload_custom_message: Add a custom message
11
12
  - file_upload_custom_description: Add your one accepted files description
12
13
  - file_upload_max_size: Set a file size limit
14
+ - file_upload_error: Error
@@ -3,3 +3,4 @@ export { default as FileUploadAccept } from './_file_upload_accept.jsx'
3
3
  export { default as FileUploadCustomMessage } from './_file_upload_custom_message.jsx'
4
4
  export { default as FileUploadCustomDescription } from './_file_upload_custom_description.jsx'
5
5
  export { default as FileUploadMaxSize } from './_file_upload_max_size.jsx'
6
+ export { default as FileUploadError } from './_file_upload_error.jsx'
@@ -9,6 +9,7 @@
9
9
  <%= pb_rails("text_input", props: {
10
10
  type: "file",
11
11
  dark: object.dark,
12
+ error: object.error.presence,
12
13
  input_options: {
13
14
  id: "upload-#{object.id}",
14
15
  classname: "cursor_pointer",
@@ -21,14 +21,20 @@ module Playbook
21
21
  prop :input_options, type: Playbook::Props::HashProp,
22
22
  default: {}
23
23
 
24
+ prop :error, type: Playbook::Props::String
25
+
24
26
  def classname
25
27
  file_upload_class = generate_classname("pb_file_upload_kit")
26
- file_upload_class + full_width_class
28
+ file_upload_class + error_class + full_width_class
27
29
  end
28
30
 
29
31
  def full_width_class
30
32
  full_width ? " full_width" : ""
31
33
  end
34
+
35
+ def error_class
36
+ error.present? ? "_error" : ""
37
+ end
32
38
  end
33
39
  end
34
40
  end
@@ -50,3 +50,21 @@ test('displays custom message', () => {
50
50
  const kit = screen.getByTestId(testid)
51
51
  expect(kit).toHaveTextContent('Hello world!')
52
52
  })
53
+
54
+ test('handles error state with error prop', () => {
55
+ const errorText = "Test error message"
56
+ render(
57
+ <FileUpload
58
+ data={{ testid: testid }}
59
+ error={errorText}
60
+ />
61
+ )
62
+
63
+ const kit = screen.getByTestId(testid)
64
+
65
+ expect(kit).toHaveClass('pb_file_upload_kit')
66
+ expect(kit).toHaveClass('error')
67
+
68
+ const errorElement = screen.getByText(errorText)
69
+ expect(errorElement).toBeInTheDocument()
70
+ })
@@ -0,0 +1,41 @@
1
+ <%=
2
+ pb_rails("filter", props: {
3
+ id: "filter_within_trubo_frames",
4
+ position: "top",
5
+ filters: [
6
+ { name: "name", value: "John Wick" },
7
+ { name: "city", value: "San Francisco"}
8
+ ],
9
+ sort_menu: [
10
+ { item: "Popularity", link: "?q[sorts]=managers_popularity+asc", active: true, direction: "desc" },
11
+ { item: "Mananger's Title", link: "?q[sorts]=managers_title+asc", active: false },
12
+ { item: "Manager's Name", link: "?q[sorts]=managers_name+asc", active: false },
13
+ ],
14
+ template: "default",
15
+ results: 1,
16
+ popover_props: { append_to: "parent" },
17
+ }) do
18
+ %>
19
+ <%
20
+ example_collection = [
21
+ OpenStruct.new(name: "USA", value: 1),
22
+ OpenStruct.new(name: "Canada", value: 2),
23
+ OpenStruct.new(name: "Brazil", value: 3),
24
+ OpenStruct.new(name: "Philippines", value: 4),
25
+ OpenStruct.new(name: "A galaxy far far away, like really far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far far away...", value: 5)
26
+ ]
27
+ %>
28
+ <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
29
+ <%= form.text_field :example_text_field, props: { label: true } %>
30
+ <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: {max_width: "sm", label: true } %>
31
+
32
+ <%= form.actions do |action| %>
33
+ <%= action.submit props: {
34
+ text: "Apply",
35
+ data: {
36
+ disable_with: "pb_rails('icon', props: { icon: 'spinner', spin: true, fixed_width: true })Searching...".html_safe
37
+ },}%>
38
+ <%= action.button props: { type: "reset", text: "Clear", variant: "secondary" } %>
39
+ <% end %>
40
+ <% end %>
41
+ <% end %>
@@ -0,0 +1 @@
1
+ By default, the filter popover attaches to the `<body>`. To attach it elsewhere, like inside a Turbo Frame, pass the `append_to` prop through `popover_props`. Set it to `"parent"` to place the tooltip inside its parent element, or pass any CSS selector (`#id` or `.class`) to specify a custom container.
@@ -11,6 +11,7 @@ examples:
11
11
  - filter_max_height: Max Height for Popover Inside of Filter
12
12
  - filter_placement: Filter Placement
13
13
  - filter_popover_props: Popover Props
14
+ - filter_within_turbo_frames: Within Turbo Frames
14
15
 
15
16
  react:
16
17
  - filter_default: Default
@@ -23,35 +23,39 @@
23
23
  @mixin error-state-right-side-select-kit {
24
24
  &:has(.pb_text_input_kit:not(.error)):has(.pb_text_input_kit_label):has(.pb_select_kit_wrapper.error),
25
25
  &:has(.pb_text_input_kit.error):has(.pb_text_input_kit_label):has(.pb_select_kit_wrapper) {
26
- align-items: flex-start;
27
-
28
- .pb_select_kit_wrapper {
29
- padding-top: $space_md;
30
- margin-top: 2px;
26
+ &:not(:has(.pb_phone_number_input)):not(:has(.passphrase-text-input)) {
27
+ align-items: flex-start;
31
28
 
32
- .pb_select_kit_caret {
29
+ .pb_select_kit_wrapper {
33
30
  padding-top: $space_md;
31
+ margin-top: 2px;
32
+
33
+ .pb_select_kit_caret {
34
+ padding-top: $space_md;
35
+ }
34
36
  }
35
- }
36
37
 
37
- .pb_select_kit_wrapper.error {
38
- padding-top: $space_md;
39
- margin-top: 2px;
38
+ .pb_select_kit_wrapper.error {
39
+ padding-top: $space_md;
40
+ margin-top: 2px;
40
41
 
41
- .pb_select_kit_caret {
42
- padding-top: $space_xl;
42
+ .pb_select_kit_caret {
43
+ padding-top: $space_xl;
44
+ }
43
45
  }
44
46
  }
45
47
  }
46
48
  }
47
49
 
48
50
  @mixin error-state-left-side-select-kit {
49
- &:has(.pb_select_kit_label):has(.pb_select_kit_wrapper):has(.pb_phone_number_input):has(.pb_text_input_kit.error) {
50
- align-items: flex-start;
51
+ &:has(.pb_select_kit_label):has(.pb_select_kit_wrapper):has(.pb_text_input_kit.error) {
52
+ &:not(:has(.pb_phone_number_input)):not(:has(.passphrase-text-input)) {
53
+ align-items: flex-start;
51
54
 
52
- .pb_text_input_kit.error {
53
- padding-top: $space_md;
54
- margin-top: 2px;
55
+ .pb_text_input_kit.error {
56
+ padding-top: $space_md;
57
+ margin-top: 2px;
58
+ }
55
59
  }
56
60
  }
57
- }
61
+ }
@@ -20,9 +20,12 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
20
20
  margin-bottom: 2px;
21
21
  margin-top: 2px;
22
22
  cursor: pointer;
23
- .pb_form_pill_text, .pb_form_pill_close, .pb_form_pill_tag{
23
+ .pb_form_pill_text, .pb_form_pill_tag {
24
24
  font-size: $font_small !important;
25
25
  }
26
+ .pb_form_pill_close {
27
+ font-size: 17px;
28
+ }
26
29
 
27
30
  &[class*=wrapped] {
28
31
  height: max-content;
@@ -96,7 +99,9 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
96
99
  display: flex;
97
100
  align-items: center;
98
101
  height: 17px;
99
- border-radius: calc(50%);
102
+ width: 17px;
103
+ justify-content: center;
104
+ border-radius: 50%;
100
105
  cursor: pointer;
101
106
  @if ($color_name == "neutral") {
102
107
  color: $text_lt_default;
@@ -146,8 +151,7 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
146
151
  outline-offset: -1px;
147
152
  }
148
153
  .pb_form_pill_icon {
149
- height: 12px !important;
150
- width: 12px !important;
154
+ height: 0.875em;
151
155
  padding-right: $space_xs;
152
156
  + .pb_form_pill_text, + .pb_form_pill_tag,
153
157
  + .pb_tooltip_kit .pb_form_pill_text, + .pb_tooltip_kit .pb_form_pill_tag,
@@ -158,7 +162,7 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
158
162
  &.small {
159
163
  height: 17px;
160
164
  padding: 0 $space-xs;
161
- .pb_form_pill_text, .pb_form_pill_close, .pb_form_pill_tag {
165
+ .pb_form_pill_text, .pb_form_pill_tag {
162
166
  font-size: $font_smallest !important;
163
167
  }
164
168
  .pb_form_pill_text, .pb_form_pill_tag {
@@ -166,17 +170,20 @@ $form_pill_colors: map-merge($status_color_text, map-merge($data_colors, $produc
166
170
  padding: 0 $space_xxs;
167
171
  }
168
172
  .pb_form_pill_close {
169
- height: 10px;
170
- border-radius: calc(50%);
173
+ height: 14px;
174
+ width: 14px;
175
+ font-size: 15px;
176
+ border-radius: 50%;
171
177
  }
172
178
  [class^=pb_avatar_kit] .avatar_wrapper {
173
- flex-basis: 16px;
174
- height: 16px;
175
- margin-top: 2px;
176
- width: 16px;
177
- &::before { line-height: 16.5px; }
179
+ flex-basis: 14px;
180
+ height: 14px;
181
+ margin-top: 3px;
182
+ width: 14px;
183
+ &::before { line-height: 15px; }
178
184
  }
179
185
  .pb_form_pill_icon {
186
+ height: 0.75em;
180
187
  padding-right: $space_xxs;
181
188
  + .pb_form_pill_text, + .pb_form_pill_tag,
182
189
  + .pb_tooltip_kit .pb_form_pill_text, + .pb_tooltip_kit .pb_form_pill_tag,
@@ -11,7 +11,6 @@ SolidGauge(Highcharts);
11
11
  const data = [{ name: "Name", y: 45 }]
12
12
 
13
13
  const baseOptions = {
14
- title: { text: "" },
15
14
  series: [{ data: data }],
16
15
  };
17
16
 
@@ -2,6 +2,7 @@ import colors from '../tokens/exports/_colors.module.scss'
2
2
  import typography from '../tokens/exports/_typography.module.scss'
3
3
 
4
4
  const gaugeTheme = {
5
+ title: { text: "" },
5
6
  chart: {
6
7
  type: "solidgauge",
7
8
  events: {
@@ -77,7 +78,8 @@ const gaugeTheme = {
77
78
  y: -26,
78
79
  },
79
80
  },
80
- }
81
+ },
82
+ credits: { enabled: false }
81
83
  }
82
84
 
83
85
  export default gaugeTheme;
@@ -81,6 +81,11 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
81
81
 
82
82
  const formatStreetAdr = (address: string): string => preserveCase ? address : titleize(address)
83
83
 
84
+ const uppercaseState = state?.toUpperCase() ?? ''
85
+
86
+ const fields = [address, addressCont, city, homeId, homeUrl, houseStyle, state, territory, zipcode]
87
+ const hasAllEmptyProps = fields.every(field => field === undefined || field === null || field === '')
88
+
84
89
  return (
85
90
  <div
86
91
  className={classes(className, dark)}
@@ -88,7 +93,8 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
88
93
  {...dataProps}
89
94
  {...htmlProps}
90
95
  >
91
- {emphasis == 'street' &&
96
+ {hasAllEmptyProps && ''}
97
+ {emphasis == 'street' && !hasAllEmptyProps &&
92
98
  <div>
93
99
  <Title
94
100
  className="pb_home_address_street_address"
@@ -105,11 +111,11 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
105
111
  {titleize(addressCont)}
106
112
  </Title>
107
113
  <Body color="light">
108
- {`${titleize(city)}, ${state.toUpperCase()} ${zipcode}`}
114
+ {`${city ? `${titleize(city)}, ` : ''}${uppercaseState}${zipcode ? ` ${zipcode}` : ''}`}
109
115
  </Body>
110
116
  </div>
111
117
  }
112
- {emphasis == 'city' &&
118
+ {emphasis == 'city' && !hasAllEmptyProps &&
113
119
  <div>
114
120
  <Body color="light">
115
121
  {joinPresent([formatStreetAdr(address), houseStyle], ' · ')}
@@ -122,18 +128,18 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
122
128
  size={4}
123
129
  tag="span"
124
130
  >
125
- {`${titleize(city)}, ${state.toUpperCase()}`}
131
+ {`${city ? `${titleize(city)}, ` : ''}${uppercaseState}`}
126
132
  </Title>
127
133
  <Body
128
134
  color="light"
129
135
  tag="span"
130
136
  >
131
- {` ${zipcode}`}
137
+ {` ${zipcode ?? ''}`}
132
138
  </Body>
133
139
  </div>
134
140
  </div>
135
141
  }
136
- {emphasis == 'none' &&
142
+ {emphasis == 'none' && !hasAllEmptyProps &&
137
143
  <div>
138
144
  <Body dark={dark}>
139
145
  {joinPresent([formatStreetAdr(address), houseStyle], ' · ')}
@@ -144,7 +150,7 @@ const HomeAddressStreet = (props: HomeAddressStreetProps): React.ReactElement =>
144
150
  color="light"
145
151
  dark={dark}
146
152
  >
147
- {`${titleize(city)}, ${state.toUpperCase()} ${zipcode}`}
153
+ {`${city ? `${titleize(city)}, ` : ''}${uppercaseState}${zipcode ? ` ${zipcode}` : ''}`}
148
154
  </Body>
149
155
  </div>
150
156
  </div>
@@ -0,0 +1,52 @@
1
+ import React from 'react'
2
+ import lineGraphTheme from '../lineGraphTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
+
6
+ const data = [{
7
+ name: 'Installation',
8
+ data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175],
9
+ }, {
10
+ name: 'Manufacturing',
11
+ data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434],
12
+ }, {
13
+ name: 'Sales & Distribution',
14
+ data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387],
15
+ }, {
16
+ name: 'Project Development',
17
+ data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227],
18
+ }, {
19
+ name: 'Other',
20
+ data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111],
21
+ }]
22
+
23
+ const categories = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
24
+
25
+ const baseOptions = {
26
+ series: data,
27
+ title: { text: "Solar Employment Growth by Sector, 2010-2016" },
28
+ subtitle: { text: "Source: thesolarfoundation.com" },
29
+ xAxis: {
30
+ categories: categories,
31
+ },
32
+ yAxis: {
33
+ title: {
34
+ text: "Number of Employees",
35
+ },
36
+ },
37
+ }
38
+
39
+ const LineGraphPbStyles = () => {
40
+ const options = Highcharts.merge({}, lineGraphTheme, baseOptions)
41
+
42
+ return(
43
+ <div>
44
+ <HighchartsReact
45
+ highcharts={Highcharts}
46
+ options={options}
47
+ />
48
+ </div>
49
+ )
50
+ }
51
+
52
+ export default LineGraphPbStyles
@@ -0,0 +1 @@
1
+ You don't need to use the Line Graph Kit to apply Playbook styles to your Highcharts line graph. Just import lineGraphTheme.ts and merge it with your graph options—Playbook’s styling will apply automatically.
@@ -11,6 +11,7 @@ examples:
11
11
 
12
12
  react:
13
13
  - line_graph_default: Default
14
+ - line_graph_pb_styles: Playbook Styles
14
15
  - line_graph_legend: Legend
15
16
  - line_graph_legend_position: Legend Position
16
17
  - line_graph_legend_nonclickable: Legend Nonclickable
@@ -4,3 +4,4 @@ export { default as LineGraphLegendPosition } from './_line_graph_legend_positio
4
4
  export { default as LineGraphLegendNonclickable } from './_line_graph_legend_nonclickable.jsx'
5
5
  export { default as LineGraphHeight } from './_line_graph_height.jsx'
6
6
  export { default as LineGraphColors } from './_line_graph_colors.jsx'
7
+ export { default as LineGraphPbStyles } from './_line_graph_pb_styles.jsx'
@@ -0,0 +1,110 @@
1
+ import colors from '../tokens/exports/_colors.module.scss'
2
+ import typography from '../tokens/exports/_typography.module.scss'
3
+
4
+ const lineGraphTheme = {
5
+ title: {
6
+ text: "",
7
+ style: {
8
+ color: colors.text_lt_default,
9
+ fontFamily: typography.font_family_base,
10
+ fontWeight: typography.bold,
11
+ fontSize: typography.heading_3,
12
+ },
13
+ },
14
+ subtitle: {
15
+ text: "" ,
16
+ style: {
17
+ fontFamily: typography.font_family_base,
18
+ color: colors.text_lt_light,
19
+ fontWeight: typography.regular,
20
+ fontSize: typography.text_base,
21
+ },
22
+ },
23
+ chart: {
24
+ type: "line",
25
+ },
26
+ tooltip: {
27
+ backgroundColor: {
28
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
29
+ stops: [
30
+ [0, colors.bg_dark],
31
+ [1, colors.bg_dark],
32
+ ],
33
+ },
34
+ followPointer: true,
35
+ shadow: false,
36
+ borderWidth: 0,
37
+ borderRadius: 10,
38
+ style: {
39
+ fontFamily: typography.font_family_base,
40
+ color: colors.text_dk_default,
41
+ fontWeight: typography.regular,
42
+ fontSize: typography.text_smaller,
43
+ },
44
+ },
45
+ plotOptions: {
46
+ line: {
47
+ dataLabels: {
48
+ enabled: false,
49
+ },
50
+ },
51
+ },
52
+ credits: { enabled: false },
53
+ legend: { enabled: false },
54
+ colors: [
55
+ colors.data_1,
56
+ colors.data_2,
57
+ colors.data_3,
58
+ colors.data_4,
59
+ colors.data_5,
60
+ colors.data_6,
61
+ colors.data_7,
62
+ ],
63
+ xAxis: {
64
+ gridLineWidth: 0,
65
+ lineColor: colors.border_light,
66
+ tickColor: colors.border_light,
67
+ labels: {
68
+ style: {
69
+ fontFamily: typography.font_family_base,
70
+ color: colors.text_lt_lighter,
71
+ fontWeight: typography.bold,
72
+ fontSize: typography.text_smaller,
73
+ },
74
+ },
75
+ title: {
76
+ style: {
77
+ color: colors.text_lt_default,
78
+ fontFamily: typography.font_family_base,
79
+ fontWeight: typography.regular,
80
+ fontSize: typography.heading_4,
81
+ },
82
+ },
83
+ },
84
+ yAxis: {
85
+ alternateGridColor: undefined as string | undefined,
86
+ minorTickInterval: null as number | null,
87
+ gridLineColor: colors.border_light,
88
+ minorGridLineColor: colors.border_light,
89
+ lineWidth: 0,
90
+ tickWidth: 0,
91
+ labels: {
92
+ style: {
93
+ fontFamily: typography.font_family_base,
94
+ color: colors.text_lt_lighter,
95
+ fontWeight: typography.bold,
96
+ fontSize: typography.text_smaller,
97
+ },
98
+ },
99
+ title: {
100
+ style: {
101
+ fontFamily: typography.font_family_base,
102
+ color: colors.text_lt_lighter,
103
+ fontWeight: typography.bold,
104
+ fontSize: typography.text_smaller,
105
+ },
106
+ },
107
+ },
108
+ }
109
+
110
+ export default lineGraphTheme;
@@ -13,6 +13,7 @@ import MessageMention from './_message_mention'
13
13
 
14
14
  type MessageProps = {
15
15
  aria: { [key: string]: string },
16
+ avatarGrayscale?: boolean,
16
17
  avatarName?: string,
17
18
  avatarStatus?: "away" | "offline" | "online",
18
19
  avatarUrl?: string,
@@ -32,6 +33,7 @@ type MessageProps = {
32
33
  const Message = (props: MessageProps) => {
33
34
  const {
34
35
  aria = {},
36
+ avatarGrayscale = false,
35
37
  avatarName,
36
38
  avatarStatus = null,
37
39
  avatarUrl,
@@ -71,6 +73,7 @@ const Message = (props: MessageProps) => {
71
73
  >
72
74
  {shouldDisplayAvatar &&
73
75
  <Avatar
76
+ grayscale={avatarGrayscale}
74
77
  imageUrl={avatarUrl}
75
78
  name={avatarName}
76
79
  size="xs"
@@ -0,0 +1,9 @@
1
+ <%= pb_rails("message", props: {
2
+ label: "Mike Bishop",
3
+ message: "So long, and thanks for all the fish!",
4
+ timestamp: "3 months ago",
5
+ avatar_name: "Mike Bishop",
6
+ avatar_url: "https://randomuser.me/api/portraits/men/50.jpg",
7
+ avatar_status: "offline",
8
+ avatar_grayscale: true,
9
+ }) %>
@@ -0,0 +1,21 @@
1
+ import React from "react"
2
+
3
+ import Message from "../_message"
4
+
5
+ const MessageGrayscale = (props) => {
6
+ return (
7
+ <Message
8
+ avatarGrayscale
9
+ avatarName='Mike Bishop'
10
+ avatarStatus='offline'
11
+ avatarUrl='https://randomuser.me/api/portraits/men/50.jpg'
12
+ borderRadius='rounded'
13
+ label='Mike Bishop'
14
+ message='So long, and thanks for all the fish!'
15
+ timestamp='3 months ago'
16
+ {...props}
17
+ />
18
+ )
19
+ }
20
+
21
+ export default MessageGrayscale