playbook_ui 7.0.1.pre.alpha14 → 7.0.1.pre.alpha15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/playbook/application_controller.rb +0 -2
  3. data/app/pb_kits/playbook/_playbook.scss +1 -1
  4. data/app/pb_kits/playbook/data/menu.yml +5 -4
  5. data/app/pb_kits/playbook/index.js +4 -1
  6. data/app/pb_kits/playbook/pb_bar_graph/_bar_graph.html.erb +1 -12
  7. data/app/pb_kits/playbook/pb_bar_graph/bar_graph.rb +1 -1
  8. data/app/pb_kits/playbook/pb_body/body.rb +1 -1
  9. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +1 -0
  10. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.jsx +3 -3
  11. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +82 -90
  12. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_dark.scss +57 -0
  13. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar_mixins.scss +27 -0
  14. data/app/pb_kits/playbook/pb_button_toolbar/button_toolbar.rb +4 -2
  15. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.html.erb +17 -7
  16. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_default.jsx +32 -9
  17. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.html.erb +18 -7
  18. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_secondary.jsx +37 -9
  19. data/app/pb_kits/playbook/pb_button_toolbar/docs/example.yml +3 -7
  20. data/app/pb_kits/playbook/pb_button_toolbar/docs/index.js +0 -2
  21. data/app/pb_kits/playbook/pb_caption/_caption.html.erb +7 -5
  22. data/app/pb_kits/playbook/pb_caption/docs/_caption_block.html.erb +11 -0
  23. data/app/pb_kits/playbook/pb_caption/docs/_caption_block.jsx +28 -0
  24. data/app/pb_kits/playbook/pb_caption/docs/example.yml +2 -0
  25. data/app/pb_kits/playbook/pb_caption/docs/index.js +1 -0
  26. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +1 -2
  27. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +1 -3
  28. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +3 -2
  29. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +34 -32
  30. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +1 -2
  31. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +1 -2
  32. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.md +1 -0
  33. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +4 -0
  34. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.jsx +4 -0
  35. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.html.erb +9 -9
  36. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.jsx +8 -8
  37. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.md +3 -1
  38. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +1 -0
  39. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +1 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +0 -4
  41. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +0 -2
  42. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.html.erb +8 -14
  43. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.jsx +122 -39
  44. data/app/pb_kits/playbook/pb_date_range_inline/_date_range_inline.scss +33 -2
  45. data/app/pb_kits/playbook/pb_date_range_inline/date_range_inline.rb +44 -9
  46. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.html.erb +14 -1
  47. data/app/pb_kits/playbook/pb_date_range_inline/docs/_date_range_inline_default.jsx +45 -1
  48. data/app/pb_kits/playbook/pb_distribution_bar/_distribution_bar.html.erb +1 -8
  49. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +7 -0
  50. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.html.erb +3 -2
  51. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.jsx +29 -15
  52. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/_fixed_confirmation_toast.scss +10 -0
  53. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_close.html.erb +21 -0
  54. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_close.jsx +38 -0
  55. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.html.erb +2 -1
  56. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_default.jsx +1 -2
  57. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.html.erb +1 -1
  58. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line.jsx +1 -1
  59. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line_dark.html.erb +1 -1
  60. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_multi_line_dark.jsx +1 -1
  61. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/example.yml +2 -0
  62. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/index.js +1 -0
  63. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/fixed_confirmation_toast.rb +7 -1
  64. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/index.js +18 -0
  65. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +9 -6
  66. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  67. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +3 -3
  68. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +3 -3
  69. data/app/pb_kits/playbook/pb_form/form_builder/checkbox_field.rb +7 -2
  70. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +1 -0
  71. data/app/pb_kits/playbook/pb_line_graph/_line_graph.html.erb +1 -13
  72. data/app/pb_kits/playbook/pb_line_graph/line_graph.rb +1 -1
  73. data/app/pb_kits/playbook/pb_person_contact/_person_contact.jsx +7 -6
  74. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_with_wrong_numbers.jsx +1 -0
  75. data/app/pb_kits/playbook/pb_popover/_popover.scss +6 -4
  76. data/app/pb_kits/playbook/pb_popover/index.js +3 -1
  77. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +3 -0
  78. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +168 -33
  79. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +3 -1
  80. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +10 -8
  81. data/app/pb_kits/playbook/pb_progress_step/docs/_description.md +1 -1
  82. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.html.erb +14 -16
  83. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_default.jsx +6 -3
  84. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.html.erb +17 -1
  85. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker.jsx +17 -1
  86. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_vertical.jsx +10 -3
  87. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +11 -1
  88. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +1 -1
  89. data/app/pb_kits/playbook/pb_table/docs/_table_action_middle.html.erb +34 -0
  90. data/app/pb_kits/playbook/pb_table/docs/_table_action_middle.jsx +68 -0
  91. data/app/pb_kits/playbook/pb_table/docs/_table_action_middle.md +2 -0
  92. data/app/pb_kits/playbook/pb_table/docs/_table_icon_buttons.html.erb +61 -0
  93. data/app/pb_kits/playbook/pb_table/docs/_table_icon_buttons.jsx +89 -0
  94. data/app/pb_kits/playbook/pb_table/docs/_table_icon_buttons.md +1 -0
  95. data/app/pb_kits/playbook/pb_table/docs/_table_one_action.html.erb +34 -0
  96. data/app/pb_kits/playbook/pb_table/docs/_table_one_action.jsx +68 -0
  97. data/app/pb_kits/playbook/pb_table/docs/_table_one_action.md +2 -0
  98. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.html.erb +43 -0
  99. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.jsx +80 -0
  100. data/app/pb_kits/playbook/pb_table/docs/_table_two_actions.md +1 -0
  101. data/app/pb_kits/playbook/pb_table/docs/_table_two_plus_actions.html.erb +34 -0
  102. data/app/pb_kits/playbook/pb_table/docs/_table_two_plus_actions.jsx +63 -0
  103. data/app/pb_kits/playbook/pb_table/docs/_table_two_plus_actions.md +1 -0
  104. data/app/pb_kits/playbook/pb_table/docs/example.yml +12 -0
  105. data/app/pb_kits/playbook/pb_table/docs/index.js +6 -0
  106. data/app/pb_kits/playbook/pb_time/_time.html.erb +17 -20
  107. data/app/pb_kits/playbook/pb_time/_time.jsx +40 -27
  108. data/app/pb_kits/playbook/pb_time/_time.scss +4 -24
  109. data/app/pb_kits/playbook/pb_time/docs/_time_align.jsx +4 -1
  110. data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +11 -11
  111. data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +13 -1
  112. data/app/pb_kits/playbook/pb_time/docs/_time_sizes.jsx +4 -1
  113. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +3 -1
  114. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +7 -2
  115. data/app/pb_kits/playbook/pb_time_range_inline/_time_range_inline.scss +5 -5
  116. data/app/pb_kits/playbook/pb_title_detail/_title_detail.jsx +4 -4
  117. data/app/pb_kits/playbook/pb_toggle/docs/_toggle_options.html.erb +10 -0
  118. data/app/pb_kits/playbook/pb_toggle/docs/example.yml +1 -0
  119. data/app/pb_kits/playbook/pb_toggle/toggle.rb +5 -2
  120. data/app/pb_kits/playbook/pb_typeahead/_typeahead.html.erb +24 -20
  121. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +19 -1
  122. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -1
  123. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +21 -13
  124. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.html.erb +1 -1
  125. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_context_dark.html.erb +1 -1
  126. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +25 -0
  127. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +0 -3
  128. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +8 -0
  129. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.html.erb +30 -0
  130. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.md +11 -0
  131. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.html.erb +25 -0
  132. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +0 -3
  133. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.md +1 -0
  134. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +3 -0
  135. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +24 -1
  136. data/app/pb_kits/playbook/react_rails_kits.js +6 -0
  137. data/app/pb_kits/playbook/tokens/_colors.scss +22 -23
  138. data/app/pb_kits/playbook/tokens/_typography.scss +4 -4
  139. data/app/pb_kits/playbook/tokens/index.scss +11 -0
  140. data/app/pb_kits/playbook/vendor.js +8 -0
  141. data/lib/generators/kit/kit_generator.rb +1 -1
  142. data/lib/playbook/engine.rb +1 -0
  143. data/lib/playbook/version.rb +1 -1
  144. data/lib/tasks/changelog.rake +14 -0
  145. data/lib/tasks/pb_release.rake +14 -3
  146. metadata +35 -81
  147. data/app/controllers/playbook/guides_controller.rb +0 -11
  148. data/app/controllers/playbook/pages_controller.rb +0 -99
  149. data/app/controllers/playbook/samples_controller.rb +0 -40
  150. data/app/pb_kits/playbook/packs/application.js +0 -55
  151. data/app/pb_kits/playbook/packs/examples.js +0 -182
  152. data/app/pb_kits/playbook/packs/main.scss +0 -12
  153. data/app/pb_kits/playbook/packs/samples.js +0 -21
  154. data/app/pb_kits/playbook/packs/site_styles/_samples.scss +0 -72
  155. data/app/pb_kits/playbook/packs/site_styles/_scaffold.scss +0 -43
  156. data/app/pb_kits/playbook/packs/site_styles/_site-style.scss +0 -146
  157. data/app/pb_kits/playbook/packs/site_styles/docs/_all.scss +0 -10
  158. data/app/pb_kits/playbook/packs/site_styles/docs/_bg_light_doc_example.scss +0 -7
  159. data/app/pb_kits/playbook/packs/site_styles/docs/_code_snippet.scss +0 -531
  160. data/app/pb_kits/playbook/packs/site_styles/docs/_color_utilities.scss +0 -92
  161. data/app/pb_kits/playbook/packs/site_styles/docs/_flex_examples.scss +0 -15
  162. data/app/pb_kits/playbook/packs/site_styles/docs/_kit_doc.scss +0 -148
  163. data/app/pb_kits/playbook/packs/site_styles/docs/_kits_examples.scss +0 -15
  164. data/app/pb_kits/playbook/packs/site_styles/docs/_markdown.scss +0 -88
  165. data/app/pb_kits/playbook/packs/site_styles/docs/_spacing_tokens.scss +0 -72
  166. data/app/pb_kits/playbook/pb_background/_background.html.erb +0 -14
  167. data/app/pb_kits/playbook/pb_background/_background.jsx +0 -64
  168. data/app/pb_kits/playbook/pb_background/_background.scss +0 -15
  169. data/app/pb_kits/playbook/pb_background/background.rb +0 -36
  170. data/app/pb_kits/playbook/pb_background/docs/_background_default.html.erb +0 -41
  171. data/app/pb_kits/playbook/pb_background/docs/_background_default.jsx +0 -75
  172. data/app/pb_kits/playbook/pb_background/docs/example.yml +0 -8
  173. data/app/pb_kits/playbook/pb_background/docs/index.js +0 -1
  174. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical.html.erb +0 -11
  175. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical.jsx +0 -29
  176. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical_secondary.html.erb +0 -11
  177. data/app/pb_kits/playbook/pb_button_toolbar/docs/_button_toolbar_vertical_secondary.jsx +0 -34
  178. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.html.erb +0 -4
  179. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.jsx +0 -13
  180. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.md +0 -1
  181. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.html.erb +0 -4
  182. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.jsx +0 -13
  183. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_summary.jsx +0 -45
  184. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_summary.jsx +0 -27
  185. data/app/views/layouts/playbook/_mobile_hamburger.html.erb +0 -2
  186. data/app/views/layouts/playbook/_nav.html.erb +0 -37
  187. data/app/views/layouts/playbook/_sidebar.html.erb +0 -51
  188. data/app/views/layouts/playbook/application.html.erb +0 -26
  189. data/app/views/layouts/playbook/fullscreen.html.slim +0 -10
  190. data/app/views/layouts/playbook/grid.html.slim +0 -10
  191. data/app/views/layouts/playbook/samples.html.erb +0 -19
  192. data/app/views/playbook/guides/create_kit.html.slim +0 -16
  193. data/app/views/playbook/guides/create_kit/_file_naming.html.md +0 -2
  194. data/app/views/playbook/guides/create_kit/_generator.html.md +0 -6
  195. data/app/views/playbook/guides/create_kit/_kit_examples.html.md +0 -2
  196. data/app/views/playbook/guides/create_kit/_kit_rails.html.md +0 -2
  197. data/app/views/playbook/guides/create_kit/_kit_react.html.md +0 -2
  198. data/app/views/playbook/guides/create_kit/_layout.html.md +0 -2
  199. data/app/views/playbook/guides/create_kit/_view_objects.html.md +0 -2
  200. data/app/views/playbook/guides/create_kit/_writing_sass.md +0 -10
  201. data/app/views/playbook/guides/use_nitro.html.slim +0 -6
  202. data/app/views/playbook/guides/use_nitro/_local.html.md +0 -2
  203. data/app/views/playbook/guides/use_nitro/_nitro_components.html.md +0 -2
  204. data/app/views/playbook/guides/use_nitro/_versions.html.md +0 -2
  205. data/app/views/playbook/pages/fullscreen.html.slim +0 -10
  206. data/app/views/playbook/pages/grid.html.slim +0 -2
  207. data/app/views/playbook/pages/home.html.slim +0 -4
  208. data/app/views/playbook/pages/kit_category_show.html.erb +0 -14
  209. data/app/views/playbook/pages/kit_show.html.erb +0 -33
  210. data/app/views/playbook/pages/kits.html.erb +0 -12
  211. data/app/views/playbook/pages/principals/_getting_started.html.md +0 -30
  212. data/app/views/playbook/pages/principles.html.slim +0 -3
  213. data/app/views/playbook/pages/tokens.html.slim +0 -15
  214. data/app/views/playbook/pages/tokens/_pb_doc_spacing.html.slim +0 -61
  215. data/app/views/playbook/pages/utilities.html.slim +0 -116
  216. data/app/views/playbook/pages/utilities/_pb_doc_color.html.slim +0 -15
  217. data/app/views/playbook/samples/collection_detail/index.html.erb +0 -169
  218. data/app/views/playbook/samples/collection_detail/index.jsx +0 -372
  219. data/app/views/playbook/samples/dashboards/index.html.erb +0 -81
  220. data/app/views/playbook/samples/dashboards/index.jsx +0 -130
  221. data/app/views/playbook/samples/filter_table/index.html.erb +0 -348
  222. data/app/views/playbook/samples/filter_table/index.jsx +0 -433
  223. data/app/views/playbook/samples/registration/index.html.erb +0 -316
  224. data/app/views/playbook/samples/registration/index.jsx +0 -476
  225. data/app/views/playbook/samples/sample_show.html.erb +0 -36
