playbook_ui 14.19.0.pre.rc.2 → 14.20.0.pre.alpha.PLAY2178advancedtablerowpinning7978

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 (250) 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 +92 -5
  4. data/app/pb_kits/playbook/pb_advanced_table/Components/TableActionBar.tsx +175 -16
  5. data/app/pb_kits/playbook/pb_advanced_table/Components/TableHeaderCell.tsx +56 -25
  6. data/app/pb_kits/playbook/pb_advanced_table/Context/AdvancedTableContext.tsx +58 -2
  7. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableActions.ts +1 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/Hooks/useTableState.ts +34 -15
  9. data/app/pb_kits/playbook/pb_advanced_table/SubKits/TableHeader.tsx +7 -3
  10. data/app/pb_kits/playbook/pb_advanced_table/Utilities/VisibilityTree.ts +47 -0
  11. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +11 -10
  12. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +13 -4
  13. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +16 -8
  14. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +9 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.test.jsx +61 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +5 -7
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.jsx +57 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.md +4 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx +62 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md +1 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx +82 -0
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md +1 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx +66 -0
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md +3 -0
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_default.md +1 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pinned_rows.jsx +57 -0
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pinned_rows_react.md +5 -0
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.html.erb +137 -0
  29. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.md +3 -0
  30. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.html.erb +40 -0
  31. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.md +1 -0
  32. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +5 -1
  33. 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
  34. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +3 -2
  35. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +10 -3
  36. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +7 -2
  37. data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +106 -0
  38. data/app/pb_kits/playbook/pb_advanced_table/index.js +370 -10
  39. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +1 -0
  40. data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.html.erb +23 -0
  41. data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.rb +19 -0
  42. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +9 -1
  43. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +4 -3
  44. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +1 -2
  45. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +4 -0
  46. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +3 -0
  47. data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +3 -3
  48. data/app/pb_kits/playbook/pb_avatar/avatar.rb +2 -0
  49. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +18 -0
  50. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.html.erb +5 -0
  51. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.jsx +16 -0
  52. data/app/pb_kits/playbook/pb_avatar/docs/example.yml +2 -0
  53. data/app/pb_kits/playbook/pb_avatar/docs/index.js +1 -0
  54. data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_card/card.rb +12 -0
  56. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +2 -2
  57. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.html.erb +22 -1
  58. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.html.erb +55 -0
  59. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line_rails.md +5 -0
  60. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_rails.md +5 -0
  61. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.jsx +59 -0
  62. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners_react.md +1 -0
  63. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -0
  64. data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
  65. data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +11 -1
  66. data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +11 -1
  67. data/app/pb_kits/playbook/pb_draggable/index.js +4 -2
  68. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +33 -5
  69. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +6 -1
  70. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +82 -35
  71. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb +31 -0
  72. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.md +5 -0
  73. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +5 -2
  74. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.jsx +56 -0
  75. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.md +3 -0
  76. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.jsx +58 -0
  77. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.md +3 -0
  78. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.html.erb +20 -0
  79. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.md +1 -0
  80. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.html.erb +19 -0
  81. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.md +3 -0
  82. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.html.erb +20 -0
  83. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.jsx +57 -0
  84. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.md +1 -0
  85. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.html.erb +50 -0
  86. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.jsx +105 -0
  87. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.html.erb +22 -0
  88. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.jsx +67 -0
  89. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +28 -0
  90. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +17 -64
  91. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +58 -0
  92. data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_autocomplete_and_custom_display.jsx → _dropdown_with_autocomplete_with_subcomponents.jsx} +11 -25
  93. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md +1 -0
  94. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +11 -0
  95. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.md +1 -1
  96. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +33 -2
  97. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.md +3 -1
  98. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.md +1 -0
  99. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +61 -0
  100. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md +2 -0
  101. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +52 -0
  102. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.md +2 -0
  103. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +18 -5
  104. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +7 -2
  105. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +3 -3
  106. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +20 -2
  107. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +153 -3
  108. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +10 -0
  109. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +3 -0
  110. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +37 -6
  111. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +5 -1
  112. data/app/pb_kits/playbook/pb_dropdown/hooks/useHandleOnKeydown.tsx +0 -6
  113. data/app/pb_kits/playbook/pb_dropdown/index.js +380 -17
  114. data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +64 -11
  115. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +3 -4
  116. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +16 -12
  117. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +83 -17
  118. data/app/pb_kits/playbook/pb_dropdown/subcomponents/MultiSelectTriggerDisplay.tsx +58 -0
  119. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +8 -1
  120. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.html.erb +27 -0
  121. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.html.erb +7 -0
  122. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.html.erb +12 -0
  123. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.html.erb +23 -0
  124. data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +5 -1
  125. data/app/pb_kits/playbook/pb_empty_state/empty_state.html.erb +19 -0
  126. data/app/pb_kits/playbook/pb_empty_state/empty_state.rb +123 -0
  127. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +13 -0
  128. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +11 -1
  129. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.html.erb +1 -0
  130. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.jsx +41 -0
  131. data/app/pb_kits/playbook/pb_file_upload/docs/example.yml +2 -0
  132. data/app/pb_kits/playbook/pb_file_upload/docs/index.js +1 -0
  133. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -0
  134. data/app/pb_kits/playbook/pb_file_upload/file_upload.rb +7 -1
  135. data/app/pb_kits/playbook/pb_file_upload/fileupload.test.js +18 -0
  136. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  137. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -0
  138. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +2 -2
  139. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +19 -12
  140. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +13 -7
  141. data/app/pb_kits/playbook/pb_message/_message.tsx +3 -0
  142. data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.html.erb +9 -0
  143. data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.jsx +21 -0
  144. data/app/pb_kits/playbook/pb_message/docs/example.yml +2 -0
  145. data/app/pb_kits/playbook/pb_message/docs/index.js +1 -0
  146. data/app/pb_kits/playbook/pb_message/message.html.erb +2 -1
  147. data/app/pb_kits/playbook/pb_message/message.rb +1 -0
  148. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +2 -2
  149. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.html.erb +11 -11
  150. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.jsx +11 -11
  151. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb +11 -11
  152. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +11 -11
  153. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +11 -11
  154. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.jsx +11 -11
  155. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.html.erb +11 -11
  156. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.jsx +11 -11
  157. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.html.erb +11 -11
  158. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.jsx +11 -11
  159. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.html.erb +11 -11
  160. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.jsx +11 -11
  161. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.html.erb +11 -11
  162. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.jsx +11 -11
  163. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.html.erb +11 -11
  164. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.jsx +11 -11
  165. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +11 -11
  166. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +11 -11
  167. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_react_hook.jsx +11 -11
  168. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +11 -11
  169. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb +11 -11
  170. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx +11 -11
  171. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +11 -11
  172. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +2 -0
  173. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.jsx +11 -11
  174. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.md +3 -1
  175. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.html.erb +22 -22
  176. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.jsx +22 -22
  177. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb +22 -22
  178. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx +22 -22
  179. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +11 -11
  180. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +11 -11
  181. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_form.html.erb +11 -11
  182. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -1
  183. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +1 -1
  184. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +5 -4
  185. data/app/pb_kits/playbook/pb_person/_person.tsx +12 -2
  186. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +9 -9
  187. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +4 -0
  188. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_exclude_countries.html.erb +4 -0
  189. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_exclude_countries.jsx +15 -0
  190. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_exclude_countries.md +1 -0
  191. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.jsx +1 -1
  192. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +4 -3
  193. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  194. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  195. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +2 -2
  196. data/app/pb_kits/playbook/pb_select/_select.scss +10 -0
  197. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select_subheaders.html.erb +12 -0
  198. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select_subheaders.jsx +31 -0
  199. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select_subheaders.md +1 -0
  200. data/app/pb_kits/playbook/pb_select/docs/_select_error.html.erb +1 -1
  201. data/app/pb_kits/playbook/pb_select/docs/example.yml +2 -0
  202. data/app/pb_kits/playbook/pb_select/docs/index.js +1 -0
  203. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +7 -7
  204. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +5 -5
  205. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +4 -2
  206. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb +1 -1
  207. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.html.erb +5 -1
  208. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +73 -3
  209. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.html.erb +8 -1
  210. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.jsx +23 -0
  211. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.md +1 -0
  212. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  213. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -0
  214. data/app/pb_kits/playbook/pb_user/_user.tsx +3 -0
  215. data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.html.erb +6 -0
  216. data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.jsx +16 -0
  217. data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
  218. data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
  219. data/app/pb_kits/playbook/pb_user/user.html.erb +2 -1
  220. data/app/pb_kits/playbook/pb_user/user.rb +1 -0
  221. data/dist/chunks/_typeahead-CRW6dJbW.js +22 -0
  222. data/dist/chunks/_weekday_stacked-yWpUc_c0.js +45 -0
  223. data/dist/chunks/lib-D5R1BjUn.js +29 -0
  224. data/dist/chunks/{pb_form_validation-BWjy4bFn.js → pb_form_validation-BZ2AVAi_.js} +1 -1
  225. data/dist/chunks/vendor.js +1 -1
  226. data/dist/menu.yml +6 -14
  227. data/dist/playbook-doc.js +2 -2
  228. data/dist/playbook-rails-react-bindings.js +1 -1
  229. data/dist/playbook-rails.js +1 -1
  230. data/dist/playbook.css +1 -1
  231. data/lib/playbook/kit_base.rb +3 -3
  232. data/lib/playbook/version.rb +2 -2
  233. metadata +84 -22
  234. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.html.erb +0 -10
  235. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +0 -1
  236. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +0 -79
  237. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +0 -3
  238. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +0 -72
  239. data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +0 -53
  240. data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +0 -7
  241. data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +0 -1
  242. data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +0 -19
  243. data/dist/chunks/_typeahead-D8CsVBZO.js +0 -22
  244. data/dist/chunks/_weekday_stacked-D3oLTSkH.js +0 -45
  245. data/dist/chunks/lib-BmTAc7Nc.js +0 -29
  246. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_react.md → _advanced_table_selectable_rows.md} +0 -0
  247. /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
  248. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.html.erb → _advanced_table_selectable_rows_rails.html.erb} +0 -0
  249. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_line.md → _draggable_drop_zones_line_react.md} +0 -0
  250. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_event_listeners.md → _draggable_event_listeners_rails.md} +0 -0
