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

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 (249) 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 +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/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 +6 -10
  9. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.tsx +7 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +16 -8
  11. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.rb +9 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta.md +5 -7
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.jsx +57 -0
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility.md +4 -0
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.jsx +62 -0
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_custom.md +1 -0
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.jsx +82 -0
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_multi.md +1 -0
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.jsx +66 -0
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_visibility_with_state.md +3 -0
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_default.md +1 -1
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.html.erb +137 -0
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions_rails.md +3 -0
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.html.erb +40 -0
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header_rails.md +1 -0
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +5 -1
  27. 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
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +3 -2
  29. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +9 -3
  30. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +6 -2
  31. data/app/pb_kits/playbook/pb_advanced_table/flat_advanced_table.js +106 -0
  32. data/app/pb_kits/playbook/pb_advanced_table/index.js +370 -10
  33. data/app/pb_kits/playbook/pb_advanced_table/scss_partials/advanced_table_sticky_mixin.scss +1 -0
  34. data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.html.erb +23 -0
  35. data/app/pb_kits/playbook/pb_advanced_table/table_action_bar.rb +19 -0
  36. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +9 -1
  37. data/app/pb_kits/playbook/pb_advanced_table/table_header.rb +4 -3
  38. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +1 -2
  39. data/app/pb_kits/playbook/pb_avatar/_avatar.scss +4 -0
  40. data/app/pb_kits/playbook/pb_avatar/_avatar.tsx +3 -0
  41. data/app/pb_kits/playbook/pb_avatar/avatar.html.erb +3 -3
  42. data/app/pb_kits/playbook/pb_avatar/avatar.rb +2 -0
  43. data/app/pb_kits/playbook/pb_avatar/avatar.test.js +18 -0
  44. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.html.erb +5 -0
  45. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_grayscale.jsx +16 -0
  46. data/app/pb_kits/playbook/pb_avatar/docs/example.yml +2 -0
  47. data/app/pb_kits/playbook/pb_avatar/docs/index.js +1 -0
  48. data/app/pb_kits/playbook/pb_card/card.html.erb +1 -1
  49. data/app/pb_kits/playbook/pb_card/card.rb +12 -0
  50. data/app/pb_kits/playbook/pb_checkbox/checkbox.html.erb +8 -12
  51. data/app/pb_kits/playbook/pb_checkbox/checkbox.rb +3 -6
  52. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.html.erb +2 -48
  53. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_rails.md +1 -0
  54. data/app/pb_kits/playbook/pb_checkbox/index.js +56 -0
  55. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +2 -2
  56. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.html.erb +22 -1
  57. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.html.erb +55 -0
  58. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line_rails.md +5 -0
  59. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_rails.md +5 -0
  60. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners.jsx +59 -0
  61. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_event_listeners_react.md +1 -0
  62. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +2 -0
  63. data/app/pb_kits/playbook/pb_draggable/docs/index.js +2 -1
  64. data/app/pb_kits/playbook/pb_draggable/draggable_container.rb +11 -1
  65. data/app/pb_kits/playbook/pb_draggable/draggable_item.rb +11 -1
  66. data/app/pb_kits/playbook/pb_draggable/index.js +4 -2
  67. data/app/pb_kits/playbook/pb_draggable/subcomponents/DraggableItem.tsx +33 -5
  68. data/app/pb_kits/playbook/pb_dropdown/_dropdown.scss +6 -1
  69. data/app/pb_kits/playbook/pb_dropdown/_dropdown.tsx +82 -35
  70. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.html.erb +31 -0
  71. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_rails.md +5 -0
  72. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.html.erb +5 -2
  73. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.jsx +56 -0
  74. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select.md +3 -0
  75. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.jsx +58 -0
  76. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display.md +3 -0
  77. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.html.erb +20 -0
  78. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_display_rails.md +1 -0
  79. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.html.erb +19 -0
  80. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_rails.md +3 -0
  81. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.html.erb +20 -0
  82. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.jsx +57 -0
  83. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_autocomplete.md +1 -0
  84. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.html.erb +50 -0
  85. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_custom_options.jsx +105 -0
  86. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.html.erb +22 -0
  87. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_multi_select_with_default.jsx +67 -0
  88. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.html.erb +28 -0
  89. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +17 -64
  90. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.html.erb +58 -0
  91. data/app/pb_kits/playbook/pb_dropdown/docs/{_dropdown_with_autocomplete_and_custom_display.jsx → _dropdown_with_autocomplete_with_subcomponents.jsx} +11 -25
  92. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_with_subcomponents.md +1 -0
  93. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +11 -0
  94. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.md +1 -1
  95. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +33 -2
  96. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.md +3 -1
  97. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.md +1 -0
  98. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.jsx +61 -0
  99. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search.md +2 -0
  100. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.html.erb +52 -0
  101. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_search_rails.md +2 -0
  102. data/app/pb_kits/playbook/pb_dropdown/docs/example.yml +18 -5
  103. data/app/pb_kits/playbook/pb_dropdown/docs/index.js +7 -2
  104. data/app/pb_kits/playbook/pb_dropdown/dropdown.html.erb +3 -3
  105. data/app/pb_kits/playbook/pb_dropdown/dropdown.rb +20 -2
  106. data/app/pb_kits/playbook/pb_dropdown/dropdown.test.jsx +153 -3
  107. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.html.erb +10 -0
  108. data/app/pb_kits/playbook/pb_dropdown/dropdown_container.rb +3 -0
  109. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.html.erb +37 -6
  110. data/app/pb_kits/playbook/pb_dropdown/dropdown_trigger.rb +5 -1
  111. data/app/pb_kits/playbook/pb_dropdown/hooks/useHandleOnKeydown.tsx +0 -6
  112. data/app/pb_kits/playbook/pb_dropdown/index.js +380 -17
  113. data/app/pb_kits/playbook/pb_dropdown/keyboard_accessibility.js +64 -11
  114. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownContainer.tsx +3 -4
  115. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownOption.tsx +16 -12
  116. data/app/pb_kits/playbook/pb_dropdown/subcomponents/DropdownTrigger.tsx +83 -17
  117. data/app/pb_kits/playbook/pb_dropdown/subcomponents/MultiSelectTriggerDisplay.tsx +58 -0
  118. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +8 -1
  119. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.html.erb +27 -0
  120. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.html.erb +7 -0
  121. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.html.erb +12 -0
  122. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.html.erb +23 -0
  123. data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +5 -1
  124. data/app/pb_kits/playbook/pb_empty_state/empty_state.html.erb +19 -0
  125. data/app/pb_kits/playbook/pb_empty_state/empty_state.rb +123 -0
  126. data/app/pb_kits/playbook/pb_file_upload/_file_upload.scss +13 -0
  127. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +11 -1
  128. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.html.erb +1 -0
  129. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_error.jsx +41 -0
  130. data/app/pb_kits/playbook/pb_file_upload/docs/example.yml +2 -0
  131. data/app/pb_kits/playbook/pb_file_upload/docs/index.js +1 -0
  132. data/app/pb_kits/playbook/pb_file_upload/file_upload.html.erb +1 -0
  133. data/app/pb_kits/playbook/pb_file_upload/file_upload.rb +7 -1
  134. data/app/pb_kits/playbook/pb_file_upload/fileupload.test.js +18 -0
  135. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  136. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -0
  137. data/app/pb_kits/playbook/pb_form_group/_error_state_mixin.scss +2 -2
  138. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +19 -12
  139. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.tsx +13 -7
  140. data/app/pb_kits/playbook/pb_message/_message.tsx +3 -0
  141. data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.html.erb +9 -0
  142. data/app/pb_kits/playbook/pb_message/docs/_message_grayscale.jsx +21 -0
  143. data/app/pb_kits/playbook/pb_message/docs/example.yml +2 -0
  144. data/app/pb_kits/playbook/pb_message/docs/index.js +1 -0
  145. data/app/pb_kits/playbook/pb_message/message.html.erb +2 -1
  146. data/app/pb_kits/playbook/pb_message/message.rb +1 -0
  147. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +2 -2
  148. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.html.erb +11 -11
  149. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_color.jsx +11 -11
  150. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.html.erb +11 -11
  151. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_default.jsx +11 -11
  152. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +11 -11
  153. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.jsx +11 -11
  154. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.html.erb +11 -11
  155. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.jsx +11 -11
  156. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.html.erb +11 -11
  157. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.jsx +11 -11
  158. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.html.erb +11 -11
  159. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.jsx +11 -11
  160. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.html.erb +11 -11
  161. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.jsx +11 -11
  162. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.html.erb +11 -11
  163. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.jsx +11 -11
  164. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +11 -11
  165. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +11 -11
  166. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_react_hook.jsx +11 -11
  167. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_reset.html.erb +11 -11
  168. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.html.erb +11 -11
  169. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_return_all_selected.jsx +11 -11
  170. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +11 -11
  171. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.md +2 -0
  172. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.jsx +11 -11
  173. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids_react.md +3 -1
  174. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.html.erb +22 -22
  175. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.jsx +22 -22
  176. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb +22 -22
  177. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx +22 -22
  178. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children.jsx +11 -11
  179. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_children_with_radios.jsx +11 -11
  180. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_with_form.html.erb +11 -11
  181. data/app/pb_kits/playbook/pb_overlay/_overlay.scss +2 -1
  182. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +1 -1
  183. data/app/pb_kits/playbook/pb_overlay/subcomponents/_overlay_token.tsx +5 -4
  184. data/app/pb_kits/playbook/pb_person/_person.tsx +12 -2
  185. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +9 -9
  186. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +4 -0
  187. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_exclude_countries.html.erb +4 -0
  188. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_exclude_countries.jsx +15 -0
  189. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_exclude_countries.md +1 -0
  190. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.jsx +1 -1
  191. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +4 -3
  192. data/app/pb_kits/playbook/pb_phone_number_input/docs/index.js +1 -0
  193. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  194. data/app/pb_kits/playbook/pb_section_separator/_section_separator.tsx +2 -2
  195. data/app/pb_kits/playbook/pb_select/_select.scss +10 -0
  196. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select_subheaders.html.erb +12 -0
  197. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select_subheaders.jsx +31 -0
  198. data/app/pb_kits/playbook/pb_select/docs/_select_custom_select_subheaders.md +1 -0
  199. data/app/pb_kits/playbook/pb_select/docs/_select_error.html.erb +1 -1
  200. data/app/pb_kits/playbook/pb_select/docs/example.yml +2 -0
  201. data/app/pb_kits/playbook/pb_select/docs/index.js +1 -0
  202. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +7 -7
  203. data/app/pb_kits/playbook/pb_table/subcomponents/_table_row.tsx +5 -5
  204. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +4 -2
  205. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb +1 -1
  206. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.html.erb +5 -1
  207. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +73 -3
  208. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_error_state.html.erb +8 -1
  209. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.jsx +23 -0
  210. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_preserve_input.md +1 -0
  211. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +1 -0
  212. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -0
  213. data/app/pb_kits/playbook/pb_user/_user.tsx +3 -0
  214. data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.html.erb +6 -0
  215. data/app/pb_kits/playbook/pb_user/docs/_user_grayscale.jsx +16 -0
  216. data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
  217. data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
  218. data/app/pb_kits/playbook/pb_user/user.html.erb +2 -1
  219. data/app/pb_kits/playbook/pb_user/user.rb +1 -0
  220. data/dist/chunks/_typeahead-CRW6dJbW.js +22 -0
  221. data/dist/chunks/_weekday_stacked-C4d17aYW.js +45 -0
  222. data/dist/chunks/lib-D5R1BjUn.js +29 -0
  223. data/dist/chunks/{pb_form_validation-BWjy4bFn.js → pb_form_validation-BZ2AVAi_.js} +1 -1
  224. data/dist/chunks/vendor.js +1 -1
  225. data/dist/menu.yml +7 -15
  226. data/dist/playbook-doc.js +2 -2
  227. data/dist/playbook-rails-react-bindings.js +1 -1
  228. data/dist/playbook-rails.js +1 -1
  229. data/dist/playbook.css +1 -1
  230. data/lib/playbook/kit_base.rb +3 -3
  231. data/lib/playbook/version.rb +2 -2
  232. metadata +84 -22
  233. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.html.erb +0 -10
  234. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.md +0 -1
  235. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +0 -79
  236. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +0 -3
  237. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +0 -72
  238. data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +0 -53
  239. data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +0 -7
  240. data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +0 -1
  241. data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +0 -19
  242. data/dist/chunks/_typeahead-D8CsVBZO.js +0 -22
  243. data/dist/chunks/_weekday_stacked-D3oLTSkH.js +0 -45
  244. data/dist/chunks/lib-BmTAc7Nc.js +0 -29
  245. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_react.md → _advanced_table_selectable_rows.md} +0 -0
  246. /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
  247. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.html.erb → _advanced_table_selectable_rows_rails.html.erb} +0 -0
  248. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_drop_zones_line.md → _draggable_drop_zones_line_react.md} +0 -0
  249. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_event_listeners.md → _draggable_event_listeners_rails.md} +0 -0
