playbook_ui 4.15.1.alpha1 → 4.18.1.pre.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (406) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -1
  3. data/app/pb_kits/playbook/_playbook.scss +10 -1
  4. data/app/pb_kits/playbook/data/menu.yml +9 -0
  5. data/app/pb_kits/playbook/index.js +9 -1
  6. data/app/pb_kits/playbook/packs/examples.js +10 -0
  7. data/app/pb_kits/playbook/packs/samples.js +2 -0
  8. data/app/pb_kits/playbook/packs/site_styles/docs/_markdown.scss +1 -1
  9. data/app/pb_kits/playbook/pb_avatar/_avatar.jsx +24 -15
  10. data/app/pb_kits/playbook/pb_avatar/docs/_avatar_status.jsx +45 -0
  11. data/app/pb_kits/playbook/pb_avatar/docs/example.yml +6 -5
  12. data/app/pb_kits/playbook/pb_avatar/docs/index.js +1 -0
  13. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.html.erb +33 -0
  14. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.jsx +81 -0
  15. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +63 -0
  16. data/app/pb_kits/playbook/pb_avatar_action_button/avatar_action_button.rb +44 -0
  17. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.html.erb +15 -0
  18. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_actions.jsx +19 -0
  19. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.html.erb +8 -0
  20. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_default.jsx +13 -0
  21. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_on_click.jsx +15 -0
  22. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_onclick.html.erb +14 -0
  23. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.html.erb +27 -0
  24. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_placement.jsx +29 -0
  25. data/app/pb_kits/playbook/pb_avatar_action_button/docs/_avatar_action_button_tooltip.html.erb +11 -0
  26. data/app/pb_kits/playbook/pb_avatar_action_button/docs/example.yml +16 -0
  27. data/app/pb_kits/playbook/pb_avatar_action_button/docs/index.js +4 -0
  28. data/app/pb_kits/playbook/pb_badge/_badge.jsx +20 -14
  29. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.jsx +14 -2
  30. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +8 -1
  31. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_default.html.erb +2 -2
  32. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_default.jsx +2 -2
  33. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.html.erb +26 -0
  34. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_height.jsx +36 -0
  35. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.html.erb +14 -0
  36. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend.jsx +23 -0
  37. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.html.erb +15 -0
  38. data/app/pb_kits/playbook/pb_bar_graph/docs/_bar_graph_legend_non_clickable.jsx +24 -0
  39. data/app/pb_kits/playbook/pb_bar_graph/docs/_description.md +3 -1
  40. data/app/pb_kits/playbook/pb_bar_graph/docs/example.yml +10 -4
  41. data/app/pb_kits/playbook/pb_bar_graph/docs/index.js +3 -0
  42. data/app/pb_kits/playbook/pb_body/_body.jsx +2 -1
  43. data/app/pb_kits/playbook/pb_body/docs/_body_light.jsx +4 -0
  44. data/app/pb_kits/playbook/pb_button/_button.jsx +11 -2
  45. data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +6 -0
  46. data/app/pb_kits/playbook/pb_caption/_caption.jsx +19 -17
  47. data/app/pb_kits/playbook/pb_card/_card.html.erb +1 -1
  48. data/app/pb_kits/playbook/pb_card/_card.jsx +35 -38
  49. data/app/pb_kits/playbook/pb_card/_card.scss +0 -10
  50. data/app/pb_kits/playbook/pb_card/card.rb +9 -3
  51. data/app/pb_kits/playbook/pb_card/card_body.rb +1 -5
  52. data/app/pb_kits/playbook/pb_card/card_header.rb +0 -3
  53. data/app/pb_kits/playbook/pb_card/docs/_card_light.html.erb +2 -1
  54. data/app/pb_kits/playbook/pb_checkbox/_checkbox.jsx +17 -18
  55. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.html.erb +12 -0
  56. data/app/pb_kits/playbook/pb_circle_chart/_circle_chart.scss +6 -0
  57. data/app/pb_kits/playbook/pb_circle_chart/circle_chart.rb +81 -0
  58. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.html.erb +19 -0
  59. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.html.erb +136 -0
  60. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.html.erb +37 -0
  61. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.html.erb +22 -0
  62. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.html.erb +38 -0
  63. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +9 -0
  64. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.html.erb +1 -1
  65. data/app/pb_kits/playbook/pb_circle_icon_button/_circle_icon_button.jsx +10 -1
  66. data/app/pb_kits/playbook/pb_circle_icon_button/circle_icon_button.rb +3 -1
  67. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.html.erb +11 -0
  68. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.jsx +25 -0
  69. data/app/pb_kits/playbook/pb_circle_icon_button/docs/example.yml +3 -1
  70. data/app/pb_kits/playbook/pb_circle_icon_button/docs/index.js +1 -0
  71. data/app/pb_kits/playbook/pb_contact/_contact.html.erb +16 -3
  72. data/app/pb_kits/playbook/pb_contact/_contact.jsx +59 -34
  73. data/app/pb_kits/playbook/pb_contact/contact.rb +2 -0
  74. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.html.erb +6 -1
  75. data/app/pb_kits/playbook/pb_contact/docs/_contact_default.jsx +5 -0
  76. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.html.erb +6 -0
  77. data/app/pb_kits/playbook/pb_contact/docs/_contact_with_detail.jsx +5 -0
  78. data/app/pb_kits/playbook/pb_currency/_currency.html.erb +7 -9
  79. data/app/pb_kits/playbook/pb_currency/_currency.jsx +37 -21
  80. data/app/pb_kits/playbook/pb_currency/currency.rb +22 -29
  81. data/app/pb_kits/playbook/pb_currency/docs/_currency_dark.html.erb +3 -3
  82. data/app/pb_kits/playbook/pb_currency/docs/_currency_dark.jsx +2 -3
  83. data/app/pb_kits/playbook/pb_currency/docs/_currency_large.jsx +2 -3
  84. data/app/pb_kits/playbook/pb_currency/docs/_currency_medium.jsx +2 -2
  85. data/app/pb_kits/playbook/pb_currency/docs/_currency_small.html.erb +1 -1
  86. data/app/pb_kits/playbook/pb_currency/docs/_currency_small.jsx +5 -2
  87. data/app/pb_kits/playbook/pb_dashboard/pbChartsLightTheme.js +26 -1
  88. data/app/pb_kits/playbook/pb_dashboard_value/_dashboard_value.jsx +2 -2
  89. data/app/pb_kits/playbook/pb_date/_date.jsx +39 -15
  90. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +3 -1
  91. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +43 -37
  92. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +2 -2
  93. data/app/pb_kits/playbook/pb_date_range_stacked/_date_range_stacked.jsx +6 -16
  94. data/app/pb_kits/playbook/pb_date_stacked/_date_stacked.jsx +21 -18
  95. data/app/pb_kits/playbook/pb_date_time_stacked/_date_time_stacked.jsx +30 -33
  96. data/app/pb_kits/playbook/pb_date_year_stacked/_date_year_stacked.jsx +10 -15
  97. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.jsx +8 -8
  98. data/app/pb_kits/playbook/pb_file_upload/_file_upload.jsx +13 -23
  99. data/app/pb_kits/playbook/pb_filter/Filter/CurrentFilters.jsx +56 -0
  100. data/app/pb_kits/playbook/pb_filter/Filter/FilterBackground.jsx +28 -0
  101. data/app/pb_kits/playbook/pb_filter/Filter/FilterDouble.jsx +58 -0
  102. data/app/pb_kits/playbook/pb_filter/Filter/FilterSingle.jsx +46 -0
  103. data/app/pb_kits/playbook/pb_filter/Filter/FiltersPopover.jsx +37 -0
  104. data/app/pb_kits/playbook/pb_filter/Filter/ResultsCount.jsx +34 -0
  105. data/app/pb_kits/playbook/pb_filter/Filter/SortMenu.jsx +85 -0
  106. data/app/pb_kits/playbook/pb_filter/Filter/index.jsx +26 -0
  107. data/app/pb_kits/playbook/pb_filter/_filter.jsx +1 -222
  108. data/app/pb_kits/playbook/pb_filter/_filter.scss +16 -13
  109. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.html.erb +34 -41
  110. data/app/pb_kits/playbook/pb_filter/docs/_filter_default.jsx +13 -9
  111. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.html.erb +69 -74
  112. data/app/pb_kits/playbook/pb_filter/docs/_filter_no_background.jsx +12 -9
  113. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.html.erb +28 -35
  114. data/app/pb_kits/playbook/pb_filter/docs/_filter_only.jsx +5 -6
  115. data/app/pb_kits/playbook/pb_filter/docs/_filter_single.html.erb +35 -41
  116. data/app/pb_kits/playbook/pb_filter/docs/_filter_single.jsx +12 -10
  117. data/app/pb_kits/playbook/pb_filter/docs/_sort_only.html.erb +12 -18
  118. data/app/pb_kits/playbook/pb_filter/docs/_sort_only.jsx +14 -44
  119. data/app/pb_kits/playbook/pb_filter/templates/_default.html.erb +1 -1
  120. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +13 -12
  121. data/app/pb_kits/playbook/pb_flex/_flex.jsx +35 -20
  122. data/app/pb_kits/playbook/pb_flex/_flex_item.jsx +6 -9
  123. data/app/pb_kits/playbook/pb_form_pill/_form_pill.jsx +14 -19
  124. data/app/pb_kits/playbook/pb_hashtag/_hashtag.jsx +26 -22
  125. data/app/pb_kits/playbook/pb_highlight/_highlight.jsx +13 -12
  126. data/app/pb_kits/playbook/pb_home_address_street/_home_address_street.jsx +85 -80
  127. data/app/pb_kits/playbook/pb_icon/_icon.jsx +54 -33
  128. data/app/pb_kits/playbook/pb_icon_circle/_icon_circle.jsx +13 -9
  129. data/app/pb_kits/playbook/pb_icon_value/_icon_value.jsx +16 -20
  130. data/app/pb_kits/playbook/pb_image/_image.jsx +12 -10
  131. data/app/pb_kits/playbook/pb_label_pill/_label_pill.html.erb +1 -0
  132. data/app/pb_kits/playbook/pb_label_pill/_label_pill.jsx +49 -14
  133. data/app/pb_kits/playbook/pb_label_pill/docs/_label_pill_default.jsx +50 -0
  134. data/app/pb_kits/playbook/pb_label_pill/docs/example.yml +4 -3
  135. data/app/pb_kits/playbook/pb_label_pill/docs/index.js +1 -0
  136. data/app/pb_kits/playbook/pb_label_pill/label_pill.rb +1 -1
  137. data/app/pb_kits/playbook/pb_label_value/_label_value.html.erb +1 -0
  138. data/app/pb_kits/playbook/pb_label_value/_label_value.jsx +30 -18
  139. data/app/pb_kits/playbook/pb_layout/_layout.jsx +87 -29
  140. data/app/pb_kits/playbook/pb_layout/_layout.scss +76 -57
  141. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection.html.erb +54 -0
  142. data/app/pb_kits/playbook/pb_layout/docs/_layout_collection.jsx +27 -0
  143. data/app/pb_kits/playbook/pb_layout/docs/_layout_colors.jsx +63 -0
  144. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes.jsx +87 -0
  145. data/app/pb_kits/playbook/pb_layout/docs/_layout_sizes_dark.jsx +92 -0
  146. data/app/pb_kits/playbook/pb_layout/docs/_layout_transparent.jsx +24 -0
  147. data/app/pb_kits/playbook/pb_layout/docs/example.yml +6 -1
  148. data/app/pb_kits/playbook/pb_layout/docs/index.js +5 -1
  149. data/app/pb_kits/playbook/pb_layout/layout.rb +10 -2
  150. data/app/pb_kits/playbook/pb_legend/_legend.jsx +17 -15
  151. data/app/pb_kits/playbook/pb_line_graph/_line_graph.jsx +14 -2
  152. data/app/pb_kits/playbook/pb_line_graph/docs/_description.md +3 -1
  153. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.html.erb +8 -8
  154. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_default.jsx +1 -1
  155. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.html.erb +26 -0
  156. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_height.jsx +35 -0
  157. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.html.erb +15 -0
  158. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend.jsx +23 -0
  159. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.html.erb +16 -0
  160. data/app/pb_kits/playbook/pb_line_graph/docs/_line_graph_legend_nonclickable.jsx +23 -0
  161. data/app/pb_kits/playbook/pb_line_graph/docs/example.yml +10 -4
  162. data/app/pb_kits/playbook/pb_line_graph/docs/index.js +3 -0
  163. data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +9 -0
  164. data/app/pb_kits/playbook/pb_list/_list.jsx +24 -21
  165. data/app/pb_kits/playbook/pb_list/docs/_description.md +7 -1
  166. data/app/pb_kits/playbook/pb_list/docs/_list_layout_left.html.erb +8 -0
  167. data/app/pb_kits/playbook/pb_list/docs/_list_layout_right.html.erb +8 -0
  168. data/app/pb_kits/playbook/pb_list/docs/example.yml +2 -0
  169. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.jsx +21 -19
  170. data/app/pb_kits/playbook/pb_logistic/_logistic.html.erb +1 -0
  171. data/app/pb_kits/playbook/pb_logistic/_logistic.jsx +26 -11
  172. data/app/pb_kits/playbook/pb_message/_message.html.erb +1 -0
  173. data/app/pb_kits/playbook/pb_message/_message.jsx +33 -11
  174. data/app/pb_kits/playbook/pb_message/docs/_message_default.jsx +1 -2
  175. data/app/pb_kits/playbook/pb_message/message.rb +1 -1
  176. data/app/pb_kits/playbook/pb_multiple_users/_multiple_users.jsx +10 -10
  177. data/app/pb_kits/playbook/pb_multiple_users_stacked/_multiple_users_stacked.jsx +7 -19
  178. data/app/pb_kits/playbook/pb_nav/_nav.jsx +17 -14
  179. data/app/pb_kits/playbook/pb_online_status/_online_status.jsx +23 -14
  180. data/app/pb_kits/playbook/pb_online_status/docs/_online_status_default.jsx +19 -0
  181. data/app/pb_kits/playbook/pb_online_status/docs/example.yml +3 -3
  182. data/app/pb_kits/playbook/pb_online_status/docs/index.js +1 -0
  183. data/app/pb_kits/playbook/pb_person/_person.html.erb +9 -2
  184. data/app/pb_kits/playbook/pb_person/_person.jsx +36 -18
  185. data/app/pb_kits/playbook/pb_person/docs/_person_default.html.erb +5 -1
  186. data/app/pb_kits/playbook/pb_person_contact/_person_contact.html.erb +1 -0
  187. data/app/pb_kits/playbook/pb_person_contact/_person_contact.jsx +73 -21
  188. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_with_wrong_numbers.jsx +32 -0
  189. data/app/pb_kits/playbook/pb_person_contact/docs/example.yml +2 -0
  190. data/app/pb_kits/playbook/pb_person_contact/docs/index.js +1 -0
  191. data/app/pb_kits/playbook/pb_pill/_pill.jsx +5 -10
  192. data/app/pb_kits/playbook/pb_popover/_popover.jsx +73 -55
  193. data/app/pb_kits/playbook/pb_popover/docs/example.yml +0 -3
  194. data/app/pb_kits/playbook/pb_popover/docs/index.js +0 -2
  195. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.html.erb +1 -0
  196. data/app/pb_kits/playbook/pb_progress_pills/_progress_pills.jsx +41 -13
  197. data/app/pb_kits/playbook/pb_progress_simple/_progress_simple.jsx +15 -12
  198. data/app/pb_kits/playbook/pb_progress_step/_progress_step.html.erb +6 -0
  199. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +42 -0
  200. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +388 -0
  201. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +23 -0
  202. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +44 -0
  203. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -0
  204. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_dark.html.erb +8 -0
  205. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_dark.jsx +18 -0
  206. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +33 -0
  207. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +39 -0
  208. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.html.erb +33 -0
  209. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.jsx +40 -0
  210. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +12 -0
  211. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +3 -0
  212. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +33 -0
  213. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +19 -0
  214. data/app/pb_kits/playbook/pb_radio/_radio.jsx +3 -1
  215. data/app/pb_kits/playbook/pb_section_separator/_section_separator.html.erb +1 -0
  216. data/app/pb_kits/playbook/pb_section_separator/_section_separator.jsx +30 -15
  217. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_text.jsx +3 -1
  218. data/app/pb_kits/playbook/pb_select/_select.jsx +4 -2
  219. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.jsx +12 -7
  220. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.html.erb +30 -0
  221. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.jsx +97 -0
  222. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.scss +74 -0
  223. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_checkmark.html.erb +29 -0
  224. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_checkmark.jsx +41 -0
  225. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_dark.html.erb +30 -0
  226. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_dark.jsx +40 -0
  227. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_default.html.erb +26 -0
  228. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_default.jsx +37 -0
  229. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_single_select.html.erb +27 -0
  230. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/_selectable_card_icon_single_select.jsx +40 -0
  231. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/example.yml +16 -0
  232. data/app/pb_kits/playbook/pb_selectable_card_icon/docs/index.js +4 -0
  233. data/app/pb_kits/playbook/pb_selectable_card_icon/selectable_card_icon.rb +50 -0
  234. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.html.erb +24 -0
  235. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.jsx +107 -0
  236. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +85 -0
  237. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_dark.html.erb +26 -0
  238. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_dark.jsx +43 -0
  239. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_default.html.erb +23 -0
  240. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_default.jsx +40 -0
  241. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_single_select.html.erb +27 -0
  242. data/app/pb_kits/playbook/pb_selectable_icon/docs/_selectable_icon_single_select.jsx +46 -0
  243. data/app/pb_kits/playbook/pb_selectable_icon/docs/example.yml +12 -0
  244. data/app/pb_kits/playbook/pb_selectable_icon/docs/index.js +3 -0
  245. data/app/pb_kits/playbook/pb_selectable_icon/selectable_icon.rb +55 -0
  246. data/app/pb_kits/playbook/pb_source/_source.jsx +113 -13
  247. data/app/pb_kits/playbook/pb_source/docs/_source_default.html.erb +3 -1
  248. data/app/pb_kits/playbook/pb_source/docs/_source_default.jsx +37 -0
  249. data/app/pb_kits/playbook/pb_source/docs/_source_noicon.jsx +40 -0
  250. data/app/pb_kits/playbook/pb_source/docs/_source_types.jsx +85 -0
  251. data/app/pb_kits/playbook/pb_source/docs/example.yml +3 -0
  252. data/app/pb_kits/playbook/pb_source/docs/index.js +5 -0
  253. data/app/pb_kits/playbook/pb_star_rating/_star_rating.html.erb +6 -2
  254. data/app/pb_kits/playbook/pb_star_rating/_star_rating.jsx +98 -13
  255. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_default.jsx +28 -0
  256. data/app/pb_kits/playbook/pb_star_rating/docs/_star_rating_hide.jsx +13 -0
  257. data/app/pb_kits/playbook/pb_star_rating/docs/example.yml +2 -1
  258. data/app/pb_kits/playbook/pb_star_rating/docs/index.js +3 -0
  259. data/app/pb_kits/playbook/pb_star_rating/star_rating.rb +2 -1
  260. data/app/pb_kits/playbook/pb_stat_change/_stat_change.jsx +14 -13
  261. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.html.erb +1 -1
  262. data/app/pb_kits/playbook/pb_stat_change/docs/_stat_change_default.jsx +1 -1
  263. data/app/pb_kits/playbook/pb_stat_change/stat_change.rb +1 -1
  264. data/app/pb_kits/playbook/pb_stat_value/_stat_value.jsx +2 -1
  265. data/app/pb_kits/playbook/pb_table/_table.jsx +29 -28
  266. data/app/pb_kits/playbook/pb_table/_table.scss +1 -1
  267. data/app/pb_kits/playbook/pb_table/_table_row.jsx +6 -7
  268. data/app/pb_kits/playbook/pb_table/docs/_table_side_highlight.html.erb +52 -8
  269. data/app/pb_kits/playbook/pb_table/docs/_table_side_highlight.jsx +52 -8
  270. data/app/pb_kits/playbook/pb_table/docs/_table_side_highlight.md +3 -1
  271. data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +5 -3
  272. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +21 -5
  273. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.html.erb +31 -5
  274. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_default.jsx +3 -0
  275. data/app/pb_kits/playbook/pb_text_input/text_input.rb +1 -1
  276. data/app/pb_kits/playbook/pb_textarea/_textarea.jsx +2 -1
  277. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.jsx +38 -18
  278. data/app/pb_kits/playbook/pb_time_stacked/_time_stacked.jsx +12 -11
  279. data/app/pb_kits/playbook/pb_timeline/_item.html.erb +28 -0
  280. data/app/pb_kits/playbook/pb_timeline/_item.jsx +54 -0
  281. data/app/pb_kits/playbook/pb_timeline/_timeline.html.erb +6 -0
  282. data/app/pb_kits/playbook/pb_timeline/_timeline.jsx +43 -0
  283. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +271 -0
  284. data/app/pb_kits/playbook/pb_timeline/docs/_description.md +3 -0
  285. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_default.html.erb +43 -0
  286. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_default.jsx +73 -0
  287. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_vertical.html.erb +43 -0
  288. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_vertical.jsx +73 -0
  289. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.html.erb +44 -0
  290. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_date.jsx +85 -0
  291. data/app/pb_kits/playbook/pb_timeline/docs/example.yml +13 -0
  292. data/app/pb_kits/playbook/pb_timeline/docs/index.js +3 -0
  293. data/app/pb_kits/playbook/pb_timeline/item.rb +25 -0
  294. data/app/pb_kits/playbook/pb_timeline/timeline.rb +27 -0
  295. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +32 -14
  296. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +8 -0
  297. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +3 -3
  298. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +1 -0
  299. data/app/pb_kits/playbook/pb_title/_title.jsx +12 -13
  300. data/app/pb_kits/playbook/pb_title/docs/_title_light.html.erb +1 -1
  301. data/app/pb_kits/playbook/pb_title_count/_title_count.jsx +49 -28
  302. data/app/pb_kits/playbook/pb_title_count/docs/_title_count_align.jsx +31 -0
  303. data/app/pb_kits/playbook/pb_title_count/docs/_title_count_default.jsx +13 -2
  304. data/app/pb_kits/playbook/pb_title_count/docs/example.yml +4 -5
  305. data/app/pb_kits/playbook/pb_title_count/docs/index.js +1 -0
  306. data/app/pb_kits/playbook/pb_title_detail/_title_detail.jsx +36 -14
  307. data/app/pb_kits/playbook/pb_title_detail/docs/_title_detail_default.jsx +26 -0
  308. data/app/pb_kits/playbook/pb_title_detail/docs/example.yml +3 -3
  309. data/app/pb_kits/playbook/pb_title_detail/docs/index.js +1 -0
  310. data/app/pb_kits/playbook/pb_toggle/_toggle.jsx +9 -11
  311. data/app/pb_kits/playbook/pb_tooltip/_tooltip.html.erb +10 -0
  312. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +105 -0
  313. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +10 -0
  314. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +9 -0
  315. data/app/pb_kits/playbook/pb_tooltip/docs/example.yml +5 -0
  316. data/app/pb_kits/playbook/pb_tooltip/index.js +80 -0
  317. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +34 -0
  318. data/app/pb_kits/playbook/pb_user/_user.jsx +37 -37
  319. data/app/pb_kits/playbook/pb_user_badge/_user_badge.jsx +7 -7
  320. data/app/pb_kits/playbook/pb_weekday_stacked/_weekday_stacked.jsx +32 -30
  321. data/app/pb_kits/playbook/plugins/pb_chart.js +61 -3
  322. data/app/pb_kits/playbook/props.rb +48 -0
  323. data/app/pb_kits/playbook/tokens/_colors.scss +7 -3
  324. data/app/pb_kits/playbook/tokens/_spacing.scss +1 -0
  325. data/app/pb_kits/playbook/utilities/_spacing.scss +42 -0
  326. data/app/pb_kits/playbook/utilities/spacing.js +33 -0
  327. data/app/pb_kits/playbook/vendor.js +3 -0
  328. data/app/views/layouts/playbook/application.html.slim +2 -3
  329. data/app/views/layouts/playbook/fullscreen.html.slim +2 -2
  330. data/app/views/layouts/playbook/grid.html.slim +2 -2
  331. data/app/views/layouts/playbook/samples.html.erb +2 -4
  332. data/app/views/playbook/samples/dashboards/index.html.erb +3 -1
  333. data/app/views/playbook/samples/registration/index.html.erb +316 -0
  334. data/app/views/playbook/samples/registration/index.jsx +476 -0
  335. data/lib/playbook/version.rb +1 -1
  336. metadata +139 -74
  337. data/app/pb_kits/playbook/packs/kits/pb_avatar.js +0 -1
  338. data/app/pb_kits/playbook/packs/kits/pb_badge.js +0 -1
  339. data/app/pb_kits/playbook/packs/kits/pb_bar_graph.js +0 -1
  340. data/app/pb_kits/playbook/packs/kits/pb_body.js +0 -1
  341. data/app/pb_kits/playbook/packs/kits/pb_button.js +0 -1
  342. data/app/pb_kits/playbook/packs/kits/pb_caption.js +0 -1
  343. data/app/pb_kits/playbook/packs/kits/pb_card.js +0 -1
  344. data/app/pb_kits/playbook/packs/kits/pb_checkbox.js +0 -1
  345. data/app/pb_kits/playbook/packs/kits/pb_circle_icon_button.js +0 -1
  346. data/app/pb_kits/playbook/packs/kits/pb_contact.js +0 -1
  347. data/app/pb_kits/playbook/packs/kits/pb_currency.js +0 -1
  348. data/app/pb_kits/playbook/packs/kits/pb_dashboard_value.js +0 -1
  349. data/app/pb_kits/playbook/packs/kits/pb_date.js +0 -2
  350. data/app/pb_kits/playbook/packs/kits/pb_date_range_inline.js +0 -1
  351. data/app/pb_kits/playbook/packs/kits/pb_date_range_stacked.js +0 -1
  352. data/app/pb_kits/playbook/packs/kits/pb_date_stacked.js +0 -1
  353. data/app/pb_kits/playbook/packs/kits/pb_date_year_stacked.js +0 -2
  354. data/app/pb_kits/playbook/packs/kits/pb_distribution_bar.js +0 -2
  355. data/app/pb_kits/playbook/packs/kits/pb_fixed_confirmation_toast.js +0 -2
  356. data/app/pb_kits/playbook/packs/kits/pb_flex.js +0 -1
  357. data/app/pb_kits/playbook/packs/kits/pb_form_pill.js +0 -1
  358. data/app/pb_kits/playbook/packs/kits/pb_hashtag.js +0 -2
  359. data/app/pb_kits/playbook/packs/kits/pb_highlight.js +0 -2
  360. data/app/pb_kits/playbook/packs/kits/pb_home_address_street.js +0 -2
  361. data/app/pb_kits/playbook/packs/kits/pb_icon.js +0 -2
  362. data/app/pb_kits/playbook/packs/kits/pb_icon_circle.js +0 -2
  363. data/app/pb_kits/playbook/packs/kits/pb_icon_value.js +0 -2
  364. data/app/pb_kits/playbook/packs/kits/pb_image.js +0 -1
  365. data/app/pb_kits/playbook/packs/kits/pb_label_pill.js +0 -2
  366. data/app/pb_kits/playbook/packs/kits/pb_label_value.js +0 -2
  367. data/app/pb_kits/playbook/packs/kits/pb_layout.js +0 -2
  368. data/app/pb_kits/playbook/packs/kits/pb_legend.js +0 -2
  369. data/app/pb_kits/playbook/packs/kits/pb_line_graph.js +0 -1
  370. data/app/pb_kits/playbook/packs/kits/pb_list.js +0 -2
  371. data/app/pb_kits/playbook/packs/kits/pb_loading_inline.js +0 -2
  372. data/app/pb_kits/playbook/packs/kits/pb_message.js +0 -2
  373. data/app/pb_kits/playbook/packs/kits/pb_multiple_users.js +0 -2
  374. data/app/pb_kits/playbook/packs/kits/pb_multiple_users_stacked.js +0 -2
  375. data/app/pb_kits/playbook/packs/kits/pb_nav.js +0 -1
  376. data/app/pb_kits/playbook/packs/kits/pb_online_status.js +0 -2
  377. data/app/pb_kits/playbook/packs/kits/pb_person.js +0 -2
  378. data/app/pb_kits/playbook/packs/kits/pb_person_contact.js +0 -2
  379. data/app/pb_kits/playbook/packs/kits/pb_pill.js +0 -2
  380. data/app/pb_kits/playbook/packs/kits/pb_popover.js +0 -1
  381. data/app/pb_kits/playbook/packs/kits/pb_progress_pills.js +0 -2
  382. data/app/pb_kits/playbook/packs/kits/pb_progress_simple.js +0 -2
  383. data/app/pb_kits/playbook/packs/kits/pb_radio.js +0 -2
  384. data/app/pb_kits/playbook/packs/kits/pb_section_separator.js +0 -2
  385. data/app/pb_kits/playbook/packs/kits/pb_select.js +0 -2
  386. data/app/pb_kits/playbook/packs/kits/pb_selectable_card.js +0 -2
  387. data/app/pb_kits/playbook/packs/kits/pb_source.js +0 -2
  388. data/app/pb_kits/playbook/packs/kits/pb_star_rating.js +0 -2
  389. data/app/pb_kits/playbook/packs/kits/pb_stat_change.js +0 -2
  390. data/app/pb_kits/playbook/packs/kits/pb_stat_value.js +0 -2
  391. data/app/pb_kits/playbook/packs/kits/pb_table.js +0 -1
  392. data/app/pb_kits/playbook/packs/kits/pb_text_input.js +0 -1
  393. data/app/pb_kits/playbook/packs/kits/pb_textarea.js +0 -2
  394. data/app/pb_kits/playbook/packs/kits/pb_time.js +0 -2
  395. data/app/pb_kits/playbook/packs/kits/pb_timestamp.js +0 -2
  396. data/app/pb_kits/playbook/packs/kits/pb_title.js +0 -1
  397. data/app/pb_kits/playbook/packs/kits/pb_title_count.js +0 -2
  398. data/app/pb_kits/playbook/packs/kits/pb_title_detail.js +0 -2
  399. data/app/pb_kits/playbook/packs/kits/pb_toggle.js +0 -2
  400. data/app/pb_kits/playbook/packs/kits/pb_user.js +0 -2
  401. data/app/pb_kits/playbook/packs/kits/pb_user_badge.js +0 -2
  402. data/app/pb_kits/playbook/pb_layout/_body.jsx +0 -26
  403. data/app/pb_kits/playbook/pb_layout/_sidebar.jsx +0 -26
  404. data/app/pb_kits/playbook/pb_layout/docs/_layout_default.jsx +0 -14
  405. data/app/pb_kits/playbook/pb_popover/docs/_popover_portal.jsx +0 -34
  406. data/app/pb_kits/playbook/pb_popover/docs/_popover_with_button.html.erb +0 -4
