playbook_ui 7.3.0.pre.alpha12 → 7.4.0.pre.alpha5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/github-brands.svg +1 -0
  3. data/app/assets/images/landing-background.svg +36 -0
  4. data/app/assets/images/landing-image.svg +203 -0
  5. data/app/assets/images/{pb.logo.svg → pb-logo.svg} +2 -2
  6. data/app/assets/images/pb-white-logo.svg +15 -0
  7. data/app/pb_kits/playbook/_playbook.scss +3 -0
  8. data/app/pb_kits/playbook/data/menu.yml +2 -1
  9. data/app/pb_kits/playbook/index.js +2 -0
  10. data/app/pb_kits/playbook/pb_background/_background.html.erb +14 -0
  11. data/app/pb_kits/playbook/pb_background/_background.jsx +63 -0
  12. data/app/pb_kits/playbook/pb_background/_background.scss +35 -0
  13. data/app/pb_kits/playbook/pb_background/background.rb +35 -0
  14. data/app/pb_kits/playbook/pb_background/docs/_background_dark.html.erb +3 -0
  15. data/app/pb_kits/playbook/pb_background/docs/_background_dark.jsx +13 -0
  16. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.html.erb +3 -0
  17. data/app/pb_kits/playbook/pb_background/docs/_background_gradient.jsx +13 -0
  18. data/app/pb_kits/playbook/pb_background/docs/_background_image.html.erb +13 -0
  19. data/app/pb_kits/playbook/pb_background/docs/_background_image.jsx +30 -0
  20. data/app/pb_kits/playbook/pb_background/docs/_background_light.html.erb +3 -0
  21. data/app/pb_kits/playbook/pb_background/docs/_background_light.jsx +13 -0
  22. data/app/pb_kits/playbook/pb_background/docs/_background_white.html.erb +3 -0
  23. data/app/pb_kits/playbook/pb_background/docs/_background_white.jsx +14 -0
  24. data/app/pb_kits/playbook/pb_background/docs/_description.md +1 -0
  25. data/app/pb_kits/playbook/pb_background/docs/example.yml +15 -0
  26. data/app/pb_kits/playbook/pb_background/docs/index.js +6 -0
  27. data/app/pb_kits/playbook/pb_collapsible/_collapsible.html.erb +1 -1
  28. data/app/pb_kits/playbook/pb_collapsible/_collapsible.jsx +50 -107
  29. data/app/pb_kits/playbook/pb_collapsible/_collapsible.scss +1 -1
  30. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleContent.jsx +40 -0
  31. data/app/pb_kits/playbook/pb_collapsible/child_kits/CollapsibleMain.jsx +58 -0
  32. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_dark.html.erb +1 -1
  33. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.html.erb +1 -1
  34. data/app/pb_kits/playbook/pb_collapsible/docs/_collapsible_default.jsx +12 -10
  35. data/app/pb_kits/playbook/pb_collapsible/index.js +2 -2
  36. data/app/pb_kits/playbook/pb_date/_date.html.erb +64 -8
  37. data/app/pb_kits/playbook/pb_date/_date.jsx +115 -66
  38. data/app/pb_kits/playbook/pb_date/_date.scss +30 -0
  39. data/app/pb_kits/playbook/pb_date/date.rb +20 -9
  40. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +24 -0
  41. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +35 -0
  42. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +21 -6
  43. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +43 -12
  44. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +27 -0
  45. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +43 -0
  46. data/app/pb_kits/playbook/pb_date/docs/example.yml +4 -0
  47. data/app/pb_kits/playbook/pb_date/docs/index.js +2 -0
  48. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +19 -14
  49. data/app/pb_kits/playbook/pb_date_time/_date_time.html.erb +31 -0
  50. data/app/pb_kits/playbook/pb_date_time/_date_time.jsx +73 -0
  51. data/app/pb_kits/playbook/pb_date_time/_date_time.scss +26 -0
  52. data/app/pb_kits/playbook/pb_date_time/date_time.rb +29 -0
  53. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.html.erb +17 -0
  54. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_align.jsx +35 -0
  55. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.html.erb +20 -0
  56. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_default.jsx +38 -0
  57. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.html.erb +26 -0
  58. data/app/pb_kits/playbook/pb_date_time/docs/_date_time_size.jsx +75 -0
  59. data/app/pb_kits/playbook/pb_date_time/docs/_description.md +1 -0
  60. data/app/pb_kits/playbook/pb_date_time/docs/example.yml +11 -0
  61. data/app/pb_kits/playbook/pb_date_time/docs/index.js +3 -0
  62. data/app/pb_kits/playbook/pb_flex/_flex.jsx +1 -1
  63. data/app/pb_kits/playbook/pb_flex/_flex.scss +4 -0
  64. data/app/pb_kits/playbook/pb_flex/flex.rb +1 -1
  65. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +52 -1
  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 +1 -1
  68. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +1 -1
  69. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +19 -1
  70. data/app/pb_kits/playbook/pb_home_address_street/home_address_street.rb +1 -1
  71. data/app/pb_kits/playbook/pb_progress_step/_progress_step.jsx +3 -1
  72. data/app/pb_kits/playbook/pb_progress_step/_progress_step.scss +13 -4
  73. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.html.erb +1 -1
  74. data/app/pb_kits/playbook/pb_progress_step/_progress_step_item.jsx +5 -7
  75. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_custom_icon.html.erb +12 -0
  76. data/app/pb_kits/playbook/pb_progress_step/docs/_progress_step_tracker_click_events.jsx +48 -0
  77. data/app/pb_kits/playbook/pb_progress_step/docs/example.yml +2 -0
  78. data/app/pb_kits/playbook/pb_progress_step/docs/index.js +1 -0
  79. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +5 -3
  80. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +6 -0
  81. data/app/pb_kits/playbook/pb_timestamp/_timestamp.html.erb +13 -1
  82. data/app/pb_kits/playbook/pb_timestamp/_timestamp.jsx +96 -20
  83. data/app/pb_kits/playbook/pb_timestamp/_timestamp.scss +12 -1
  84. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.html.erb +69 -0
  85. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_align.jsx +91 -0
  86. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.html.erb +21 -1
  87. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_default.jsx +31 -4
  88. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.html.erb +14 -0
  89. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed.jsx +27 -0
  90. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.html.erb +54 -0
  91. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_elapsed_align.jsx +73 -0
  92. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.html.erb +59 -0
  93. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones.jsx +74 -0
  94. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.html.erb +177 -0
  95. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_timezones_align.jsx +209 -0
  96. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.html.erb +35 -0
  97. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated.jsx +51 -0
  98. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.html.erb +123 -0
  99. data/app/pb_kits/playbook/pb_timestamp/docs/_timestamp_updated_align.jsx +146 -0
  100. data/app/pb_kits/playbook/pb_timestamp/docs/example.yml +14 -0
  101. data/app/pb_kits/playbook/pb_timestamp/docs/index.js +7 -0
  102. data/app/pb_kits/playbook/pb_timestamp/timestamp.rb +67 -1
  103. data/app/pb_kits/playbook/pb_tooltip/_tooltip.scss +46 -19
  104. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_default.html.erb +46 -10
  105. data/app/pb_kits/playbook/pb_tooltip/docs/_tooltip_white.html.erb +4 -4
  106. data/app/pb_kits/playbook/pb_tooltip/tooltip.rb +3 -2
  107. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +14 -2
  108. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.jsx +20 -0
  109. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +8 -15
  110. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +1 -6
  111. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.html.erb +10 -4
  112. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.md +20 -4
  113. data/app/pb_kits/playbook/pb_typeahead/typeahead.rb +4 -0
  114. data/lib/playbook/version.rb +2 -1
  115. metadata +60 -6
  116. data/app/assets/images/clark.jpg +0 -0
  117. data/app/assets/images/giant.jpg +0 -0
  118. data/app/pb_kits/playbook/pb_collapsible/useToggler.js +0 -10
