playbook_ui 7.0.0.pre.alpha5 → 7.0.0.pre.alpha10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -4
  3. data/app/pb_kits/playbook/_playbook.scss +1 -0
  4. data/app/pb_kits/playbook/data/menu.yml +1 -0
  5. data/app/pb_kits/playbook/index.js +3 -0
  6. data/app/pb_kits/playbook/pb_body/_body.jsx +1 -1
  7. data/app/pb_kits/playbook/pb_body/_body.scss +17 -1
  8. data/app/pb_kits/playbook/pb_body/body.rb +1 -1
  9. data/app/pb_kits/playbook/pb_button/_button.jsx +1 -0
  10. data/app/pb_kits/playbook/pb_button/_button_mixins.scss +32 -18
  11. data/app/pb_kits/playbook/pb_button/docs/_button_default.jsx +3 -7
  12. data/app/pb_kits/playbook/pb_button/docs/_button_default_dark.jsx +3 -0
  13. data/app/pb_kits/playbook/pb_button/docs/_button_link.jsx +2 -0
  14. data/app/pb_kits/playbook/pb_button/docs/_button_loading.jsx +2 -0
  15. data/app/pb_kits/playbook/pb_button_toolbar/_button_toolbar.scss +16 -8
  16. data/app/pb_kits/playbook/pb_card/_card_mixin.scss +1 -0
  17. data/app/pb_kits/playbook/pb_checkbox/_checkbox.scss +12 -6
  18. data/app/pb_kits/playbook/pb_circle_icon_button/docs/_circle_icon_button_link.html.erb +2 -1
  19. data/app/pb_kits/playbook/pb_date/_date.html.erb +8 -32
  20. data/app/pb_kits/playbook/pb_date/_date.jsx +67 -76
  21. data/app/pb_kits/playbook/pb_date/_date.scss +0 -25
  22. data/app/pb_kits/playbook/pb_date/date.rb +10 -18
  23. data/app/pb_kits/playbook/pb_date/docs/_date_default.html.erb +17 -2
  24. data/app/pb_kits/playbook/pb_date/docs/_date_default.jsx +15 -5
  25. data/app/pb_kits/playbook/pb_date/docs/example.yml +0 -4
  26. data/app/pb_kits/playbook/pb_date/docs/index.js +0 -2
  27. data/app/pb_kits/playbook/pb_date_picker/_date_picker.html.erb +39 -0
  28. data/app/pb_kits/playbook/pb_date_picker/_date_picker.jsx +149 -0
  29. data/app/pb_kits/playbook/pb_date_picker/_date_picker.scss +33 -0
  30. data/app/pb_kits/playbook/pb_date_picker/date_picker.rb +85 -0
  31. data/app/pb_kits/playbook/pb_date_picker/date_picker_helper.js +165 -0
  32. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.html.erb +4 -0
  33. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.jsx +13 -0
  34. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_allow_input.md +1 -0
  35. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.html.erb +4 -0
  36. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_dark.jsx +13 -0
  37. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.html.erb +1 -0
  38. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default.jsx +12 -0
  39. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.html.erb +24 -0
  40. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_default_date.jsx +30 -0
  41. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.html.erb +43 -0
  42. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_disabled.jsx +48 -0
  43. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.html.erb +4 -0
  44. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_error.jsx +13 -0
  45. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.html.erb +19 -0
  46. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.jsx +25 -0
  47. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_format.md +1 -0
  48. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hide_icon.html.erb +4 -0
  49. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hide_icon.jsx +13 -0
  50. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.html.erb +37 -0
  51. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.jsx +37 -0
  52. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_hooks.md +1 -0
  53. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.html.erb +26 -0
  54. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.jsx +32 -0
  55. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_input.md +3 -0
  56. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.html.erb +9 -0
  57. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.jsx +17 -0
  58. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_label.md +1 -0
  59. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.html.erb +14 -0
  60. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_min_max.jsx +22 -0
  61. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.html.erb +4 -0
  62. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_range.jsx +13 -0
  63. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.html.erb +7 -0
  64. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.jsx +16 -0
  65. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_year_range.md +1 -0
  66. data/app/pb_kits/playbook/pb_date_picker/docs/_description.md +7 -0
  67. data/app/pb_kits/playbook/pb_date_picker/docs/example.yml +35 -0
  68. data/app/pb_kits/playbook/pb_date_picker/docs/index.js +14 -0
  69. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_calendar_input_icon.scss +33 -0
  70. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_day_styles.scss +53 -0
  71. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_flatpickr_styles.scss +785 -0
  72. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_header_styles.scss +108 -0
  73. data/app/pb_kits/playbook/pb_date_picker/sass_partials/_overrides.scss +44 -0
  74. data/app/pb_kits/playbook/pb_distribution_bar/distribution_bar.rb +7 -0
  75. data/app/pb_kits/playbook/pb_file_upload/_file_upload.jsx +1 -1
  76. data/app/pb_kits/playbook/pb_filter/_filter.scss +1 -1
  77. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +1 -0
  78. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -0
  79. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form.html.erb +2 -0
  80. data/app/pb_kits/playbook/pb_form/docs/_form_simple_form_validate.html.erb +2 -0
  81. data/app/pb_kits/playbook/pb_form/form_builder.rb +1 -0
  82. data/app/pb_kits/playbook/pb_form/form_builder/date_picker_field.rb +20 -0
  83. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +5 -2
  84. data/app/pb_kits/playbook/pb_icon/docs/_icon_default_dark.html.erb +3 -1
  85. data/app/pb_kits/playbook/pb_icon/docs/_icon_default_dark.jsx +7 -5
  86. data/app/pb_kits/playbook/pb_legend/_legend.html.erb +11 -1
  87. data/app/pb_kits/playbook/pb_nav/_horizontal_nav.scss +6 -4
  88. data/app/pb_kits/playbook/pb_nav/_nav.jsx +7 -2
  89. data/app/pb_kits/playbook/pb_nav/_vertical_nav.scss +18 -14
  90. data/app/pb_kits/playbook/pb_person_contact/docs/_person_contact_with_wrong_numbers.jsx +1 -1
  91. data/app/pb_kits/playbook/pb_progress_step/progress_step.rb +2 -2
  92. data/app/pb_kits/playbook/pb_progress_step/progress_step_item.rb +0 -1
  93. data/app/pb_kits/playbook/pb_radio/_radio.scss +9 -4
  94. data/app/pb_kits/playbook/pb_select/_select.scss +8 -4
  95. data/app/pb_kits/playbook/pb_selectable_card/_selectable_card.scss +6 -3
  96. data/app/pb_kits/playbook/pb_selectable_card_icon/_selectable_card_icon.jsx +9 -5
  97. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.jsx +9 -5
  98. data/app/pb_kits/playbook/pb_selectable_icon/_selectable_icon.scss +35 -37
  99. data/app/pb_kits/playbook/pb_table/styles/_hover.scss +15 -12
  100. data/app/pb_kits/playbook/pb_table/styles/_mobile.scss +6 -4
  101. data/app/pb_kits/playbook/pb_table/styles/_table-dark.scss +6 -4
  102. data/app/pb_kits/playbook/pb_table/table.rb +3 -3
  103. data/app/pb_kits/playbook/pb_text_input/_text_input.html.erb +1 -0
  104. data/app/pb_kits/playbook/pb_text_input/_text_input.jsx +21 -17
  105. data/app/pb_kits/playbook/pb_text_input/_text_input.scss +17 -8
  106. data/app/pb_kits/playbook/pb_text_input/text_input.rb +2 -0
  107. data/app/pb_kits/playbook/pb_time/_time.html.erb +23 -17
  108. data/app/pb_kits/playbook/pb_time/_time.jsx +20 -11
  109. data/app/pb_kits/playbook/pb_time/_time.scss +16 -8
  110. data/app/pb_kits/playbook/pb_time/docs/_time_align.html.erb +18 -0
  111. data/app/pb_kits/playbook/pb_time/docs/_time_align.jsx +3 -3
  112. data/app/pb_kits/playbook/pb_time/docs/_time_dark.html.erb +70 -0
  113. data/app/pb_kits/playbook/pb_time/docs/_time_dark.jsx +1 -6
  114. data/app/pb_kits/playbook/pb_time/docs/_time_default.html.erb +47 -3
  115. data/app/pb_kits/playbook/pb_time/docs/_time_default.jsx +33 -4
  116. data/app/pb_kits/playbook/pb_time/docs/_time_sizes.html.erb +11 -0
  117. data/app/pb_kits/playbook/pb_time/docs/_time_sizes.jsx +19 -0
  118. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.html.erb +2 -1
  119. data/app/pb_kits/playbook/pb_time/docs/_time_timestamp.jsx +0 -7
  120. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.html.erb +42 -0
  121. data/app/pb_kits/playbook/pb_time/docs/_time_timezone.jsx +12 -14
  122. data/app/pb_kits/playbook/pb_time/docs/example.yml +7 -2
  123. data/app/pb_kits/playbook/pb_time/docs/index.js +1 -0
  124. data/app/pb_kits/playbook/pb_time/time.rb +14 -2
  125. data/app/pb_kits/playbook/pb_typeahead/_typeahead.jsx +60 -0
  126. data/app/pb_kits/playbook/pb_typeahead/_typeahead.scss +24 -5
  127. data/app/pb_kits/playbook/pb_typeahead/components/Control.jsx +30 -0
  128. data/app/pb_kits/playbook/pb_typeahead/components/IndicatorsContainer.jsx +13 -0
  129. data/app/pb_kits/playbook/pb_typeahead/components/MenuList.jsx +12 -0
  130. data/app/pb_kits/playbook/pb_typeahead/components/MultiValue.jsx +51 -0
  131. data/app/pb_kits/playbook/pb_typeahead/components/Option.jsx +34 -0
  132. data/app/pb_kits/playbook/pb_typeahead/components/Placeholder.jsx +13 -0
  133. data/app/pb_kits/playbook/pb_typeahead/components/ValueContainer.jsx +13 -0
  134. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_default.jsx +22 -0
  135. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills.jsx +29 -0
  136. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.jsx +84 -0
  137. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_summary.jsx +45 -0
  138. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_users.jsx +101 -0
  139. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_summary.jsx +27 -0
  140. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +8 -2
  141. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +4 -0
  142. data/app/pb_kits/playbook/tokens/_typography.scss +4 -4
  143. data/app/pb_kits/playbook/vendor.js +6 -0
  144. data/lib/playbook/version.rb +1 -1
  145. metadata +70 -8
  146. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.html.erb +0 -24
  147. data/app/pb_kits/playbook/pb_date/docs/_date_alignment.jsx +0 -32
  148. data/app/pb_kits/playbook/pb_date/docs/_date_default_react.jsx +0 -20
  149. data/app/pb_kits/playbook/pb_date/docs/_date_default_react.md +0 -3
  150. data/app/pb_kits/playbook/pb_date/docs/_date_variants.html.erb +0 -27
  151. data/app/pb_kits/playbook/pb_date/docs/_date_variants.jsx +0 -39
