playbook_ui 14.10.0.pre.alpha.PLAY1774timelinelabelstepspacing5315 → 14.10.0.pre.alpha.play1465attempt25272

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +0 -1
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.html.erb +1 -1
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_beta_subrow_headers.md +1 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +1 -1
  6. data/app/pb_kits/playbook/pb_advanced_table/index.js +8 -53
  7. data/app/pb_kits/playbook/pb_advanced_table/table_body.rb +18 -23
  8. data/app/pb_kits/playbook/pb_advanced_table/table_row.rb +0 -6
  9. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.html.erb +2 -2
  10. data/app/pb_kits/playbook/pb_advanced_table/table_subrow_header.rb +4 -6
  11. data/app/pb_kits/playbook/pb_file_upload/_file_upload.tsx +15 -24
  12. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_accept.jsx +1 -3
  13. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_custom_description.jsx +1 -4
  14. data/app/pb_kits/playbook/pb_file_upload/docs/_file_upload_max_size.jsx +1 -1
  15. data/app/pb_kits/playbook/pb_table/_table.tsx +1 -8
  16. data/app/pb_kits/playbook/pb_table/docs/example.yml +0 -2
  17. data/app/pb_kits/playbook/pb_table/docs/index.js +0 -2
  18. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_mask.jsx +0 -18
  19. data/app/pb_kits/playbook/pb_text_input/inputMask.ts +1 -22
  20. data/app/pb_kits/playbook/pb_text_input/text_input.test.js +0 -80
  21. data/app/pb_kits/playbook/pb_timeline/_timeline.scss +30 -30
  22. data/app/pb_kits/playbook/pb_timeline/_timeline.tsx +5 -5
  23. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.html.erb +5 -4
  24. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.jsx +4 -4
  25. data/app/pb_kits/playbook/pb_timeline/docs/_timeline_with_gap.md +1 -1
  26. data/app/pb_kits/playbook/pb_timeline/timeline.rb +6 -6
  27. data/app/pb_kits/playbook/pb_typeahead/_typeahead.tsx +3 -2
  28. data/app/pb_kits/playbook/pb_typeahead/components/ClearIndicator.tsx +12 -4
  29. data/app/pb_kits/playbook/pb_typeahead/components/Control.tsx +5 -1
  30. data/app/pb_kits/playbook/pb_typeahead/components/IndicatorsContainer.tsx +8 -3
  31. data/app/pb_kits/playbook/pb_typeahead/components/MenuList.tsx +6 -1
  32. data/app/pb_kits/playbook/pb_typeahead/components/Option.tsx +21 -6
  33. data/app/pb_kits/playbook/pb_typeahead/components/Placeholder.tsx +13 -6
  34. data/app/pb_kits/playbook/pb_typeahead/components/ValueContainer.tsx +7 -3
  35. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_custom_menu_list.jsx +2 -0
  36. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async.jsx +4 -2
  37. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_pills_async_custom_options.jsx +5 -5
  38. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -1
  39. data/app/pb_kits/playbook/utilities/globalProps.ts +9 -18
  40. data/dist/chunks/_typeahead-BhT5aXCY.js +22 -0
  41. data/dist/chunks/_weekday_stacked-DJOTNDSY.js +45 -0
  42. data/dist/chunks/vendor.js +1 -1
  43. data/dist/playbook-doc.js +1 -1
  44. data/dist/playbook-rails-react-bindings.js +1 -1
  45. data/dist/playbook-rails.js +1 -1
  46. data/dist/playbook.css +1 -1
  47. data/lib/playbook/classnames.rb +0 -1
  48. data/lib/playbook/spacing.rb +0 -21
  49. data/lib/playbook/version.rb +1 -1
  50. metadata +4 -5
  51. data/app/pb_kits/playbook/utilities/_gap.scss +0 -29
  52. data/dist/chunks/_typeahead-C2iCBqxQ.js +0 -36
  53. data/dist/chunks/_weekday_stacked-CWnbnW7m.js +0 -45
