@pingux/astro 2.118.0-alpha.0 → 2.118.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/lib/cjs/components/SliderField/Slider.styles.d.ts +138 -0
- package/lib/cjs/components/SliderField/Slider.styles.js +163 -0
- package/lib/cjs/components/SliderField/SliderActiveTrack.d.ts +4 -0
- package/lib/cjs/components/SliderField/SliderActiveTrack.js +49 -0
- package/lib/cjs/components/SliderField/SliderField.d.ts +4 -0
- package/lib/cjs/components/SliderField/SliderField.js +58 -0
- package/lib/cjs/components/SliderField/SliderField.mdx +127 -0
- package/lib/cjs/components/SliderField/SliderField.stories.d.ts +11 -0
- package/lib/cjs/components/SliderField/SliderField.stories.js +151 -0
- package/lib/cjs/components/SliderField/SliderField.test.d.ts +1 -0
- package/lib/cjs/components/SliderField/SliderField.test.js +357 -0
- package/lib/cjs/components/SliderField/SliderLabelContainer.d.ts +4 -0
- package/lib/cjs/components/SliderField/SliderLabelContainer.js +43 -0
- package/lib/cjs/components/SliderField/SliderThumb.d.ts +4 -0
- package/lib/cjs/components/SliderField/SliderThumb.js +82 -0
- package/lib/cjs/components/SliderField/index.d.ts +1 -0
- package/lib/cjs/components/SliderField/index.js +14 -0
- package/lib/cjs/hooks/index.d.ts +1 -0
- package/lib/cjs/hooks/index.js +7 -0
- package/lib/cjs/hooks/useSliderField/index.d.ts +1 -0
- package/lib/cjs/hooks/useSliderField/index.js +14 -0
- package/lib/cjs/hooks/useSliderField/useSliderField.d.ts +4290 -0
- package/lib/cjs/hooks/useSliderField/useSliderField.js +230 -0
- package/lib/cjs/hooks/useSliderField/useSliderField.test.d.ts +1 -0
- package/lib/cjs/hooks/useSliderField/useSliderField.test.js +109 -0
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +8 -0
- package/lib/cjs/styles/colors.d.ts +6 -0
- package/lib/cjs/styles/colors.js +5 -1
- package/lib/cjs/styles/variants/variants.js +2 -0
- package/lib/cjs/types/sliderField.d.ts +79 -0
- package/lib/cjs/types/sliderField.js +6 -0
- package/lib/cjs/utils/testUtils/universalFormSubmitTest.js +17 -0
- package/lib/components/SliderField/Slider.styles.js +155 -0
- package/lib/components/SliderField/SliderActiveTrack.js +37 -0
- package/lib/components/SliderField/SliderField.js +46 -0
- package/lib/components/SliderField/SliderField.mdx +127 -0
- package/lib/components/SliderField/SliderField.stories.js +131 -0
- package/lib/components/SliderField/SliderField.test.js +354 -0
- package/lib/components/SliderField/SliderLabelContainer.js +29 -0
- package/lib/components/SliderField/SliderThumb.js +68 -0
- package/lib/components/SliderField/index.js +1 -0
- package/lib/hooks/index.js +1 -0
- package/lib/hooks/useSliderField/index.js +1 -0
- package/lib/hooks/useSliderField/useSliderField.js +220 -0
- package/lib/hooks/useSliderField/useSliderField.test.js +102 -0
- package/lib/index.js +1 -0
- package/lib/styles/colors.js +5 -1
- package/lib/styles/variants/variants.js +2 -0
- package/lib/types/sliderField.js +1 -0
- package/lib/utils/testUtils/universalFormSubmitTest.js +17 -0
- package/package.json +3 -1
@@ -0,0 +1,155 @@
|
|
1
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
2
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
3
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
4
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
5
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
6
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
7
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
8
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
9
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
10
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
11
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
12
|
+
import { defaultFocus } from '../Button/Buttons.styles';
|
13
|
+
var test = {
|
14
|
+
bg: 'active'
|
15
|
+
};
|
16
|
+
var slider = {
|
17
|
+
display: 'flex',
|
18
|
+
'&.is-horizontal': {
|
19
|
+
flexDirection: 'column'
|
20
|
+
}
|
21
|
+
};
|
22
|
+
var track = {
|
23
|
+
backgroundColor: 'slider.track',
|
24
|
+
cursor: 'pointer',
|
25
|
+
mb: 'sm',
|
26
|
+
position: 'relative',
|
27
|
+
'&.is-disabled': {
|
28
|
+
opacity: 0.4
|
29
|
+
},
|
30
|
+
'&.is-horizontal': {
|
31
|
+
height: '10px',
|
32
|
+
borderRadius: '11px',
|
33
|
+
width: '100%'
|
34
|
+
},
|
35
|
+
'&:before': {
|
36
|
+
content: 'attr(x)',
|
37
|
+
display: 'block',
|
38
|
+
position: 'absolute',
|
39
|
+
height: '3px',
|
40
|
+
width: '100%',
|
41
|
+
top: '50%',
|
42
|
+
transform: 'translateY(-50%)'
|
43
|
+
},
|
44
|
+
'&.is-vertical': {
|
45
|
+
width: '10px',
|
46
|
+
borderRadius: '11px',
|
47
|
+
height: '100%',
|
48
|
+
'&:before': {
|
49
|
+
content: 'attr(x)',
|
50
|
+
display: 'block',
|
51
|
+
position: 'absolute',
|
52
|
+
width: '3px',
|
53
|
+
height: '100%',
|
54
|
+
left: '50%',
|
55
|
+
transform: 'translateX(-50%)'
|
56
|
+
}
|
57
|
+
}
|
58
|
+
};
|
59
|
+
var hiddenTrack = {
|
60
|
+
cursor: 'pointer',
|
61
|
+
'&.is-horizontal': {
|
62
|
+
height: '10px',
|
63
|
+
borderRadius: '11px',
|
64
|
+
width: 'calc(100% - 9px)',
|
65
|
+
ml: '4.5px',
|
66
|
+
mr: '4.5px'
|
67
|
+
},
|
68
|
+
'&.is-vertical': {
|
69
|
+
width: '10px',
|
70
|
+
borderRadius: '11px',
|
71
|
+
height: 'calc(100% - 9px)',
|
72
|
+
mt: '4.5px',
|
73
|
+
mb: '4.5px'
|
74
|
+
}
|
75
|
+
};
|
76
|
+
var thumb = {
|
77
|
+
width: '21px',
|
78
|
+
height: '21px',
|
79
|
+
borderRadius: '50%',
|
80
|
+
bg: 'active',
|
81
|
+
cursor: 'pointer',
|
82
|
+
'&.is-focused': _objectSpread({}, defaultFocus),
|
83
|
+
'&.is-horizontal': {
|
84
|
+
top: '50%'
|
85
|
+
},
|
86
|
+
'&.is-vertical': {
|
87
|
+
left: '50%'
|
88
|
+
},
|
89
|
+
'&.is-hovered': {
|
90
|
+
backgroundColor: 'accent.40'
|
91
|
+
},
|
92
|
+
'&.is-pressed': {
|
93
|
+
backgroundColor: 'accent.20'
|
94
|
+
}
|
95
|
+
};
|
96
|
+
var activeTrack = {
|
97
|
+
bg: 'active',
|
98
|
+
position: 'absolute',
|
99
|
+
'&.is-horizontal': {
|
100
|
+
borderRadius: '11px 0px 0px 11px',
|
101
|
+
height: '100%',
|
102
|
+
'&.is-single-track': {
|
103
|
+
left: '0%'
|
104
|
+
}
|
105
|
+
},
|
106
|
+
'&.is-vertical': {
|
107
|
+
borderRadius: '11px 11px 11px 11px',
|
108
|
+
width: '100%',
|
109
|
+
bottom: '0%'
|
110
|
+
}
|
111
|
+
};
|
112
|
+
var trackWrapper = {
|
113
|
+
'&.is-vertical': {
|
114
|
+
py: '9px'
|
115
|
+
},
|
116
|
+
'&.is-horizontal': {
|
117
|
+
px: '9px'
|
118
|
+
}
|
119
|
+
};
|
120
|
+
var labelContainer = {
|
121
|
+
'&.is-horizontal': {
|
122
|
+
mb: 'xs'
|
123
|
+
},
|
124
|
+
'&.is-vertical': {
|
125
|
+
mt: 'xs',
|
126
|
+
gap: 'xs'
|
127
|
+
}
|
128
|
+
};
|
129
|
+
var wrapper = {
|
130
|
+
'&.is-horizontal': {
|
131
|
+
width: '100%'
|
132
|
+
},
|
133
|
+
'&.is-vertical': {
|
134
|
+
height: '100%',
|
135
|
+
ml: 'xs'
|
136
|
+
}
|
137
|
+
};
|
138
|
+
var outputContainer = {
|
139
|
+
'&.is-horizontal': {
|
140
|
+
marginLeft: 'auto',
|
141
|
+
mt: '-3px'
|
142
|
+
}
|
143
|
+
};
|
144
|
+
export default {
|
145
|
+
test: test,
|
146
|
+
slider: slider,
|
147
|
+
activeTrack: activeTrack,
|
148
|
+
thumb: thumb,
|
149
|
+
track: track,
|
150
|
+
hiddenTrack: hiddenTrack,
|
151
|
+
trackWrapper: trackWrapper,
|
152
|
+
labelContainer: labelContainer,
|
153
|
+
outputContainer: outputContainer,
|
154
|
+
wrapper: wrapper
|
155
|
+
};
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
3
|
+
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
4
|
+
var _excluded = ["className", "isHorizontal", "isMultiThumb", "state", "sx"];
|
5
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
6
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
7
|
+
import _valuesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/values";
|
8
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
9
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
10
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
11
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
12
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
13
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
14
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
15
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
16
|
+
import React, { forwardRef } from 'react';
|
17
|
+
import { Box } from '../../index';
|
18
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
19
|
+
var SliderActiveTrack = /*#__PURE__*/forwardRef(function (props, ref) {
|
20
|
+
var className = props.className,
|
21
|
+
isHorizontal = props.isHorizontal,
|
22
|
+
isMultiThumb = props.isMultiThumb,
|
23
|
+
state = props.state,
|
24
|
+
sx = props.sx,
|
25
|
+
others = _objectWithoutProperties(props, _excluded);
|
26
|
+
var length = isMultiThumb ? "".concat(_valuesInstanceProperty(state)[1] - _valuesInstanceProperty(state)[0], "%") : "".concat(_valuesInstanceProperty(state)[0], "%");
|
27
|
+
var trackStart = "".concat(_valuesInstanceProperty(state)[0], "%");
|
28
|
+
var cssLenProp = isHorizontal ? 'width' : 'height';
|
29
|
+
var cssStartProp = isHorizontal ? 'left' : 'top';
|
30
|
+
return ___EmotionJSX(Box, _extends({
|
31
|
+
ref: ref,
|
32
|
+
className: className,
|
33
|
+
sx: _objectSpread(_objectSpread(_defineProperty({}, cssLenProp, length), isMultiThumb && _defineProperty({}, cssStartProp, trackStart)), sx),
|
34
|
+
variant: "slider.activeTrack"
|
35
|
+
}, others));
|
36
|
+
});
|
37
|
+
export default SliderActiveTrack;
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
2
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
3
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
4
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
5
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
6
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
7
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
8
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
9
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
10
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
11
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
12
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
13
|
+
import React, { forwardRef } from 'react';
|
14
|
+
import { useSliderField } from '../../hooks';
|
15
|
+
import { Box, FieldHelperText } from '../../index';
|
16
|
+
import SliderActiveTrack from './SliderActiveTrack';
|
17
|
+
import SliderLabelContainer from './SliderLabelContainer';
|
18
|
+
import SliderThumb from './SliderThumb';
|
19
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
20
|
+
var SliderField = /*#__PURE__*/forwardRef(function (props, ref) {
|
21
|
+
var helperText = props.helperText,
|
22
|
+
_props$isMultiThumb = props.isMultiThumb,
|
23
|
+
isMultiThumb = _props$isMultiThumb === void 0 ? false : _props$isMultiThumb;
|
24
|
+
var trackRef = React.useRef(null);
|
25
|
+
var _useSliderField = useSliderField(_objectSpread(_objectSpread({}, props), {}, {
|
26
|
+
trackRef: trackRef
|
27
|
+
})),
|
28
|
+
containerProps = _useSliderField.containerProps,
|
29
|
+
labelContainerProps = _useSliderField.labelContainerProps,
|
30
|
+
sliderActiveTrackProps = _useSliderField.sliderActiveTrackProps,
|
31
|
+
hiddenTrackProps = _useSliderField.hiddenTrackProps,
|
32
|
+
helperTextProps = _useSliderField.helperTextProps,
|
33
|
+
thumbPropsSpread = _useSliderField.thumbPropsSpread,
|
34
|
+
visibleTrackProps = _useSliderField.visibleTrackProps,
|
35
|
+
wrapperProps = _useSliderField.wrapperProps;
|
36
|
+
return ___EmotionJSX(Box, _extends({}, containerProps, {
|
37
|
+
ref: ref
|
38
|
+
}), ___EmotionJSX(Box, wrapperProps, labelContainerProps.isHorizontal && ___EmotionJSX(SliderLabelContainer, labelContainerProps), ___EmotionJSX(Box, visibleTrackProps, ___EmotionJSX(SliderActiveTrack, sliderActiveTrackProps), ___EmotionJSX(Box, _extends({}, hiddenTrackProps, {
|
39
|
+
ref: trackRef
|
40
|
+
}), ___EmotionJSX(SliderThumb, _extends({}, thumbPropsSpread, {
|
41
|
+
index: 0
|
42
|
+
})), isMultiThumb && ___EmotionJSX(SliderThumb, _extends({}, thumbPropsSpread, {
|
43
|
+
index: 1
|
44
|
+
}))))), labelContainerProps.isVertical && ___EmotionJSX(SliderLabelContainer, labelContainerProps), helperText && ___EmotionJSX(FieldHelperText, helperTextProps, helperText));
|
45
|
+
});
|
46
|
+
export default SliderField;
|
@@ -0,0 +1,127 @@
|
|
1
|
+
import { Meta } from '@storybook/addon-docs';
|
2
|
+
|
3
|
+
<Meta title="Components/SliderField" />
|
4
|
+
|
5
|
+
# SliderField
|
6
|
+
|
7
|
+
The `SliderField` component is used to allow users to select a value from a range by dragging a thumb along a track. It supports both horizontal and vertical orientations, multi-thumb sliders, and provides a customizable display value.
|
8
|
+
|
9
|
+
### Recommended Use
|
10
|
+
|
11
|
+
- Use the `SliderField` component for selecting numeric values within a defined range.
|
12
|
+
- Display the current value dynamically as the user interacts with the slider.
|
13
|
+
- Use multi-thumb sliders for selecting a range of values.
|
14
|
+
|
15
|
+
### Features
|
16
|
+
|
17
|
+
- **Horizontal and Vertical Orientations**: Supports both orientations for flexible UI design.
|
18
|
+
- **Multi-Thumb Sliders**: Allows selecting a range of values.
|
19
|
+
- **Customizable Display Value**: Allows dynamic display of the current value.
|
20
|
+
- **Keyboard Accessibility**: Fully accessible with keyboard navigation.
|
21
|
+
- **Customizable Tracks and Thumbs**: Add custom class names or styles to `trackProps` and `activeTrackProps`.
|
22
|
+
|
23
|
+
### Props
|
24
|
+
|
25
|
+
| Prop | Type | Description |
|
26
|
+
| --------------------- | -------------------- | --------------------------------------------------------------------------- |
|
27
|
+
| `activeTrackProps` | `object` | Props passed to the active track element. |
|
28
|
+
| `autoFocus` | `boolean` | Automatically focuses the slider when it is rendered. |
|
29
|
+
| `className` | `string` | Additional class names for custom styling. |
|
30
|
+
| `defaultValue` | `number` `[number, number]` | The default value of the slider. |
|
31
|
+
| `displayValue` | `string` | Custom display value for the slider. |
|
32
|
+
| `formatOptions` | `Intl.NumberFormatOptions` | Options for formatting the display value. |
|
33
|
+
| `helperText` | `string` | Text displayed below the slider for additional context. |
|
34
|
+
| `helperTextProps` | `object` | Props passed to the helper text element. |
|
35
|
+
| `isDisabled` | `boolean` | Disables the slider. |
|
36
|
+
| `isDisplayValueHidden`| `boolean` | Hides the display value if set to `true`. |
|
37
|
+
| `isMultiThumb` | `boolean` | Enables multi-thumb slider functionality. |
|
38
|
+
| `label` | `string` `ReactNode` | Label for the slider. |
|
39
|
+
| `maxValue` | `number` | Maximum value of the slider. |
|
40
|
+
| `minValue` | `number` | Minimum value of the slider. |
|
41
|
+
| `name` | `string` | Name of the slider input. |
|
42
|
+
| `onBlur` | `function` | Callback triggered when the slider loses focus. |
|
43
|
+
| `onChange` | `function` | Callback triggered when the slider value changes. |
|
44
|
+
| `onChangeEnd` | `function` | Callback triggered when the slider interaction ends. |
|
45
|
+
| `onFocus` | `function` | Callback triggered when the slider gains focus. |
|
46
|
+
| `onFocusChange` | `function` | Callback triggered when the focus state changes. |
|
47
|
+
| `onKeyDown` | `function` | Callback triggered on key down events. |
|
48
|
+
| `onKeyUp` | `function` | Callback triggered on key up events. |
|
49
|
+
| `orientation` | `'horizontal' 'vertical'` | Orientation of the slider. |
|
50
|
+
| `step` | `number` | Step size for the slider. |
|
51
|
+
| `thumbProps` | `object` | Props passed to the slider thumb. |
|
52
|
+
| `trackProps` | `object` | Props passed to the track element. |
|
53
|
+
| `value` | `number` `[number, number]` | Controlled value of the slider. |
|
54
|
+
|
55
|
+
### Accessibility
|
56
|
+
|
57
|
+
This component adheres to accessibility guidelines to ensure a better user experience for all users.
|
58
|
+
|
59
|
+
#### Keyboard Navigation
|
60
|
+
|
61
|
+
| Keys | Function |
|
62
|
+
| ------------ | ----------------------------------------------------------------------- |
|
63
|
+
| Tab | Moves focus to the slider. |
|
64
|
+
| Arrow Keys | Adjusts the slider value incrementally. |
|
65
|
+
| Home | Moves the slider to the minimum value. |
|
66
|
+
| End | Moves the slider to the maximum value. |
|
67
|
+
|
68
|
+
#### Screen Readers
|
69
|
+
|
70
|
+
- **`aria-valuenow`**: Announces the current value of the slider.
|
71
|
+
- **`aria-valuemin` and `aria-valuemax`**: Define the minimum and maximum values of the slider.
|
72
|
+
- **`aria-orientation`**: Indicates whether the slider is horizontal or vertical.
|
73
|
+
|
74
|
+
### Example Usage
|
75
|
+
|
76
|
+
#### Single Thumb Slider
|
77
|
+
|
78
|
+
```jsx
|
79
|
+
<SliderField
|
80
|
+
label="Volume"
|
81
|
+
defaultValue={50}
|
82
|
+
minValue={0}
|
83
|
+
maxValue={100}
|
84
|
+
step={1}
|
85
|
+
onChange={(value) => console.log('Value:', value)}
|
86
|
+
/>
|
87
|
+
```
|
88
|
+
|
89
|
+
#### Multi-Thumb Slider
|
90
|
+
|
91
|
+
```jsx
|
92
|
+
<SliderField
|
93
|
+
label="Range"
|
94
|
+
isMultiThumb
|
95
|
+
defaultValue={[20, 80]}
|
96
|
+
minValue={0}
|
97
|
+
maxValue={100}
|
98
|
+
step={5}
|
99
|
+
onChange={(value) => console.log('Range:', value)}
|
100
|
+
/>
|
101
|
+
```
|
102
|
+
|
103
|
+
#### Custom Tracks and Thumbs
|
104
|
+
|
105
|
+
```jsx
|
106
|
+
<SliderField
|
107
|
+
label="Custom Slider"
|
108
|
+
trackProps={{ className: 'custom-track' }}
|
109
|
+
activeTrackProps={{ className: 'custom-active-track' }}
|
110
|
+
thumbProps={{ className: 'custom-thumb' }}
|
111
|
+
defaultValue={50}
|
112
|
+
minValue={0}
|
113
|
+
maxValue={100}
|
114
|
+
/>
|
115
|
+
```
|
116
|
+
|
117
|
+
#### Vertical Slider
|
118
|
+
|
119
|
+
```jsx
|
120
|
+
<SliderField
|
121
|
+
label="Vertical Slider"
|
122
|
+
orientation="vertical"
|
123
|
+
defaultValue={50}
|
124
|
+
minValue={0}
|
125
|
+
maxValue={100}
|
126
|
+
/>
|
127
|
+
```
|
@@ -0,0 +1,131 @@
|
|
1
|
+
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
2
|
+
import _objectDestructuringEmpty from "@babel/runtime-corejs3/helpers/esm/objectDestructuringEmpty";
|
3
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
4
|
+
import React, { useState } from 'react';
|
5
|
+
import DocsLayout from '../../../.storybook/storybookDocsLayout';
|
6
|
+
import { Label, SliderField } from '../../index';
|
7
|
+
import SliderFieldReadme from './SliderField.mdx';
|
8
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
9
|
+
export default {
|
10
|
+
title: 'Form/SliderField',
|
11
|
+
component: SliderField,
|
12
|
+
parameters: {
|
13
|
+
docs: {
|
14
|
+
page: function page() {
|
15
|
+
return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(SliderFieldReadme, null), ___EmotionJSX(DocsLayout, null));
|
16
|
+
}
|
17
|
+
}
|
18
|
+
},
|
19
|
+
argTypes: {
|
20
|
+
defaultValue: {
|
21
|
+
control: {
|
22
|
+
type: 'number'
|
23
|
+
}
|
24
|
+
},
|
25
|
+
orientation: {
|
26
|
+
control: {
|
27
|
+
type: 'select',
|
28
|
+
options: ['vertical', 'horizontal']
|
29
|
+
}
|
30
|
+
},
|
31
|
+
step: {
|
32
|
+
control: {
|
33
|
+
type: 'number'
|
34
|
+
}
|
35
|
+
},
|
36
|
+
minValue: {
|
37
|
+
control: {
|
38
|
+
type: 'number'
|
39
|
+
}
|
40
|
+
},
|
41
|
+
maxValue: {
|
42
|
+
control: {
|
43
|
+
type: 'number'
|
44
|
+
}
|
45
|
+
},
|
46
|
+
helperText: {
|
47
|
+
control: {
|
48
|
+
type: 'text'
|
49
|
+
}
|
50
|
+
},
|
51
|
+
label: {
|
52
|
+
control: {
|
53
|
+
type: 'text'
|
54
|
+
}
|
55
|
+
}
|
56
|
+
},
|
57
|
+
args: {
|
58
|
+
defaultValue: 40,
|
59
|
+
step: 10,
|
60
|
+
minValue: 0,
|
61
|
+
maxValue: 100,
|
62
|
+
label: 'Lorem ipsum',
|
63
|
+
helperText: 'Lorem ipsum...'
|
64
|
+
}
|
65
|
+
};
|
66
|
+
var loremText = 'Lorem ipsum';
|
67
|
+
export var Default = function Default(_ref) {
|
68
|
+
var args = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
|
69
|
+
return ___EmotionJSX(SliderField, _extends({
|
70
|
+
label: loremText,
|
71
|
+
defaultValue: 40
|
72
|
+
}, args));
|
73
|
+
};
|
74
|
+
export var Controlled = function Controlled() {
|
75
|
+
var _useState = useState(0),
|
76
|
+
_useState2 = _slicedToArray(_useState, 2),
|
77
|
+
value = _useState2[0],
|
78
|
+
setValue = _useState2[1];
|
79
|
+
return ___EmotionJSX(SliderField, {
|
80
|
+
value: value,
|
81
|
+
onChange: setValue,
|
82
|
+
displayValue: "(".concat(value, "px)"),
|
83
|
+
label: loremText
|
84
|
+
});
|
85
|
+
};
|
86
|
+
export var Vertical = function Vertical() {
|
87
|
+
return ___EmotionJSX(SliderField, {
|
88
|
+
label: loremText,
|
89
|
+
orientation: "vertical",
|
90
|
+
size: "150px"
|
91
|
+
});
|
92
|
+
};
|
93
|
+
export var MultiThumb = function MultiThumb() {
|
94
|
+
return ___EmotionJSX(SliderField, {
|
95
|
+
label: loremText,
|
96
|
+
isMultiThumb: true
|
97
|
+
});
|
98
|
+
};
|
99
|
+
export var ControlledMultiThumb = function ControlledMultiThumb() {
|
100
|
+
var _useState3 = useState([0, 50]),
|
101
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
102
|
+
value = _useState4[0],
|
103
|
+
setValue = _useState4[1];
|
104
|
+
return ___EmotionJSX(SliderField, {
|
105
|
+
label: loremText,
|
106
|
+
isMultiThumb: true,
|
107
|
+
onChange: setValue,
|
108
|
+
value: value
|
109
|
+
});
|
110
|
+
};
|
111
|
+
export var CustomProps = function CustomProps() {
|
112
|
+
var CustomLabel = function CustomLabel() {
|
113
|
+
return ___EmotionJSX(Label, {
|
114
|
+
hintText: loremText
|
115
|
+
}, loremText);
|
116
|
+
};
|
117
|
+
return ___EmotionJSX(SliderField, {
|
118
|
+
size: "1000px",
|
119
|
+
label: ___EmotionJSX(CustomLabel, null),
|
120
|
+
thumbProps: {
|
121
|
+
bg: 'orange'
|
122
|
+
},
|
123
|
+
activeTrackProps: {
|
124
|
+
bg: 'cyan'
|
125
|
+
},
|
126
|
+
trackProps: {
|
127
|
+
bg: 'magenta'
|
128
|
+
},
|
129
|
+
helperText: "Helper text"
|
130
|
+
});
|
131
|
+
};
|