playbook_ui 7.3.0.pre.alpha12 → 7.4.0.pre.test2

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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +3 -1
  3. data/app/pb_kits/playbook/data/menu.yml +2 -2
  4. data/app/pb_kits/playbook/index.js +2 -1
  5. data/app/pb_kits/playbook/pb_background/_background.html.erb +14 -0
  6. data/app/pb_kits/playbook/pb_background/_background.jsx +63 -0
  7. data/app/pb_kits/playbook/pb_background/_background.scss +35 -0
  8. data/app/pb_kits/playbook/pb_background/background.rb +35 -0
  9. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +3 -0
  10. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +13 -0
  11. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +3 -0
  12. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +13 -0
  13. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +13 -0
  14. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +30 -0
  15. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +3 -0
  16. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +13 -0
  17. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +3 -0
  18. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +14 -0
  19. data/app/pb_kits/playbook/pb_background/docs/_description.md +1 -0
  20. data/app/pb_kits/playbook/pb_background/docs/example.yml +15 -0
  21. data/app/pb_kits/playbook/pb_background/docs/index.js +6 -0
  22. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  23. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  24. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  25. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  26. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  27. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  28. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  29. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  30. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  31. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  32. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  33. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  34. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  35. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  36. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  37. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  38. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  39. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  40. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  41. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  42. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  43. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  44. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  45. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  46. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  47. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  48. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  49. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  50. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  51. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  52. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -1
  53. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +1 -1
  54. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  56. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  57. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +2 -2
  58. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  59. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  60. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  61. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  62. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +2 -0
  63. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +19 -0
  64. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +7 -1
  65. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +10 -1
  66. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +2 -0
  67. data/app/pb_kits/playbook/vendor.js +0 -3
  68. data/lib/playbook/version.rb +2 -1
  69. metadata +42 -22
  70. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +0 -9
  71. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +0 -134
  72. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +0 -17
  73. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_content.html.erb +0 -7
  74. data/app/pb_kits/playbook/pb_collapsible/child_kits/_collapsible_main.html.erb +0 -16
  75. data/app/pb_kits/playbook/pb_collapsible/collapsible.rb +0 -15
  76. data/app/pb_kits/playbook/pb_collapsible/collapsible_content.rb +0 -21
  77. data/app/pb_kits/playbook/pb_collapsible/collapsible_main.rb +0 -24
  78. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +0 -10
  79. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.jsx +0 -17
  80. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +0 -10
  81. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +0 -17
  82. data/app/pb_kits/playbook/pb_collapsible/docs/example.yml +0 -9
  83. data/app/pb_kits/playbook/pb_collapsible/docs/index.js +0 -2
  84. data/app/pb_kits/playbook/pb_collapsible/index.js +0 -82
  85. data/app/pb_kits/playbook/pb_collapsible/useToggler.js +0 -10
@@ -0,0 +1 @@
1
+ Date Time is a composite kit that leverages the [Date](/kits/date) and [Time](/kits/time) kits. The Date Time kit is affected by time zones and defaults to "America/New_York".
@@ -0,0 +1,11 @@
1
+ examples:
2
+
3
+ rails:
4
+ - date_time_default: Default
5
+ - date_time_align: Alignment
6
+ - date_time_size: Size
7
+
8
+ react:
9
+ - date_time_default: Default
10
+ - date_time_align: Alignment
11
+ - date_time_size: Size
@@ -0,0 +1,3 @@
1
+ export { default as DateTimeDefault } from './_date_time_default.jsx'
2
+ export { default as DateTimeAlign } from './_date_time_align.jsx'
3
+ export { default as DateTimeSize } from './_date_time_size.jsx'
@@ -13,7 +13,7 @@ type FlexProps = {
13
13
  orientation?: "row" | "column",
14
14
  spacing?: "around" | "between" | "evenly" | "none",
15
15
  reverse?: boolean,
16
- vertical?: "top" | "center" | "bottom" | "stretch",
16
+ vertical?: "top" | "center" | "bottom" | "stretch" | "baseline",
17
17
  wrap?: boolean,
18
18
  }
19
19
 
@@ -71,6 +71,10 @@
71
71
  align-items: stretch;
72
72
  }
73
73
 
74
+ &[class*=align_items_baseline] {
75
+ align-items: baseline;
76
+ }
77
+
74
78
  // Spacing