@@ -1,7 +1,7 @@
1
1
  import React from "react"
2
- import { render, screen } from "../utilities/test-utils"
2
+ import { render, screen, fireEvent } from "../utilities/test-utils"
3
3
 
4
- import { Dropdown, Icon } from 'playbook-ui'
4
+ import { Dropdown, Icon, IconCircle } from 'playbook-ui'
5
5
 
6
6
 
7
7
  const testId = 'dropdown'
@@ -219,4 +219,154 @@ test('show error message', () => {
219
219
 
220
220
  const kit = screen.getByTestId(testId)
221
221
  expect(kit).toHaveTextContent(errorMessage)
222
- })
222
+ })
223
+
224
+ test("autocomplete prop to render input", () => {
225
+ render (
226
+ <Dropdown
227
+ autocomplete
228
+ data={{ testid: testId }}
229
+ options={options}
230
+ />
231
+ )
232
+
233
+ const kit = screen.getByTestId(testId)
234
+ const input = kit.querySelector('.dropdown_input')
235
+ expect(input).toBeInTheDocument()
236
+ })
237
+
238
+ test("searchbar prop to render TextInput in container", () => {
239
+ render (
240
+ <Dropdown
241
+ data={{ testid: testId }}
242
+ options={options}
243
+ >
244
+ <Dropdown.Trigger>
245
+ <IconCircle
246
+ cursor="pointer"
247
+ icon="flag"
248
+ variant="royal"
249
+ />
250
+ </Dropdown.Trigger>
251
+ <Dropdown.Container maxWidth="xs"
252
+ searchbar
253
+ >
254
+ {options.map((option) => (
255
+ <Dropdown.Option key={option.id}
256
+ option={option}
257
+ />
258
+ ))}
259
+ </Dropdown.Container>
260
+ </Dropdown>
261
+ )
262
+
263
+ const kit = screen.getByTestId(testId)
264
+ const searchbar = kit.querySelector('.pb_text_input_kit')
265
+ expect(searchbar).toBeInTheDocument()
266
+ })
267
+
268
+ test("MultiSelect prop to allow multiple selections + add correct Form Pills", () => {
269
+ render(
270
+ <Dropdown
271
+ data={{ testid: testId }}
272
+ multiSelect
273
+ options={options}
274
+ />
275
+ );
276
+
277
+ const kit = screen.getByTestId(testId);
278
+ const option = Array.from(kit.querySelectorAll(".pb_dropdown_option_list"));
279
+ fireEvent.click(option[0]); // Select first option
280
+ fireEvent.click(option[1]); // Select second option
281
+ const formPills = kit.querySelectorAll(".pb_form_pill_kit_primary");
282
+ expect(formPills.length).toBe(2);
283
+ expect(formPills[0]).toHaveTextContent("United States");
284
+ expect(formPills[1]).toHaveTextContent("Canada");
285
+ });
286
+
287
+ test("hides each selected option from the dropdown", () => {
288
+
289
+ render(
290
+ <Dropdown
291
+ data={{ testid: testId }}
292
+ multiSelect
293
+ options={options}
294
+ />
295
+ );
296
+
297
+ const kit = screen.getByTestId(testId);
298
+ const option = Array.from(kit.querySelectorAll(".pb_dropdown_option_list"));
299
+ const firstOpt = options[0].label
300
+ fireEvent.click(option[0]);
301
+ const option2 = Array.from(kit.querySelectorAll(".pb_dropdown_option_list"));
302
+ expect(option2[0]).not.toHaveTextContent(firstOpt)
303
+ })
304
+
305
+ test("renders form pills inside trigger", () => {
306
+ render(
307
+ <Dropdown
308
+ data={{ testid: testId }}
309
+ multiSelect
310
+ options={options}
311
+ />
312
+ );
313
+
314
+ const kit = screen.getByTestId(testId)
315
+ const option = kit.querySelector('.pb_dropdown_option_list')
316
+ fireEvent.click(option)
317
+ const formPill = kit.querySelector(".pb_form_pill_kit_primary")
318
+ expect(formPill).toBeInTheDocument()
319
+ })
320
+
321
+ test("multiSelect and autocomplete to work together", () => {
322
+ render (
323
+ <Dropdown
324
+ autocomplete
325
+ data={{ testid: testId }}
326
+ multiSelect
327
+ options={options}
328
+ />
329
+ )
330
+
331
+ const kit = screen.getByTestId(testId)
332
+ const input = kit.querySelector('.dropdown_input')
333
+ expect(input).toBeInTheDocument()
334
+ const option = kit.querySelector('.pb_dropdown_option_list')
335
+ fireEvent.click(option)
336
+ const formPill = kit.querySelector(".pb_form_pill_kit_primary")
337
+ expect(formPill).toBeInTheDocument()
338
+ })
339
+
340
+ test("renders form pills with size and color", () => {
341
+ render(
342
+ <Dropdown
343
+ data={{ testid: testId }}
344
+ formPillProps={{ size: "small", color: "neutral" }}
345
+ multiSelect
346
+ options={options}
347
+ />
348
+ );
349
+
350
+ const kit = screen.getByTestId(testId)
351
+ const option = kit.querySelector('.pb_dropdown_option_list')
352
+ fireEvent.click(option)
353
+ const formPill = kit.querySelector(".pb_form_pill_kit_neutral")
354
+ expect(formPill).toBeInTheDocument()
355
+ expect(formPill).toHaveClass("small")
356
+ })
357
+
358
+ test("defaultValue works with multiSelect", () => {
359
+ render(
360
+ <Dropdown
361
+ data={{ testid: testId }}
362
+ defaultValue={[options[0], options[2]]}
363
+ multiSelect
364
+ options={options}
365
+ />
366
+ )
367
+ const kit = screen.getByTestId(testId)
368
+ expect(kit.querySelectorAll(".pb_form_pill_kit_primary")).toHaveLength(2)
369
+ const option2 = Array.from(kit.querySelectorAll(".pb_dropdown_option_list"));
370
+ const firstOpt = options[0].label
371
+ expect(option2[0]).not.toHaveTextContent(firstOpt)
372
+ })
@@ -1,4 +1,14 @@
1
1
  <%= pb_content_tag do %>