@@ -50,7 +50,7 @@ $gap_lg: $height_from_top + $space_lg;
50
50
  >div {
51
51
  &:last-child {
52
52
  flex-basis: auto !important;
53
- [class^=pb_timeline_item_step] {
53
+ [class=pb_timeline_item_step] {
54
54
  [class=pb_timeline_item_connector] {
55
55
  opacity: 0;
56
56
  }
@@ -66,25 +66,29 @@ $gap_lg: $height_from_top + $space_lg;
66
66
  [class*=pb_timeline_item_kit] {
67
67
  &[class*=_solid] {
68
68
  flex-basis: 100%;
69
- [class^=pb_timeline_item_step] {
69
+ [class=pb_timeline_item_left_block] {
70
+ height: 0px;
71
+ }
72
+ [class=pb_timeline_item_step] {
70
73
  @include flex_wrapper(row);
71
- align-items: center;
72
74
  margin-top: $space_xs;
73
75
  margin-bottom: $space_xs;
74
76
  [class=pb_timeline_item_connector] {
75
- @include pb_timeline_line_solid($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
77
+ @include pb_timeline_line_solid($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
76
78
  }
77
79
  }
78
80
  }
79
81
  &[class*=_dotted] {
80
82
  flex-basis: 100%;
81
- [class^=pb_timeline_item_step] {
83
+ [class=pb_timeline_item_left_block] {
84
+ height: 0;
85
+ }
86
+ [class=pb_timeline_item_step] {
82
87
  @include flex_wrapper(row);
83
- align-items: center;
84
88
  margin-top: $space_xs;
85
89
  margin-bottom: $space_xs;
86
90
  [class=pb_timeline_item_connector] {
87
- @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
91
+ @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
88
92
  }
89
93
  }
90
94
  }
@@ -95,7 +99,7 @@ $gap_lg: $height_from_top + $space_lg;
95
99
  >div {
96
100
  &:last-child {
97
101
  flex-basis: auto !important;
98
- [class^=pb_timeline_item_step] {
102
+ [class=pb_timeline_item_step] {
99
103
  [class=pb_timeline_item_connector] {
100
104
  opacity: 0;
101
105
  }
@@ -125,12 +129,12 @@ $gap_lg: $height_from_top + $space_lg;
125
129
  }
126
130
  }
127
131
  }
128
- [class^=pb_timeline_item_step] {
132
+ [class=pb_timeline_item_step] {
129
133
  @include flex_wrapper(row);
130
134
  margin-top: $space_xs;
131
135
  margin-bottom: $space_xs;
132
136
  [class=pb_timeline_item_connector] {
133
- @include pb_timeline_line_solid($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
137
+ @include pb_timeline_line_solid($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
134
138
  }
135
139
  }
136
140
  }
@@ -149,12 +153,12 @@ $gap_lg: $height_from_top + $space_lg;
149
153
  }
150
154
  }
151
155
  }
152
- [class^=pb_timeline_item_step] {
156
+ [class=pb_timeline_item_step] {
153
157
  @include flex_wrapper(row);
154
158
  margin-top: $space_xs;
155
159
  margin-bottom: $space_xs;
156
160
  [class=pb_timeline_item_connector] {
157
- @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, 0 $icon_margin 0 $icon_margin );
161
+ @include pb_timeline_line_dotted_horizontal($connector_width, $connector_width, $height_from_top $icon_margin 0 $icon_margin );
158
162
  }
159
163
  }
160
164
  }
@@ -166,7 +170,7 @@ $gap_lg: $height_from_top + $space_lg;
166
170
  align-items: flex-start;
167
171
  align-self: auto;
168
172
  >div:last-child {
169
- [class^=pb_timeline_item_step] {
173
+ [class=pb_timeline_item_step] {
170
174
  [class=pb_timeline_item_connector] {
171
175
  opacity: 0;
172
176
  }
@@ -176,14 +180,13 @@ $gap_lg: $height_from_top + $space_lg;
176
180
  @include flex_wrapper(row);
177
181
  &[class*=_solid] {
178
182
  flex-basis: 100%;
179
- [class^=pb_timeline_item_step] {
183
+ [class=pb_timeline_item_step] {
180
184
  @include flex_wrapper(column);
181
- align-items: center;
182
185
  align-content: flex-start;
183
186
  margin-right: $space_sm;
184
187
  margin-left: $space_sm;
185
188
  [class=pb_timeline_item_connector] {
186
- @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
189
+ @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
187
190
  }
188
191
  }
189
192
  [class=pb_timeline_item_left_block] {
@@ -197,13 +200,12 @@ $gap_lg: $height_from_top + $space_lg;
197
200
  }
198
201
  &[class*=_dotted] {
199
202
  flex-basis: 100%;
200
- [class^=pb_timeline_item_step] {
203
+ [class=pb_timeline_item_step] {
201
204
  @include flex_wrapper(column);
202
- align-items: center;
203
205
  margin-right: $space_sm;
204
206
  margin-left: $space_sm;
205
207
  [class=pb_timeline_item_connector] {
206
- @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
208
+ @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
207
209
  }
208
210
  }
209
211
  [class=pb_timeline_item_left_block] {
@@ -221,7 +223,7 @@ $gap_lg: $height_from_top + $space_lg;
221
223
  align-items: flex-start;
222
224
  align-self: auto;
223
225
  >div:last-child {
224
- [class^=pb_timeline_item_step] {
226
+ [class=pb_timeline_item_step] {
225
227
  [class=pb_timeline_item_connector] {
226
228
  opacity: 0;
227
229
  }
@@ -231,14 +233,13 @@ $gap_lg: $height_from_top + $space_lg;
231
233
  @include flex_wrapper(row);
232
234
  &[class*=_solid] {
233
235
  flex-basis: 100%;
234
- [class^=pb_timeline_item_step] {
236
+ [class=pb_timeline_item_step] {
235
237
  @include flex_wrapper(column);
236
- align-items: center;
237
238
  align-content: flex-start;
238
239
  margin-right: $space_sm;
239
240
  margin-left: $space_sm;
240
241
  [class=pb_timeline_item_connector] {
241
- @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
242
+ @include pb_timeline_line_solid($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
242
243
  }
243
244
  }
244
245
  [class=pb_timeline_item_left_block] {
@@ -252,13 +253,12 @@ $gap_lg: $height_from_top + $space_lg;
252
253
  }
253
254
  &[class*=_dotted] {
254
255
  flex-basis: 100%;
255
- [class^=pb_timeline_item_step] {
256
+ [class=pb_timeline_item_step] {
256
257
  @include flex_wrapper(column);
257
- align-items: center;
258
258
  margin-right: $space_sm;
259
259
  margin-left: $space_sm;
260
260
  [class=pb_timeline_item_connector] {
261
- @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin 0);
261
+ @include pb_timeline_line_dotted_vertical($connector_width, $connector_width, $icon_margin 0 $icon_margin $height_from_top);
262
262
  }
263
263
  }
264
264
  [class=pb_timeline_item_left_block] {
@@ -274,7 +274,7 @@ $gap_lg: $height_from_top + $space_lg;
274
274
  }
275
275
  &[class*=_gap_xs] {
276
276
  [class*=pb_timeline_item_kit] {
277
- [class^=pb_timeline_item_step] {
277
+ [class=pb_timeline_item_step] {
278
278
  [class=pb_timeline_item_connector] {
279
279
  height: $gap_xs !important;
280
280
  }
@@ -283,7 +283,7 @@ $gap_lg: $height_from_top + $space_lg;
283
283
  }
284
284
  &[class*=_gap_sm] {
285
285
  [class*=pb_timeline_item_kit] {
286
- [class^=pb_timeline_item_step] {
286
+ [class=pb_timeline_item_step] {
287
287
  [class=pb_timeline_item_connector] {
288
288
  height: $gap_sm !important;
289
289
  }
@@ -292,7 +292,7 @@ $gap_lg: $height_from_top + $space_lg;
292
292
  }
293
293
  &[class*=_gap_md] {
294
294
  [class*=pb_timeline_item_kit] {
295
- [class^=pb_timeline_item_step] {
295
+ [class=pb_timeline_item_step] {
296
296
  [class=pb_timeline_item_connector] {
297
297
  height: $gap_md !important;
298
298
  }
@@ -301,7 +301,7 @@ $gap_lg: $height_from_top + $space_lg;
301
301
  }
302
302
  &[class*=_gap_lg] {
303
303
  [class*=pb_timeline_item_kit] {
304
- [class^=pb_timeline_item_step] {
304
+ [class=pb_timeline_item_step] {
305
305
  [class=pb_timeline_item_connector] {
306
306
  height: $gap_lg !important;
307
307
  }
@@ -20,7 +20,7 @@ type TimelineProps = {
20
20
  id?: string,
21
21
  orientation?: string,
22
22
  showDate?: boolean,
23
- itemGap?: 'xs' | 'sm' | 'md' | 'lg' | 'none',
23
+ gap?: 'xs' | 'sm' | 'md' | 'lg' | 'none',
24
24
  } & GlobalProps
25
25
 
26
26
  const Timeline = ({
@@ -32,15 +32,15 @@ const Timeline = ({
32
32
  id,
33
33
  orientation = 'horizontal',
34
34
  showDate = false,
35
- itemGap = 'none',
35
+ gap = 'none',
36
36
  ...props
37
37
  }: TimelineProps): React.ReactElement => {
38
38
  const ariaProps = buildAriaProps(aria)
39
39
  const dataProps = buildDataProps(data)
40
40
  const htmlProps = buildHtmlProps(htmlOptions)
41
41
  const dateStyle = showDate === true ? '_with_date' : ''
42
- const itemGapStyle = itemGap === 'none' ? '' : `gap_${itemGap}`
43
- const timelineCss = buildCss('pb_timeline_kit', `${orientation}`, dateStyle, itemGapStyle)
42
+ const gapStyle = gap === 'none' ? '' : `gap_${gap}`
43
+ const timelineCss = buildCss('pb_timeline_kit', `${orientation}`, dateStyle, gapStyle)
44
44
 
45
45
  return (
46
46
  <div
@@ -60,4 +60,4 @@ Timeline.Step = TimelineStep
60
60
  Timeline.Label = TimelineLabel
61
61
  Timeline.Detail = TimelineDetail
62
62
 
63
- export default Timeline
63
+ export default Timeline
@@ -1,6 +1,6 @@
1
1
  <%= pb_rails("flex", props: { justify: "evenly" }) do %>
2
2
  <%= pb_rails("flex/flex_item") do %>
3
- <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "xs"}) do %>
3
+ <%= pb_rails("timeline", props: {orientation: "vertical", gap: "xs"}) do %>
4
4
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
5
5
  <%= pb_rails("body", props: {
6
6
  text: "Conversation started",
@@ -23,7 +23,7 @@
23
23
  <% end %>
24
24
 
25
25
  <%= pb_rails("flex/flex_item") do %>
26
- <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "sm"}) do %>
26
+ <%= pb_rails("timeline", props: {orientation: "vertical", gap: "sm"}) do %>
27
27
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
28
28
  <%= pb_rails("body", props: {
29
29
  text: "Conversation started",
@@ -46,7 +46,7 @@
46
46
  <% end %>
47
47
 
48
48
  <%= pb_rails("flex/flex_item") do %>
49
- <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "md"}) do %>
49
+ <%= pb_rails("timeline", props: {orientation: "vertical", gap: "md"}) do %>
50
50
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
51
51
  <%= pb_rails("body", props: {
52
52
  text: "Conversation started",
@@ -69,7 +69,7 @@
69
69
  <% end %>
70
70
 
71
71
  <%= pb_rails("flex/flex_item") do %>
72
- <%= pb_rails("timeline", props: {orientation: "vertical", item_gap: "lg"}) do %>
72
+ <%= pb_rails("timeline", props: {orientation: "vertical", gap: "lg"}) do %>
73
73
  <%= pb_rails("timeline/item", props: {icon: "user", icon_color: "royal"}) do %>
74
74
  <%= pb_rails("body", props: {
75
75
  text: "Conversation started",
@@ -91,3 +91,4 @@
91
91
  <% end %>
92
92
  <% end %>
93
93
  <% end %>
94
+
@@ -10,7 +10,7 @@ const TimelineWithGap = (props) => (
10
10
  <Flex justify="evenly">
11
11
  <FlexItem>
12
12
  <Timeline
13
- itemGap="xs"
13
+ gap="xs"
14
14
  orientation="vertical"
15
15
  >
16
16
  <Timeline.Item
@@ -51,7 +51,7 @@ const TimelineWithGap = (props) => (
51
51
  </FlexItem>
52
52
  <FlexItem>
53
53
  <Timeline
54
- itemGap="sm"
54
+ gap="sm"
55
55
  orientation="vertical"
56
56
  >
57
57
  <Timeline.Item
@@ -92,7 +92,7 @@ const TimelineWithGap = (props) => (
92
92
  </FlexItem>
93
93
  <FlexItem>
94
94
  <Timeline
95
- itemGap="md"
95
+ gap="md"
96
96
  orientation="vertical"
97
97
  >
98
98
  <Timeline.Item
@@ -134,7 +134,7 @@ const TimelineWithGap = (props) => (
134
134
  </FlexItem>
135
135
  <FlexItem>
136
136
  <Timeline
137
- itemGap="lg"
137
+ gap="lg"
138
138
  orientation="vertical"
139
139
  >
140
140
  <Timeline.Item
@@ -1 +1 @@
1
- Use the optional `itemGap` prop to render the timeline kit with adjusted spacing between nodes. The `itemGap` prop will only work when utilized with a vertical timeline. Horizontal timelines will show no difference in spacing.
1
+ Use the optional `gap` prop to render the timeline kit with adjusted spacing between nodes. The `gap` prop will only work when utilized with a vertical timeline. Horizontal timelines will show no difference in spacing.
@@ -8,15 +8,15 @@ module Playbook
8
8
  default: "horizontal"
9
9
  prop :show_date, type: Playbook::Props::Boolean,
10
10
  default: false
11
- prop :item_gap, type: Playbook::Props::Enum,
12
- values: %w[xs sm md lg none],
13
- default: "none"
11
+ prop :gap, type: Playbook::Props::Enum,
12
+ values: %w[xs sm md lg none],
13
+ default: "none"
14
14
 
15
15
  def classname
16
16
  generate_classname("pb_timeline_kit",
17
17
  orientation,
18
18
  date_class,
19
- item_gap_class)
19
+ gap_class)
20
20
  end
21
21
 
22
22
  private
@@ -25,8 +25,8 @@ module Playbook
25
25
  show_date ? "with_date" : nil
26
26
  end
27
27
 
28
- def item_gap_class
29
- item_gap == "none" ? nil : "gap_#{item_gap}"
28
+ def gap_class
29
+ gap == "none" ? nil : "gap_#{gap}"
30
30
  end
31
31
  end
32
32
  end
@@ -42,8 +42,8 @@ type TypeaheadProps = {
42
42
  id?: string,
43
43
  label?: string,
44
44
  loadOptions?: string | Noop,
45
- getOptionLabel?: string | (() => any),
46
- getOptionValue?: string | (() => any),
45
+ getOptionLabel?: string | (() => string),
46
+ getOptionValue?: string | (() => string),
47
47
  name?: string,
48
48
  marginBottom?: "none" | "xxs" | "xs" | "sm" | "md" | "lg" | "xl",
49
49
  pillColor?: "primary" | "neutral" | "success" | "warning" | "error" | "info" | "data_1" | "data_2" | "data_3" | "data_4" | "data_5" | "data_6" | "data_7" | "data_8" | "windows" | "siding" | "roofing" | "doors" | "gutters" | "solar" | "insulation" | "accessories",
@@ -109,6 +109,7 @@ const Typeahead = ({
109
109
  multiKit: '',
110
110
  onCreateOption: null as null,
111
111
  plusIcon: false,
112
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
112
113
  onMultiValueClick: (_option: SelectValueType): any => undefined,
113
114
  pillColor: pillColor,
114
115
  ...props,
@@ -1,16 +1,24 @@
1
1
  import React, { useEffect } from 'react'
2
2
  import { components } from 'react-select'
3
3
 
4
- const ClearContainer = (props: any) => {
4
+ type ClearContainerProps = {
5
+ children: React.ReactNode,
6
+ selectProps?: {
7
+ id: string,
8
+ },
9
+ clearValue: () => void,
10
+ }
11
+
12
+ const ClearContainer = (props: ClearContainerProps): React.ReactElement => {
5
13
  const { selectProps, clearValue } = props
6
14
  useEffect(() => {
7
15
  document.addEventListener(`pb-typeahead-kit-${selectProps.id}:clear`, clearValue)
8
- }, [true])
16
+ }, [clearValue, selectProps.id])
9
17
 
10
18
  return (
11
19
  <components.ClearIndicator
12
- className="clear_indicator"
13
- {...props}
20
+ className="clear_indicator"
21
+ {...props}
14
22
  />
15
23
  )
16
24
  }
@@ -5,7 +5,11 @@ import Flex from '../../pb_flex/_flex'
5
5
  import TextInput from '../../pb_text_input/_text_input'
6
6
 
7
7
  type Props = {
8
- selectProps: any,
8
+ selectProps: {
9
+ dark?: boolean,
10
+ label: string,
11
+ error?: string,
12
+ },
9
13
  }
10
14
 
11
15
  const TypeaheadControl = (props: Props) => (
@@ -1,10 +1,15 @@
1
1
  import React from 'react'
2
2
  import { components } from 'react-select'
3
3
 
4
- const IndicatorsContainer = (props: any) => (
4
+ type IndicatorsContainerProps = {
5
+ children: React.ReactNode,
6
+ }
7
+
8
+
9
+ const IndicatorsContainer = (props: IndicatorsContainerProps): React.ReactElement => (
5
10
  <components.IndicatorsContainer
6
- className="text_input_indicators"
7
- {...props}
11
+ className="text_input_indicators"
12
+ {...props}
8
13
  />
9
14
  )
10
15
 
@@ -1,7 +1,12 @@
1
1
  import React from 'react'
2
2
  import { components } from 'react-select'
3
3
 
4
- const MenuList = (props: any) => {
4
+ type MenuListProps = {
5
+ children: React.ReactNode,
6
+ footer: React.ReactNode,
7
+ }
8
+
9
+ const MenuList = (props: MenuListProps): React.ReactElement => {
5
10
  return (
6
11
  <components.MenuList {...props}>
7
12
  {props.children}
@@ -3,7 +3,22 @@ import { components } from 'react-select'
3
3
 
4
4
  import User from '../../pb_user/_user'
5
5
 
6
- const Option = (props: any) => {
6
+ type OptionProps = {
7
+ children: React.ReactNode,
8
+ label?: string,
9
+ data: {
10
+ imageUrl?: string,
11
+ },
12
+ selectProps: {
13
+ dark?: boolean,
14
+ valueComponent?: (data: {
15
+ imageUrl?: string,
16
+ }) => React.ReactNode,
17
+ },
18
+ }
19
+
20
+
21
+ const Option = (props: OptionProps): React.ReactElement => {
7
22
  const {
8
23
  imageUrl,
9
24
  } = props.data
@@ -14,11 +29,11 @@ const Option = (props: any) => {
14
29
  <>
15
30
  {!valueComponent && imageUrl &&
16
31
  <User
17
- align="left"
18
- avatarUrl={imageUrl}
19
- dark={props.selectProps.dark}
20
- name={props.label}
21
- orientation="horizontal"
32
+ align="left"
33
+ avatarUrl={imageUrl}
34
+ dark={props.selectProps.dark}
35
+ name={props.label}
36
+ orientation="horizontal"
22
37
  />
23
38
  }
24
39
 
@@ -4,19 +4,26 @@ import { components } from 'react-select'
4
4
  import Flex from '../../pb_flex/_flex'
5
5
  import Icon from '../../pb_icon/_icon'
6
6
 
7
- const Placeholder = (props: any) => (
7
+ type PlaceholderProps = {
8
+ children: React.ReactNode,
9
+ selectProps: {
10
+ plusIcon?: boolean,
11
+ },
12
+ }
13
+
14
+ const Placeholder = (props: PlaceholderProps): React.ReactElement => (
8
15
  <>
9
16
  <Flex
10
- align="center"
11
- className="placeholder"
17
+ align="center"
18
+ className="placeholder"
12
19
  >
13
20
  <components.IndicatorsContainer
14
- {...props}
21
+ {...props}
15
22
  />
16
23
  {props.selectProps.plusIcon &&
17
24
  <Icon
18
- className="typeahead-plus-icon"
19
- icon="plus"
25
+ className="typeahead-plus-icon"
26
+ icon="plus"
20
27
  />
21
28
  }
22
29
  </Flex>
@@ -1,10 +1,14 @@
1
1
  import React from 'react'
2
2
  import { components } from 'react-select'
3
3
 
4
- const ValueContainer = (props: any) => (
4
+ type ValueContainerProps = {
5
+ children: React.ReactNode,
6
+ }
7
+
8
+ const ValueContainer = (props: ValueContainerProps): React.ReactElement => (
5
9
  <components.ValueContainer
6
- className="text_input_value_container"
7
- {...props}
10
+ className="text_input_value_container"
11
+ {...props}
8
12
  />
9
13
  )
10
14
 
@@ -1,3 +1,5 @@
1
+ /* eslint-disable react/no-multi-comp */
2
+
1
3
  import React, { useState } from 'react'
2
4
 
3
5
  import {
@@ -45,8 +45,7 @@ const promiseOptions = (inputValue) =>
45
45
 
46
46
  const TypeaheadWithPillsAsync = (props) => {
47
47
  const [users, setUsers] = useState([])
48
- const handleOnChange = (value) => setUsers(formatUsers(value))
49
- const formatValue = (users) => formatUsers(users)
48
+
50
49
  const formatUsers = (users) => {
51
50
  const results = () => (users.map((user) => {
52
51
  if (Object.keys(user)[0] === 'name' || Object.keys(user)[1] === 'id'){
@@ -58,6 +57,9 @@ const TypeaheadWithPillsAsync = (props) => {
58
57
  return results()
59
58
  }
60
59
 
60
+ const handleOnChange = (value) => setUsers(formatUsers(value))
61
+ const formatValue = (users) => formatUsers(users)
62
+
61
63
  return (
62
64
  <>
63
65
  {users && users.length > 0 && (
@@ -83,13 +83,13 @@ const TypeaheadWithPillsAsyncCustomOptions = (props) => {
83
83
  onChange={handleOnChange}
84
84
  onMultiValueClick={handleOnMultiValueClick}
85
85
  placeholder="type the name of a Github user"
86
- valueComponent={(props) => (
86
+ valueComponent={({imageUrl, label, territory, type}) => (
87
87
  <User
88
88
  avatar
89
- avatarUrl={props.imageUrl}
90
- name={props.label}
91
- territory={props.territory}
92
- title={props.type}
89
+ avatarUrl={imageUrl}
90
+ name={label}
91
+ territory={territory}
92
+ title={type}
93
93
  />
94
94
  )}
95
95
  {...props}
@@ -27,7 +27,6 @@ export default [
27
27
  "overflow",
28
28
  "order",
29
29
  "numberSpacing",
30
- "gap",
31
30
  "maxWidth",
32
31
  "minWidth",
33
32
  "width",
@@ -108,10 +108,6 @@ type MinWidth = {
108
108
  minWidth?: string,
109
109
  }
110
110
 
111
- type Gap = {
112
- gap?: string,
113
- }
114
-
115
111
  type NumberSpacing = {
116
112
  numberSpacing?: "tabular",
117
113
  }
@@ -200,7 +196,7 @@ type MinHeight = {
200
196
  export type GlobalProps = AlignContent & AlignItems & AlignSelf &
201
197
  BorderRadius & Cursor & Dark & Display & DisplaySizes & Flex & FlexDirection &
202
198
  FlexGrow & FlexShrink & FlexWrap & JustifyContent & JustifySelf &
203
- LineHeight & Margin & Width & MinWidth & MaxWidth & Gap & NumberSpacing & Order & Overflow & Padding &
199
+ LineHeight & Margin & Width & MinWidth & MaxWidth & NumberSpacing & Order & Overflow & Padding &
204
200
  Position & Shadow & TextAlign & Truncate & VerticalAlign & ZIndex & { hover?: string } & Top & Right & Bottom & Left & Height & MaxHeight & MinHeight;
205
201
 
206
202
  const getResponsivePropClasses = (prop: {[key: string]: string}, classPrefix: string) => {
@@ -376,11 +372,6 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
376
372
  css += maxWidth ? `max_width_${filterClassName(maxWidth)} ` : ''
377
373
  return css.trimEnd()
378
374
  },
379
- gapProps: ({ gap }: Gap) => {
380
- let css = ''
381
- css += gap ? `gap_${gap} ` : ''
382
- return css.trimEnd()
383
- },
384
375
  minHeightProps: ({ minHeight }: MinHeight) => {
385
376
  const heightValues = ["auto", "xs", "sm", "md", "lg", "xl", "xxl", "xxxl"]
386
377
  if (heightValues.includes(minHeight)) {
@@ -539,15 +530,15 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
539
530
  },
540
531
 
541
532
 
542
- topProps: ({top}) => getPositioningPropsClasses('top', top),
543
-
544
- rightProps: ({right}) => getPositioningPropsClasses('right', right),
533
+ topProps: ({top}) => getPositioningPropsClasses('top', top),
545
534
 
546
- bottomProps:({bottom}) => getPositioningPropsClasses('bottom', bottom),
535
+ rightProps: ({right}) => getPositioningPropsClasses('right', right),
547
536
 
537
+ bottomProps:({bottom}) => getPositioningPropsClasses('bottom', bottom),
538
+
548
539
  leftProps: ({left}) => getPositioningPropsClasses('left', left),
549
-
550
-
540
+
541
+
551
542
  textAlignProps: ({ textAlign }: TextAlign) => {
552
543
  if (typeof textAlign === 'object') {
553
544
  return getResponsivePropClasses(textAlign, 'text_align')
@@ -567,7 +558,7 @@ const PROP_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => string} =
567
558
 
568
559
  const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[key: string]: any}} = {
569
560
  heightProps: ({ height }: Height) => {
570
- return height ? { height } : {};
561
+ return height ? { height } : {};
571
562
  },
572
563
 
573
564
  maxHeightProps: ({ maxHeight }: MaxHeight) => {
@@ -575,7 +566,7 @@ const PROP_INLINE_CATEGORIES: {[key:string]: (props: {[key: string]: any}) => {[
575
566
  },
576
567
 
577
568
  minHeightProps: ({ minHeight }: MinHeight) => {
578
- return minHeight ? { minHeight } : {};
569
+ return minHeight ? { minHeight } : {};
579
570
  },
580
571
  }
581
572