75
79
  &[class*=spacing_around] {
76
80
  justify-content: space-around;
@@ -26,7 +26,7 @@ module Playbook
26
26
  default: false
27
27
 
28
28
  prop :vertical, type: Playbook::Props::Enum,
29
- values: %w[top center bottom stretch],
29
+ values: %w[top center bottom stretch baseline],
30
30
  default: "top"
31
31
 
32
32
  prop :wrap, type: Playbook::Props::Boolean,
@@ -14,6 +14,7 @@
14
14
  %>
15
15
 
16
16
  <%= pb_rails("form", props: { form_system_options: { scope: :example, method: :get } }) do |form| %>
17
+ <%= form.typeahead :example_user, props: { data: { typeahead_example1: true, user: {} }, placeholder: "Search for a user" } %>
17
18
  <%= form.text_field :example_text_field, props: { label: true } %>
18
19
  <%= form.telephone_field :example_phone_field, props: { label: true } %>
19
20
  <%= form.email_field :example_email_field, props: { label: true } %>
@@ -33,10 +34,60 @@
33
34
  name: "checkbox-name",
34
35
  class: "checkbox-class"
35
36
  %>
36
- <%= form.date_picker :example_date_picker_1, props: { default_date: "blank", label: true } %>
37
+ <%= form.date_picker :example_date_picker_1, props: { label: true } %>
37
38
 
38
39
  <%= form.actions do |action| %>
39
40
  <%= action.submit %>
40
41
  <%= action.button props: { type: "reset", text: "Cancel", variant: "secondary" } %>
41
42
  <% end %>
42
43
  <% end %>
44
+
45
+ <!-- form.typeahead user results example template -->
46
+ <template data-typeahead-example-result-option>
47
+ <%= pb_rails("user", props: {
48
+ name: tag(:slot, name: "name"),
49
+ orientation: "horizontal",
50
+ align: "left",
51
+ avatar_url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGP6zwAAAgcBApocMXEAAAAASUVORK5CYII=",
52
+ avatar: true
53
+ }) %>
54
+ </template>
55
+
56
+ <!-- form.typeahead JS example implementation -->
57
+ <%= javascript_tag defer: "defer" do %>
58
+ document.addEventListener("pb-typeahead-kit-search", function(event) {
59
+ if (!event.target.dataset || !event.target.dataset.typeaheadExample1) return;
60
+
61
+ fetch(`https://api.github.com/search/users?q=${encodeURIComponent(event.detail.searchingFor)}`)
62
+ .then(response => response.json())
63
+ .then((result) => {
64
+ const resultOptionTemplate = document.querySelector("[data-typeahead-example-result-option]")
65
+
66
+ event.detail.setResults((result.items || []).map((user) => {
67
+ const wrapper = resultOptionTemplate.content.cloneNode(true)
68
+ wrapper.children[0].dataset.user = JSON.stringify(user)
69
+ wrapper.querySelector('slot[name="name"]').replaceWith(user.login)
70
+ wrapper.querySelector('img').dataset.src = user.avatar_url
71
+ return wrapper
72
+ }))
73
+ })
74
+ })
75
+
76
+
77
+ document.addEventListener("pb-typeahead-kit-result-option-selected", function(event) {
78
+ if (!event.target.dataset.typeaheadExample1) return;
79
+
80
+ const selectedUserJSON = event.detail.selected.firstElementChild.dataset.user
81
+ const selectedUserData = JSON.parse(selectedUserJSON)
82
+
83
+ // set the input field's value
84
+ event.target.querySelector('input[name=example_user]').value = selectedUserData.login
85
+
86
+ // log the selected option's dataset
87
+ console.log('The selected user data:')
88
+ console.dir(selectedUserData)
89
+
90
+ // do even more with the data later - TBD
91
+ event.target.dataset.user = selectedUserJSON
92
+ })
93
+ <% end %>
@@ -28,7 +28,7 @@
28
28
  <%= form.select :example_select, [ ["Yes", 1], ["No", 2] ], props: { label: true, blank_selection: "Select One...", required: true } %>
29
29
  <%= form.collection_select :example_collection_select, example_collection, :value, :name, props: { label: true, blank_selection: "Select One...", required: true } %>
30
30
  <%= form.check_box :example_checkbox, props: { text: "Example Checkbox", label: true, required: true } %>
31
- <%= form.date_picker :example_date_picker_2, props: { default_date: 'blank', label: true, required: true } %>
31
+ <%= form.date_picker :example_date_picker_2, props: { label: true, required: true } %>
32
32
 
33
33
  <%= form.actions do |action| %>
34
34
  <%= action.submit %>
@@ -52,7 +52,7 @@
52
52
  <%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { label: true } %>
53
53
  <%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { label: true } %>
54
54
  <%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true } %>