@@ -0,0 +1,52 @@
1
+ <%
2
+ options = [
3
+ {
4
+ label: "United States",
5
+ value: "United States",
6
+ areaCode: "+1",
7
+ icon: "🇺🇸",
8
+ id: "us"
9
+ },
10
+ {
11
+ label: "United Kingdom",
12
+ value: "United Kingdom",
13
+ areaCode: "+44",
14
+ icon: "🇬🇧",
15
+ id: "gb"
16
+ },
17
+ {
18
+ label: "Pakistan",
19
+ value: "Pakistan",
20
+ areaCode: "+92",
21
+ icon: "🇵🇰",
22
+ id: "pk"
23
+ }
24
+ ]
25
+
26
+ %>
27
+
28
+ <%= pb_rails("dropdown", props: {options: options}) do %>
29
+ <%= pb_rails("dropdown/dropdown_trigger") do %>
30
+ <%= pb_rails("icon_circle", props: {icon:"flag", cursor: "pointer", variant:"royal"}) %>
31
+ <% end %>
32
+ <%= pb_rails("dropdown/dropdown_container", props:{max_width:"xs", searchbar: true}) do %>
33
+ <% options.each do |option| %>
34
+ <%= pb_rails("dropdown/dropdown_option", props: {option: option}) do %>
35
+ <%= pb_rails("flex", props: {
36
+ align: "center",
37
+ justify: "between",
38
+ }) do %>
39
+ <%= pb_rails("flex/flex_item") do %>
40
+ <%= pb_rails("flex") do %>
41
+ <%= pb_rails("icon", props: {icon: option[:icon]}) %>
42
+ <%= pb_rails("body", props: {text: option[:label], padding_left:"xs"}) %>
43
+ <% end %>
44
+ <% end %>
45
+ <%= pb_rails("flex/flex_item") do %>
46
+ <%= pb_rails("body", props: {color:"light", text: option[:areaCode]}) %>
47
+ <% end %>
48
+ <% end %>
49
+ <% end %>
50
+ <% end %>
51
+ <% end %>
52
+ <% end %>
@@ -0,0 +1,2 @@
1
+ The optional `searchbar` boolean prop can also be used on the `dropdown/dropdown_container` to render a searchbar with typeahead functionality within the dropdown itself. This is especially useful when a custom trigger is being used.
2
+ `searchbar` is set to false by default.
@@ -1,34 +1,47 @@
1
1
  examples:
