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
@@ -9,12 +9,182 @@ export default class PbAdvancedTable extends PbEnhancedElement {
9
9
  return ADVANCED_TABLE_SELECTOR;
10
10
  }
11
11
 
12
+ updateTableSelectedRowsAttribute() {
13
+ const mainTable = this.element.closest(".pb_advanced_table");
14
+ mainTable.dataset.selectedRows = JSON.stringify(Array.from(PbAdvancedTable.selectedRows));
15
+ }
16
+
17
+ // Check if the row is expanded or collapsed
18
+ // This is used to determine the background color of the row
19
+ // when the checkbox is checked or unchecked
20
+ isRowExpanded(rowEl) {
21
+ const closeIcon = rowEl.querySelector(UP_ARROW_SELECTOR);
22
+ return closeIcon?.style.display === "none" || !closeIcon;
23
+ }
24
+
25
+ updateParentCheckboxes(checkbox) {
26
+ const rowEl = checkbox.closest("tr");
27
+ if (!rowEl) return;
28
+
29
+ const table = rowEl.closest("table");
30
+ if (!table) return;
31
+
32
+ const contentTrail = rowEl.dataset.advancedTableContent;
33
+ if (!contentTrail) return;
34
+
35
+ const ancestorIds = contentTrail.split("-").slice(0, -1);
36
+
37
+ ancestorIds.reverse();
38
+ ancestorIds.forEach((ancestorId) => {
39
+ const parentRowSelector = `[data-advanced-table-content$="${ancestorId}"]`;
40
+ const parentRow = table.querySelector(parentRowSelector);
41
+ if (!parentRow) return;
42
+
43
+ const parentLabel = parentRow.querySelector("label[data-row-id]");
44
+ if (!parentLabel) return;
45
+
46
+ const parentCheckbox = parentLabel.querySelector(
47
+ "input[type='checkbox']"
48
+ );
49
+ if (!parentCheckbox) return;
50
+
51
+ // Find all immediate children of parent linked to ancestor Id, filter our subrow headers
52
+ const children = Array.from(
53
+ table.querySelectorAll(`tr[data-row-parent$="_${ancestorId}"]`)
54
+ ).filter((child) => {
55
+ const content = child.dataset.advancedTableContent;
56
+ return !(content && content.endsWith("sr"));
57
+ });
58
+
59
+ const allChildrenChecked = Array.from(children).every((child) => {
60
+ const childLabel = child.querySelector("label[data-row-id]");
61
+ if (!childLabel) return false;
62
+ const childCheckbox = childLabel.querySelector(
63
+ "input[type='checkbox']"
64
+ );
65
+ if (!childCheckbox) return false;
66
+ return childCheckbox.checked;
67
+ });
68
+
69
+ // Update parent checkbox
70
+ parentCheckbox.checked = allChildrenChecked;
71
+
72
+ const parentCheckboxId = parentCheckbox.id;
73
+ if (allChildrenChecked) {
74
+ PbAdvancedTable.selectedRows.add(parentCheckboxId);
75
+ parentRow.classList.add("bg-row-selection");
76
+ parentRow.classList.remove("bg-white", "bg-silver");
77
+ } else {
78
+ PbAdvancedTable.selectedRows.delete(parentCheckboxId);
79
+ }
80
+ if (!allChildrenChecked) {
81
+ parentRow.classList.remove("bg-row-selection");
82
+
83
+ if (this.isRowExpanded(parentRow)) {
84
+ parentRow.classList.remove("bg-silver");
85
+ parentRow.classList.add("bg-white");
86
+ } else {
87
+ parentRow.classList.remove("bg-white");
88
+ parentRow.classList.add("bg-silver");
89
+ }
90
+ }
91
+ });
92
+ }
93
+
94
+ handleCheckboxClick(event) {
95
+ const checkbox = event.currentTarget;
96
+ const rowId = checkbox.id;
97
+ const isChecked = checkbox.checked;
98
+ const rowEl = checkbox.closest("tr");
99
+
100
+ if (isChecked) {
101
+ PbAdvancedTable.selectedRows.add(rowId);
102
+ rowEl.classList.add("bg-row-selection");
103
+ rowEl.classList.remove("bg-white", "bg-silver");
104
+ } else {
105
+ PbAdvancedTable.selectedRows.delete(rowId);
106
+ }
107
+ // Update background color on row
108
+ if (!isChecked) {
109
+ rowEl.classList.remove("bg-row-selection");
110
+
111
+ if (this.isRowExpanded(rowEl)) {
112
+ rowEl.classList.remove("bg-silver");
113
+ rowEl.classList.add("bg-white");
114
+ } else {
115
+ rowEl.classList.remove("bg-white");
116
+ rowEl.classList.add("bg-silver");
117
+ }
118
+ }
119
+ if (rowEl) {
120
+ const table = rowEl.closest("table");
121
+ const rowContent = rowEl.dataset.advancedTableContent;
122
+
123
+ if (rowContent) {
124
+ const childRows = table.querySelectorAll(
125
+ `[data-advanced-table-content^="${rowContent}-"]`
126
+ );
127
+
128
+ childRows.forEach((childRow) => {
129
+ const label = childRow.querySelector("label[data-row-id]");
130
+ if (!label) return;
131
+
132
+ const childCheckbox = label.querySelector("input[type='checkbox']");
133
+ if (!childCheckbox) return;
134
+
135
+ childCheckbox.checked = isChecked;
136
+
137
+ const childRowId = childCheckbox.id;
138
+ const childRowEl = childCheckbox.closest("tr");
139
+ if (isChecked) {
140
+ PbAdvancedTable.selectedRows.add(childRowId);
141
+ childRowEl?.classList.add("bg-row-selection");
142
+ childRowEl?.classList.remove("bg-white", "bg-silver");
143
+ } else {
144
+ PbAdvancedTable.selectedRows.delete(childRowId);
145
+ }
146
+ if (!isChecked) {
147
+ childRowEl?.classList.remove("bg-row-selection");
148
+
149
+ if (this.isRowExpanded(childRowEl)) {
150
+ childRowEl?.classList.remove("bg-silver");
151
+ childRowEl?.classList.add("bg-white");
152
+ } else {
153
+ childRowEl?.classList.remove("bg-white");
154
+ childRowEl?.classList.add("bg-silver");
155
+ }
156
+ }
157
+ });
158
+ }
159
+ }
160
+
161
+ this.updateParentCheckboxes(checkbox);
162
+
163
+ this.updateTableSelectedRowsAttribute();
164
+
165
+ const table = checkbox.closest("table");
166
+ const selectAllCheckbox = table.querySelector("#select-all-rows");
167
+
168
+ if (selectAllCheckbox) {
169
+ const allCheckboxes = table.querySelectorAll(
170
+ "label[data-row-id] input[type='checkbox']"
171
+ );
172
+ const allChecked = Array.from(allCheckboxes).every((cb) => cb.checked);
173
+
174
+ const selectAllInput = selectAllCheckbox.querySelector(
175
+ 'input[type="checkbox"]'
176
+ );
177
+ selectAllInput.checked = allChecked;
178
+ }
179
+ }
180
+
12
181
  get target() {
13
182
  const table = this.element.closest("table");
14
183
  return table.querySelectorAll(`[data-row-parent="${this.element.id}"]`);
15
184
  }