@@ -19,11 +19,18 @@ const MultiValue = (props: Props) => {
19
19
  selectProps,
20
20
  } = props
21
21
 
22
+ const { imageUrl, label } = data
23
+
24
+ const handleOnMultiValueRemove = () => {
25
+ const multiValueRemoveEvent = new CustomEvent('pb-typeahead-kit-result-option-remove', { detail: data })
26
+ document.dispatchEvent(multiValueRemoveEvent)
27
+ }
28
+
22
29
  const handleOnClick = () => {
23
30
  if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(data)
31
+ handleOnMultiValueRemove()
24
32
  removeProps.onClick()
25
33
  }
26
- const { imageUrl, label } = data
27
34
 
28
35
  return (
29
36
  <components.MultiValueContainer
@@ -12,21 +12,29 @@ const Option = (props: any) => {
12
12
  imageUrl,
13
13
  label,
14
14
  } = props.data
15
+
16
+ const handleOptionClicked = () => {
17
+ const resultSelectedEvent = new CustomEvent('pb-typeahead-kit-result-option-select', { detail: props.data })
18
+ document.dispatchEvent(resultSelectedEvent)
19
+ }
20
+
15
21
  return (
16
22
  <components.Option {...props}>
17
- <Choose>
18
- <When condition={imageUrl}>
19
- <User
20
- align="left"
21
- avatarUrl={imageUrl}
22
- name={label}
23
- orientation="horizontal"
24
- />
25
- </When>
26
- <When condition={!imageUrl}>
27
- {label}
28
- </When>
29
- </Choose>
23
+ <div onClick={handleOptionClicked}>
24
+ <Choose>
25
+ <When condition={imageUrl}>
26
+ <User
27
+ align="left"
28
+ avatarUrl={imageUrl}
29
+ name={label}
30
+ orientation="horizontal"
31
+ />
32
+ </When>
33
+ <When condition={!imageUrl}>
34
+ {label}
35
+ </When>
36
+ </Choose>
37
+ </div>
30
38
  </components.Option>
31
39
  )
32
40
  }