2
2
  rails:
3
- - dropdown_default: Default
3
+ - dropdown_default_rails: Default
4
+ - dropdown_with_autocomplete: Autocomplete
5
+ - dropdown_multi_select_rails: Multi Select
6
+ - dropdown_multi_select_with_autocomplete: Multi Select with Autocomplete
7
+ - dropdown_multi_select_display_rails: Multi Select with Form Pill Props
4
8
  - dropdown_subtle_variant: Subtle Variant
5
9
  - dropdown_subcomponent_structure_rails: Subcomponent Structure
10
+ - dropdown_with_autocomplete_with_subcomponents: Autocomplete with Subcomponent Structure
6
11
  - dropdown_with_label: With Label
7
12
  - dropdown_with_custom_options_rails: Custom Options
13
+ - dropdown_multi_select_with_custom_options: Multi Select with Custom Options
8
14
  - dropdown_with_custom_display_rails: Custom Display
9
15
  - dropdown_with_custom_trigger_rails: Custom Trigger
16
+ - dropdown_with_search_rails: Custom Trigger Dropdown with Search
10
17
  - dropdown_with_custom_padding: Custom Option Padding
11
18
  - dropdown_error: Dropdown with Error
12
19
  - dropdown_default_value: Default Value
20
+ - dropdown_multi_select_with_default: Multi Select Default Value
13
21
  - dropdown_blank_selection: Blank Selection