55
- <%= form.date_picker :example_date_picker_field_1, props: { default_date: 'blank', label: true } %>
55
+ <%= form.date_picker :example_date_picker_field_1, props: { label: true } %>
56
56
 
57
57
  <%= form.actions do |action| %>
58
58
  <%= action.submit %>
@@ -52,7 +52,7 @@
52
52
  <%= form.select :example_select_field, [["Yes", 1], ["No", 2]], props: { required: true, blank_selection: "Select One...", label: true } %>
53
53
  <%= form.collection_select :example_collection_select_field, example_collection, :value, :name, props: { required: true, blank_selection: "Select One...", label: true } %>
54
54
  <%= form.check_box :example_checkbox_field, props: { text: "Example Checkbox", label: true, required: true } %>
55
- <%= form.date_picker :example_date_picker_field_2, props: { default_date: 'blank', label: true, required: true } %>
55
+ <%= form.date_picker :example_date_picker_field_2, props: { label: true, required: true } %>
56
56
 
57
57
  <%= form.actions do |action| %>
58
58
  <%= action.submit %>
@@ -8,12 +8,30 @@ module Playbook
8
8
  prefix = @object_name
9
9
  html_attribute_name = "#{prefix}[#{name}]"
10
10
  html_id = "#{prefix}_#{name}"
11
+
11
12
  props[:label] = @template.label(@object_name, name) if props[:label] == true
13
+ props[:label] = "Date Picker" if props[:label].nil?
12
14
 
13
15
  props[:name] = html_attribute_name
14
16
  props[:picker_id] = html_id
15
17
 
16
- @template.pb_rails("date_picker", props: props)
18
+ input = text_field(
19
+ name,
20
+ autocomplete: "off",
21
+ disabled: props[:disable_input],
22
+ data: props[:input_data],
23
+ aria: props[:input_aria],
24
+ props: {
25
+ error: props[:error],
26
+ label: props[:hide_label] ? nil : props[:label],
27
+ placeholder: props[:placeholder],
28
+ required: props[:required],
29
+ }
30
+ )
31
+
32
+ @template.pb_rails("date_picker", props: props) do
33
+ input
34
+ end
17
35
  end
18
36
  end
19
37
  end
@@ -38,7 +38,7 @@ module Playbook
38
38
  end
39
39
 
40
40
  def address_house_style
41
- "#{address.titleize} #{separator} #{house_style}"
41
+ "#{address&.titleize} #{separator} #{house_style}"
42
42
  end
43
43
 
44
44
  def address_house_style2
@@ -16,8 +16,8 @@ module Playbook
16
16
  values: %w[default tracker],
17
17
  default: "default"
18
18
  prop :color, type: Playbook::Props::Enum,
19
- values: %w[primary info],
20
- default: "primary"
19
+ values: %w[primary info],
20
+ default: "primary"
21
21
  def classname
22
22
  generate_classname("pb_progress_step_kit", orientation, icon_class, variant_class, color_class)
23
23
  end
@@ -1,6 +1,8 @@
1
1
  @import "../tokens/positioning";
2
2
  @import "../tokens/colors";
3
3
 