@@ -25,7 +25,7 @@
25
25
 
26
26
  <%= javascript_tag defer: "defer" do %>
27
27
  document.addEventListener("pb-typeahead-kit-search", function(event) {
28
- if (!event.target.dataset.typeaheadExample) return;
28
+ if (!event.target.dataset || !event.target.dataset.typeaheadExample) return;
29
29
 
30
30
  fetch(`https://api.github.com/search/users?q=${encodeURIComponent(event.detail.searchingFor)}`)
31
31
  .then(response => response.json())
@@ -18,7 +18,7 @@
18
18
 
19
19
  <%= javascript_tag defer: "defer" do %>
20
20
  document.addEventListener("pb-typeahead-kit-search", function(event) {
21
- if (!event.target.dataset.typeaheadExample2) return;
21
+ if (!event.target.dataset || !event.target.dataset.typeaheadExample2) return;
22
22
 
23
23
  const fuzzyMatch = function(string, term) {
24
24
  const ratio = 0.5;
@@ -0,0 +1,25 @@
1
+ <%
2
+ options = [
3
+ { label: 'Windows', value: '#FFA500' },
4
+ { label: 'Siding', value: '#FF0000' },
5
+ { label: 'Doors', value: '#00FF00' },
6
+ { label: 'Roofs', value: '#0000FF' },
7
+ ]
8
+ %>
9
+
10
+ <%= pb_rails("typeahead", props: { options: options, label: "Colors", name: :foo, pills: true }) %>
11
+
12
+ <!-- This section is an example of the available JavaScript event hooks -->
13
+ <%= javascript_tag defer: "defer" do %>
14
+ document.addEventListener("pb-typeahead-kit-result-option-select", function(event) {
15
+ console.log('Option selected')
16
+ console.dir(event.detail)
17
+ })
18
+ document.addEventListener("pb-typeahead-kit-result-option-remove", function(event) {
19
+ console.log('Option removed')
20
+ console.dir(event.detail)
21
+ })
22
+ document.addEventListener("pb-typeahead-kit-result-clear", function() {
23
+ console.log('All options cleared')
24
+ })
25
+ <% end %>
@@ -10,12 +10,9 @@ const options = [
10
10
  { label: 'Roofs', value: '#0000FF' },
11
11
  ]
12
12
 
13
- import TypeaheadWithPillsSummary from './_typeahead_with_pills_summary'
14
-
15
13
  const TypeaheadWithPills = () => {
16
14
  return (
17
15
  <>
18
- <TypeaheadWithPillsSummary />
19
16
  <Typeahead
20
17
  isMulti
21
18
  label="Colors"
@@ -0,0 +1,8 @@
1
+ Typeahead kit is data-driven. The minimum default fields are `label` and `value`.
2
+
3
+ `{ label: "Foo", value: "bar" }`
4
+
5
+ #### Rails: Subscribing to JS Events
6
+ `pb-typeahead-kit-result-option-select` event to perform custom work when an option is clicked.
7
+ `pb-typeahead-kit-result-option-remove` event to perform custom work when a pill is clicked.
8
+ `pb-typeahead-kit-result-option-clear` event to perform custom work when all pills are removed upon clicking the X.
@@ -0,0 +1,30 @@
1
+ <%= pb_rails("typeahead", props: { async: true, load_options: 'asyncPillsPromiseOptions', label: "Github Users", name: :foo, pills: true, placeholder: "type the name of a Github user" }) %>
2
+
3
+ <!-- This section is an example of how to provide load_options prop for using dynamic options -->
4
+ <%= javascript_tag defer: "defer" do %>
5
+ // Simple filter function, providing a list of results in the expected data format
6
+
7
+ const filterResults = function(results) {
8
+ return results.items.map(function(result) {
9
+ return {
10
+ label: result.login,
11
+ value: result.id,
12
+ }
13
+ })
14
+ }
15
+
16
+ /* Note: Make sure you assign this to window or a namespace within window
17
+ or it will not be accessible to the kit! */
18
+
19
+ window.asyncPillsPromiseOptions = function(inputValue) {
20
+ return new Promise(function(resolve) {
21
+ if (inputValue) {
22
+ fetch(`https://api.github.com/search/users?q=${inputValue}`)
23
+ .then(function(response) { return response.json() })
24
+ .then(function(results) { resolve(filterResults(results))})
25
+ } else {
26
+ resolve([])
27
+ }
28
+ })
29
+ }
30
+ <% end %>
@@ -0,0 +1,11 @@
1
+ #### Rails: Providing the `load_options` Promise
2
+
3
+ **Additional required props: ** `async: true`, `pills: true`
4
+
5
+ The prop `load_options`, when used in conjunction with `async: true` and `pills: true`, points to a JavaScript function located within the global window namespace. This function should return a `Promise` which resolves with the list of formatted options as described in prior examples above. This function is identical to the function provided to the React version of this kit. See the code example for more details.
6
+
7
+ #### React: `loadOptions`
8
+
9
+ **Additional required props: ** `async: true`
10
+
11
+ [As outlined in the react-select Async docs](https://react-select.com/async), `loadOptions` expects to return a Promise that resolves resolves with the list of formatted options as described in prior examples above. See the code example for more details.
@@ -0,0 +1,25 @@
1
+ <%= pb_rails("typeahead", props: { async: true, load_options: 'asyncPillsPromiseOptionsUsers', label: "Github Users", name: :foo, pills: true, placeholder: "type the name of a Github user" }) %>
2
+
3
+ <%= javascript_tag defer: "defer" do %>
4
+ const filterUserResults = function(results) {
5
+ return results.items.map(function(result) {
6
+ return {
7
+ imageUrl: result.avatar_url,
8
+ label: result.login,
9
+ value: result.id,
10
+ }
11
+ })
12
+ }
13
+
14
+ window.asyncPillsPromiseOptionsUsers = function(inputValue) {
15
+ return new Promise(function(resolve) {
16
+ if (inputValue) {
17
+ fetch(`https://api.github.com/search/users?q=${inputValue}`)
18
+ .then(function(response) { return response.json() })
19
+ .then(function(results) { resolve(filterUserResults(results))})
20
+ } else {
21
+ resolve([])
22
+ }
23
+ })
24
+ }
25
+ <% end %>
@@ -8,8 +8,6 @@ import {
8
8
  User,
9
9
  } from '../..'
10
10
 
11
- import TypeaheadWithPillsAsyncSummary from './_typeahead_with_pills_async_summary'
12
-
13
11
  /**
14
12
  *
15
13
  * @const filterResults
@@ -65,7 +63,6 @@ const TypeaheadWithPillsAsyncUsers = () => {
65
63
 
66
64
  return (
67
65
  <>
68
- <TypeaheadWithPillsAsyncSummary />
69
66
  <If condition={users && users.length > 0}>
70
67
  <Caption
71
68
  marginBottom="xs"
@@ -0,0 +1 @@
1
+ If the data field `imageUrl` is present, FormPill will receive that field as a prop and display the image.
@@ -2,6 +2,9 @@ examples:
2
2
  rails:
3
3
  - typeahead_default: Default
4
4
  - typeahead_with_context_dark: With Context
5
+ - typeahead_with_pills: With Pills
6
+ - typeahead_with_pills_async: With Pills (Async Data)
7
+ - typeahead_with_pills_async_users: With Pills (Async Data w/ Users)
5
8
 
6
9
  react:
7
10
  - typeahead_default: Default
@@ -5,12 +5,19 @@ module Playbook
5
5
  class Typeahead
6
6
  include Playbook::Props
7
7
 
8
+ prop :async, type: Playbook::Props::Boolean,
9
+ default: false
8
10
  prop :label
11
+ prop :load_options
9
12
  prop :name
10
- prop :value
13
+ prop :options, type: Playbook::Props::HashArray, default: []
14
+ prop :pills, type: Playbook::Props::Boolean,
15
+ default: false
16
+
11
17
  prop :placeholder
12
18
  prop :search_term_minimum_length, default: 3
13
19
  prop :search_debounce_timeout, default: 250
20
+ prop :value
14
21
 
15
22
  partial "pb_typeahead/typeahead"
16
23
 
@@ -25,6 +32,22 @@ module Playbook
25
32
  pb_typeahead_kit_search_debounce_timeout: search_debounce_timeout
26
33
  )
27
34
  end
35
+
36
+ def typeahead_with_pills_options
37
+ base_options = {
38
+ isMulti: true,
39
+ label: label,
40
+ options: options,
41
+ placeholder: placeholder
42
+ }
43
+
44
+ base_options.merge!({
45
+ async: true,
46
+ loadOptions: load_options,
47
+ }) if async
48
+
49
+ base_options
50
+ end
28
51
  end
29
52
  end
30
53
  end
@@ -0,0 +1,6 @@
1
+ // React-Rendered Rails Kit Exports =====
2
+ export { default as BarGraph } from './pb_bar_graph/_bar_graph.jsx'
3
+ export { default as DistributionBar } from './pb_distribution_bar/_distribution_bar.jsx'
4
+ export { default as Legend } from './pb_legend/_legend.jsx'
5
+ export { default as LineGraph } from './pb_line_graph/_line_graph.jsx'
6
+ export { default as Typeahead } from './pb_typeahead/_typeahead.jsx'
@@ -1,10 +1,10 @@
1
1
  @import "./opacity";
2
2
 
3
- //=====================================
4
- // Base colors should not be documented.
5
- // Only document color use.
3
+ /*=====================================
4
+ Base colors should not be documented.
5
+ Only document color use.
6
6
 
7
- // Colors -----------------------------
7
+ Colors -----------------------------*/
8
8
  $royal: #0056CF;
9
9
  $purple: #9E64E9;
10
10
  $teal: #00C4D7;
@@ -22,11 +22,11 @@ $colors: (
22
22
  orange: $orange
23
23
  );
24
24
 
25
- // Specialty Gradient -----------------
25
+ /* Specialty Gradient -----------------*/
26
26
  $gradient_start: #1C75F2;
27
27
  $gradient_end: $royal;
28
28
 
29
- // Interface colors -------------------
29
+ /* Interface colors -------------------*/
30
30
  $white: #FFFFFF;
31
31
  $silver: #F3F7FB;
32
32
  $slate: #C1CDD6;
@@ -42,7 +42,7 @@ $interface_colors: (
42
42
 
43
43
  );
44
44
 
45
- // Main colors ------------------------
45
+ /* Main colors ------------------------*/
46
46
  $primary: $royal;
47
47
  $secondary: $yellow;
48
48
  $tertiary: $purple;
@@ -51,9 +51,9 @@ $main_colors: (
51
51
  secondary: $secondary,
52
52
  tertiary: $tertiary
53
53
  );
54
- //=====================================
54
+ /*=====================================
55
55
 
56
- // Background colors ------------------
56
+ Background colors ------------------*/
57
57
  $bg_light: $silver;
58
58
  $bg_dark: #0a0527;
59
59
  $background_colors: (
@@ -61,7 +61,7 @@ $background_colors: (
61
61
  bg_dark: $bg_dark
62
62
  );
63
63
 
64
- // Card colors ------------------
64
+ /* Card colors ------------------*/
65
65
  $card_light: $white;
66
66
  $card_dark: rgba($white, $opacity_1);
67
67
  $card_colors: (
@@ -74,15 +74,15 @@ $action_colors: (
74
74
  primary_action: $primary-action
75
75
  );
76
76
 
77
- // Active colors ----------------------
77
+ /* Active colors ----------------------*/
78
78
  $active_light: lighten(#E5F2FF, 3.5%);
79
- $active_dark: #0082ff;
79
+ $active_dark: #0082ff;
80
80
  $active_colors: (
81
81
  active_light: $active_light,
82
82
  active_dark: $active_dark
83
83
  );
84
84
 
85
- // Hover colors -----------------------
85
+ /* Hover colors -----------------------*/
86
86
  $hover_light: darken($silver, 5%);
87
87
  $hover_dark: rgba($white, $opacity_2);
88
88
  $hover_colors: (
@@ -90,7 +90,7 @@ $hover_colors: (
90
90
  hover_dark: $hover_dark
91
91
  );
92
92
 
93
- // Focus colors -----------------------
93
+ /* Focus colors -----------------------*/
94
94
  $focus_input_light: rgba($active_light, $opacity_5);
95
95
  $focus_input_dark: rgba(#144075, $opacity_5);
96
96
  $focus_input_colors: (
@@ -98,7 +98,7 @@ $focus_input_colors: (
98
98
  focus_input_dark: $focus_input_dark
99
99
  );
100
100
 
101
- // Border colors ----------------------
101
+ /* Border colors ----------------------*/
102
102
  $border_light: #E4E8F0;
103
103
  $border_dark: rgba($white, $opacity_1);
104
104
  $border_colors: (
@@ -106,13 +106,13 @@ $border_colors: (
106
106
  border_dark: $border_dark
107
107
  );
108
108
 
109
- // Shadow colors ----------------------
109
+ /* Shadow colors ----------------------*/
110
110
  $shadow: rgba(#3C6AAC, $opacity_2);
111
111
  $shadow_colors: (
112
112
  shadow: $shadow,
113
113
  );
114
114
 
115
- // Text colors ------------------------
115
+ /* Text colors ------------------------*/
116
116
  $text_lt_default: $charcoal;
117
117
  $text_lt_light: #919EAB;
118
118
  $text_lt_lighter: $slate;
@@ -128,7 +128,7 @@ $text_colors: (
128
128
  text_dk_lighter: $text_dk_lighter
129
129
  );
130
130
 
131
- // Data colors ------------------------
131
+ /* Data colors ------------------------*/
132
132
  $data_1: $royal;
133
133
  $data_2: $yellow;
134
134
  $data_3: $purple;
@@ -148,7 +148,7 @@ $data_colors: (
148
148
  data_8: $data_8
149
149
  );
150
150
 
151
- // Status colors ----------------------
151
+ /* Status colors ----------------------*/
152
152
  $success: $green;
153
153
  $warning: $yellow;
154
154
  $error: $red;
@@ -174,10 +174,10 @@ $status_color_text: (
174
174
  primary: $primary
175
175
  );
176
176
 
177
- // Link colors ------------------------
177
+ /* Link colors ------------------------*/
178
178
  $primary_action: $primary;
179
179
 
180
- // Product colors ---------------------
180
+ /* Product colors ---------------------*/
181
181
  $windows: $royal;
182
182
  $siding: $yellow;
183
183
  $doors: $teal;
@@ -195,7 +195,7 @@ $product_colors: (
195
195
  insulation: $insulation
196
196
  );
197
197
 
198
- // Category colors ---------------------
198
+ /* Category colors ---------------------*/
199
199
  $category_1: $royal;
200
200
  $category_2: #0CD2E5;
201
201
  $category_3: $yellow;
@@ -252,7 +252,6 @@ $transparent: transparent;
252
252
  }
253
253
 
254
254
  :export {
255
-
256
255
  @mixin export-colors($colors-list) {
257
256
  @each $name, $color in $colors-list {
258
257
  #{$name}: $color;
@@ -2,7 +2,7 @@
2
2
  $font_family_base: "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans_serif;
3
3
 
4
4
 
5
- // CLEAN UP AND REMOVE
5
+ /* CLEAN UP AND REMOVE */
6
6
  $font_jumbo: 36px;
7
7
  $font_largest: 32px;
8
8
  $font_larger: 28px;
@@ -29,7 +29,7 @@ $text_smaller: $font_smaller;
29
29
  $text_smallest: $font_smallest;
30
30
 
31
31
 
32
- // Headings
32
+ /* Headings */
33
33
  $heading_1: 48px;
34
34
  $heading_2: 34px;
35
35
  $heading_3: $font_larger;
@@ -52,11 +52,11 @@ $lspace_super_loosest: .2em;
52
52
 
53
53
 
54
54
 
55
- // Standard Font Weights
55
+ /* Standard Font Weights */
56
56
  $bold: 600;
57
57
  $regular: 400;
58
58
 
59
- // Non_Standard Font Weights
59
+ /* Non_Standard Font Weights */
60
60
  $extrabold: 900;
61
61
  $boldest: 800;
62
62
  $bolder: 700;