Skip to content

Commit 52c5445

Browse files
committed
Add select default components.
1 parent d9c72cb commit 52c5445

File tree

1 file changed

+40
-33
lines changed

1 file changed

+40
-33
lines changed

src/components/select/index.js

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from "react"
22
import styled from "styled-components"
3-
import ReactSelect, { components } from "react-select"
3+
import ReactSelect, { components as defaultComponents } from "react-select"
44
import { capitalizeFirstLetter } from "src/utils"
55

66
const withDataAttrs =
@@ -33,68 +33,73 @@ const makeDataAttrs = (ga, testId) => type => {
3333
return dataAttrs
3434
}
3535

36-
const makeCustomComponents = makeComponentDataAttrs => ({
36+
const makeCustomComponents = (components, makeComponentDataAttrs) => ({
37+
...defaultComponents,
3738
ClearIndicator: withDataAttrs(
38-
components.ClearIndicator,
39+
defaultComponents.ClearIndicator,
3940
makeComponentDataAttrs("clearIndicator")
4041
),
41-
Control: withDataAttrs(components.Control, makeComponentDataAttrs("clearIndicator")),
42+
Control: withDataAttrs(defaultComponents.Control, makeComponentDataAttrs("clearIndicator")),
4243
DropdownIndicator: withDataAttrs(
43-
components.DropdownIndicator,
44+
defaultComponents.DropdownIndicator,
4445
makeComponentDataAttrs("dropdownIndicator")
4546
),
46-
DownChevron: withDataAttrs(components.DownChevron, makeComponentDataAttrs("downChevron")),
47-
CrossIcon: withDataAttrs(components.CrossIcon, makeComponentDataAttrs("crossIcon")),
48-
Group: withDataAttrs(components.Group, makeComponentDataAttrs("group")),
49-
GroupHeading: withDataAttrs(components.GroupHeading, makeComponentDataAttrs("groupHeading")),
47+
DownChevron: withDataAttrs(defaultComponents.DownChevron, makeComponentDataAttrs("downChevron")),
48+
CrossIcon: withDataAttrs(defaultComponents.CrossIcon, makeComponentDataAttrs("crossIcon")),
49+
Group: withDataAttrs(defaultComponents.Group, makeComponentDataAttrs("group")),
50+
GroupHeading: withDataAttrs(
51+
defaultComponents.GroupHeading,
52+
makeComponentDataAttrs("groupHeading")
53+
),
5054
IndicatorsContainer: withDataAttrs(
51-
components.IndicatorsContainer,
55+
defaultComponents.IndicatorsContainer,
5256
makeComponentDataAttrs("indicatorsContainer")
5357
),
5458
IndicatorSeparator: withDataAttrs(
55-
components.IndicatorSeparator,
59+
defaultComponents.IndicatorSeparator,
5660
makeComponentDataAttrs("indicatorSeparator")
5761
),
58-
Input: withDataAttrs(components.Input, makeComponentDataAttrs("input"), false),
62+
Input: withDataAttrs(defaultComponents.Input, makeComponentDataAttrs("input"), false),
5963
LoadingIndicator: withDataAttrs(
60-
components.LoadingIndicator,
64+
defaultComponents.LoadingIndicator,
6165
makeComponentDataAttrs("loadingIndicator")
6266
),
63-
Menu: withDataAttrs(components.Menu, makeComponentDataAttrs("menu")),
64-
MenuList: withDataAttrs(components.MenuList, makeComponentDataAttrs("menuList")),
65-
MenuPortal: withDataAttrs(components.MenuPortal, makeComponentDataAttrs("menuPortal")),
67+
Menu: withDataAttrs(defaultComponents.Menu, makeComponentDataAttrs("menu")),
68+
MenuList: withDataAttrs(defaultComponents.MenuList, makeComponentDataAttrs("menuList")),
69+
MenuPortal: withDataAttrs(defaultComponents.MenuPortal, makeComponentDataAttrs("menuPortal")),
6670
LoadingMessage: withDataAttrs(
67-
components.LoadingMessage,
71+
defaultComponents.LoadingMessage,
6872
makeComponentDataAttrs("loadingMessage")
6973
),
7074
NoOptionsMessage: withDataAttrs(
71-
components.NoOptionsMessage,
75+
defaultComponents.NoOptionsMessage,
7276
makeComponentDataAttrs("noOptionsMessage")
7377
),
74-
MultiValue: withDataAttrs(components.MultiValue, makeComponentDataAttrs("multiValue")),
78+
MultiValue: withDataAttrs(defaultComponents.MultiValue, makeComponentDataAttrs("multiValue")),
7579
MultiValueContainer: withDataAttrs(
76-
components.MultiValueContainer,
80+
defaultComponents.MultiValueContainer,
7781
makeComponentDataAttrs("multiValueContainer")
7882
),
7983
MultiValueLabel: withDataAttrs(
80-
components.MultiValueLabel,
84+
defaultComponents.MultiValueLabel,
8185
makeComponentDataAttrs("multiValueLabel")
8286
),
8387
MultiValueRemove: withDataAttrs(
84-
components.MultiValueRemove,
88+
defaultComponents.MultiValueRemove,
8589
makeComponentDataAttrs("multiValueRemove")
8690
),
87-
Option: withDataAttrs(components.Option, makeComponentDataAttrs("option")),
88-
Placeholder: withDataAttrs(components.Placeholder, makeComponentDataAttrs("placeholder")),
91+
Option: withDataAttrs(defaultComponents.Option, makeComponentDataAttrs("option")),
92+
Placeholder: withDataAttrs(defaultComponents.Placeholder, makeComponentDataAttrs("placeholder")),
8993
SelectContainer: withDataAttrs(
90-
components.SelectContainer,
94+
defaultComponents.SelectContainer,
9195
makeComponentDataAttrs("selectContainer")
9296
),
93-
SingleValue: withDataAttrs(components.SingleValue, makeComponentDataAttrs("singleValue")),
97+
SingleValue: withDataAttrs(defaultComponents.SingleValue, makeComponentDataAttrs("singleValue")),
9498
ValueContainer: withDataAttrs(
95-
components.ValueContainer,
99+
defaultComponents.ValueContainer,
96100
makeComponentDataAttrs("valueContainer")
97101
),
102+
...components,
98103
})
99104

100105
const makeCustomTheme = theme => selectTheme => {
@@ -207,11 +212,13 @@ const makeCustomStyles = (theme, { size, ...providedStyles } = {}) => ({
207212
...providedStyles,
208213
})
209214

210-
const Select = styled(ReactSelect).attrs(({ "data-ga": ga, "data-testid": testId, ...props }) => ({
211-
...props,
212-
components: makeCustomComponents(makeDataAttrs(ga, testId)),
213-
theme: makeCustomTheme(props.theme),
214-
styles: makeCustomStyles(props.theme, props.styles),
215-
}))``
215+
const Select = styled(ReactSelect).attrs(
216+
({ "data-ga": ga, "data-testid": testId, components, ...props }) => ({
217+
...props,
218+
components: makeCustomComponents(components, makeDataAttrs(ga, testId)),
219+
theme: makeCustomTheme(props.theme),
220+
styles: makeCustomStyles(props.theme, props.styles),
221+
})
222+
)``
216223

217224
export default Select

0 commit comments

Comments
 (0)