2
+ <% if object.searchbar %>
3
+ <%= pb_rails("text_input", props: {padding_top:"xs", padding_x:"xs"}) do %>
4
+ <input
5
+ type="text"
6
+ placeholder="Search…"
7
+ data-dropdown-search
8
+ autocomplete="off"
9
+ />
10
+ <% end %>
11
+ <% end %>
2
12
  <%= pb_rails("list", props: {ordered: false, borderless: false}) do %>
3
13
  <% if content.present? %>
4
14
  <%= content.presence %>
@@ -3,6 +3,9 @@
3
3
  module Playbook
4
4
  module PbDropdown
5
5
  class DropdownContainer < Playbook::KitBase
6
+ prop :searchbar, type: Playbook::Props::Boolean,
7
+ default: false
8
+
6
9
  def classname
7
10
  generate_classname("pb_dropdown_container", "close", separator: " ")
8
11
  end
@@ -8,13 +8,13 @@
8
8
  align: "center",
9
9
  border_radius:"lg",
10
10
  classname: object.trigger_wrapper_classes,
11
- cursor: "pointer",
11
+ cursor: object.autocomplete ? "text" : "pointer",
12
12
  justify: "between",
13
13
  padding_x:"sm",
14
14
  padding_y:"xs",
15
15
  html_options: {tabindex:"0"}