14
22
  - dropdown_separators_hidden: Separators Hidden
15
23
 
16
24
  react:
17
25
  - dropdown_default: Default
26
+ - dropdown_with_autocomplete: Autocomplete
27
+ - dropdown_multi_select: Multi Select
28
+ - dropdown_multi_select_with_autocomplete: Multi Select with Autocomplete
29
+ - dropdown_multi_select_display: Multi Select with Form Pill Props
18
30
  - dropdown_subtle_variant: Subtle Variant
19
31
  - dropdown_subcomponent_structure: Subcomponent Structure
32
+ - dropdown_with_autocomplete_with_subcomponents: Autocomplete with Subcomponent Structure
20
33
  - dropdown_with_label: With Label
21
34
  - dropdown_with_custom_options: Custom Options
35
+ - dropdown_multi_select_with_custom_options: Multi Select with Custom Options
22
36
  - dropdown_with_custom_display: Custom Display
23
37
  - dropdown_with_custom_trigger: Custom Trigger
38
+ - dropdown_with_search: Custom Trigger Dropdown with Search
24
39
  - dropdown_with_custom_padding: Custom Option Padding
25
40
  - dropdown_error: Dropdown with Error
26
41
  - dropdown_default_value: Default Value
42
+ - dropdown_multi_select_with_default: Multi Select Default Value
27
43
  - dropdown_blank_selection: Blank Selection