@@ -11,6 +11,7 @@
11
11
  <br>
12
12
 
13
13
  <%= pb_rails("time", props: {
14
+ show_timezone: true,
14
15
  time: DateTime.now,
15
- timezone: "America/Chicago"
16
+ timezone: "America/Chicago",
16
17
  }) %>
@@ -15,13 +15,6 @@ const TimeStamp = () => {
15
15
  date={new Date().getTime()}
16
16
  size="sm"
17
17
  />
18
-
19
- <br />
20
-
21
- <Time
22
- date="2012-08-02T15:49:29Z"
23
- size="sm"
24
- />
25
18
  </div>
26
19
  )
27
20
  }
@@ -0,0 +1,42 @@
1
+ <h4>East Coast</h4>
2
+ <%= pb_rails("time", props: {
3
+ show_timezone: true,
4
+ time: Time.now,
5
+ timezone: "America/New_York"
6
+ }) %>
7
+
8
+ <br>
9
+
10
+ <h4>Central</h4>
11
+ <%= pb_rails("time", props: {
12
+ show_timezone: true,
13
+ time: Time.now,
14
+ timezone: "America/Chicago"
15
+ }) %>
16
+
17
+ <br>
18
+
19
+ <h4>Mountain</h4>
20
+ <%= pb_rails("time", props: {
21
+ show_timezone: true,
22
+ time: Time.now,
23
+ timezone: "America/Denver"
24
+ }) %>
25
+
26
+ <br>
27
+
28
+ <h4>West Coast</h4>
29
+ <%= pb_rails("time", props: {
30
+ show_timezone: true,
31
+ time: Time.now,
32
+ timezone: "America/Los_Angeles"
33
+ }) %>
34
+
35
+ <br>
36
+
37
+ <h4>Toyko, Japan</h4>
38
+ <%= pb_rails("time", props: {
39
+ show_timezone: true,
40
+ time: Time.now,
41
+ timezone: "Asia/Tokyo",
42
+ }) %>
@@ -13,42 +13,40 @@ const TimeTimeZone = () => {
13
13
  <div>
14
14
  <h4>{'East Coast'}</h4>
15
15
  <Time
16
- date={new Date().toLocaleString('en-US', { timeZone: zones.east })}
17
- size="lg"
16
+ date={new Date()}
17
+ size="md"
18
18
  timeZone={zones.east}
19
19
  />
20
+
20
21
  <br />
21
- <br />
22
+
22
23
  <h4>{'Central'}</h4>
23
24
  <Time
24
- date={new Date().toLocaleString('en-US', { timeZone: zones.central })}
25
- size="sm"
25
+ date={new Date()}
26
26
  timeZone={zones.central}
27
27
  />
28
+
28
29
  <br />
29
- <br />
30
+
30
31
  <h4>{'Mountain'}</h4>
31
32
  <Time
32
- date={new Date().toLocaleString('en-US', { timeZone: zones.mountain })}
33
- size="sm"
33
+ date={new Date()}
34
34
  timeZone={zones.mountain}
35
35
  />
36
36
 
37
37
  <br />
38
- <br />
38
+
39
39
  <h4>{'West Coast'}</h4>
40
40
  <Time
41
- date={new Date().toLocaleString('en-US', { timeZone: zones.west })}
42
- size="sm"
41
+ date={new Date()}
43
42
  timeZone={zones.west}
44
43
  />
45
44
 
46
45
  <br />
47
- <br />
46
+
48
47
  <h4>{'Tokyo, Japan'}</h4>
49
48
  <Time
50
- date={new Date('2012-08-02T09:49:29Z').toLocaleString('en-US', { timeZone: zones.asia })}
51
- size="sm"
49
+ date={new Date()}
52
50
  timeZone={zones.asia}
53
51
  />
54
52
 
@@ -1,11 +1,16 @@
1
1
  examples:
2
2
 
3
3
  rails:
4
- - time_default: Sizes
4
+ - time_default: Default
5
+ - time_sizes: Sizes
5
6
  - time_timestamp: Timestamp Values
7
+ - time_timezone: Handling Timezones
8
+ - time_align: Alignment
9
+ - time_dark: Dark
6
10
 
7
11
  react:
8
- - time_default: Sizes
12
+ - time_default: Default
13
+ - time_sizes: Sizes
9
14
  - time_timestamp: Timestamp Values
10
15
  - time_timezone: Handling Timezones
11
16
  - time_align: Alignment
@@ -1,4 +1,5 @@
1
1
  export { default as TimeDefault } from './_time_default.jsx'
2
+ export { default as TimeSizes } from './_time_sizes.jsx'
2
3
  export { default as TimeTimestamp } from './_time_timestamp.jsx'
3
4
  export { default as TimeAlign } from './_time_align.jsx'
4
5
  export { default as TimeDark } from './_time_dark.jsx'
@@ -9,12 +9,24 @@ module Playbook
9
9
 
10
10
  prop :time, required: true
11
11
  prop :size, type: Playbook::Props::Enum,
12
- values: %w[lg sm xs],
12
+ values: %w[xs sm md lg],
13
13
  default: "sm"
14
+ prop :align, type: Playbook::Props::Enum,
15
+ values: %w[left center right],
16
+ default: "left"
14
17
  prop :timezone, default: "America/New_York"
18
+ prop :show_icon, type: Playbook::Props::Boolean,
19
+ default: false
20
+ prop :show_timezone, type: Playbook::Props::Boolean,
21
+ default: false
15
22
 
16
23
  def classname
17
- generate_classname("pb_time_kit", size)
24
+ # convert deprecated prop values
25
+ mutated_size = size
26
+ mutated_size = "sm" if mutated_size == "xs"
27
+ mutated_size = "md" if mutated_size == "lg"
28
+
29
+ generate_classname("pb_time_kit", align, mutated_size)
18
30
  end
19
31
 
20
32
  def format_time_string
@@ -0,0 +1,60 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import Select from 'react-select'
5
+ import AsyncSelect from 'react-select/async'
6
+
7
+ import Control from './components/Control'
8
+ import IndicatorsContainer from './components/IndicatorsContainer'
9
+ import MenuList from './components/MenuList'
10
+ import MultiValue from './components/MultiValue'
11
+ import Option from './components/Option'
12
+ import Placeholder from './components/Placeholder'
13
+ import ValueContainer from './components/ValueContainer'
14
+
15
+ /**
16
+ * @typedef {object} Props
17
+ * @prop {boolean} async - whether Typeahead should fetch data from
18
+ * a remote location to populate the options
19
+ * @prop {string} label - the text for the optional typeahead input label
20
+ */
21
+
22
+ type Props = {
23
+ async?: boolean,
24
+ label?: string,
25
+ }
26
+
27
+ /**
28
+ * @constant {React.ReactComponent} Typeahead
29
+ * @param {Props} props - props as described at https://react-select.com/props
30
+ */
31
+
32
+ const Typeahead = (props: Props) => {
33
+ const selectProps = {
34
+ cacheOptions: true,
35
+ defaultOptions: true,
36
+ components: {
37
+ Control,
38
+ IndicatorsContainer,
39
+ IndicatorSeparator: null,
40
+ MenuList,
41
+ MultiValue,
42
+ Option,
43
+ Placeholder,
44
+ ValueContainer,
45
+ },
46
+ isClearable: true,
47
+ isSearchable: true,
48
+ ...props,
49
+ }
50
+
51
+ const Tag = props.async ? AsyncSelect : Select
52
+
53
+ return (
54
+ <div className="pb_typeahead_kit react-select">
55
+ <Tag {...selectProps} />
56
+ </div>
57
+ )
58
+ }
59
+
60
+ export default Typeahead
@@ -1,5 +1,7 @@
1
1
  @import "../tokens/colors";
2
2
  @import "../tokens/border_radius";
3
+ @import "../tokens/spacing";
4
+ @import "../tokens/shadows";
3
5
 
4
6
  [class^=pb_typeahead_kit] {
5
7
  .pb_typeahead_wrapper {
@@ -17,19 +19,23 @@
17
19
  }
18
20
 
19
21
  [class^=pb_text_input_kit] {
20
- .text_input_wrapper > input:first-child {
21
- padding-right: $space_xl;
22
+ .text_input_wrapper {
23
+ & > input:first-child {
24
+ padding-right: $space_xl;
25
+ }
22
26
  }
23
27
  }
24
28
 
25
29
  .pb_item_kit {
26
30
  padding: ($space_xs + 2) 0;
27
31
 
28
- &:hover {
29
- background-color: $bg_light;
32
+ @media (hover:hover) {
33
+ &:hover {
34
+ background-color: $bg_light;
35
+ }
30
36
  }
31
37
  }
32
-
38
+
33
39
  [class^=pb_list_kit] {
34
40
  max-height: 18em;
35
41
  overflow-y: auto;
@@ -84,4 +90,17 @@
84
90
  color: $text_dk_light;
85
91
  }
86
92
  }
93
+
94
+ &.react-select {
95
+ .text_input {
96
+ display: inherit;
97
+ padding: 3px 4px;
98
+ &_indicators {
99
+ max-width: 70px;
100
+ }
101
+ &_value_container {
102
+ flex-grow: 1;
103
+ }
104
+ }
105
+ }
87
106
  }
@@ -0,0 +1,30 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ import {
7
+ Flex,
8
+ TextInput,
9
+ } from '../..'
10
+
11
+ type Props = {
12
+ selectProps: any,
13
+ }
14
+
15
+ const TypeaheadControl = (props: Props) => (
16
+ <div className="pb_typeahead_wrapper">
17
+ <TextInput
18
+ label={props.selectProps.label}
19
+ >
20
+ <Flex>
21
+ <components.Control
22
+ className="text_input"
23
+ {...props}
24
+ />
25
+ </Flex>
26
+ </TextInput>
27
+ </div>
28
+ )
29
+
30
+ export default TypeaheadControl
@@ -0,0 +1,13 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const IndicatorsContainer = (props: any) => (
7
+ <components.IndicatorsContainer
8
+ className="text_input_indicators"
9
+ {...props}
10
+ />
11
+ )
12
+
13
+ export default IndicatorsContainer
@@ -0,0 +1,12 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const MenuList = (props: any) => (
7
+ <components.MenuList {...props}>
8
+ {props.children}
9
+ </components.MenuList>
10
+ )
11
+
12
+ export default MenuList
@@ -0,0 +1,51 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ import { FormPill } from '../../'
7
+
8
+ type Props = {
9
+ data: object,
10
+ multiValueTemplate: any,
11
+ removeProps: any,
12
+ selectProps: any,
13
+ }
14
+
15
+ const MultiValue = (props: Props) => {
16
+ const {
17
+ data,
18
+ removeProps,
19
+ selectProps,
20
+ } = props
21
+
22
+ const handleOnClick = () => {
23
+ if (selectProps.onMultiValueClick) selectProps.onMultiValueClick(data)
24
+ removeProps.onClick()
25
+ }
26
+ const { imageUrl, label } = data
27
+
28
+ return (
29
+ <components.MultiValueContainer
30
+ className="text_input_multivalue_container"
31
+ {...props}
32
+ >
33
+ <If condition={imageUrl}>
34
+ <FormPill
35
+ avatarUrl={imageUrl}
36
+ marginRight="xs"
37
+ name={label}
38
+ onClick={handleOnClick}
39
+ />
40
+ <Else />
41
+ <FormPill
42
+ marginRight="xs"
43
+ onClick={handleOnClick}
44
+ text={label}
45
+ />
46
+ </If>
47
+ </components.MultiValueContainer>
48
+ )
49
+ }
50
+
51
+ export default MultiValue
@@ -0,0 +1,34 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ import {
7
+ User,
8
+ } from '../../'
9
+
10
+ const Option = (props: any) => {
11
+ const {
12
+ imageUrl,
13
+ label,
14
+ } = props.data
15
+ return (
16
+ <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>
30
+ </components.Option>
31
+ )
32
+ }
33
+
34
+ export default Option
@@ -0,0 +1,13 @@
1
+ /* @flow */
2
+
3
+ import React from 'react'
4
+ import { components } from 'react-select'
5
+
6
+ const Placeholder = (props: any) => (
7
+ <components.IndicatorsContainer
8
+ className="placeholder"
9
+ {...props}
10
+ />
11
+ )
12
+
13
+ export default Placeholder