Slider에서 range의 background에 대한 스타일을 넣어주기 위한 과정.
기존에는 styled-components를 이용해 prop을 넘겨주어 gradient 스타일을 적용했다.
CSS Module로 리팩토링하는 과정에서 어려움을 겪었는데
<input type='range' style={{ '--percentage': `${percentage}%` }} />
====
input[type='range'] {
-webkit-appearance: none;
width: 100%;
height: 4px;
background: linear-gradient(
to right,
colors.$ORANGE 0%,
colors.$ORANGE var(--percentage),
colors.$BACKGROUND_PRIMARY (--percentage),
colors.$BACKGROUND_PRIMARY 100%);
border-radius: 6px;
}
동작을 안해 range mark 용도의 div를 두어 percentage값에 따라 width를 변하게 하는 방법으로 스타일을 적용했다.
<div className={styles.showPercentageBar} aria-hidden='true' style={{ '--percentage': `${percentage}%` }} />
====
.showPercentageBar {
position: absolute;
top: 9.5px;
z-index: 3;
width: calc(var(--percentage) - 6px);
height: 4px;
background-color: colors.$ORANGE;
border-radius: 6px;
}
<input
type='text'
id='email'
placeholder='E-mail'
value={email}
onChange={handleEmailChange}
autoCapitalize='off'
autoCorrect='off'
spellCheck='false'
/>
Dropdown 리팩토링 과정
data를 input change에 따라 filtering하는 로직을 변경했다.
/* 기존 */
const newData = data.filter((country) => country.toLowerCase().startsWith(word.toLowerCase()))
/* 수정 */
const filteredData = data.filter((data) => data.toLowerCase().includes(word.toLowerCase()))