@@ -2,6 +2,20 @@ examples:
2
2
 
3
3
  rails:
4
4
  - timestamp_default: Default
5
+ - timestamp_align: Alignments
6
+ - timestamp_timezones: Timezones
7
+ - timestamp_timezones_align: Timezones - Alignments
8
+ - timestamp_updated: Last Updated by
9
+ - timestamp_updated_align: Last Updated by - Alignments
10
+ - timestamp_elapsed: Time Ago
11
+ - timestamp_elapsed_align: Time Ago - Alignments
5
12
 
6
13
  react:
7
14
  - timestamp_default: Default
15
+ - timestamp_align: Alignments
16
+ - timestamp_timezones: Timezones
17
+ - timestamp_timezones_align: Timezones - Alignments
18
+ - timestamp_updated: Last Updated by
19
+ - timestamp_updated_align: Last Updated by - Alignments
20
+ - timestamp_elapsed: Time Ago
21
+ - timestamp_elapsed_align: Time Ago - Alignments
@@ -1 +1,8 @@
1
1
  export { default as TimestampDefault } from './_timestamp_default.jsx'
2
+ export { default as TimestampAlign } from './_timestamp_align.jsx'
3
+ export { default as TimestampTimezones } from './_timestamp_timezones.jsx'
4
+ export { default as TimestampTimezonesAlign } from './_timestamp_timezones_align.jsx'
5
+ export { default as TimestampUpdated } from './_timestamp_updated.jsx'
6
+ export { default as TimestampUpdatedAlign } from './_timestamp_updated_align.jsx'
7
+ export { default as TimestampElapsed } from './_timestamp_elapsed.jsx'
8
+ export { default as TimestampElapsedAlign } from './_timestamp_elapsed_align.jsx'
@@ -3,14 +3,80 @@
3
3
  module Playbook