16
185
 
17
186
  static expandedRows = new Set();
187
+ static selectedRows = new Set();
18
188
  static isCollapsing = false;
19
189
 
20
190
  connect() {
@@ -31,17 +201,31 @@ export default class PbAdvancedTable extends PbEnhancedElement {
31
201
  this.toggleElement(this.target);
32
202
  }
33
203
  });
34
-
35
- this.hideCloseIcon()
36
-
37
- const nestedButtons = this.element
38
- .closest("table")
39
- .querySelectorAll("[data-advanced-table]");
204
+
205
+ this.hideCloseIcon();
206
+
207
+ const table = this.element.closest("table");
208
+
209
+ // Prevent duplicate initialization
210
+ if (table.dataset.pbAdvancedTableInitialized) return;
211
+ table.dataset.pbAdvancedTableInitialized = "true";
212
+
213
+ // Bind checkbox change handlers for all row checkboxes
214
+ const checkboxLabels = table.querySelectorAll("label[data-row-id]");
215
+ checkboxLabels.forEach((label) => {
216
+ const checkbox = label.querySelector("input[type='checkbox']");
217
+ if (!checkbox) return;
218
+ checkbox.addEventListener("change", (event) => {
219
+ this.handleCheckboxClick(event);
220
+ });
221
+ });
222
+
223
+ // Bind nested row expansion logic
224
+ const nestedButtons = table.querySelectorAll("[data-advanced-table]");
40
225
  nestedButtons.forEach((button) => {
41
226
  button.addEventListener("click", () => {
42
227
  const isExpanded =
43
- button.querySelector(UP_ARROW_SELECTOR).style.display ===
44
- "inline-block";
228
+ button.querySelector(UP_ARROW_SELECTOR).style.display === "inline-block";
45
229
  if (isExpanded) {
46
230
  PbAdvancedTable.expandedRows.add(button.id);
47
231
  } else {
@@ -49,12 +233,46 @@ export default class PbAdvancedTable extends PbEnhancedElement {
49
233
  }
50
234
  });
51
235
  });
236
+
237
+ // Bind select-all logic for this table
238
+ const selectAllCheckbox = table.querySelector("#select-all-rows");
239
+ if (selectAllCheckbox) {
240
+ selectAllCheckbox.addEventListener("change", () => {
241
+ const checkboxInput = selectAllCheckbox.querySelector('input[type="checkbox"]');
242
+ const checkAll = checkboxInput.checked;
243
+
244
+ const checkboxes = Array.from(
245
+ table.querySelectorAll("label[data-row-id] input[type='checkbox']")
246
+ );
247
+
248
+ checkboxes.forEach((cb) => {
249
+ cb.checked = checkAll;
250
+ const rowId = cb.id;
251
+ const rowEl = cb.closest("tr");
252
+
253
+ if (checkAll) {
254
+ PbAdvancedTable.selectedRows.add(rowId);
255
+ rowEl?.classList.add("bg-row-selection");
256
+ rowEl?.classList.remove("bg-white", "bg-silver");
257
+ } else {
258
+ PbAdvancedTable.selectedRows.delete(rowId);
259
+ rowEl?.classList.remove("bg-row-selection");
260
+ rowEl?.classList.add("bg-white");
261
+ }
262
+ });
263
+
264
+ checkboxes.forEach((cb) => this.updateParentCheckboxes(cb));
265
+
266
+ this.updateTableSelectedRowsAttribute();
267
+ });
268
+ }
52
269
  }