@@ -0,0 +1,58 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { Caption, Flex, SectionSeparator } from '../../'
5
+
6
+ import CurrentFilters, { FilterDescription } from './CurrentFilters'
7
+ import FilterBackground, { FilterBackgroundProps } from './FilterBackground'
8
+ import FiltersPopover from './FiltersPopover'
9
+ import ResultsCount from './ResultsCount'
10
+ import SortMenu, { SortingChangeCallback, SortOptions, SortValue } from './SortMenu'
11
+
12
+ export type FilterDoubleProps = {
13
+ children: Node,
14
+ filters?: FilterDescription,
15
+ onSortChange: SortingChangeCallback,
16
+ results?: number,
17
+ sortOptions: SortOptions,
18
+ sortValue?: SortValue,
19
+ } & FilterBackgroundProps
20
+
21
+ const FilterDouble = ({ onSortChange, sortOptions, sortValue, filters, results, children, ...bgProps }: FilterDoubleProps) => (
22
+ <FilterBackground {...bgProps}>
23
+ <Flex
24
+ orientation="row"
25
+ vertical="center"
26
+ >
27
+ <FiltersPopover>
28
+ {children}
29
+ </FiltersPopover>
30
+ <CurrentFilters filters={filters} />
31
+ </Flex>
32
+ <SectionSeparator />
33
+ <Flex
34
+ className="filter-bottom"
35
+ orientation="row"
36
+ spacing="between"
37
+ vertical="center"
38
+ >
39
+ <ResultsCount
40
+ results={results}
41
+ title
42
+ />
43
+ <Flex
44
+ orientation="row"
45
+ vertical="center"
46
+ >
47
+ <Caption text="sort by:" />
48
+ <SortMenu
49
+ onChange={onSortChange}
50
+ options={sortOptions}
51
+ value={sortValue}
52
+ />
53
+ </Flex>
54
+ </Flex>
55
+ </FilterBackground>
56
+ )
57
+
58
+ export default FilterDouble
@@ -0,0 +1,46 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { isEmpty } from 'lodash'
5
+ import { Flex } from '../../'
6
+
7
+ import CurrentFilters, { FilterDescription } from './CurrentFilters'
8
+ import FilterBackground, { FilterBackgroundProps } from './FilterBackground'
9
+ import FiltersPopover from './FiltersPopover'
10
+ import ResultsCount from './ResultsCount'
11
+ import SortMenu, { SortingChangeCallback, SortOptions, SortValue } from './SortMenu'
12
+
13
+ export type FilterSingleProps = {
14
+ children?: Node,
15
+ filters?: FilterDescription,
16
+ onSortChange?: SortingChangeCallback,
17
+ results?: number,
18
+ sortOptions?: SortOptions,
19
+ sortValue?: SortValue,
20
+ } & FilterBackgroundProps
21
+
22
+ const FilterSingle = ({ onSortChange, sortOptions, sortValue, filters, results, children, ...bgProps }: FilterSingleProps) => (
23
+ <FilterBackground {...bgProps}>
24
+ <Flex
25
+ orientation="row"
26
+ vertical="center"
27
+ >
28
+ <If condition={children}>
29
+ <FiltersPopover>
30
+ {children}
31
+ </FiltersPopover>
32
+ <CurrentFilters filters={filters} />
33
+ </If>
34
+ <ResultsCount results={results} />
35
+ <If condition={!isEmpty(sortOptions)}>
36
+ <SortMenu
37
+ onChange={onSortChange}
38
+ options={sortOptions}
39
+ value={sortValue}
40
+ />
41
+ </If>
42
+ </Flex>
43
+ </FilterBackground>
44
+ )
45
+
46
+ export default FilterSingle
@@ -0,0 +1,37 @@
1
+ /* @flow */
2
+
3
+ import React, { Node, useState } from 'react'
4
+ import { CircleIconButton, PbReactPopover } from '../../'
5
+
6
+ const FiltersPopoverProps = { children: Node }
7
+ const FiltersPopover = ({ children }: FiltersPopoverProps) => {
8
+ const [hide, updateHide] = useState(true)
9
+ const toggle = () => updateHide(!hide)
10
+
11
+ const filterButton = (
12
+ <CircleIconButton
13
+ icon="filter"
14
+ id="filter"
15
+ onClick={toggle}
16
+ text="filter"
17
+ variant="secondary"
18
+ />
19
+ )
20
+
21
+ return (
22
+ <PbReactPopover
23
+ closeOnClick="outside"
24
+ offset
25
+ placement="bottom"
26
+ reference={filterButton}
27
+ shouldClosePopover={updateHide}
28
+ show={!hide}
29
+ >
30
+ <div className="pb-form">
31
+ {children}
32
+ </div>
33
+ </PbReactPopover>
34
+ )
35
+ }
36
+
37
+ export default FiltersPopover
@@ -0,0 +1,34 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { Caption, TitleCount } from '../../'
5
+
6
+ const resultsText = (results: number): string => results == 1 ? 'Result' : 'Results'
7
+
8
+ type ResultsCountProps = {
9
+ results?: ?number,
10
+ title?: boolean,
11
+ }
12
+ const ResultsCount = ({ results, title }: ResultsCountProps) => (
13
+ <Choose>
14
+ <When condition={results && title}>
15
+ <TitleCount
16
+ align="center"
17
+ count={results}
18
+ title={`${resultsText(results)}:`}
19
+ />
20
+ </When>
21
+ <When condition={results}>
22
+ <Caption
23
+ className="filter-results"
24
+ size="xs"
25
+ text={`${results} ${resultsText(results)}`}
26
+ />
27
+ </When>
28
+ <Otherwise>
29
+ <div />
30
+ </Otherwise>
31
+ </Choose>
32
+ )
33
+
34
+ export default ResultsCount
@@ -0,0 +1,85 @@
1
+ /* @flow */
2
+
3
+ import React, { useState } from 'react'
4
+ import { find, map, partial } from 'lodash'
5
+ import { Button, Icon, List, ListItem, PbReactPopover } from '../../'
6
+
7
+ export type Direction = 'asc' | 'desc'
8
+ export type SortOptions = { [name: string]: string }
9
+ export type SortValue = { name: string, dir: Direction }
10
+ export type SortingChangeCallback = (SortValue[]) => void
11
+
12
+ const nextValue = (value: SortValue[], name: string): Direction => {
13
+ const current = find(value, { name })
14
+ return {
15
+ name,
16
+ dir: current && current.dir == 'asc' ? 'desc' : 'asc',
17
+ }
18
+ }
19
+
20
+ const directionIcon = (dir: Direction) => (
21
+ dir == 'asc' ? 'sort-amount-up' : 'sort-amount-down'
22
+ )
23
+
24
+ const renderOptions = (options: SortOptions, value: SortValue[], handleChange: (SortValue) => void) => (
25
+ map(options, (label, name) => {
26
+ const next = nextValue(value, name)
27
+ return (
28
+ <ListItem key={`option-${next.name}-${next.dir}`}>
29
+ <Button
30
+ icon={directionIcon(next.dir)}
31
+ onClick={partial(handleChange, next)}
32
+ text={` ${label}`}
33
+ variant="link"
34
+ />
35
+ </ListItem>
36
+ )
37
+ })
38
+ )
39
+
40
+ export type SortMenuProps = {
41
+ value?: SortValue[],
42
+ options: SortOptions,
43
+ onChange: SortingChangeCallback,
44
+ }
45
+ const SortMenu = ({ options, value, onChange }: SortMenuProps) => {
46
+ const [hide, updateHide] = useState(true)
47
+ const toggle = () => updateHide(!hide)
48
+ const handleChange = (value: SortValue) => {
49
+ updateHide(true)
50
+ onChange([value])
51
+ }
52
+
53
+ const sortButton = (
54
+ <Button
55
+ id="sort-button"
56
+ onClick={toggle}
57
+ variant="link"
58
+ >
59
+ {map(value, ({ dir, name }) => (
60
+ <span key={`current-sort-${name}-${dir}`}>
61
+ <Icon icon={directionIcon(dir)} />
62
+ {` ${options[name]}`}
63
+ </span>
64
+ ))}
65
+ </Button>
66
+ )
67
+
68
+ return (
69
+ <PbReactPopover
70
+ className="pb_filter_sort_menu"
71
+ closeOnClick="outside"
72
+ offset
73
+ placement="bottom"
74
+ reference={sortButton}
75
+ shouldClosePopover={updateHide}
76
+ show={!hide}
77
+ >
78
+ <List>
79
+ {renderOptions(options, value, handleChange)}
80
+ </List>
81
+ </PbReactPopover>
82
+ )
83
+ }
84
+
85
+ export default SortMenu
@@ -0,0 +1,26 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+
5
+ import FilterSingle, { FilterSingleProps } from './FilterSingle'
6
+ import FilterDouble, { FilterDoubleProps } from './FilterDouble'
7
+
8
+ type FilterProps = FilterSingleProps | FilterDoubleProps & {
9
+ double?: boolean,
10
+ }
11
+
12
+ const Filter = ({
13
+ double = false,
14
+ ...templateProps
15
+ }: FilterProps) => (
16
+ <Choose>
17
+ <When condition={double}>
18
+ <FilterDouble {...templateProps} />
19
+ </When>
20
+ <Otherwise>
21
+ <FilterSingle {...templateProps} />
22
+ </Otherwise>
23
+ </Choose>
24
+ )
25
+
26
+ export default Filter
@@ -1,224 +1,3 @@
1
1
  /* @flow */
