playbook_ui 14.15.0.pre.alpha.play1917lodashremoval2of36613 → 14.15.0.pre.alpha.play1949lodashremoval3of36746

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 (413) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +4 -2
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +7 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_collapsible_trail.jsx +1 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers.jsx +1 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_custom_cell.jsx +3 -1
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_column_headers_multiple.jsx +1 -1
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_custom_cell.jsx +8 -1
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_default.jsx +1 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_expanded_control.jsx +1 -1
  11. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_editing.jsx +102 -0
  12. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_editing.md +4 -0
  13. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_inline_row_loading.jsx +1 -1
  14. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_loading.jsx +2 -2
  15. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_no_subrows.jsx +1 -1
  16. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.jsx +1 -1
  17. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination_with_props.jsx +1 -1
  18. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_responsive.jsx +1 -1
  19. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows.jsx +1 -1
  20. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_actions.jsx +3 -1
  21. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_header.jsx +1 -1
  22. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows.jsx +1 -1
  23. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort.jsx +1 -1
  24. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_sort_control.jsx +1 -1
  25. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_subrow_headers.jsx +1 -1
  26. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_options.jsx +1 -1
  27. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props.jsx +1 -1
  28. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_table_props_sticky_header.jsx +1 -1
  29. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +2 -1
  30. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  31. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_badge_component_overlay.jsx +1 -1
  32. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_circle_icon_component_overlay.jsx +1 -1
  33. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_default.jsx +1 -1
  34. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_monogram.jsx +1 -1
  35. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_no_image.jsx +1 -1
  36. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_status.jsx +1 -1
  37. data/app/pb_kits/playbook/pb_background/docs/_background_category.jsx +2 -2
  38. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +1 -1
  39. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +6 -2
  40. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +1 -1
  41. data/app/pb_kits/playbook/pb_background/docs/_background_size.jsx +1 -1
  42. data/app/pb_kits/playbook/pb_background/docs/_background_status.jsx +2 -2
  43. data/app/pb_kits/playbook/pb_background/docs/_background_status_subtle.jsx +2 -2
  44. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +1 -1
  45. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.tsx +1 -1
  46. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +1 -1
  47. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +1 -1
  48. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_position.jsx +3 -1
  49. data/app/pb_kits/playbook/pb_body/docs/_body_articles.jsx +1 -1
  50. data/app/pb_kits/playbook/pb_body/docs/_body_block.jsx +1 -1
  51. data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +1 -1
  52. data/app/pb_kits/playbook/pb_body/docs/_body_styled.jsx +1 -1
  53. data/app/pb_kits/playbook/pb_bread_crumbs/docs/_bread_crumbs_default.jsx +2 -1
  54. data/app/pb_kits/playbook/pb_button/docs/_button_accessibility.jsx +1 -1
  55. data/app/pb_kits/playbook/pb_button/docs/_button_block_content.jsx +2 -1
  56. data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +1 -1
  57. data/app/pb_kits/playbook/pb_button/docs/_button_form.jsx +1 -1
  58. data/app/pb_kits/playbook/pb_button/docs/_button_full_width.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_button/docs/_button_hover.jsx +1 -1
  60. data/app/pb_kits/playbook/pb_button/docs/_button_icon_options.jsx +1 -1
  61. data/app/pb_kits/playbook/pb_button/docs/_button_link.jsx +1 -1
  62. data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +1 -1
  63. data/app/pb_kits/playbook/pb_button/docs/_button_reaction.jsx +1 -1
  64. data/app/pb_kits/playbook/pb_button/docs/_button_size.jsx +1 -1
  65. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.jsx +3 -1
  66. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.jsx +2 -1
  67. data/app/pb_kits/playbook/pb_caption/docs/_caption_block.jsx +1 -1
  68. data/app/pb_kits/playbook/pb_caption/docs/_caption_colors.jsx +1 -1
  69. data/app/pb_kits/playbook/pb_caption/docs/_caption_light.jsx +1 -1
  70. data/app/pb_kits/playbook/pb_card/docs/_card_background.jsx +1 -1
  71. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_error.jsx +1 -1
  72. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate.jsx +2 -1
  73. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_react_hook.jsx +4 -1
  74. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +1 -1
  75. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_click.jsx +1 -1
  76. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_color.jsx +1 -1
  77. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_custom_main.jsx +7 -1
  78. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_custom_main_with_icon.jsx +7 -1
  79. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +1 -1
  80. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_icons.jsx +1 -1
  81. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_no_icon.jsx +1 -1
  82. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_size.jsx +1 -1
  83. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_state.jsx +4 -1
  84. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +1 -1
  85. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +1 -1
  86. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_default.jsx +3 -1
  87. data/app/pb_kits/playbook/pb_copy_button/docs/_copy_button_from.jsx +5 -1
  88. data/app/pb_kits/playbook/pb_currency/docs/_currency_null_display.jsx +1 -1
  89. data/app/pb_kits/playbook/pb_currency/docs/_currency_unstyled.jsx +3 -1
  90. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +2 -1
  91. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +4 -1
  92. data/app/pb_kits/playbook/pb_date/docs/_date_unstyled.jsx +4 -1
  93. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +2 -1
  94. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.md +3 -1
  95. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_change.html.erb +39 -0
  96. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_change.jsx +3 -1
  97. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_close.html.erb +39 -0
  98. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_on_close.jsx +3 -1
  99. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +2 -0
  100. data/app/pb_kits/playbook/pb_date_range_stacked/docs/_date_range_stacked_default.jsx +1 -1
  101. data/app/pb_kits/playbook/pb_date_year_stacked/docs/_date_year_stacked_default.jsx +1 -1
  102. data/app/pb_kits/playbook/pb_detail/docs/_detail_bold.jsx +1 -1
  103. data/app/pb_kits/playbook/pb_detail/docs/_detail_colors.jsx +1 -1
  104. data/app/pb_kits/playbook/pb_detail/docs/_detail_default.jsx +1 -1
  105. data/app/pb_kits/playbook/pb_detail/docs/_detail_styled.jsx +1 -1
  106. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_compound_components.jsx +7 -8
  107. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.jsx +3 -1
  108. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height.jsx +8 -9
  109. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_full_height_placement.jsx +8 -9
  110. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.jsx +2 -1
  111. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_scrollable.jsx +2 -1
  112. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_separators.jsx +3 -1
  113. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_should_close_on_overlay.jsx +2 -1
  114. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_sizes.jsx +3 -1
  115. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_stacked_alert.jsx +3 -1
  116. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_status.jsx +4 -1
  117. data/app/pb_kits/playbook/pb_docs/kit_example.rb +14 -0
  118. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default.jsx +5 -1
  119. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers.jsx +11 -12
  120. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.jsx +9 -10
  121. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list.jsx +4 -1
  122. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list.jsx +3 -1
  123. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx +6 -1
  124. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_behavior.jsx +4 -1
  125. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_borders.jsx +4 -1
  126. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.jsx +2 -1
  127. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_default.jsx +4 -1
  128. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_menu.jsx +6 -1
  129. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_overlay.jsx +4 -1
  130. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_sizes.jsx +4 -1
  131. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_blank_selection.jsx +1 -1
  132. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_clear_selection.jsx +3 -1
  133. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default.jsx +1 -1
  134. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_default_value.jsx +1 -1
  135. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_error.jsx +1 -1
  136. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_separators_hidden.jsx +1 -1
  137. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subcomponent_structure.jsx +1 -1
  138. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_subtle_variant.jsx +1 -1
  139. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +5 -1
  140. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.jsx +7 -1
  141. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +7 -1
  142. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_options.jsx +7 -1
  143. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_padding.jsx +1 -1
  144. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_trigger.jsx +7 -1
  145. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_external_control.jsx +5 -1
  146. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_hook.jsx +8 -1
  147. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_label.jsx +1 -1
  148. data/app/pb_kits/playbook/pb_empty_state/_empty_state.scss +38 -0
  149. data/app/pb_kits/playbook/pb_empty_state/_empty_state.tsx +213 -0
  150. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_alignment.jsx +38 -0
  151. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_default.jsx +17 -0
  152. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_orientation.jsx +21 -0
  153. data/app/pb_kits/playbook/pb_empty_state/docs/_empty_state_size.jsx +35 -0
  154. data/app/pb_kits/playbook/pb_empty_state/docs/default_image/computer_fly_no_branding.svg +21 -0
  155. data/app/pb_kits/playbook/pb_empty_state/docs/default_image/utils.tsx +118 -0
  156. data/app/pb_kits/playbook/pb_empty_state/docs/example.yml +8 -0
  157. data/app/pb_kits/playbook/pb_empty_state/docs/index.js +4 -0
  158. data/app/pb_kits/playbook/pb_empty_state/empty_state.test.jsx +17 -0
  159. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx +4 -5
  160. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_description.jsx +3 -1
  161. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_message.jsx +3 -5
  162. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_default.jsx +3 -5
  163. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_max_size.jsx +5 -6
  164. data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.tsx +3 -4
  165. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.tsx +2 -3
  166. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +6 -1
  167. data/app/pb_kits/playbook/pb_filter/docs/_filter_max_height.jsx +5 -1
  168. data/app/pb_kits/playbook/pb_filter/docs/_filter_max_width.jsx +5 -1
  169. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.jsx +6 -1
  170. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_sort.jsx +5 -1
  171. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.jsx +5 -1
  172. data/app/pb_kits/playbook/pb_filter/docs/_filter_placement.jsx +6 -1
  173. data/app/pb_kits/playbook/pb_filter/docs/_filter_popover_props.jsx +5 -1
  174. data/app/pb_kits/playbook/pb_flex/docs/_flex_align.jsx +3 -1
  175. data/app/pb_kits/playbook/pb_flex/docs/_flex_default.jsx +3 -1
  176. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +2 -1
  177. data/app/pb_kits/playbook/pb_flex/docs/_flex_inline.jsx +3 -1
  178. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_align_self.jsx +3 -1
  179. data/app/pb_kits/playbook/pb_flex/docs/_flex_item_example.jsx +3 -1
  180. data/app/pb_kits/playbook/pb_flex/docs/_flex_justify.jsx +3 -1
  181. data/app/pb_kits/playbook/pb_flex/docs/_flex_reverse.jsx +3 -1
  182. data/app/pb_kits/playbook/pb_flex/docs/_flex_spacing.jsx +3 -1
  183. data/app/pb_kits/playbook/pb_flex/docs/_flex_wrap.jsx +4 -1
  184. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -1
  185. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  186. data/app/pb_kits/playbook/pb_form/pb_form_validation.js +1 -1
  187. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_colors.jsx +3 -1
  188. data/app/pb_kits/playbook/pb_form_pill/docs/_form_pill_truncated_text.jsx +5 -1
  189. data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +1 -1
  190. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_colors.jsx +1 -1
  191. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_complex.jsx +9 -10
  192. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_default.jsx +1 -1
  193. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_disable_animation.jsx +1 -1
  194. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_full_circle.jsx +1 -1
  195. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_height.jsx +1 -1
  196. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_live_data.jsx +3 -1
  197. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_min_max.jsx +1 -1
  198. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_sizing.jsx +4 -1
  199. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_title.jsx +1 -1
  200. data/app/pb_kits/playbook/pb_gauge/docs/_gauge_units.jsx +1 -1
  201. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_default.jsx +1 -1
  202. data/app/pb_kits/playbook/pb_hashtag/docs/_hashtag_link.jsx +1 -1
  203. data/app/pb_kits/playbook/pb_icon/docs/_icon_custom.jsx +1 -1
  204. data/app/pb_kits/playbook/pb_icon_button/_icon_button.tsx +1 -1
  205. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_default.jsx +1 -1
  206. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_sizes.jsx +3 -1
  207. data/app/pb_kits/playbook/pb_icon_button/icon_button.html.erb +1 -1
  208. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_sizes.jsx +1 -1
  209. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_color.jsx +1 -1
  210. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_default.jsx +1 -1
  211. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_sizes.jsx +1 -1
  212. data/app/pb_kits/playbook/pb_icon_stat_value/docs/_icon_stat_value_vertical.jsx +1 -1
  213. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_default.jsx +1 -1
  214. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details.jsx +1 -1
  215. data/app/pb_kits/playbook/pb_label_value/docs/_label_value_details_examples.jsx +3 -1
  216. data/app/pb_kits/playbook/pb_legend/docs/_legend_colors.jsx +1 -1
  217. data/app/pb_kits/playbook/pb_legend/docs/_legend_custom_colors.jsx +1 -1
  218. data/app/pb_kits/playbook/pb_legend/docs/_legend_prefix.jsx +1 -1
  219. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_compound_component.jsx +2 -1
  220. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_current_photo.jsx +6 -1
  221. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_custom_header.jsx +4 -1
  222. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_default.jsx +2 -1
  223. data/app/pb_kits/playbook/pb_lightbox/docs/_lightbox_multiple.jsx +2 -1
  224. data/app/pb_kits/playbook/pb_lightbox/hooks/useVisibility.js +1 -1
  225. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +1 -1
  226. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +1 -1
  227. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_position.jsx +2 -1
  228. data/app/pb_kits/playbook/pb_link/docs/_link_color.jsx +1 -1
  229. data/app/pb_kits/playbook/pb_link/docs/_link_disabled.jsx +1 -1
  230. data/app/pb_kits/playbook/pb_link/docs/_link_icon.jsx +1 -1
  231. data/app/pb_kits/playbook/pb_link/docs/_link_tag.jsx +1 -1
  232. data/app/pb_kits/playbook/pb_link/docs/_link_target.jsx +1 -1
  233. data/app/pb_kits/playbook/pb_link/docs/_link_underline.jsx +1 -1
  234. data/app/pb_kits/playbook/pb_map/docs/_map_default.jsx +2 -1
  235. data/app/pb_kits/playbook/pb_map/docs/_map_with_custom_button.jsx +5 -1
  236. data/app/pb_kits/playbook/pb_map/docs/_map_with_plugin.jsx +2 -1
  237. data/app/pb_kits/playbook/pb_message/docs/_message_timestamp.jsx +1 -1
  238. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +33 -6
  239. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_react_hook.jsx +91 -0
  240. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_react_hook.md +1 -0
  241. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +1 -0
  242. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
  243. data/app/pb_kits/playbook/pb_multi_level_select/multi_level_select.rb +1 -1
  244. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_default.jsx +1 -1
  245. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_reverse.jsx +1 -1
  246. data/app/pb_kits/playbook/pb_multiple_users/docs/_multiple_users_size.jsx +2 -1
  247. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav.jsx +2 -1
  248. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_custom.jsx +4 -1
  249. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_item_spacing.jsx +2 -1
  250. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_no_icon.jsx +2 -1
  251. data/app/pb_kits/playbook/pb_nav/docs/_collapsible_nav_with_all_options.jsx +2 -1
  252. data/app/pb_kits/playbook/pb_nav/docs/_nav_with_font_control.jsx +2 -1
  253. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_default.jsx +4 -4
  254. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_hide_scroll_bar.jsx +5 -6
  255. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_multi_directional.jsx +4 -6
  256. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_toggle.jsx +4 -1
  257. data/app/pb_kits/playbook/pb_overlay/docs/_overlay_vertical_dynamic_multi_directional.jsx +4 -6
  258. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_page_change.jsx +2 -1
  259. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_breached.jsx +3 -1
  260. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_common.jsx +4 -1
  261. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_confirmation.jsx +2 -1
  262. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_meter_settings.jsx +6 -1
  263. data/app/pb_kits/playbook/pb_passphrase/docs/_passphrase_strength_change.jsx +5 -1
  264. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +6 -0
  265. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_access_input_element.jsx +3 -1
  266. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_clear_field.jsx +3 -1
  267. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.html.erb +1 -1
  268. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_default.jsx +1 -1
  269. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_format.jsx +3 -1
  270. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_hidden_inputs.html.erb +5 -0
  271. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_hidden_inputs.md +1 -0
  272. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_initial_country.jsx +1 -1
  273. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_only_countries.jsx +1 -1
  274. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_preferred_countries.jsx +1 -1
  275. data/app/pb_kits/playbook/pb_phone_number_input/docs/_phone_number_input_validation.jsx +4 -1
  276. data/app/pb_kits/playbook/pb_phone_number_input/docs/example.yml +3 -1
  277. data/app/pb_kits/playbook/pb_phone_number_input/phone_number_input.rb +3 -0
  278. data/app/pb_kits/playbook/pb_popover/docs/_popover_actionable_content.jsx +6 -7
  279. data/app/pb_kits/playbook/pb_popover/docs/_popover_close.jsx +4 -5
  280. data/app/pb_kits/playbook/pb_popover/docs/_popover_default.jsx +5 -6
  281. data/app/pb_kits/playbook/pb_popover/docs/_popover_list.jsx +7 -8
  282. data/app/pb_kits/playbook/pb_popover/docs/_popover_scroll_height.jsx +5 -6
  283. data/app/pb_kits/playbook/pb_popover/docs/_popover_z_index.jsx +4 -5
  284. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_align.jsx +1 -1
  285. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_default.jsx +1 -1
  286. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_flex.jsx +3 -1
  287. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_muted.jsx +1 -1
  288. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_value.jsx +1 -1
  289. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_variants.jsx +1 -1
  290. data/app/pb_kits/playbook/pb_progress_simple/docs/_progress_simple_width.jsx +1 -1
  291. data/app/pb_kits/playbook/pb_radio/docs/_radio_alignment.jsx +3 -1
  292. data/app/pb_kits/playbook/pb_radio/docs/_radio_error.jsx +1 -1
  293. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_default.jsx +1 -1
  294. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_preview.jsx +3 -1
  295. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_attributes.jsx +1 -1
  296. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.jsx +1 -1
  297. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_focus.jsx +1 -1
  298. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_inline.jsx +1 -1
  299. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_more_extensions.jsx +1 -1
  300. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_preview.jsx +3 -5
  301. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_simple.jsx +1 -1
  302. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_sticky.jsx +1 -1
  303. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_templates.jsx +2 -1
  304. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_bottom.jsx +1 -1
  305. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.jsx +1 -1
  306. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_children.jsx +3 -1
  307. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_color.jsx +4 -1
  308. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_dashed.jsx +1 -1
  309. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_line.jsx +1 -1
  310. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +1 -1
  311. data/app/pb_kits/playbook/pb_select/docs/_select_error.jsx +2 -1
  312. data/app/pb_kits/playbook/pb_select/docs/_select_inline.jsx +2 -1
  313. data/app/pb_kits/playbook/pb_select/docs/_select_inline_compact.jsx +2 -1
  314. data/app/pb_kits/playbook/pb_select/docs/_select_inline_show_arrow.jsx +2 -1
  315. data/app/pb_kits/playbook/pb_selectable_card/docs/_selectable_card_error.jsx +4 -1
  316. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_checkbox.jsx +1 -1
  317. data/app/pb_kits/playbook/pb_selectable_list/docs/_selectable_list_radio.jsx +1 -1
  318. data/app/pb_kits/playbook/pb_selectable_list/selectable_list.html.erb +1 -6
  319. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_border_radius.jsx +2 -1
  320. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_color.jsx +2 -1
  321. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_default.jsx +1 -2
  322. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_filter.jsx +8 -1
  323. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_height_width.jsx +2 -1
  324. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_layout.jsx +1 -2
  325. data/app/pb_kits/playbook/pb_skeleton_loading/docs/_skeleton_loading_user.jsx +5 -1
  326. data/app/pb_kits/playbook/pb_star_rating/star_rating.html.erb +1 -5
  327. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.jsx +1 -1
  328. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit.jsx +1 -1
  329. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_unit_two.jsx +1 -1
  330. data/app/pb_kits/playbook/pb_table/docs/_table_with_clickable_rows.jsx +2 -1
  331. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible.jsx +4 -1
  332. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_click.jsx +4 -1
  333. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_custom_content.jsx +7 -1
  334. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_rows.jsx +4 -1
  335. data/app/pb_kits/playbook/pb_table/docs/_table_with_collapsible_with_nested_table.jsx +5 -1
  336. data/app/pb_kits/playbook/pb_table/docs/_table_with_selectable_rows.jsx +5 -1
  337. data/app/pb_kits/playbook/pb_table/table.html.erb +2 -12
  338. data/app/pb_kits/playbook/pb_table/table_body.html.erb +2 -12
  339. data/app/pb_kits/playbook/pb_table/table_cell.html.erb +2 -12
  340. data/app/pb_kits/playbook/pb_table/table_head.html.erb +2 -12
  341. data/app/pb_kits/playbook/pb_table/table_header.html.erb +3 -12
  342. data/app/pb_kits/playbook/pb_table/table_row.html.erb +5 -18
  343. data/app/pb_kits/playbook/pb_text_input/text_input.html.erb +1 -5
  344. data/app/pb_kits/playbook/pb_textarea/docs/_textarea_error.jsx +1 -1
  345. data/app/pb_kits/playbook/pb_textarea/textarea.html.erb +1 -5
  346. data/app/pb_kits/playbook/pb_time/time.html.erb +1 -5
  347. data/app/pb_kits/playbook/pb_time_range_inline/docs/_time_range_inline_default.jsx +1 -1
  348. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_unstyled.jsx +3 -1
  349. data/app/pb_kits/playbook/pb_title/title.html.erb +1 -6
  350. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_custom.jsx +1 -1
  351. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_custom_radio.jsx +3 -1
  352. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_default.jsx +1 -1
  353. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_disabled.jsx +1 -1
  354. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_name.jsx +3 -1
  355. data/app/pb_kits/playbook/pb_toggle/toggle.html.erb +1 -6
  356. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +2 -2
  357. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default_react.jsx +3 -1
  358. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_delay.jsx +4 -1
  359. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_icon.jsx +3 -1
  360. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_interaction.jsx +4 -1
  361. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_margin.jsx +3 -1
  362. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_show_tooltip_react.jsx +5 -1
  363. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_sizing.html.erb +22 -0
  364. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +1 -0
  365. data/app/pb_kits/playbook/pb_tooltip/tooltip.html.erb +7 -6
  366. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +32 -7
  367. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_async_createable.jsx +1 -1
  368. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_createable.jsx +1 -1
  369. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_custom_menu_list.jsx +1 -3
  370. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_truncated_text.jsx +1 -1
  371. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +6 -8
  372. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +1 -1
  373. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.jsx +3 -5
  374. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_custom_options.jsx +3 -5
  375. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +3 -5
  376. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_color.jsx +1 -1
  377. data/app/pb_kits/playbook/pb_typeahead/index.ts +2 -2
  378. data/app/pb_kits/playbook/pb_user/docs/_user_block_content_subtitle_react.jsx +6 -1
  379. data/app/pb_kits/playbook/pb_user/docs/_user_default.jsx +1 -1
  380. data/app/pb_kits/playbook/pb_user/docs/_user_light_weight.jsx +1 -1
  381. data/app/pb_kits/playbook/pb_user/docs/_user_size.jsx +1 -1
  382. data/app/pb_kits/playbook/pb_user/docs/_user_subtitle.jsx +1 -1
  383. data/app/pb_kits/playbook/pb_user/docs/_user_text_only.jsx +1 -1
  384. data/app/pb_kits/playbook/pb_user/docs/_user_vertical_size.jsx +1 -1
  385. data/app/pb_kits/playbook/pb_user/docs/_user_with_territory.jsx +1 -1
  386. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_continuous.jsx +2 -1
  387. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_default.jsx +2 -1
  388. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_multi_beacon.jsx +2 -1
  389. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_beacon.jsx +2 -1
  390. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_no_overlay.jsx +2 -1
  391. data/app/pb_kits/playbook/pb_walkthrough/docs/_walkthrough_styled.jsx +2 -1
  392. data/app/pb_kits/playbook/tokens/_display.scss +3 -1
  393. data/app/pb_kits/playbook/utilities/_display.scss +6 -1
  394. data/app/pb_kits/playbook/utilities/globalProps.ts +1 -1
  395. data/app/pb_kits/playbook/utilities/object.test.js +139 -1
  396. data/app/pb_kits/playbook/utilities/object.ts +203 -49
  397. data/app/pb_kits/playbook/utilities/test/globalProps/display.test.js +1 -1
  398. data/dist/chunks/_typeahead-C_orSAyx.js +22 -0
  399. data/dist/chunks/_weekday_stacked-D7pAcXO0.js +45 -0
  400. data/dist/chunks/lib-ChtLutkU.js +29 -0
  401. data/dist/chunks/{pb_form_validation-CMXevI1t.js → pb_form_validation-CoiIaTHi.js} +1 -1
  402. data/dist/chunks/vendor.js +1 -1
  403. data/dist/menu.yml +9 -1
  404. data/dist/playbook-doc.js +1 -1
  405. data/dist/playbook-rails-react-bindings.js +1 -1
  406. data/dist/playbook-rails.js +1 -1
  407. data/dist/playbook.css +1 -1
  408. data/lib/playbook/display.rb +2 -2
  409. data/lib/playbook/version.rb +1 -1
  410. metadata +26 -6
  411. data/dist/chunks/_typeahead-CdVbIURO.js +0 -36
  412. data/dist/chunks/_weekday_stacked-BSTKfYPJ.js +0 -45
  413. data/dist/chunks/lib-e7oBFFDo.js +0 -29