4
4
  module PbTimestamp
5
5
  class Timestamp
6
+ include ActionView::Helpers::DateHelper
6
7
  include Playbook::Props
7
8
 
8
9
  partial "pb_timestamp/timestamp"
9
10
 
10
11
  prop :text
12
+ prop :timestamp, required: true
13
+
14
+ prop :dark, type: Playbook::Props::Boolean,
15
+ default: false
16
+ prop :align, type: Playbook::Props::Enum,
17
+ values: %w[left center right],
18
+ default: "left"
19
+ prop :show_date, type: Playbook::Props::Boolean,
20
+ default: true
21
+ prop :show_timezone, type: Playbook::Props::Boolean,
22
+ default: false
23
+ prop :show_user, type: Playbook::Props::Boolean,
24
+ default: false
25
+ prop :timezone, default: "America/New_York"
26
+ prop :variant, type: Playbook::Props::Enum,
27
+ values: %w[default elapsed updated],
28
+ default: "default"
11
29
 
12
30
  def classname
13
- generate_classname("pb_timestamp_kit")
31
+ generate_classname("pb_timestamp_kit", variant_class, align)
32
+ end
33
+
34
+ def format_year_string
35
+ pb_date_time.to_year != DateTime.now.year.to_s ? ", #{pb_date_time.to_year}" : ""
36
+ end
37
+
38
+ def format_time_string
39
+ "#{pb_date_time.to_hour}:#{pb_date_time.to_minutes}#{pb_date_time.to_meridian} #{format_timezone_string}".strip
40
+ end
41
+
42
+ def format_timezone_string
43
+ timezone && show_timezone ? pb_date_time.to_timezone.to_s : ""
44
+ end
45
+
46
+ def format_date_string
47
+ "#{pb_date_time.to_month_downcase} #{pb_date_time.to_unpadded_day}#{format_year_string}"
48
+ end
49
+
50
+ def format_datetime_string
51
+ "#{format_date_string} · #{format_time_string}".html_safe
52
+ end
53
+
54
+ def format_updated_string
55
+ user_string = show_user ? " by #{text}" : ""
56
+
57
+ case variant
58
+ when "updated"
59
+ datetime_string = " on #{format_date_string} at #{format_time_string}"
60
+ when "elapsed"
61
+ datetime_string = " #{time_ago_in_words(pb_date_time.convert_to_timestamp)} ago"
62
+ end
63
+
64
+ "Last updated#{user_string}#{datetime_string}"
65
+ end
66
+
67
+ private
68
+
69
+ def pb_date_time
70
+ Playbook::PbKit::PbDateTime.new(timestamp, timezone)
71
+ end
72
+
73
+ def variant_class
74
+ case variant
75
+ when "updated"
76
+ "updated"
77
+ when "elapsed"
78
+ "elapsed"
79
+ end
14
80
  end
15
81
  end
16
82
  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,
@@ -48,6 +50,7 @@ const Typeahead = (props: Props) => {
48
50
  Placeholder,
49
51
  ValueContainer,
50
52
  },
53
+ id: 'react-select-input',
51
54
  isClearable: true,
52
55
  isSearchable: true,
53
56
  name,
