Skip to content

Commit 7ac9d7d

Browse files
committed
Fixed color to use Semantic UI like
1 parent 00b8464 commit 7ac9d7d

File tree

10 files changed

+229
-160
lines changed

10 files changed

+229
-160
lines changed

.storybook/preview.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ export const parameters = {
77
}
88
},
99
backgrounds: {
10-
default: 'dark'
10+
default: 'light'
1111
}
1212
}

src/components/MultiRangeSlider.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ const MultiRangeSlider = function (props: MultiRangeSliderProps) {
3939
margin = 0,
4040
showLabels = false,
4141
disabled = false,
42-
color = 'Green'
42+
inverted = false,
43+
color = 'green'
4344
} = props
4445

4546
/**
@@ -114,8 +115,9 @@ const MultiRangeSlider = function (props: MultiRangeSliderProps) {
114115
<SliderTracks
115116
left={left}
116117
width={width}
117-
backgroundColor={color}
118+
color={color}
118119
disabled={disabled}
120+
inverted={inverted}
119121
>
120122
{renderLabels()}
121123
</SliderTracks>

src/components/SingleRangeSlider.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ const SingleRangeSlider = function (props: SingleRangeSliderProps) {
2929
defaultMinValue,
3030
defaultMaxValue,
3131
value,
32-
color = 'Green',
32+
color = 'green',
3333
showLabels = false,
3434
step = 1,
3535
disabled = false,
36+
inverted = false,
3637
onChange
3738
} = props
3839

@@ -84,7 +85,7 @@ const SingleRangeSlider = function (props: SingleRangeSliderProps) {
8485
className={`thumb thumb--left ${disabledClass}`}
8586
/>
8687

87-
<SliderTracks width={selectedPercent} backgroundColor={color} disabled={disabled}>
88+
<SliderTracks width={selectedPercent} color={color} disabled={disabled} inverted={inverted}>
8889
{renderLabels()}
8990
</SliderTracks>
9091
</>

src/components/SliderTracks.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { RangeColor } from '../types'
2+
13
/** Component props. */
24
interface SliderTracksProps {
35
/** Labels component. */
@@ -7,9 +9,11 @@ interface SliderTracksProps {
79
/** Track width. */
810
width: string;
911
/** Track color. */
10-
backgroundColor: string;
12+
color: RangeColor;
1113
/** Disabled prop. */
1214
disabled: boolean;
15+
/** Inverted prop. */
16+
inverted: boolean;
1317
}
1418

1519
/**
@@ -20,12 +24,17 @@ interface SliderTracksProps {
2024
*/
2125
const SliderTracks = (props: SliderTracksProps) => {
2226
const disabledClass = props.disabled ? 'disabled' : ''
27+
const invertedClass = props.inverted ? 'inverted' : ''
28+
const colorClass = props.inverted ? `${invertedClass}-${props.color}` : props.color
2329

2430
return (
25-
<div className="slider">
26-
<div className={`slider__track ${disabledClass}`} />
31+
<div className={`slider ${invertedClass}`}>
32+
<div className={`slider__track ${disabledClass} ${invertedClass}`} />
2733
{props.children}
28-
<div style={{ left: props.left, width: props.width, backgroundColor: props.backgroundColor }} className={`slider__range ${disabledClass}`} />
34+
<div
35+
style={{ left: props.left, width: props.width }}
36+
className={`color_track slider__range ${disabledClass} ${colorClass}`}
37+
/>
2938
</div>
3039
)
3140
}

src/stories/Colors.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const Colors = () => {
2727
setValue(newValue)
2828
}
2929

30-
const colors: RangeColor[] = ['RoyalBlue', 'Green', 'BlueViolet', 'Brown', 'Orange', 'Violet', 'Tomato', 'DarkMagenta']
30+
const colors: RangeColor[] = ['blue', 'green', 'red', 'brown', 'orange', 'violet', 'yellow', 'teal']
3131
return colors.map((color) => (
3232
<h1 key={color}>
3333
<SingleRangeSlider

src/stories/Inverted.stories.tsx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { ComponentMeta } from '@storybook/react'
2+
import { SingleRangeSlider } from '../components/SingleRangeSlider'
3+
import { useState } from 'react'
4+
import { RangeColor } from '../types'
5+
6+
// Styles
7+
import './colors.css'
8+
9+
export default {
10+
title: 'Example/SingleSlider/Inverted',
11+
component: SingleRangeSlider,
12+
subcomponents: { SingleRangeSlider },
13+
parameters: {
14+
layout: 'centered',
15+
backgrounds: {
16+
default: 'dark'
17+
}
18+
}
19+
} as ComponentMeta<typeof SingleRangeSlider >
20+
21+
export const Inverted = () => {
22+
const [value, setValue] = useState<number>(40)
23+
24+
/**
25+
* Handles changes.
26+
*
27+
* @param newValue - New value.
28+
*/
29+
function handleChange (newValue: number) {
30+
setValue(newValue)
31+
}
32+
33+
const colors: RangeColor[] = ['blue', 'green', 'red', 'brown', 'orange', 'violet', 'yellow', 'teal']
34+
return colors.map((color) => (
35+
<h1 key={color}>
36+
<SingleRangeSlider
37+
key={color}
38+
defaultMinValue={0}
39+
defaultMaxValue={100}
40+
value={value}
41+
color={color}
42+
inverted={true}
43+
onChange={handleChange}
44+
/>
45+
</h1>
46+
))
47+
}

src/stories/MultiRangeSlider.stories.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ export default {
66
title: 'Example/MultiSlider',
77
component: MultiRangeSlider,
88
parameters: {
9-
layout: 'centered'
9+
layout: 'centered',
10+
backgrounds: {
11+
default: 'dark'
12+
}
1013
}
1114
} as ComponentMeta<typeof MultiRangeSlider >
1215

@@ -47,5 +50,6 @@ Basic.args = {
4750
defaultMaxValue: 100,
4851
margin: 0,
4952
disabled: false,
50-
color: 'Orange'
53+
inverted: true,
54+
color: 'orange'
5155
}

src/stories/SingleSlider.stories.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ export default {
66
title: 'Example/SingleSlider',
77
component: SingleRangeSlider,
88
parameters: {
9-
layout: 'centered'
9+
layout: 'centered',
10+
backgrounds: {
11+
default: 'dark'
12+
}
1013
}
1114
} as ComponentMeta<typeof SingleRangeSlider >
1215

@@ -38,5 +41,6 @@ Basic.args = {
3841
defaultMinValue: 0,
3942
defaultMaxValue: 100,
4043
disabled: false,
41-
color: 'Salmon'
44+
inverted: true,
45+
color: 'orange'
4246
}

src/styles.css

Lines changed: 132 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
}
1616

1717
.slider__track {
18-
background-color: #ced4da;
18+
background-color: rgba(0, 0, 0, 0.05);
1919
width: 100%;
2020
z-index: 1;
2121
}
@@ -44,7 +44,8 @@
4444
}
4545

4646
/* For Chrome and Firefox browsers */
47-
.thumb::-webkit-slider-thumb, .thumb::-moz-range-thumb {
47+
.thumb::-webkit-slider-thumb,
48+
.thumb::-moz-range-thumb {
4849
background-color: #f1f5f7;
4950
border: none;
5051
border-radius: 50%;
@@ -59,12 +60,17 @@
5960

6061
.slider__left-value,
6162
.slider__right-value {
62-
color: #dee2e6;
63+
color: #6c6c6c;
6364
font-size: 12px;
6465
margin-top: 20px;
6566
position: absolute;
6667
}
6768

69+
.slider.inverted .slider__left-value,
70+
.slider.inverted .slider__right-value {
71+
color: #dee2e6;
72+
}
73+
6874
.slider__right-value {
6975
right: 0;
7076
}
@@ -75,7 +81,129 @@
7581
cursor: not-allowed;
7682
}
7783

78-
.slider__range.disabled, .slider__track.disabled {
84+
.slider__range.disabled,
85+
.slider__track.disabled {
7986
cursor: not-allowed;
8087
opacity: 0.5;
8188
}
89+
90+
/* Colors */
91+
.slider__track.inverted {
92+
background-color: #e2e2e2;
93+
}
94+
95+
.color_track.red {
96+
background-color: #DB2828;
97+
}
98+
99+
.color_track.inverted-red {
100+
background-color: #FF695E;
101+
}
102+
103+
/* Orange */
104+
.color_track.orange {
105+
background-color: #F2711C;
106+
}
107+
108+
.color_track.inverted-orange {
109+
background-color: #FF851B;
110+
}
111+
112+
/* Yellow */
113+
.color_track.yellow {
114+
background-color: #FBBD08;
115+
}
116+
117+
.color_track.inverted-yellow {
118+
background-color: #FFE21F;
119+
}
120+
121+
/* Olive */
122+
.color_track.olive {
123+
background-color: #B5CC18;
124+
}
125+
126+
.color_track.inverted-olive {
127+
background-color: #D9E778;
128+
}
129+
130+
/* Green */
131+
.color_track.green {
132+
background-color: #21BA45;
133+
}
134+
135+
.color_track.inverted-green {
136+
background-color: #2ECC40;
137+
}
138+
139+
/* Teal */
140+
.color_track.teal {
141+
background-color: #00B5AD;
142+
}
143+
144+
.color_track.inverted-teal {
145+
background-color: #6DFFFF;
146+
}
147+
148+
/* Blue */
149+
.color_track.blue {
150+
background-color: #2185D0;
151+
}
152+
153+
.color_track.inverted-blue {
154+
background-color: #54C8FF;
155+
}
156+
157+
/* Violet */
158+
.color_track.violet {
159+
background-color: #6435C9;
160+
}
161+
162+
.color_track.inverted-violet {
163+
background-color: #A291FB;
164+
}
165+
166+
/* Purple */
167+
.color_track.purple {
168+
background-color: #A333C8;
169+
}
170+
171+
.color_track.inverted-purple {
172+
background-color: #DC73FF;
173+
}
174+
175+
/* Pink */
176+
.color_track.pink {
177+
background-color: #E03997;
178+
}
179+
180+
.color_track.inverted-pink {
181+
background-color: #FF8EDF;
182+
}
183+
184+
/* Brown */
185+
.color_track.brown {
186+
background-color: #A5673F;
187+
}
188+
189+
.color_track.inverted-brown {
190+
background-color: #D67C1C;
191+
}
192+
193+
/* Grey */
194+
.color_track.grey {
195+
background-color: #767676;
196+
}
197+
198+
.color_track.inverted-grey {
199+
background-color: #DCDDDE;
200+
}
201+
202+
/* Black */
203+
.color_track.black {
204+
background-color: #1b1c1d;
205+
}
206+
207+
.color_track.inverted-black {
208+
background-color: #545454;
209+
}

0 commit comments

Comments
 (0)