270
+
53
271
 
54
272
  hideCloseIcon() {
55
273
  const closeIcon = this.element.querySelector(UP_ARROW_SELECTOR);
56
274
  closeIcon.style.display = "none";
57
- }
275
+ }
58
276
 
59
277
  showElement(elements) {
60
278
  elements.forEach((elem) => {
@@ -151,7 +369,6 @@ export default class PbAdvancedTable extends PbEnhancedElement {
151
369
  }
152
370
  }
153
371
 
154
-
155
372
  displayDownArrow() {
156
373
  this.element.querySelector(DOWN_ARROW_SELECTOR).style.display =
157
374
  "inline-block";
@@ -238,4 +455,4 @@ window.expandAllRows = (element) => {
238
455
 
239
456
  window.expandAllSubRows = (element, rowDepth) => {
240
457
  PbAdvancedTable.handleToggleAllSubRows(element, rowDepth);
241
- };
458
+ };
@@ -77,6 +77,7 @@
77
77
  top: 0;
78
78
  left: 0;
79
79
  border-radius: unset;
80
+ z-index: 5;
80
81
  }
81
82
 
82
83
  .checkbox-cell {
@@ -55,7 +55,15 @@ module Playbook
55
55
  # Subrow header if applicable
56
56
  output << pb_rails("advanced_table/table_subrow_header", props: { row: row, column_definitions: leaf_columns, depth: current_depth, subrow_header: subrow_headers[current_depth - 1], collapsible_trail: collapsible_trail, classname: "toggle-content", responsive: responsive, subrow_data_attributes: subrow_data_attributes }) if is_first_child_of_subrow && enable_toggle_expansion == "all"
57
57
 
58
- current_data_attributes = current_depth.zero? ? { row_depth: 0 } : table_data_attributes
58
+ current_data_attributes = if current_depth.zero?
59
+ {
60
+ row_depth: 0,
61
+ advanced_table_content: row.object_id.to_s,
62
+ row_parent: nil,
63
+ }
64
+ else
65
+ table_data_attributes
66
+ end
59
67
 
60
68
  # Additional class and data attributes needed for toggle logic
61
69
  output << pb_rails("advanced_table/table_row", props: { id: id, row: row, column_definitions: leaf_columns, depth: current_depth, collapsible_trail: collapsible_trail, classname: additional_classes, table_data_attributes: current_data_attributes, responsive: responsive, loading: loading, selectable_rows: selectable_rows, row_id: row[:id], enable_toggle_expansion: enable_toggle_expansion })
@@ -54,9 +54,6 @@ module Playbook
54
54
  pb_rails("checkbox", props: {
55
55
  id: "select-all-rows",
56
56
  name: "select-all-rows",
57
- data: {
58
- action: "click->pb-advanced-table#toggleAllRowSelection",
59
- },
60
57
  })
61
58
  end
62
59
  end
@@ -60,7 +60,7 @@ module Playbook
60
60
  name: "select-row-#{row_id || row.object_id}",
61
61
  data: {
62
62
  row_id: row_id || row.object_id.to_s,
63
- action: "click->pb-advanced-table#toggleRowSelection",
63
+ flat_advanced_table_select: true,
64
64
  },
65
65
  })
66
66
  end
@@ -75,7 +75,6 @@ module Playbook
75
75
  name: "select-row-#{row_id || row.object_id}",
76
76
  data: {
77
77
  row_id: row_id || row.object_id.to_s,
78
- action: "click->pb-advanced-table#toggleRowSelection",
79
78
  },
80
79
  })