16
16
  }) do %>
17
- <%= pb_rails("flex/flex_item") do %>
17
+ <%= pb_rails("flex/flex_item", props: { fixed_size: object.multi_select ? "85%" : "" }) do %>
18
18
  <%= pb_rails("flex", props: {align: "center"}) do %>
19
19
  <% if object.custom_display.present? %>
20
20
  <%= pb_rails("flex", props: {align: "center"}) do %>
@@ -24,13 +24,44 @@
24
24
  <%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display"}) %>
25
25
  <% end %>
26
26
  <% else %>
27
- <%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display"}) %>
27
+ <% if object.multi_select %>
28
+ <%= pb_rails("flex", props: { align: "center", wrap: true }) do %>
29
+ <%= pb_rails("flex", props: { id:"dropdown_pills_wrapper", wrap: true }) do %>
30
+ <% end %>
31
+ <% if object.autocomplete %>
32
+ <input
33
+ data-dropdown-autocomplete
34
+ class="dropdown_input"
35
+ type="text"
36
+ placeholder="<%= object.placeholder || 'Select…' %>"
37
+ autocomplete="off"
38
+ />
39
+ <% else %>
40
+ <%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display_multi_select"}) %>
41
+ <% end %>
42
+ <% end %>
43
+ <% else %>
44
+ <% if object.autocomplete %>
45
+ <input
46
+ data-dropdown-autocomplete
47
+ class="dropdown_input"
48
+ type="text"
49
+ placeholder="<%= object.placeholder || 'Select…' %>"
50
+ autocomplete="off"
51
+ />
52
+ <% else %>
53
+ <%= pb_rails("body", props: {text: object.default_display_placeholder, id: "dropdown_trigger_display"}) %>
54
+ <% end %>
55
+ <% end %>
28
56
  <% end %>