28
44
  - dropdown_clear_selection: Clear Selection
29
45
  - dropdown_separators_hidden: Separators Hidden
30
- # - dropdown_with_autocomplete: Autocomplete
31
- # - dropdown_with_autocomplete_and_custom_display: Autocomplete with Custom Display
32
- # - dropdown_with_external_control: useDropdown Hook
33
- # - dropdown_with_hook: useDropdown Hook with Any Trigger
46
+ - dropdown_with_external_control: useDropdown Hook
34
47
 
@@ -3,11 +3,10 @@ export { default as DropdownWithCustomDisplay } from './_dropdown_with_custom_di
3
3
  export { default as DropdownWithCustomOptions } from './_dropdown_with_custom_options.jsx'
4
4
  export { default as DropdownWithCustomTrigger } from './_dropdown_with_custom_trigger.jsx'
5
5
  export { default as DropdownWithAutocomplete } from './_dropdown_with_autocomplete.jsx'
6
- export { default as DropdownWithAutocompleteAndCustomDisplay } from './_dropdown_with_autocomplete_and_custom_display.jsx'
6
+ export { default as DropdownWithAutocompleteWithSubcomponents } from './_dropdown_with_autocomplete_with_subcomponents.jsx'
7
7
  export { default as DropdownWithCustomPadding } from './_dropdown_with_custom_padding.jsx'
8
8
  export { default as DropdownWithLabel } from './_dropdown_with_label.jsx'
9
9
  export { default as DropdownWithExternalControl } from './_dropdown_with_external_control.jsx'
