Skip to content

Commit 2fe7fc5

Browse files
committed
Refactor names and ordering
1 parent 803bd81 commit 2fe7fc5

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

src/Components/forms/inputs/EmployerDropDown.js

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,41 @@ import { useEffect, useState } from 'react'
22
import { Label } from 'reactstrap'
33
import Select from 'react-select/creatable'
44

5-
const EmployerDropDown = ({ arrayList, isEmpty, onChange, value }) => {
6-
const [customEntry, setCustomEntry] = useState(false)
7-
const [employersList, setEmployersList] = useState([])
5+
const EmployerDropDown = ({
6+
arrayList: employers,
7+
isEmpty,
8+
onChange,
9+
value
10+
}) => {
11+
const [isCustomEntry, setIsCustomEntry] = useState(false)
12+
const [options, setOptions] = useState([])
13+
const [selectedOption, setSelectedOption] = useState()
814

915
useEffect(() => {
10-
setEmployersList(
11-
arrayList.map(({ _id, name }) => ({
16+
setOptions(
17+
employers.map(({ _id, name }) => ({
1218
value: _id,
1319
label: name
1420
}))
1521
)
16-
}, [arrayList])
22+
}, [employers])
1723

1824
useEffect(() => {
19-
setCustomEntry(
20-
value !== '' && !arrayList.some(({ name }) => name === value)
25+
setIsCustomEntry(
26+
value !== '' && !employers.some(({ name }) => name === value)
2127
)
22-
}, [arrayList, value])
28+
}, [employers, value])
29+
30+
useEffect(() => {
31+
setSelectedOption(options.find(employer => employer.value === value))
32+
}, [options, value])
2333

2434
const handleChange = e =>
2535
onChange({
2636
target: {
2737
name: 'employer',
2838
type: 'text',
29-
value: e === null ? '' : e.value
39+
value: e?.value ?? ''
3040
}
3141
})
3242

@@ -36,19 +46,19 @@ const EmployerDropDown = ({ arrayList, isEmpty, onChange, value }) => {
3646
<Select
3747
className={isEmpty ? 'is-empty' : ''}
3848
inputId="employer"
39-
isSearchable
4049
isClearable
41-
options={employersList}
50+
isSearchable
51+
name="employer"
4252
onChange={handleChange}
4353
onCreateOption={newEmployer => {
44-
setEmployersList(oldList => insertedInto([...oldList], newEmployer))
54+
setOptions(oldOptions => insertedInto([...oldOptions], newEmployer))
4555
handleChange({ value: newEmployer })
4656
}}
47-
name="employer"
57+
options={options}
4858
placeholder="Type your employer name here"
49-
value={employersList.find(employer => employer.value === value)}
59+
value={selectedOption}
5060
/>
51-
{customEntry && (
61+
{isCustomEntry && (
5262
<p className="reminder">
5363
This employer will be added to our list. Make sure you typed it
5464
correctly.
@@ -58,17 +68,17 @@ const EmployerDropDown = ({ arrayList, isEmpty, onChange, value }) => {
5868
)
5969
}
6070

61-
const insertedInto = (employers, employer) => {
62-
const canonical = employer.toLowerCase()
63-
const entry = { label: employer, value: employer }
64-
for (let index = 0; index < employers.length; index++) {
65-
if (canonical < employers[index].value.toLowerCase()) {
66-
employers.splice(index, 0, entry)
67-
return employers
71+
const insertedInto = (options, newEmployer) => {
72+
const canonical = newEmployer.toLowerCase()
73+
const entry = { label: newEmployer, value: newEmployer }
74+
for (let index = 0; index < options.length; index++) {
75+
if (canonical < options[index].value.toLowerCase()) {
76+
options.splice(index, 0, entry)
77+
return options
6878
}
6979
}
70-
employers.push(entry)
71-
return employers
80+
options.push(entry)
81+
return options
7282
}
7383

7484
export default EmployerDropDown

0 commit comments

Comments
 (0)