2
2
 
3
- import React, { useState } from 'react'
4
- import {
5
- Button,
6
- Caption,
7
- Card,
8
- CircleIconButton,
9
- Flex,
10
- Icon,
11
- List,
12
- ListItem,
13
- PbReactPopover,
14
- SectionSeparator,
15
- Title,
16
- TitleCount,
17
- } from '../'
18
-
19
- type FilterProps = {
20
- background?: Boolean,
21
- className?: String,
22
- data?: String,
23
- id?: String,
24
- children?: React.Node,
25
- filters?: Array<Hash>,
26
- results?: Number,
27
- sortMenu?: Array<Hash>,
28
- template?: 'default' | 'filter_only' | 'sort_only' | 'single'
29
- }
30
-
31
- const Filter = ({
32
- background = true,
33
- className = 'pb_filter_kit',
34
- data,
35
- filters = [{}],
36
- id,
37
- children,
38
- results,
39
- sortMenu = null,
40
- template = 'default',
41
- }: FilterProps) => {
42
- const [showFilterOptions, setShowFilterOptions] = useState(false)
43
- const [showSortOptions, setShowSortOptions] = useState(false)
44
- const handleToggleFilters = () => {
45
- setShowFilterOptions(!showFilterOptions)
46
- }
47
- const handleToggleSort = () => {
48
- setShowSortOptions(!showSortOptions)
49
- }
50
-
51
- const filterButton = (
52
- <CircleIconButton
53
- icon="filter"
54
- id="filter"
55
- onClick={handleToggleFilters}
56
- text="filter"
57
- variant="secondary"
58
- />
59
- )
60
-
61
- const Filters = () => (
62
- <If condition={template != 'sort_only' && filters != null}>
63
- <PbReactPopover
64
- closeOnClick="outside"
65
- offset
66
- placement="bottom"
67
- reference={filterButton}
68
- show={showFilterOptions}
69
- >
70
- <div className="pb-form">
71
- {children}
72
- </div>
73
-
74
- </PbReactPopover>
75
- <div className="maskContainer">
76
- <div className="filters">
77
- <div className="left_gradient" />
78
- { filters.map((item, index) => (
79
- <div
80
- className="filter"
81
- key={index}
82
- >
83
- <Caption text={item.name} />
84
- <Title
85
- size={4}
86
- tag="h4"
87
- text={item.value}
88
- />
89
- </div>
90
- ))}
91
- <div className="right_gradient" />
92
- </div>
93
- </div>
94
- </If>
95
- )
96
-
97
- const activeSort = () => {
98
- return (
99
- sortMenu.map((item) => (
100
- item.active ? item.item : null
101
- ))
102
- )
103
- }
104
-
105
- const activeDirection = () => {
106
- let direction
107
- sortMenu.map((item) => {
108
- item.active ? direction = item.direction : null
109
- })
110
- const icon = direction == 'asc' ? 'sort-amount-up' : 'sort-amount-down'
111
- return icon
112
- }
113
-
114
- const sortButton = (
115
- <If condition={sortMenu != null}>
116
- <Button
117
- id="sort-button"
118
- onClick={handleToggleSort}
119
- variant="link"
120
- >
121
- {activeSort()}
122
- <Icon
123
- fixedWidth
124
- icon={`${activeDirection()}`}
125
- />
126
- </Button>
127
- </If>
128
- )
129
- const Results = () => {
130
- const resultsText = results > 1 ? 'Results' : 'Result'
131
- return (
132
- <If condition={results != undefined}>
133
- <If condition={template != 'default'}>
134
- <Caption
135
- className="filter-results"
136
- size="xs"
137
- text={`${results} ${resultsText}`}
138
- />
139
- <Else />
140
- <TitleCount
141
- align="center"
142
- count={results}
143
- title={`${resultsText}:`}
144
- />
145
- </If>
146
- </If>
147
- )
148
- }
149
- const Sort = () => (
150
- <If condition={template != 'filter_only'}>
151
- <Flex
152
- orientation="row"
153
- vertical="center"
154
- >
155
- <If condition={template == 'default'}>
156
- <Caption text="sort by:" />
157
- </If>
158
- <PbReactPopover
159
- closeOnClick="outside"
160
- offset
161
- placement="bottom"
162
- reference={sortButton}
163
- show={showSortOptions}
164
- >
165
- <List>
166
- {sortMenu ? sortMenu.map((item) => (
167
- <ListItem key={item.item}>
168
- <Button
169
- link={item.link}
170
- text={item.item}
171
- variant="link"
172
- />
173
- </ListItem>
174
- )) : null}
175
-
176
- </List>
177
- </PbReactPopover>
178
- </Flex>
179
- </If>
180
- )
181
- const Core = () => (
182
- <>
183
- <Flex
184
- orientation="row"
185
- vertical="center"
186
- >
187
- <Filters />
188
- <If condition={template != 'default'}>
189
- <Results />
190
- <Sort />
191
- </If>
192
- </Flex>
193
- <If condition={template == 'default'}>
194
- <SectionSeparator />
195
- <Flex
196
- className="filter-bottom"
197
- orientation="row"
198
- spacing="between"
199
- vertical="center"
200
- >
201
- <Results />
202
- <Sort />
203
- </Flex>
204
- </If>
205
- </>
206
- )
207
- return (
208
- <div
209
- className={className}
210
- data={data}
211
- id={id}
212
- >
213
- <If condition={background}>
214
- <Card padding="none">
215
- <Core />
216
- </Card>
217
- <Else />
218
- <Core />
219
- </If>
220
- </div>
221
- )
222
- }
223
-
224
- export default Filter
3
+ export { default } from './Filter'