@@ -58,9 +61,18 @@ const Typeahead = (props: Props) => {
58
61
 
59
62
  const Tag = props.async ? AsyncSelect : Select
60
63
 
61
- const handleOnChange = (data, { action }) => {
64
+ const handleOnChange = (data, { action, option, removedValue }) => {
65
+ if (action === 'select-option') {
66
+ if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(option)
67
+ const multiValueClearEvent = new CustomEvent(`pb-typeahead-kit-${selectProps.id}-result-option-select`, { detail: option })
68
+ document.dispatchEvent(multiValueClearEvent)
69
+ }
70
+ if (action === 'remove-value' || action === 'pop-value') {
71
+ const multiValueRemoveEvent = new CustomEvent(`pb-typeahead-kit-${selectProps.id}-result-option-remove`, { detail: removedValue })
72
+ document.dispatchEvent(multiValueRemoveEvent)
73
+ }
62
74
  if (action === 'clear') {
63
- const multiValueClearEvent = new CustomEvent('pb-typeahead-kit-result-clear')
75
+ const multiValueClearEvent = new CustomEvent(`pb-typeahead-kit-${selectProps.id}-result-clear`)
64
76
  document.dispatchEvent(multiValueClearEvent)
65
77
  }
66
78
  }
@@ -0,0 +1,20 @@
1
+ /* @flow */
2
+
3
+ import React, { useEffect } from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const ClearContainer = (props: any) => {
7
+ const { selectProps, clearValue } = props
8
+ useEffect(() => {
9
+ document.addEventListener(`pb-typeahead-kit-${selectProps.id}:clear`, clearValue)
10
+ }, true)
11
+
12
+ return (
13
+ <components.ClearIndicator
14
+ className="clear_indicator"
15
+ {...props}
16
+ />
17
+ )
18
+ }
19
+
20
+ export default ClearContainer
@@ -13,24 +13,17 @@ type Props = {
13
13
  }
14
14
 
15
15
  const MultiValue = (props: Props) => {
16
- const {
17
- data,
18
- removeProps,
19
- selectProps,
20
- } = props
16
+ const { removeProps } = props
17
+ const { imageUrl, label } = props.data
21
18
 
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)
19
+ const formPillProps = {
20
+ marginRight: 'xs',
21
+ name: label,
27
22
  }
28
23
 
29
- const handleOnClick = () => {
30
- if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(data)
31
- handleOnMultiValueRemove()
32
- removeProps.onClick()
33
- }
24
+ if (typeof imageUrl === 'string') formPillProps.avatarUrl = imageUrl
25
+
26
+ const handleOnClick = removeProps.onClick
34
27
 
35
28
  return (
36
29
  <components.MultiValueContainer
@@ -13,14 +13,9 @@ const Option = (props: any) => {
13
13
  label,
14
14
  } = props.data
15
15
 
16
- const handleOptionClicked = () => {
17
- const resultSelectedEvent = new CustomEvent('pb-typeahead-kit-result-option-select', { detail: props.data })
18
- document.dispatchEvent(resultSelectedEvent)
19
- }
20
-
21
16
  return (
22
17
  <components.Option {...props}>
23
- <div onClick={handleOptionClicked}>
18
+ <div>
24
19
  <Choose>
25
20
  <When condition={imageUrl}>
26
21
  <User
@@ -7,19 +7,25 @@
7
7
  ]
8
8
  %>
9
9
 
10
- <%= pb_rails("typeahead", props: { options: options, label: "Colors", name: :foo, pills: true }) %>
10
+ <%= pb_rails("typeahead", props: { id: "typeahead-pills-example1", 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 %>
14
- document.addEventListener("pb-typeahead-kit-result-option-select", function(event) {
16
+ document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-option-select", function(event) {
15
17
  console.log('Option selected')
16
18
  console.dir(event.detail)
17
19
  })
18
- document.addEventListener("pb-typeahead-kit-result-option-remove", function(event) {
20
+ document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-result-option-remove", function(event) {
19
21
  console.log('Option removed')
20
22
  console.dir(event.detail)
21
23
  })
22
- document.addEventListener("pb-typeahead-kit-result-clear", function() {
24
+ document.addEventListener("pb-typeahead-kit-typeahead-pills-example1-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-typeahead-pills-example1:clear'))
30
+ })
25
31
  <% end %>