@toptal/picasso-slider 1.0.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-package/src/Slider/Slider.d.ts +20 -20
- package/dist-package/src/Slider/Slider.d.ts.map +1 -1
- package/dist-package/src/Slider/Slider.js +49 -41
- package/dist-package/src/Slider/Slider.js.map +1 -1
- package/dist-package/src/Slider/hooks/index.d.ts +2 -0
- package/dist-package/src/Slider/hooks/index.d.ts.map +1 -0
- package/dist-package/src/Slider/hooks/index.js +2 -0
- package/dist-package/src/Slider/hooks/index.js.map +1 -0
- package/dist-package/src/Slider/hooks/use-label-overlap.d.ts +8 -0
- package/dist-package/src/Slider/hooks/use-label-overlap.d.ts.map +1 -0
- package/dist-package/src/Slider/hooks/use-label-overlap.js +35 -0
- package/dist-package/src/Slider/hooks/use-label-overlap.js.map +1 -0
- package/dist-package/src/Slider/index.d.ts +0 -1
- package/dist-package/src/Slider/index.d.ts.map +1 -1
- package/dist-package/src/Slider/index.js +0 -1
- package/dist-package/src/Slider/index.js.map +1 -1
- package/dist-package/src/SliderMark/SliderMark.d.ts +13 -0
- package/dist-package/src/SliderMark/SliderMark.d.ts.map +1 -0
- package/dist-package/src/SliderMark/SliderMark.js +10 -0
- package/dist-package/src/SliderMark/SliderMark.js.map +1 -0
- package/dist-package/src/SliderMark/index.d.ts +2 -0
- package/dist-package/src/SliderMark/index.d.ts.map +1 -0
- package/dist-package/src/SliderMark/index.js +2 -0
- package/dist-package/src/SliderMark/index.js.map +1 -0
- package/dist-package/src/SliderValueLabel/SliderValueLabel.d.ts +9 -14
- package/dist-package/src/SliderValueLabel/SliderValueLabel.d.ts.map +1 -1
- package/dist-package/src/SliderValueLabel/SliderValueLabel.js +40 -23
- package/dist-package/src/SliderValueLabel/SliderValueLabel.js.map +1 -1
- package/dist-package/src/SliderValueLabel/index.d.ts +1 -2
- package/dist-package/src/SliderValueLabel/index.d.ts.map +1 -1
- package/dist-package/src/SliderValueLabel/index.js +1 -1
- package/dist-package/src/SliderValueLabel/index.js.map +1 -1
- package/dist-package/src/index.d.ts +0 -1
- package/dist-package/src/index.d.ts.map +1 -1
- package/dist-package/src/index.js +0 -1
- package/dist-package/src/index.js.map +1 -1
- package/dist-package/src/utils/check-bg-color.d.ts +7 -0
- package/dist-package/src/utils/check-bg-color.d.ts.map +1 -0
- package/dist-package/src/utils/check-bg-color.js +15 -0
- package/dist-package/src/utils/check-bg-color.js.map +1 -0
- package/dist-package/src/utils/check-overlap.d.ts +26 -0
- package/dist-package/src/utils/check-overlap.d.ts.map +1 -0
- package/dist-package/src/utils/check-overlap.js +32 -0
- package/dist-package/src/utils/check-overlap.js.map +1 -0
- package/dist-package/src/utils/get-x-placement.d.ts +8 -0
- package/dist-package/src/utils/get-x-placement.d.ts.map +1 -0
- package/dist-package/src/utils/get-x-placement.js +17 -0
- package/dist-package/src/utils/get-x-placement.js.map +1 -0
- package/dist-package/src/utils/index.d.ts +4 -0
- package/dist-package/src/utils/index.d.ts.map +1 -0
- package/dist-package/src/utils/index.js +4 -0
- package/dist-package/src/utils/index.js.map +1 -0
- package/package.json +5 -7
- package/src/Slider/Slider.tsx +114 -101
- package/src/Slider/__snapshots__/test.tsx.snap +58 -30
- package/src/Slider/hooks/index.ts +1 -0
- package/src/Slider/hooks/use-label-overlap.ts +48 -0
- package/src/Slider/index.ts +0 -1
- package/src/Slider/story/ControlledWithLabel.example.tsx +1 -1
- package/src/Slider/story/Marks.example.tsx +13 -4
- package/src/Slider/story/Range.example.tsx +0 -1
- package/src/Slider/story/RangeWithValueLabel.example.tsx +0 -1
- package/src/Slider/story/Tooltip.example.tsx +22 -6
- package/src/Slider/story/index.jsx +0 -8
- package/src/Slider/test.tsx +6 -0
- package/src/SliderMark/SliderMark.tsx +35 -0
- package/src/SliderMark/index.ts +1 -0
- package/src/SliderValueLabel/SliderValueLabel.tsx +74 -54
- package/src/SliderValueLabel/index.ts +1 -5
- package/src/index.ts +0 -1
- package/src/utils/check-bg-color.test.ts +92 -0
- package/src/utils/check-bg-color.ts +28 -0
- package/src/utils/check-overlap.test.ts +55 -0
- package/src/utils/check-overlap.ts +43 -0
- package/src/utils/get-x-placement.test.ts +93 -0
- package/src/utils/get-x-placement.ts +28 -0
- package/src/utils/index.ts +3 -0
- package/dist-package/src/Slider/SliderContext.d.ts +0 -11
- package/dist-package/src/Slider/SliderContext.d.ts.map +0 -1
- package/dist-package/src/Slider/SliderContext.js +0 -38
- package/dist-package/src/Slider/SliderContext.js.map +0 -1
- package/dist-package/src/Slider/styles.d.ts +0 -4
- package/dist-package/src/Slider/styles.d.ts.map +0 -1
- package/dist-package/src/Slider/styles.js +0 -68
- package/dist-package/src/Slider/styles.js.map +0 -1
- package/src/Slider/SliderContext.tsx +0 -80
- package/src/Slider/story/CustomTooltip.example.tsx +0 -36
- package/src/Slider/styles.ts +0 -71
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import React, { createContext, useCallback, useContext, useMemo, useState, } from 'react';
|
|
2
|
-
import { noop } from '@toptal/picasso-utils';
|
|
3
|
-
const SliderContext = createContext({
|
|
4
|
-
registerValueLabel: noop,
|
|
5
|
-
hasTooltipOverlow: false,
|
|
6
|
-
});
|
|
7
|
-
const SliderContextProvider = ({ children }) => {
|
|
8
|
-
const [valueLabels, setValueLabels] = useState([
|
|
9
|
-
null,
|
|
10
|
-
null,
|
|
11
|
-
]);
|
|
12
|
-
const [hasTooltipOverlow, setHasTooltipOverflow] = useState(false);
|
|
13
|
-
const checkTooltipsOverlap = useCallback(() => {
|
|
14
|
-
if (valueLabels[0] && valueLabels[1]) {
|
|
15
|
-
const minDistance = (valueLabels[0].tooltipWidth + valueLabels[1].tooltipWidth) / 2;
|
|
16
|
-
const distance = valueLabels[1].thumb.offsetLeft - valueLabels[0].thumb.offsetLeft;
|
|
17
|
-
setHasTooltipOverflow(distance < minDistance && distance !== 0);
|
|
18
|
-
}
|
|
19
|
-
}, [valueLabels]);
|
|
20
|
-
const registerValueLabel = useCallback((index, tooltip, thumb) => {
|
|
21
|
-
if (!valueLabels[index]) {
|
|
22
|
-
const newTooltips = [...valueLabels];
|
|
23
|
-
newTooltips[index] = { thumb, tooltipWidth: tooltip.offsetWidth };
|
|
24
|
-
setValueLabels(newTooltips);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
checkTooltipsOverlap();
|
|
28
|
-
}
|
|
29
|
-
}, [valueLabels, checkTooltipsOverlap]);
|
|
30
|
-
const contextValue = useMemo(() => ({
|
|
31
|
-
registerValueLabel,
|
|
32
|
-
hasTooltipOverlow,
|
|
33
|
-
}), [registerValueLabel, hasTooltipOverlow]);
|
|
34
|
-
return (React.createElement(SliderContext.Provider, { value: contextValue }, children));
|
|
35
|
-
};
|
|
36
|
-
const useSliderContext = () => useContext(SliderContext);
|
|
37
|
-
export { SliderContextProvider, useSliderContext };
|
|
38
|
-
//# sourceMappingURL=SliderContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SliderContext.js","sourceRoot":"","sources":["../../../src/Slider/SliderContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,MAAM,aAAa,GAAG,aAAa,CAOhC;IACD,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,KAAK;CACzB,CAAC,CAAA;AAQF,MAAM,qBAAqB,GAAG,CAAC,EAAE,QAAQ,EAAiB,EAAE,EAAE;IAC5D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAwB;QACpE,IAAI;QACJ,IAAI;KACL,CAAC,CAAA;IACF,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAElE,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;YACpC,MAAM,WAAW,GACf,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAEjE,MAAM,QAAQ,GACZ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAA;YAEnE,qBAAqB,CAAC,QAAQ,GAAG,WAAW,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAA;SAChE;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,KAAa,EAAE,OAAuB,EAAE,KAAkB,EAAE,EAAE;QAC7D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACvB,MAAM,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,CAAA;YAEpC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,CAAA;YAEjE,cAAc,CAAC,WAAW,CAAC,CAAA;SAC5B;aAAM;YACL,oBAAoB,EAAE,CAAA;SACvB;IACH,CAAC,EACD,CAAC,WAAW,EAAE,oBAAoB,CAAC,CACpC,CAAA;IAED,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,kBAAkB;QAClB,iBAAiB;KAClB,CAAC,EACF,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CACxC,CAAA;IAED,OAAO,CACL,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IACxC,QAAQ,CACc,CAC1B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AAExD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Theme } from '@material-ui/core/styles';
|
|
2
|
-
declare const _default: ({ palette }: Theme) => import("@material-ui/styles").StyleRules<{}, "mark" | "track" | "root" | "rail" | "thumb" | "markActive" | "wrapper" | "markInactive" | "markTrack" | "unmarkTrack" | "hideThumb">;
|
|
3
|
-
export default _default;
|
|
4
|
-
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/Slider/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;sCAexB,KAAK;AAAlC,wBAuDI"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { createStyles } from '@material-ui/core/styles';
|
|
2
|
-
import { rem } from '@toptal/picasso-shared';
|
|
3
|
-
import { PicassoProvider } from '@toptal/picasso-provider';
|
|
4
|
-
PicassoProvider.override(() => ({
|
|
5
|
-
MuiSlider: {
|
|
6
|
-
thumb: {
|
|
7
|
-
'&:hover, &$active, &$focusVisible': {
|
|
8
|
-
boxShadow: 'none',
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
}));
|
|
13
|
-
export default ({ palette }) => createStyles({
|
|
14
|
-
wrapper: {
|
|
15
|
-
margin: `${rem('6px')} 0`,
|
|
16
|
-
},
|
|
17
|
-
root: {
|
|
18
|
-
display: 'block',
|
|
19
|
-
color: palette.grey.main,
|
|
20
|
-
padding: `${rem('6px')} 0`,
|
|
21
|
-
margin: `-${rem('6px')} 0`,
|
|
22
|
-
height: rem('1px'),
|
|
23
|
-
},
|
|
24
|
-
rail: {
|
|
25
|
-
height: rem('1px'),
|
|
26
|
-
borderRadius: 'unset',
|
|
27
|
-
opacity: 0.24,
|
|
28
|
-
},
|
|
29
|
-
track: {
|
|
30
|
-
backgroundColor: palette.primary.main,
|
|
31
|
-
borderRadius: 'unset',
|
|
32
|
-
height: rem('1px'),
|
|
33
|
-
},
|
|
34
|
-
thumb: {
|
|
35
|
-
backgroundColor: palette.primary.main,
|
|
36
|
-
border: `${rem('2px')} solid ${palette.common.white}`,
|
|
37
|
-
height: rem('15px'),
|
|
38
|
-
width: rem('15px'),
|
|
39
|
-
marginTop: rem('-7px'),
|
|
40
|
-
},
|
|
41
|
-
mark: {
|
|
42
|
-
backgroundColor: palette.grey.main,
|
|
43
|
-
height: rem('6px'),
|
|
44
|
-
width: rem('6px'),
|
|
45
|
-
borderRadius: '50%',
|
|
46
|
-
border: `${rem('2px')} solid ${palette.common.white}`,
|
|
47
|
-
opacity: 1,
|
|
48
|
-
top: rem('1.5px'),
|
|
49
|
-
transform: 'translateX(-50%)',
|
|
50
|
-
boxSizing: 'content-box',
|
|
51
|
-
},
|
|
52
|
-
markActive: {
|
|
53
|
-
backgroundColor: palette.primary.main,
|
|
54
|
-
},
|
|
55
|
-
markInactive: {
|
|
56
|
-
backgroundColor: palette.grey.main,
|
|
57
|
-
},
|
|
58
|
-
markTrack: {
|
|
59
|
-
backgroundColor: palette.primary.main,
|
|
60
|
-
},
|
|
61
|
-
unmarkTrack: {
|
|
62
|
-
backgroundColor: palette.grey.lighter2,
|
|
63
|
-
},
|
|
64
|
-
hideThumb: {
|
|
65
|
-
display: 'none',
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/Slider/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9B,SAAS,EAAE;QACT,KAAK,EAAE;YACL,mCAAmC,EAAE;gBACnC,SAAS,EAAE,MAAM;aAClB;SACF;KACF;CACF,CAAC,CAAC,CAAA;AAEH,eAAe,CAAC,EAAE,OAAO,EAAS,EAAE,EAAE,CACpC,YAAY,CAAC;IACX,OAAO,EAAE;QACP,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI;KAC1B;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;QACxB,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI;QAC1B,MAAM,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI;QAC1B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;QAClB,YAAY,EAAE,OAAO;QACrB,OAAO,EAAE,IAAI;KACd;IACD,KAAK,EAAE;QACL,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QACrC,YAAY,EAAE,OAAO;QACrB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;KACnB;IACD,KAAK,EAAE;QACL,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;QACrC,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;QACrD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;KACvB;IACD,IAAI,EAAE;QACJ,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;QAClC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QACjB,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;QACrD,OAAO,EAAE,CAAC;QACV,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;QACjB,SAAS,EAAE,kBAAkB;QAC7B,SAAS,EAAE,aAAa;KACzB;IACD,UAAU,EAAE;QACV,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;KACtC;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;KACnC;IACD,SAAS,EAAE;QACT,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;KACtC;IACD,WAAW,EAAE;QACX,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;KACvC;IACD,SAAS,EAAE;QACT,OAAO,EAAE,MAAM;KAChB;CACF,CAAC,CAAA"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from 'react'
|
|
2
|
-
import React, {
|
|
3
|
-
createContext,
|
|
4
|
-
useCallback,
|
|
5
|
-
useContext,
|
|
6
|
-
useMemo,
|
|
7
|
-
useState,
|
|
8
|
-
} from 'react'
|
|
9
|
-
import { noop } from '@toptal/picasso-utils'
|
|
10
|
-
|
|
11
|
-
const SliderContext = createContext<{
|
|
12
|
-
registerValueLabel: (
|
|
13
|
-
index: number,
|
|
14
|
-
tooltip: HTMLDivElement,
|
|
15
|
-
thumb: HTMLElement
|
|
16
|
-
) => void
|
|
17
|
-
hasTooltipOverlow: boolean
|
|
18
|
-
}>({
|
|
19
|
-
registerValueLabel: noop,
|
|
20
|
-
hasTooltipOverlow: false,
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
interface ProviderProps {
|
|
24
|
-
children: ReactNode
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
type ValueLabel = { tooltipWidth: number; thumb: HTMLElement }
|
|
28
|
-
|
|
29
|
-
const SliderContextProvider = ({ children }: ProviderProps) => {
|
|
30
|
-
const [valueLabels, setValueLabels] = useState<(ValueLabel | null)[]>([
|
|
31
|
-
null,
|
|
32
|
-
null,
|
|
33
|
-
])
|
|
34
|
-
const [hasTooltipOverlow, setHasTooltipOverflow] = useState(false)
|
|
35
|
-
|
|
36
|
-
const checkTooltipsOverlap = useCallback(() => {
|
|
37
|
-
if (valueLabels[0] && valueLabels[1]) {
|
|
38
|
-
const minDistance =
|
|
39
|
-
(valueLabels[0].tooltipWidth + valueLabels[1].tooltipWidth) / 2
|
|
40
|
-
|
|
41
|
-
const distance =
|
|
42
|
-
valueLabels[1].thumb.offsetLeft - valueLabels[0].thumb.offsetLeft
|
|
43
|
-
|
|
44
|
-
setHasTooltipOverflow(distance < minDistance && distance !== 0)
|
|
45
|
-
}
|
|
46
|
-
}, [valueLabels])
|
|
47
|
-
|
|
48
|
-
const registerValueLabel = useCallback(
|
|
49
|
-
(index: number, tooltip: HTMLDivElement, thumb: HTMLElement) => {
|
|
50
|
-
if (!valueLabels[index]) {
|
|
51
|
-
const newTooltips = [...valueLabels]
|
|
52
|
-
|
|
53
|
-
newTooltips[index] = { thumb, tooltipWidth: tooltip.offsetWidth }
|
|
54
|
-
|
|
55
|
-
setValueLabels(newTooltips)
|
|
56
|
-
} else {
|
|
57
|
-
checkTooltipsOverlap()
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
[valueLabels, checkTooltipsOverlap]
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
const contextValue = useMemo(
|
|
64
|
-
() => ({
|
|
65
|
-
registerValueLabel,
|
|
66
|
-
hasTooltipOverlow,
|
|
67
|
-
}),
|
|
68
|
-
[registerValueLabel, hasTooltipOverlow]
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
return (
|
|
72
|
-
<SliderContext.Provider value={contextValue}>
|
|
73
|
-
{children}
|
|
74
|
-
</SliderContext.Provider>
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const useSliderContext = () => useContext(SliderContext)
|
|
79
|
-
|
|
80
|
-
export { SliderContextProvider, useSliderContext }
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { ReactNode, ChangeEvent } from 'react'
|
|
2
|
-
import React from 'react'
|
|
3
|
-
import { Container, Slider, Tooltip } from '@toptal/picasso'
|
|
4
|
-
|
|
5
|
-
const BottomTooltip = ({
|
|
6
|
-
children,
|
|
7
|
-
open,
|
|
8
|
-
value,
|
|
9
|
-
}: {
|
|
10
|
-
children: ReactNode
|
|
11
|
-
open: boolean
|
|
12
|
-
value: ReactNode
|
|
13
|
-
}) => (
|
|
14
|
-
<Tooltip placement='bottom' open={open} content={value} compact>
|
|
15
|
-
{children}
|
|
16
|
-
</Tooltip>
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
const CustomSliderTooltip = () => {
|
|
20
|
-
const handleChange = (event: ChangeEvent<{}>, value: number | number[]) => {
|
|
21
|
-
window.console.log('onChange: ', value)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return (
|
|
25
|
-
<Container>
|
|
26
|
-
<Slider
|
|
27
|
-
onChange={handleChange}
|
|
28
|
-
tooltip='auto'
|
|
29
|
-
TooltipComponent={BottomTooltip}
|
|
30
|
-
compact
|
|
31
|
-
/>
|
|
32
|
-
</Container>
|
|
33
|
-
)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export default CustomSliderTooltip
|
package/src/Slider/styles.ts
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import type { Theme } from '@material-ui/core/styles'
|
|
2
|
-
import { createStyles } from '@material-ui/core/styles'
|
|
3
|
-
import { rem } from '@toptal/picasso-shared'
|
|
4
|
-
import { PicassoProvider } from '@toptal/picasso-provider'
|
|
5
|
-
|
|
6
|
-
PicassoProvider.override(() => ({
|
|
7
|
-
MuiSlider: {
|
|
8
|
-
thumb: {
|
|
9
|
-
'&:hover, &$active, &$focusVisible': {
|
|
10
|
-
boxShadow: 'none',
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
}))
|
|
15
|
-
|
|
16
|
-
export default ({ palette }: Theme) =>
|
|
17
|
-
createStyles({
|
|
18
|
-
wrapper: {
|
|
19
|
-
margin: `${rem('6px')} 0`,
|
|
20
|
-
},
|
|
21
|
-
root: {
|
|
22
|
-
display: 'block',
|
|
23
|
-
color: palette.grey.main,
|
|
24
|
-
padding: `${rem('6px')} 0`,
|
|
25
|
-
margin: `-${rem('6px')} 0`,
|
|
26
|
-
height: rem('1px'),
|
|
27
|
-
},
|
|
28
|
-
rail: {
|
|
29
|
-
height: rem('1px'),
|
|
30
|
-
borderRadius: 'unset',
|
|
31
|
-
opacity: 0.24,
|
|
32
|
-
},
|
|
33
|
-
track: {
|
|
34
|
-
backgroundColor: palette.primary.main,
|
|
35
|
-
borderRadius: 'unset',
|
|
36
|
-
height: rem('1px'),
|
|
37
|
-
},
|
|
38
|
-
thumb: {
|
|
39
|
-
backgroundColor: palette.primary.main,
|
|
40
|
-
border: `${rem('2px')} solid ${palette.common.white}`,
|
|
41
|
-
height: rem('15px'),
|
|
42
|
-
width: rem('15px'),
|
|
43
|
-
marginTop: rem('-7px'),
|
|
44
|
-
},
|
|
45
|
-
mark: {
|
|
46
|
-
backgroundColor: palette.grey.main,
|
|
47
|
-
height: rem('6px'),
|
|
48
|
-
width: rem('6px'),
|
|
49
|
-
borderRadius: '50%',
|
|
50
|
-
border: `${rem('2px')} solid ${palette.common.white}`,
|
|
51
|
-
opacity: 1,
|
|
52
|
-
top: rem('1.5px'),
|
|
53
|
-
transform: 'translateX(-50%)',
|
|
54
|
-
boxSizing: 'content-box',
|
|
55
|
-
},
|
|
56
|
-
markActive: {
|
|
57
|
-
backgroundColor: palette.primary.main,
|
|
58
|
-
},
|
|
59
|
-
markInactive: {
|
|
60
|
-
backgroundColor: palette.grey.main,
|
|
61
|
-
},
|
|
62
|
-
markTrack: {
|
|
63
|
-
backgroundColor: palette.primary.main,
|
|
64
|
-
},
|
|
65
|
-
unmarkTrack: {
|
|
66
|
-
backgroundColor: palette.grey.lighter2,
|
|
67
|
-
},
|
|
68
|
-
hideThumb: {
|
|
69
|
-
display: 'none',
|
|
70
|
-
},
|
|
71
|
-
})
|