81
80
  end
@@ -82,6 +82,10 @@ $avatar-sizes: (
82
82
  object-fit: cover;
83
83
  display: block;
84
84
  }
85
+
86
+ .grayscale {
87
+ filter: grayscale(1);
88
+ }
85
89
  }
86
90
  }
87
91
  }
@@ -25,6 +25,7 @@ export type AvatarProps = {
25
25
  },
26
26
  dark?: boolean,
27
27
  data?: {[key: string]: string},
28
+ grayscale?: boolean,
28
29
  htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
29
30
  id?: string,
30
31
  imageAlt?: string,
@@ -47,6 +48,7 @@ const Avatar = (props: AvatarProps): React.ReactElement => {
47
48
  htmlOptions = {},
48
49
  name = undefined,
49
50
  componentOverlay,
51
+ grayscale = false,
50
52
  id = '',
51
53
  imageAlt = '',
52
54
  imageUrl,
@@ -155,6 +157,7 @@ const Avatar = (props: AvatarProps): React.ReactElement => {
155
157
  {canShowImage && (
156
158
  <Image
157
159
  alt={imageAlt ? imageAlt : name}
160
+ className={grayscale ? "grayscale" : ""}
158
161
  onError={handleError}
159
162
  url={imageUrl}
160
163
  />
@@ -3,7 +3,7 @@
3
3
  <% if object.component_overlay && object.component_overlay[:component] == "icon_circle" %>
4
4
  <%= pb_rails("flex", props: { display: "display_inline_block", position: "relative" }) do %>
5
5
  <%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
6
- <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
6
+ <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error, classname: object.grayscale ? "grayscale" : "" }) if object.image_url.present? %>
7
7
  <% end %>
8
8
  <%= pb_rails("card", props: { border_none: true, border_radius: "rounded", dark: object.dark, position: "absolute" }.merge(specific_placement_style)) do %>
9
9
 
@@ -13,7 +13,7 @@
13
13
  <% elsif object.component_overlay && object.component_overlay[:component] == "badge" %>
14
14
  <%= pb_rails("flex", props: { display: "display_inline_block", position: "relative" }) do %>
15
15
  <%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
16
- <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
16
+ <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error, classname: object.grayscale ? "grayscale" : "" }) if object.image_url.present? %>
17
17
  <% end %>