@@ -1,5 +1,5 @@
1
1
  import PbEnhancedElement from '../pb_enhanced_element'
2
- import { debounce } from 'lodash'
2
+ import { debounce } from '../utilities/object'
3
3
 
4
4
  export default class PbTypeahead extends PbEnhancedElement {
5
5
  _searchInput: HTMLInputElement
@@ -284,4 +284,4 @@ export default class PbTypeahead extends PbEnhancedElement {
284
284
  if (visible) visibilityProperty = '1'
285
285
  this.resultsLoadingIndicator.style.opacity = visibilityProperty
286
286
  }
287
- }
287
+ }
@@ -1,5 +1,10 @@
1
1
  import React from "react"
2
- import { Caption, Contact, Flex, Icon, User } from "playbook-ui"
2
+
3
+ import Caption from '../../pb_caption/_caption'
4
+ import Contact from '../../pb_contact/_contact'
5
+ import Flex from '../../pb_flex/_flex'
6
+ import Icon from '../../pb_icon/_icon'
7
+ import User from '../../pb_user/_user'
3
8
 
4
9
  const MentorSubtitle = (
5
10
  <Flex>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { User } from 'playbook-ui'
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserDefault = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { User } from 'playbook-ui'
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserLightWeight = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { User } from 'playbook-ui'
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserDefault = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from "react"
2
- import { User } from "playbook-ui"
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserSubtitle = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { User } from 'playbook-ui'
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserTextOnly = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { User } from 'playbook-ui'
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserVerticalSize = (props) => {
5
5
  return (
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { User } from 'playbook-ui'
2
+ import User from '../../pb_user/_user'
3
3
 
4
4
  const UserWithTerritory = (props) => {
5
5
  return (
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
- import { Button, Walkthrough } from 'playbook-ui'
2
+ import Button from '../../pb_button/_button'
3
+ import Walkthrough from '../../pb_walkthrough/_walkthrough'
3
4
 
4
5
  const WalkthroughContinuous = (props) => {
5
6
  const [state, setState] = useState({
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
- import { Button, Walkthrough } from 'playbook-ui'
2
+ import Button from '../../pb_button/_button'
3
+ import Walkthrough from '../../pb_walkthrough/_walkthrough'
3
4
 
4
5
  const WalkthroughDefault = (props) => {
5
6
  const [state, setState] = useState({
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
- import { Button, Walkthrough } from 'playbook-ui'
2
+ import Button from '../../pb_button/_button'
3
+ import Walkthrough from '../../pb_walkthrough/_walkthrough'
3
4
 
4
5
  const WalkthroughMultiBeacon = (props) => {
5
6
  const [stateA, setStateA] = useState({
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
- import { Button, Walkthrough } from 'playbook-ui'
2
+ import Button from '../../pb_button/_button'
3
+ import Walkthrough from '../../pb_walkthrough/_walkthrough'
3
4
 
4
5
  const WalkthroughNoBeacon = (props) => {
5
6
  const [state, setState] = useState({
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
- import { Button, Walkthrough } from 'playbook-ui'
2
+ import Button from '../../pb_button/_button'
3
+ import Walkthrough from '../../pb_walkthrough/_walkthrough'
3
4
 
4
5
  const WalkthroughNoOverlay = (props) => {
5
6
  const [noOverlay, setNoOverlayState] = useState({
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
- import { Button, Walkthrough } from 'playbook-ui'
2
+ import Button from '../../pb_button/_button'
3
+ import Walkthrough from '../../pb_walkthrough/_walkthrough'
3
4
 
4
5
  const WalkthroughStyled = (props) => {
5
6
  const [state, setState] = useState({
@@ -4,10 +4,12 @@ $display_inline_block: inline-block !default;
4
4
  $display_flex: flex !default;
5
5
  $display_none: none !default;
6
6
  $display_inline_flex: inline-flex !default;
7
+ $display_grid: grid !default;
7
8
  $displays: (
8
9
  display_none: $display_none,
9
10
  display_flex: $display_flex,
10
11
  display_inline: $display_inline,
11
12
  display_inline_block: $display_inline_block,
12
- display_block: $display_block
13
+ display_block: $display_block,
14
+ display_grid: $display_grid
13
15
  );
@@ -24,13 +24,18 @@
24
24
  display: none;
25
25
  }
26
26
 
27
+ .display_grid {
28
+ display: grid;
29
+ }
30
+
27
31
  $display_values: (
28
32
  none: $display_none,
29
33
  flex: $display_flex,
30
34
  inline: $display_inline,
31
35
  inline_block: $display_inline_block,
32
36
  inline_flex: $display_inline_flex,
33
- block: $display_block
37
+ block: $display_block,
38
+ grid: $display_grid
34
39
  );
35
40
 
36
41
  // using a grid here
@@ -1,4 +1,4 @@
1
- import { omit } from 'lodash'
1
+ import { omit } from './object'
2
2
  import { camelToSnakeCase } from './text'
3
3
 
4
4
  import {
@@ -1,4 +1,4 @@
1
- import { isEmpty, get, isString, uniqueId, omitBy } from './object';
1
+ import { isEmpty, get, isString, uniqueId, omitBy, noop, merge, filter, find, partial } from './object';
2
2
 
3
3
  describe('Lodash functions', () => {
4
4
  describe('isEmpty', () => {
@@ -96,4 +96,142 @@ describe('Lodash functions', () => {
96
96
  expect(objWithSmallValues).toEqual(obj);
97
97
  });
98
98
  });
99
+
100
+ describe('noop', () => {
101
+ test('should do nothing and return undefined', () => {
102
+ expect(noop()).toBeUndefined();
103
+ });
104
+ });
105
+
106
+ describe('merge', () => {
107
+ test('merges two objects correctly', () => {
108
+ const obj1 = { a: 1, b: { x: 10 } };
109
+ const obj2 = { b: { y: 20 }, c: 3 };
110
+ expect(merge(obj1, obj2)).toEqual({ a: 1, b: { x: 10, y: 20 }, c: 3 });
111
+ });
112
+
113
+ test('when keys repeat use last occurrence value', () => {
114
+ const obj1 = { a: 1 };
115
+ const obj2 = { b: 2 };
116
+ const obj3 = { a: 3, c: 4 };
117
+ expect(merge(obj1, obj2, obj3)).toEqual({ a: 3, b: 2, c: 4 });
118
+ });
119
+
120
+ test('ignores non-object arguments', () => {
121
+ expect(merge(null, { a: 1 })).toEqual({ a: 1 });
122
+ expect(merge(undefined, { a: 1 })).toEqual({ a: 1 });
123
+ });
124
+ });
125
+
126
+ describe('filter', () => {
127
+ test('filters an array using a function predicate', () => {
128
+ const arr = [1, 2, 3, 4, 5];
129
+ const isEven = (n) => n % 2 === 0;
130
+ expect(filter(arr, isEven)).toEqual([2, 4]);
131
+ });
132
+
133
+ test('filters an array using a string predicate', () => {
134
+ const arr = [
135
+ { active: true, name: 'John' },
136
+ { active: false, name: 'Jane' },
137
+ { active: true, name: 'Doe' }
138
+ ];
139
+ expect(filter(arr, 'active')).toEqual([
140
+ { active: true, name: 'John' },
141
+ { active: true, name: 'Doe' }
142
+ ]);
143
+ });
144
+
145
+ test('filters an array using an array predicate', () => {
146
+ const arr = [
147
+ { type: 'fruit', name: 'apple' },
148
+ { type: 'vegetable', name: 'carrot' },
149
+ { type: 'fruit', name: 'banana' }
150
+ ];
151
+ expect(filter(arr, ['type', 'fruit'])).toEqual([
152
+ { type: 'fruit', name: 'apple' },
153
+ { type: 'fruit', name: 'banana' }
154
+ ]);
155
+ });
156
+
157
+ test('filters an array using an object predicate', () => {
158
+ const arr = [
159
+ { type: 'fruit', name: 'apple', color: 'red' },
160
+ { type: 'fruit', name: 'banana', color: 'yellow' },
161
+ { type: 'vegetable', name: 'carrot', color: 'orange' }
162
+ ];
163
+ expect(filter(arr, { type: 'fruit', color: 'red' })).toEqual([
164
+ { type: 'fruit', name: 'apple', color: 'red' }
165
+ ]);
166
+ });
167
+ });
168
+
169
+ describe('find', () => {
170
+ test('finds an element using a function predicate', () => {
171
+ const arr = [1, 2, 3, 4, 5];
172
+ const greaterThanThree = (n) => n > 3;
173
+ expect(find(arr, greaterThanThree)).toBe(4);
174
+ });
175
+
176
+ test('finds an element using a string predicate', () => {
177
+ const arr = [
178
+ { active: false, name: 'John' },
179
+ { active: true, name: 'Jane' },
180
+ { active: true, name: 'Doe' }
181
+ ];
182
+ expect(find(arr, 'active')).toEqual({ active: true, name: 'Jane' });
183
+ });
184
+
185
+ test('finds an element using an array predicate', () => {
186
+ const arr = [
187
+ { type: 'fruit', name: 'apple' },
188
+ { type: 'vegetable', name: 'carrot' },
189
+ { type: 'fruit', name: 'banana' }
190
+ ];
191
+ expect(find(arr, ['type', 'vegetable'])).toEqual({ type: 'vegetable', name: 'carrot' });
192
+ });
193
+
194
+ test('finds an element using an object predicate', () => {
195
+ const arr = [
196
+ { type: 'fruit', name: 'apple', color: 'red' },
197
+ { type: 'fruit', name: 'banana', color: 'yellow' },
198
+ { type: 'vegetable', name: 'carrot', color: 'orange' }
199
+ ];
200
+ expect(find(arr, { name: 'banana', color: 'yellow' })).toEqual({ type: 'fruit', name: 'banana', color: 'yellow' });
201
+ });
202
+
203
+ test('returns undefined if no element matches', () => {
204
+ const arr = [{ id: 1 }, { id: 2 }];
205
+ expect(find(arr, { id: 3 })).toBeUndefined();
206
+ });
207
+ });
208
+
209
+ describe('partial', () => {
210
+ function add(a, b, c) {
211
+ return a + b + c;
212
+ }
213
+
214
+ test('partials arguments without placeholders', () => {
215
+ const add5 = partial(add, 2, 3);
216
+ expect(add5(4)).toBe(9);
217
+ });
218
+
219
+ test('partials arguments with placeholders', () => {
220
+ const addWithPlaceholder = partial(add, partial.placeholder, 3, partial.placeholder);
221
+ expect(addWithPlaceholder(2, 4)).toBe(9);
222
+ });
223
+
224
+ test('returns correct result when all arguments are pre-filled', () => {
225
+ const addAll = partial(add, 1, 2, 3);
226
+ expect(addAll()).toBe(6);
227
+ });
228
+
229
+ test('appends extra arguments when provided', () => {
230
+ function join(...args) {
231
+ return args.join('_');
232
+ }
233
+ const joinPartial = partial(join, 'a');
234
+ expect(joinPartial('b', 'c')).toBe('a_b_c');
235
+ });
236
+ });
99
237
  });
@@ -1,6 +1,7 @@
1
1
  /* 🛠️ Any commonly used lodash functions can be added here. 🤙 */
2
2
 
3
- export const isEmpty = (obj: any) => [Object, Array].includes((obj || {}).constructor) && !Object.entries((obj || {})).length;
3
+ export const isEmpty = (obj: any) =>
4
+ [Object, Array].includes((obj || {}).constructor) && !Object.entries((obj || {})).length
4
5
 
5
6
  export const get = <T, R = any>(obj: T, path: string, defaultValue?: R): R | any => {
6
7
  const travel = (regexp: RegExp): any =>
@@ -24,82 +25,235 @@ export const omitBy = (obj: Record<string, any>, predicate: (value: any, key: st
24
25
  if (obj === null || typeof obj !== 'object') return {}
25
26
  return Object.keys(obj).reduce((result: Record<string, any>, key: string) => {
26
27
  if (!predicate(obj[key], key)) {
27
- result[key] = obj[key];
28
+ result[key] = obj[key]
28
29
  }
29
- return result;
30
+ return result
30
31
  }, {})
31
32
  }
32
33
 
34
+ export const omit = (
35
+ obj: Record<string, any>,
36
+ ...paths: (string | string[])[]
37
+ ): Record<string, any> => {
38
+ if (obj === null || typeof obj !== 'object') return {}
39
+ const keysToOmit = new Set<string>()
40
+ paths.forEach(p => {
41
+ if (Array.isArray(p)) {
42
+ p.forEach(key => keysToOmit.add(key))
43
+ } else {
44
+ keysToOmit.add(p)
45
+ }
46
+ })
47
+ const result: Record<string, any> = {}
48
+ for (const key in obj) {
49
+ if (!keysToOmit.has(key)) {
50
+ result[key] = obj[key]
51
+ }
52
+ }
53
+ return result
54
+ }
55
+
33
56
  export const noop = (): void => {
34
57
  // empty
35
- };
36
-
37
- export const merge = (...objects: any[]): any => {
38
- const isObject = (obj: any): boolean => obj && typeof obj === 'object';
39
- const result = {} as any;
40
- objects.forEach(obj => {
41
- if (isObject(obj)) {
42
- Object.keys(obj).forEach(key => {
43
- const existingVal = result[key];
44
- const newVal = obj[key];
45
- if (isObject(existingVal) && isObject(newVal)) {
46
- result[key] = merge(existingVal, newVal);
47
- } else {
48
- result[key] = newVal;
49
- }
50
- });
58
+ }
59
+
60
+ export const cloneDeep = (value: any): any => {
61
+ if (value === null || typeof value !== 'object') {
62
+ return value
63
+ }
64
+ if (Array.isArray(value)) {
65
+ return value.map(cloneDeep)
66
+ }
67
+ if (value instanceof Date) {
68
+ return new Date(value.getTime())
69
+ }
70
+ if (value instanceof RegExp) {
71
+ return new RegExp(value.source, value.flags)
72
+ }
73
+ const clonedObj: any = {}
74
+ for (const key in value) {
75
+ if (Object.prototype.hasOwnProperty.call(value, key)) {
76
+ clonedObj[key] = cloneDeep(value[key])
77
+ }
78
+ }
79
+ return clonedObj
80
+ }
81
+
82
+ export function merge(
83
+ ...objects: Array<Record<string, unknown> | null | undefined>
84
+ ): Record<string, unknown> {
85
+ const isPlainObject = (obj: unknown): obj is Record<string, unknown> =>
86
+ !!obj && typeof obj === 'object' && !Array.isArray(obj)
87
+
88
+ const result: Record<string, unknown> = {}
89
+
90
+ for (const obj of objects) {
91
+ if (!obj || typeof obj !== 'object') continue
92
+
93
+ for (const key of Object.keys(obj)) {
94
+ const oldVal = result[key]
95
+ const newVal = (obj as Record<string, unknown>)[key]
96
+
97
+ if (Array.isArray(oldVal) && Array.isArray(newVal)) {
98
+ result[key] = newVal
99
+ } else if (isPlainObject(oldVal) && isPlainObject(newVal)) {
100
+ result[key] = merge(oldVal, newVal)
101
+ } else if (Array.isArray(oldVal) && isPlainObject(newVal)) {
102
+ result[key] = oldVal
103
+ } else if (isPlainObject(oldVal) && Array.isArray(newVal)) {
104
+ result[key] = oldVal
105
+ } else {
106
+ result[key] = newVal
107
+ }
51
108
  }
52
- });
53
- return result;
54
- };
109
+ }
110
+ return result
111
+ }
55
112
 
56
113
  const createIteratee = (predicate: any) => {
57
114
  if (typeof predicate === 'function') {
58
- return predicate;
115
+ return predicate
59
116
  }
60
117
  if (typeof predicate === 'string') {
61
- return (obj: any) => obj[predicate];
118
+ return (obj: any) => obj[predicate]
62
119
  }
63
120
  if (Array.isArray(predicate)) {
64
- const [key, value] = predicate;
65
- return (obj: any) => obj[key] === value;
121
+ const [key, value] = predicate
122
+ return (obj: any) => obj[key] === value
66
123
  }
67
124
  if (typeof predicate === 'object' && predicate !== null) {
68
125
  return (obj: any) => {
69
126
  for (const key in predicate) {
70
127
  if (Object.prototype.hasOwnProperty.call(predicate, key)) {
71
- if (obj[key] !== predicate[key]) return false;
128
+ if (obj[key] !== predicate[key]) return false
72
129
  }
73
130
  }
74
- return true;
75
- };
131
+ return true
132
+ }
76
133
  }
77
- return () => false;
78
- };
134
+ return () => false
135
+ }
79
136
 
80
137
  export const filter = <T>(array: T[], predicate: any): T[] => {
81
- const iteratee = createIteratee(predicate);
82
- return array.filter(iteratee);
83
- };
138
+ const iteratee = createIteratee(predicate)
139
+ return array.filter(iteratee)
140
+ }
84
141
 
85
142
  export const find = <T>(array: T[], predicate: any): T | undefined => {
86
- const iteratee = createIteratee(predicate);
87
- return array.find(iteratee);
88
- };
143
+ const iteratee = createIteratee(predicate)
144
+ return array.find(iteratee)
145
+ }
89
146
 
90
- export const partial = <F extends (...args: unknown[]) => unknown>(
147
+ export const partial = <F extends (...args: any[]) => any>(
91
148
  fn: F,
92
- ...partials: unknown[]
93
- ): ((...args: unknown[]) => ReturnType<F>) => {
94
- const placeholder = partial.placeholder;
95
- return (...args: unknown[]): ReturnType<F> => {
96
- let argIndex = 0;
149
+ ...partials: any[]
150
+ ): ((...args: any[]) => ReturnType<F>) => {
151
+ const placeholder = partial.placeholder
152
+ return (...args: any[]): ReturnType<F> => {
153
+ let argIndex = 0
97
154
  const finalArgs = partials.map(arg =>
98
155
  arg === placeholder ? args[argIndex++] : arg
99
- );
100
- return fn(...(finalArgs.concat(args.slice(argIndex)) as Parameters<F>));
101
- };
102
- };
156
+ )
157
+ return fn(...(finalArgs.concat(args.slice(argIndex)) as Parameters<F>)) as ReturnType<F>
158
+ }
159
+ }
160
+
161
+ partial.placeholder = Symbol()
162
+ export const _ = partial.placeholder
163
+
164
+ export const map = <T, U>(
165
+ collection: T[] | Record<string, T>,
166
+ iteratee?: ((value: T, index: number | string, collection: T[] | Record<string, T>) => U) | string
167
+ ): U[] => {
168
+ const fn =
169
+ typeof iteratee === "function"
170
+ ? iteratee
171
+ : typeof iteratee === "string"
172
+ ? (item: T) => (item as any)[iteratee]
173
+ : (item: T) => item as unknown as U
174
+
175
+ if (Array.isArray(collection)) {
176
+ return collection.map((value, index) => fn(value, index, collection))
177
+ }
178
+ return Object.keys(collection).map(key => fn(collection[key], key, collection))
179
+ }
180
+
181
+ export const debounce = <F extends (...args: any[]) => any>(
182
+ func: F,
183
+ wait = 0,
184
+ options: { leading?: boolean; maxWait?: number; trailing?: boolean } = {}
185
+ ): F & { cancel: () => void; flush: () => any } => {
186
+ let timerId: ReturnType<typeof setTimeout> | null = null
187
+ let lastArgs: any
188
+ let lastThis: any
189
+ let lastCallTime = 0
190
+ let lastInvokeTime = 0
191
+ let result: any
192
+
193
+ const leading = !!options.leading
194
+ const trailing = options.trailing === undefined ? true : !!options.trailing
195
+ const maxWait = options.maxWait
196
+
197
+ const invoke = (time: number) => {
198
+ result = func.apply(lastThis, lastArgs)
199
+ lastInvokeTime = time
200
+ lastArgs = lastThis = null
201
+ return result
202
+ }
203
+
204
+ const startTimer = (pendingFunc: () => void, delay: number) => setTimeout(pendingFunc, delay)
205
+
206
+ const remainingWait = (time: number) => {
207
+ const timeSinceLastCall = time - lastCallTime
208
+ const timeSinceLastInvoke = time - lastInvokeTime
209
+ const timeWaiting = wait - timeSinceLastCall
210
+ return maxWait !== undefined ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting
211
+ }
103
212
 
104
- partial.placeholder = Symbol();
105
- export const _ = partial.placeholder;
213
+ const shouldInvoke = (time: number) => {
214
+ const timeSinceLastCall = time - lastCallTime
215
+ const timeSinceLastInvoke = time - lastInvokeTime
216
+ return lastCallTime === 0 ||
217
+ timeSinceLastCall >= wait ||
218
+ timeSinceLastCall < 0 ||
219
+ (maxWait !== undefined && timeSinceLastInvoke >= maxWait)
220
+ }
221
+
222
+ const debounced = (...args: any[]) => {
223
+ const time = Date.now()
224
+ lastArgs = args
225
+ // 'this' is not lexically captured in arrow functions, so if needed, bind explicitly
226
+ lastThis = this
227
+ lastCallTime = time
228
+
229
+ if (shouldInvoke(time)) {
230
+ if (timerId === null) {
231
+ timerId = startTimer(() => {
232
+ timerId = null
233
+ invoke(Date.now())
234
+ }, remainingWait(time))
235
+ }
236
+ }
237
+ return result
238
+ }
239
+
240
+ debounced.cancel = () => {
241
+ if (timerId !== null) {
242
+ clearTimeout(timerId)
243
+ }
244
+ timerId = null
245
+ lastArgs = lastThis = null
246
+ lastCallTime = 0
247
+ }
248
+
249
+ debounced.flush = () => {
250
+ if (timerId !== null) {
251
+ clearTimeout(timerId)
252
+ timerId = null
253
+ return invoke(Date.now())
254
+ }
255
+ return result
256
+ }
257
+
258
+ return debounced as F & { cancel: () => void; flush: () => any }
259
+ }
@@ -9,7 +9,7 @@ const testSubject = 'body'
9
9
 
10
10
  // %w[block inline_block inline flex inline_flex none]
11
11
  test('Global Props: returns proper class name', () => {
12
- const propValues = ["block", "inline", "inline_block", "flex", "inline_flex", "none"]
12
+ const propValues = ["block", "inline", "inline_block", "flex", "inline_flex", "none", "grid" ]
13
13
  for(let x = 0, y = propValues.length; x < y; ++x) {
14
14
  const testId = `${testSubject}-${propValues[x]}`
15
15
  render(