4
+ $tooltip_shadow: rgba(60, 106, 172, 0.18);
5
+
4
6
  @keyframes fadeIn {
5
7
  from {
6
8
  opacity: 0;
@@ -33,19 +35,8 @@
33
35
  &.flipped {
34
36
  margin-top: 15px;
35
37
  .arrow {
36
- top: -35%;
37
38
  border-color: transparent transparent $white transparent;
38
- }
39
- }
40
-
41
- &.react {
42
- .arrow {
43
- top: 78%;
44
- }
45
- &.flipped {
46
- .arrow {
47
- top: -8%;
48
- }
39
+ transform: rotate(180deg);
49
40
  }
50
41
  }
51
42
 
@@ -66,7 +57,7 @@
66
57
  z-index: $z_9;
67
58
  margin-bottom: $space_sm;
68
59
  background-color: $white;
69
- padding: $space_xs $space_sm $space_xs $space_sm;
60
+ padding: $space_xs $space_sm;
70
61
  box-shadow: $shadow_deeper;
71
62
  border-radius: $border_rad_light;
72
63
 
@@ -82,10 +73,6 @@
82
73
  .tooltip_tooltip{
83
74
  color: $white;
84
75
  background-color: rgba($black, $opacity_9);
85
-
86
-
87
- &.show {
88
- }
89
76
  .arrow {
90
77
  border-color: $black transparent transparent transparent;
91
78
  opacity: $opacity_9;
@@ -100,6 +87,46 @@
100
87
  }
101
88
  }
102
89
 
103
- .tooltip_tooltip.top {
104
- padding: ($space_xs - 3px) 0;
90
+ // Right
91
+ [class^="pb_tooltip_kit"] .tooltip_tooltip {
92
+
93
+ &[x-placement="right"] {
94
+ box-shadow: -8px 0 28px 0 $tooltip_shadow;
95
+ margin: 0 0 0 $space_sm;
96
+ .arrow {
97
+ left: -#{$space_xs};
98
+ margin-bottom: 0;
99
+ transform: rotate(90deg);
100
+ }
101
+ &.flipped .arrow {
102
+ transform: rotate(270deg);
103
+ }
104
+ }
105
+
106
+ &[x-placement="bottom"] {
107
+ box-shadow: 0 -12px 28px 0 $tooltip_shadow;
108
+ margin: $space_sm 0 0 0;
109
+ .arrow {
110
+ top: -18px;
111
+ margin-bottom: 0;
112
+ transform: rotate(180deg);
113
+ }
114
+ &.flipped .arrow {
115
+ transform: rotate(0deg);
116
+ }
117
+ }
118
+
119
+ &[x-placement="left"] {
120
+ box-shadow: 8px 0 28px 0 $tooltip_shadow;
121
+ margin: 0 $space_sm 0 0;
122
+ .arrow {
123
+ margin-bottom: 0;
124
+ right: -18px;
125
+ left: auto;
126
+ transform: rotate(270deg);
127
+ }
128
+ &.flipped .arrow {
129
+ transform: rotate(90deg);
130
+ }
131
+ }
105
132
  }
@@ -1,10 +1,46 @@
1
- <span id='regular-tooltip-2'>Hover over me.</span>
2
-
3
- <%= pb_rails("tooltip", props: {
4
- trigger_element_id: "regular-tooltip-2",
5
- tooltip_id: "tooltip-2",
6
- position: 'top',
7
- dark: true,
8
- }) do %>
9
- Whoa. I'm a tooltip.
10
- <% end %>
1
+ <%= pb_rails("flex", props: { horizontal: "center", orientation: "column" }) do %>
2
+ <%= pb_rails("flex/flex_item") do %>
3
+ <span id='regular-tooltip-1'>Hover here (Top)</span>
4
+
5
+ <%= pb_rails("tooltip", props: {
6
+ trigger_element_id: "regular-tooltip-1",
7
+ tooltip_id: "tooltip-1",
8
+ position: 'top'
9
+ }) do %>
10
+ Whoa. I'm a tooltip.
11
+ <% end %>
12
+ <% end %>
13
+
14
+ <%= pb_rails("flex/flex_item", props: {margin_top: "md"}) do %>
15
+ <span id='regular-tooltip-2'>Hover here (Bottom)</span>
16
+ <%= pb_rails("tooltip", props: {
17
+ trigger_element_id: "regular-tooltip-2",
18
+ tooltip_id: "tooltip-2",
19
+ position: 'bottom'
20
+ }) do %>
21
+ Whoa. I'm a tooltip.
22
+ <% end %>
23
+ <% end %>
24
+
25
+ <%= pb_rails("flex/flex_item", props: {margin_top: "md"}) do %>
26
+ <span id='regular-tooltip-3'>Hover here (Right)</span>
27
+ <%= pb_rails("tooltip", props: {
28
+ trigger_element_id: "regular-tooltip-3",
29
+ tooltip_id: "tooltip-3",
30
+ position: 'right'
31
+ }) do %>
32
+ Whoa. I'm a tooltip.
33
+ <% end %>
34
+ <% end %>
35
+
36
+ <%= pb_rails("flex/flex_item", props: {margin_top: "md"}) do %>
37
+ <span id='regular-tooltip-4'>Hover here (Left)</span>
38
+ <%= pb_rails("tooltip", props: {
39
+ trigger_element_id: "regular-tooltip-4",
40
+ tooltip_id: "tooltip-4",
41
+ position: 'left'
42
+ }) do %>
43
+ Whoa. I'm a tooltip.
44
+ <% end %>
45
+ <% end %>
46
+ <% end %>
@@ -1,9 +1,9 @@
1
- <span id='regular-tooltip-1'>I am a white tooltip.</span>
1
+ <span id='regular-tooltip-5'>I am a white tooltip.</span>
2
2
 
3
3
  <%= pb_rails("tooltip", props: {
4
- trigger_element_id: "regular-tooltip-1",
5
- tooltip_id: "tooltip-1",
4
+ trigger_element_id: "regular-tooltip-5",
5
+ tooltip_id: "tooltip-5",
6
6
  position: 'top'
7
7
  }) do %>
8
8
  Whoa. I'm a white tooltip.
9
- <% end %>
9
+ <% end %>
@@ -10,7 +10,7 @@ module Playbook
10
10
  prop :trigger_element_id
11
11
  prop :tooltip_id
12
12
  prop :dark, type: Playbook::Props::Boolean,
13
- default: false
13
+ default: false
14
14
 
15
15
  def classname
16
16
  generate_classname("pb_tooltip_kit", dark_class)
@@ -25,7 +25,8 @@ module Playbook
25
25
  )
26
26
  end
27
27
 
28
- private
28
+ private
29
+
29
30
  def dark_class
30
31
  dark ? "dark" : nil
31
32
  end
@@ -6,6 +6,7 @@ import AsyncSelect from 'react-select/async'
6
6
  import { get } from 'lodash'
7
7
 
8
8
  import Control from './components/Control'
9
+ import ClearIndicator from './components/ClearIndicator'
9
10
  import IndicatorsContainer from './components/IndicatorsContainer'
10
11
  import MenuList from './components/MenuList'
11
12
  import MultiValue from './components/MultiValue'
@@ -40,6 +41,7 @@ const Typeahead = (props: Props) => {
40
41
  defaultOptions: true,
41
42
  components: {
42
43
  Control,
44
+ ClearIndicator,
43
45
  IndicatorsContainer,
44
46
  IndicatorSeparator: null,
45
47
  MenuList,
@@ -0,0 +1,19 @@
1
+ /* @flow */
2
+
3
+ import React, { useEffect } from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const ClearContainer = (props: any) => {
7
+ useEffect(() => {
8
+ document.addEventListener('pb-typeahead-kit:clear', props.clearValue)
9
+ }, true)
10
+
11
+ return (
12
+ <components.ClearIndicator
13
+ className="clear_indicator"
14
+ {...props}
15
+ />
16
+ )
17
+ }
18
+
19
+ export default ClearContainer
@@ -7,7 +7,9 @@
7
7
  ]
8
8
  %>
9
9
 
10
- <%= pb_rails("typeahead", props: { options: options, label: "Colors", name: :foo, pills: true }) %>
10
+ <%= pb_rails("typeahead", props: { default_options: [options.first], options: options, label: "Colors", name: :foo, pills: true }) %>
11
+
12
+ <%= pb_rails("button", props: {id: "clear-pills", text: "Clear All Options", variant: "secondary"}) %>
11
13
 
12
14
  <!-- This section is an example of the available JavaScript event hooks -->
13
15
  <%= javascript_tag defer: "defer" do %>
@@ -22,4 +24,8 @@
22
24
  document.addEventListener("pb-typeahead-kit-result-clear", function() {
23
25
  console.log('All options cleared')
24
26
  })
27
+
28
+ document.querySelector('#clear-pills').addEventListener('click', function() {
29
+ document.dispatchEvent(new CustomEvent('pb-typeahead-kit:clear'))
30
+ })
25
31
  <% end %>