18
18
  <%= pb_rails("card", props: { border_none: true, border_radius: "rounded", dark: object.dark, padding: "none", position: "absolute" }.merge(specific_placement_style)) do %>
19
19
  <%= pb_rails("badge", props: { dark: object.dark, rounded: true, text: object.component_overlay[:text], variant: object.component_overlay[:variant] }) %>
@@ -21,7 +21,7 @@
21
21
  <% end %>
22
22
  <% else %>
23
23
  <%= content_tag(:div, data: { initials: object.initials }, class: "avatar_wrapper") do %>
24
- <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error }) if object.image_url.present? %>
24
+ <%= pb_rails("image", props: { alt: object.alt_text, url: object.image_url, on_error: object.handle_img_error, classname: object.grayscale ? "grayscale" : "" }) if object.image_url.present? %>
25
25
  <% end %>
26
26
  <%= pb_rails("online_status", props: object.online_status_props) if object.status %>
27
27
  <% end %>
@@ -15,6 +15,8 @@ module Playbook
15
15
  values: %w[xxs xs sm md base lg xl],
16
16
  default: "md"
17
17
  prop :status
18
+ prop :grayscale, type: Playbook::Props::Boolean,
19
+ default: false
18
20
 
19
21
  def initials
20
22
  name.split.map(&:first).join.downcase
@@ -106,3 +106,21 @@ test('renders with online status', () => {
106
106
  const onlineStatus = onlineStatusAvatar.querySelector('.pb_online_status_kit_online_size_md')
107
107
  expect(onlineStatus).toBeInTheDocument();
108
108
  });
109
+
110
+ test('renders with grayscale filter', () => {
111
+ render(
112
+ <Avatar
113
+ data={{ testid: testId }}
114
+ grayscale
115
+ imageAlt={imageAlt}
116
+ imageUrl={imageUrl}
117
+ name={name}
118
+ />
119
+ );
120
+
121
+ const grayscaleAvatar = screen.getByTestId(testId);
122
+ expect(grayscaleAvatar).toBeInTheDocument();
123
+
124
+ const grayscaleImage = grayscaleAvatar.querySelector('.grayscale')
125
+ expect(grayscaleImage).toBeInTheDocument();
126
+ });
@@ -0,0 +1,5 @@
1
+ <%= pb_rails("avatar", props: {
2
+ name: "Terry Johnson",
3
+ image_url: "https://randomuser.me/api/portraits/men/44.jpg",
4
+ grayscale: true
5
+ }) %>
@@ -0,0 +1,16 @@
1
+ import React from 'react'
2
+ import Avatar from '../../pb_avatar/_avatar'
3
+
4
+ const AvatarGrayscale = (props) => {
5
+ return (
6
+ <Avatar
7
+ grayscale
8
+ imageAlt="Terry Johnson Standing"
9
+ imageUrl="https://randomuser.me/api/portraits/men/44.jpg"
10
+ name="Terry Johnson"
11
+ {...props}
12
+ />
13
+ )
14
+ }
15
+
16
+ export default AvatarGrayscale
@@ -6,6 +6,7 @@ examples:
6
6
  - avatar_status: Status