29
57
  <% end %>
30
58
  <% end %>
31
- <%= pb_rails("body", props: {display: "flex"}) do %>
32
- <%= pb_rails("icon", props: {icon: "chevron-down", cursor: "pointer", size:"sm", id: "dropdown_open_icon"}) %>
33
- <%= pb_rails("icon", props: {icon: "chevron-up", cursor: "pointer", size:"sm", id: "dropdown_close_icon"}) %>
59
+ <%= pb_rails("flex/flex_item") do %>
60
+ <%= pb_rails("body", props: {display: "flex", align_items:"center" }) do %>
61
+ <%= pb_rails("icon", props: {icon: "times", cursor: "pointer", size:"sm", id: "dropdown_clear_icon", padding_right:"xs" }) %>
62
+ <%= pb_rails("icon", props: {icon: "chevron-down", cursor: "pointer", size:"sm", id: "dropdown_open_icon"}) %>
63
+ <%= pb_rails("icon", props: {icon: "chevron-up", cursor: "pointer", size:"sm", id: "dropdown_close_icon"}) %>
64
+ <% end %>
34
65
  <% end %>
35
66
  <% end %>
36
67
  <% end %>
@@ -9,6 +9,10 @@ module Playbook
9
9
  default: ""
10
10
  prop :placeholder, type: Playbook::Props::String
11
11
  prop :custom_display
12
+ prop :autocomplete, type: Playbook::Props::Boolean,
13
+ default: false
14
+ prop :multi_select, type: Playbook::Props::Boolean,
15
+ default: false
12
16
 
13
17
  def data
14
18
  Hash(prop(:data)).merge(dropdown_trigger: true, dropdown_placeholder: default_display_placeholder)
@@ -23,7 +27,7 @@ module Playbook
23
27
  end
24
28
 
25
29
  def trigger_wrapper_classes
26
- generate_classname("dropdown_trigger_wrapper", "select_only")
30
+ generate_classname("dropdown_trigger_wrapper", ("select_only" unless autocomplete || multi_select))
27
31
  end
28
32
  end
29
33
  end
@@ -22,12 +22,6 @@ const {
22
22
  }
23
23
 
24
24
  switch (e.key) {
25
- case "Backspace":
26
- case "Delete":
27
- if (autocomplete) {
28
- handleBackspace();
29
- }
30
- break;
31
25
  case "ArrowDown": {
32
26
  e.preventDefault();
33
27
  setIsDropDownClosed(false);