10
- export { default as DropdownWithHook } from './_dropdown_with_hook.jsx'
11
10
  export { default as DropdownSubcomponentStructure } from './_dropdown_subcomponent_structure.jsx'
12
11
  export { default as DropdownError } from './_dropdown_error.jsx'
13
12
  export { default as DropdownDefaultValue } from './_dropdown_default_value.jsx'
@@ -15,3 +14,9 @@ export { default as DropdownBlankSelection } from './_dropdown_blank_selection.j
15
14
  export { default as DropdownClearSelection } from './_dropdown_clear_selection.jsx'
16
15
  export { default as DropdownSubtleVariant } from './_dropdown_subtle_variant.jsx'
17
16
  export { default as DropdownSeparatorsHidden } from './_dropdown_separators_hidden.jsx'
17
+ export {default as DropdownWithSearch} from './_dropdown_with_search.jsx'
18
+ export { default as DropdownMultiSelect } from './_dropdown_multi_select.jsx'
19
+ export { default as DropdownMultiSelectDisplay } from './_dropdown_multi_select_display.jsx'
20
+ export { default as DropdownMultiSelectWithAutocomplete } from './_dropdown_multi_select_with_autocomplete.jsx'
21
+ export { default as DropdownMultiSelectWithDefault } from './_dropdown_multi_select_with_default.jsx'
22
+ export { default as DropdownMultiSelectWithCustomOptions } from './_dropdown_multi_select_with_custom_options.jsx'
@@ -6,7 +6,7 @@
6
6
  <input
7
7
  data-default-value="<%= input_default_value %>"
8
8
  id="dropdown-selected-option"
9
- name="<%= object.name %>"
9
+ name="<%= object.name %><%= '[]' if object.multi_select %>"
10
10
  style="display: none"
11
11
  <%= object.required ? "required" : ""%>
12
12
  />
@@ -14,8 +14,8 @@
14
14
  <%= content.presence %>
15
15
  <%= pb_rails("body", props: { status: "negative", text: object.error }) %>
16
16
  <% else %>
17
- <%= pb_rails("dropdown/dropdown_trigger") %>
18
- <%= pb_rails("dropdown/dropdown_container") do %>
17
+ <%= pb_rails("dropdown/dropdown_trigger", props:{ autocomplete: object.autocomplete, multi_select:object.multi_select }) %>
18
+ <%= pb_rails("dropdown/dropdown_container", props: { searchbar: object.searchbar }) do %>
19
19
  <% if options_with_blank.present? %>
20
20
  <% options_with_blank.each do |option| %>
21
21
  <%= pb_rails("dropdown/dropdown_option", props: {option: option}) %>
@@ -18,9 +18,21 @@ module Playbook
18
18
  default: "default"
19
19
  prop :separators, type: Playbook::Props::Boolean,
20
20
  default: true
21
+ prop :autocomplete, type: Playbook::Props::Boolean,
22
+ default: false
23
+ prop :searchbar, type: Playbook::Props::Boolean,
24
+ default: false
25
+ prop :multi_select, type: Playbook::Props::Boolean,
26
+ default: false
27
+ prop :form_pill_props, type: Playbook::Props::HashProp,
28
+ default: {}
21
29
 
22
30
  def data
23
- Hash(prop(:data)).merge(pb_dropdown: true)
31
+ Hash(prop(:data)).merge(
32
+ pb_dropdown: true,
33
+ pb_dropdown_multi_select: multi_select,
34
+ form_pill_props: form_pill_props.to_json
35
+ )
24
36
  end
25
37
 
26
38
  def classname
@@ -34,7 +46,13 @@ module Playbook
34
46
  end
35
47
 
36
48
  def input_default_value
37
- default_value.present? ? default_value.transform_keys(&:to_s)["id"] : ""
49
+ return "" unless default_value.present?
50
+
51
+ if multi_select
52
+ default_value.map { |v| v.transform_keys(&:to_s)["id"] }.join(",")
53
+ else
54
+ default_value.transform_keys(&:to_s)["id"]
55
+ end
38
56
  end
39
57
 
40
58
  def separators_class
@@ -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);