7
7
  - avatar_circle_icon_component_overlay: Icon Circle Component Overlay
8
8
  - avatar_badge_component_overlay: Badge Component Overlay
9
+ - avatar_grayscale: Grayscale
9
10
  react:
10
11
  - avatar_default: Default
11
12
  - avatar_monogram: Monogram
@@ -13,6 +14,7 @@ examples:
13
14
  - avatar_status: Status
14
15
  - avatar_circle_icon_component_overlay: Icon Circle Component Overlay
15
16
  - avatar_badge_component_overlay: Badge Component Overlay
17
+ - avatar_grayscale: Grayscale
16
18
  swift:
17
19
  - avatar_default_swift: Default
18
20
  - avatar_monogram_swift: Monogram
@@ -4,3 +4,4 @@ export { default as AvatarStatus } from './_avatar_status.jsx'
4
4
  export { default as AvatarNoImage } from './_avatar_no_image.jsx'
5
5
  export { default as AvatarCircleIconComponentOverlay } from './_avatar_circle_icon_component_overlay.jsx'
6
6
  export { default as AvatarBadgeComponentOverlay } from './_avatar_badge_component_overlay.jsx'
7
+ export { default as AvatarGrayscale } from './_avatar_grayscale.jsx'
@@ -1,5 +1,5 @@
1
1
  <% if object.draggable_item %>
2
- <%= pb_rails("draggable/draggable_item", props:{drag_id: object.drag_id}) do %>
2
+ <%= pb_rails("draggable/draggable_item", props:{drag_id: object.drag_id, classname: drop_zone_line_color ? line_color_class : nil}) do %>
3
3
  <%= pb_content_tag(object.tag) do %>
4
4
  <% if object.draggable_item %>
5
5
  <%= pb_rails("flex", props: { align: "center" }) do %>
@@ -24,6 +24,9 @@ module Playbook
24
24
  default: true
25
25
  prop :items, type: Playbook::Props::Array,
26
26
  default: []
27
+ prop :drop_zone_line_color, type: Playbook::Props::Enum,
28
+ values: ["primary", "purple", nil],
29
+ default: nil
27
30
 
28
31
  def classname
29
32
  generate_classname("pb_card_kit",
@@ -60,6 +63,15 @@ module Playbook
60
63
  def border_radius_class
61
64
  border_radius != "md" ? "border_radius_#{border_radius}" : nil
62
65
  end
66
+
67
+ def line_color_class
68
+ case drop_zone_line_color
69
+ when "primary"
70
+ "drop_zone_color_primary"
71
+ when "purple"
72
+ "drop_zone_color_purple"
73
+ end
74
+ end
63
75
  end
64
76
  end
65
77
  end
@@ -10,7 +10,7 @@ import { highchartsDarkTheme } from "../pb_dashboard/pbChartsDarkTheme";
10
10
  import mapColors from "../pb_dashboard/pbChartsColorsHelper";
11
11
  import { globalProps } from "../utilities/globalProps";
12
12
  import { buildAriaProps, buildDataProps, buildHtmlProps } from "../utilities/props";
13
- import { merge } from '../utilities/object'
13
+ import { merge } from '../utilities/object'
14
14
 
15
15
  type CircleChartProps = {
16
16
  align?: "left" | "right" | "center";
@@ -28,7 +28,7 @@ test('uses exact classname', () => {
28
28
  value: 49,
29
29
  },
30
30
  {
31
- name: 'After call',
31
+ name: 'After Call',
32
32
  value: 10,
33
33
  },
34
34
  ]
@@ -39,7 +39,7 @@ test('uses exact classname', () => {
39
39
  id='circlechartid'
40
40
  />
41
41
  );
42
-
42
+
43
43
  const kit = screen.getByTestId(testId);
44
44
  expect(kit).toHaveClass('pb_circle_chart');
45
45
  });
@@ -0,0 +1,53 @@
1
+ import colors from '../tokens/exports/_colors.module.scss'
2
+ import typography from '../tokens/exports/_typography.module.scss'
3
+
4
+ const circleChartTheme = {
5
+ title: { text: "" },
6
+ chart: {
7
+ type: "pie",
8
+ },
9
+ tooltip: {
10
+ backgroundColor: {
11
+ linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
12
+ stops: [
13
+ [0, colors.bg_dark],
14
+ [1, colors.bg_dark],
15
+ ],
16
+ },
17
+ pointFormat:
18
+ '<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: ' +
19
+ "<b>{point.y}</b>",
20
+ followPointer: true,
21
+ shadow: false,
22
+ borderWidth: 0,
23
+ borderRadius: 10,
24
+ style: {
25
+ fontFamily: typography.font_family_base,
26
+ color: colors.text_dk_default,
27
+ fontWeight: typography.regular,
28
+ fontSize: typography.text_smaller,
29
+ },
30
+ },
31
+ plotOptions: {
32
+ pie: {
33
+ dataLabels: {
34
+ enabled: false,
35
+ },
36
+ innerSize: '50%',
37
+ borderColor: "",
38
+ borderWidth: null as number | null,
39
+ colors: [
40
+ colors.data_1,
41
+ colors.data_2,
42
+ colors.data_3,
43
+ colors.data_4,
44
+ colors.data_5,
45
+ colors.data_6,
46
+ colors.data_7,
47
+ ],
48
+ },
49
+ },
50
+ credits: { enabled: false }
51
+ }
52
+
53
+ export default circleChartTheme;
@@ -7,7 +7,7 @@
7
7
  value: 49,
8
8
  },
9
9
  {
10
- name: 'After call',
10
+ name: 'After Call',
11
11
  value: 10,
12
12
  }
13
13
  ] %>
@@ -18,7 +18,7 @@
18
18
  chart_data: data_51,
19
19
  id: "with-a-block-2",
20
20
  rounded: true,
21
- }) do %>
21
+ }) do %>
22
22
  <%= pb_rails('title', props: {text: "83", size: 1, tag: 'div'}) %>
23
23
  <% end %>
24
24
 
@@ -13,7 +13,7 @@ const dataWithABlock = [
13
13
  value: 49,
14
14
  },
15
15
  {
16
- name: 'After call',
16
+ name: 'After Call',
17
17
  value: 10,
18
18
  },
19
19
  ]
@@ -7,7 +7,7 @@
7
7
  value: 49,
8
8
  },
9
9
  {
10
- name: 'After call',
10
+ name: 'After Call',
11
11
  value: 10,
12
12
  }
13
13
  ] %>
@@ -12,7 +12,7 @@ const dataWithColors = [
12
12
  value: 49,
13
13
  },
14
14
  {
15
- name: 'After call',
15
+ name: 'After Call',
16
16
  value: 10,
17
17
  },
18
18
  ]
@@ -7,7 +7,7 @@
7
7
  value: 49,
8
8
  },
9
9
  {
10
- name: 'After call',
10
+ name: 'After Call',
11
11
  value: 10,
12
12
  }
13
13
  ] %>
@@ -12,7 +12,7 @@ const data = [
12
12
  value: 49,
13
13
  },
14
14
  {
15
- name: 'After call',
15
+ name: 'After Call',
16
16
  value: 10,
17
17
  },
18
18
  ]