@pingux/astro 2.118.0-alpha.0 → 2.118.0-alpha.1
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,354 @@
|
|
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
|
+
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
11
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
12
|
+
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; }
|
13
|
+
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; }
|
14
|
+
import React from 'react';
|
15
|
+
import userEvent from '@testing-library/user-event';
|
16
|
+
import { fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
|
17
|
+
import { universalComponentTests } from '../../utils/testUtils/universalComponentTest';
|
18
|
+
import { universalFieldComponentTests } from '../../utils/testUtils/universalFormSubmitTest';
|
19
|
+
import SliderField from './SliderField';
|
20
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
21
|
+
var thumbId = 'thumb';
|
22
|
+
var outputId = 'output';
|
23
|
+
var wrapperId = 'wrapper';
|
24
|
+
var labelId = 'label';
|
25
|
+
var trackId = 'track-id';
|
26
|
+
var activeTrackId = 'active-track-id';
|
27
|
+
var labelClassName = 'labelClass';
|
28
|
+
var wrapperClassName = 'wrapperClass';
|
29
|
+
var testLabel = 'Slider Field';
|
30
|
+
var wrapperProps = {
|
31
|
+
'data-testid': wrapperId,
|
32
|
+
className: wrapperClassName
|
33
|
+
};
|
34
|
+
var labelProps = {
|
35
|
+
'data-testid': labelId,
|
36
|
+
className: labelClassName
|
37
|
+
};
|
38
|
+
var sliderTestId = 'slider-id';
|
39
|
+
var outputProps = {
|
40
|
+
'data-testid': outputId
|
41
|
+
};
|
42
|
+
var defaultProps = {
|
43
|
+
thumbProps: {
|
44
|
+
'data-testid': thumbId
|
45
|
+
},
|
46
|
+
outputProps: outputProps,
|
47
|
+
label: testLabel,
|
48
|
+
'data-testid': sliderTestId
|
49
|
+
};
|
50
|
+
var getComponent = function getComponent() {
|
51
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
52
|
+
return render(___EmotionJSX(SliderField, _extends({}, defaultProps, props)));
|
53
|
+
};
|
54
|
+
universalComponentTests({
|
55
|
+
renderComponent: function renderComponent(props) {
|
56
|
+
return ___EmotionJSX(SliderField, _extends({}, props, defaultProps));
|
57
|
+
}
|
58
|
+
});
|
59
|
+
universalFieldComponentTests({
|
60
|
+
renderComponent: function renderComponent(props) {
|
61
|
+
return ___EmotionJSX(SliderField, _extends({}, defaultProps, props));
|
62
|
+
},
|
63
|
+
testValue: 50,
|
64
|
+
testLabel: testLabel,
|
65
|
+
componentType: 'SliderField'
|
66
|
+
});
|
67
|
+
describe('SliderField Component', function () {
|
68
|
+
test('renders SliderField with default props', function () {
|
69
|
+
getComponent({
|
70
|
+
label: 'Slider Field',
|
71
|
+
defaultValue: 50
|
72
|
+
});
|
73
|
+
expect(screen.getByText('Slider Field')).toBeInTheDocument();
|
74
|
+
expect(screen.getByRole('slider')).toHaveValue('50');
|
75
|
+
});
|
76
|
+
test('renders SliderField with custom value', function () {
|
77
|
+
getComponent({
|
78
|
+
label: 'Custom Slider',
|
79
|
+
value: 30
|
80
|
+
});
|
81
|
+
expect(screen.getByText('Custom Slider')).toBeInTheDocument();
|
82
|
+
expect(screen.getByRole('slider')).toHaveValue('30');
|
83
|
+
});
|
84
|
+
test('calls onChange when slider value changes', function () {
|
85
|
+
var onChangeMock = jest.fn();
|
86
|
+
getComponent({
|
87
|
+
label: 'Slider Field',
|
88
|
+
onChange: onChangeMock,
|
89
|
+
defaultValue: 40
|
90
|
+
});
|
91
|
+
var slider = screen.getByRole('slider');
|
92
|
+
fireEvent.change(slider, {
|
93
|
+
target: {
|
94
|
+
value: 60
|
95
|
+
}
|
96
|
+
});
|
97
|
+
expect(onChangeMock).toHaveBeenCalledWith(60);
|
98
|
+
});
|
99
|
+
test('renders vertical orientation', function () {
|
100
|
+
getComponent({
|
101
|
+
label: 'Vertical Slider',
|
102
|
+
orientation: 'vertical',
|
103
|
+
defaultValue: 20
|
104
|
+
});
|
105
|
+
expect(screen.getByText('Vertical Slider')).toBeInTheDocument();
|
106
|
+
expect(screen.getByRole('slider')).toHaveAttribute('aria-orientation', 'vertical');
|
107
|
+
});
|
108
|
+
test('disables the slider when isDisabled is true', function () {
|
109
|
+
getComponent({
|
110
|
+
label: 'Disabled Slider',
|
111
|
+
isDisabled: true
|
112
|
+
});
|
113
|
+
var slider = screen.getByRole('slider');
|
114
|
+
expect(slider).toBeDisabled();
|
115
|
+
});
|
116
|
+
test('renders display value correctly', function () {
|
117
|
+
getComponent({
|
118
|
+
label: 'Slider with Display',
|
119
|
+
defaultValue: 70,
|
120
|
+
displayValue: '70%'
|
121
|
+
});
|
122
|
+
expect(screen.getByText('70%')).toBeInTheDocument();
|
123
|
+
});
|
124
|
+
test('hides display value when isDisplayValueHidden is true', function () {
|
125
|
+
getComponent({
|
126
|
+
label: 'Hidden Display Slider',
|
127
|
+
defaultValue: 50,
|
128
|
+
isDisplayValueHidden: true
|
129
|
+
});
|
130
|
+
expect(screen.queryByText('50')).not.toBeInTheDocument();
|
131
|
+
});
|
132
|
+
test('calls onChangeEnd when slider interaction ends', function () {
|
133
|
+
var onChangeEndMock = jest.fn();
|
134
|
+
getComponent({
|
135
|
+
label: 'Slider Field',
|
136
|
+
onChangeEnd: onChangeEndMock,
|
137
|
+
defaultValue: 40
|
138
|
+
});
|
139
|
+
var slider = screen.getByRole('slider');
|
140
|
+
fireEvent.mouseDown(slider);
|
141
|
+
fireEvent.mouseUp(slider);
|
142
|
+
expect(onChangeEndMock).toHaveBeenCalled();
|
143
|
+
});
|
144
|
+
test('handles keyboard functionality', function () {
|
145
|
+
var onChangeMock = jest.fn();
|
146
|
+
getComponent({
|
147
|
+
label: 'Keyboard Slider',
|
148
|
+
onChange: onChangeMock,
|
149
|
+
defaultValue: 50,
|
150
|
+
step: 10
|
151
|
+
});
|
152
|
+
var slider = screen.getByRole('slider');
|
153
|
+
var output = screen.getByTestId(outputId);
|
154
|
+
userEvent.tab();
|
155
|
+
fireEvent.keyDown(slider, {
|
156
|
+
key: 'ArrowRight'
|
157
|
+
});
|
158
|
+
fireEvent.keyUp(slider, {
|
159
|
+
key: 'ArrowRight'
|
160
|
+
});
|
161
|
+
expect(onChangeMock).toHaveBeenCalledTimes(1);
|
162
|
+
output = screen.getByTestId(outputId);
|
163
|
+
expect(output).toHaveTextContent('60');
|
164
|
+
fireEvent.keyDown(slider, {
|
165
|
+
key: 'ArrowLeft'
|
166
|
+
});
|
167
|
+
fireEvent.keyUp(slider, {
|
168
|
+
key: 'ArrowLeft'
|
169
|
+
});
|
170
|
+
expect(onChangeMock).toHaveBeenCalledTimes(2);
|
171
|
+
output = screen.getByTestId(outputId);
|
172
|
+
expect(output).toHaveTextContent('50');
|
173
|
+
fireEvent.keyDown(slider, {
|
174
|
+
key: 'Home'
|
175
|
+
});
|
176
|
+
fireEvent.keyUp(slider, {
|
177
|
+
key: 'Home'
|
178
|
+
});
|
179
|
+
expect(onChangeMock).toHaveBeenCalledTimes(3);
|
180
|
+
output = screen.getByTestId(outputId);
|
181
|
+
expect(output).toHaveTextContent('0');
|
182
|
+
fireEvent.keyDown(slider, {
|
183
|
+
key: 'End'
|
184
|
+
});
|
185
|
+
fireEvent.keyUp(slider, {
|
186
|
+
key: 'End'
|
187
|
+
});
|
188
|
+
expect(onChangeMock).toHaveBeenCalledTimes(4);
|
189
|
+
output = screen.getByTestId(outputId);
|
190
|
+
expect(output).toHaveTextContent('100');
|
191
|
+
});
|
192
|
+
test('handles minValue and maxValue', function () {
|
193
|
+
var onChangeMock = jest.fn();
|
194
|
+
getComponent({
|
195
|
+
label: 'Keyboard Slider',
|
196
|
+
onChange: onChangeMock,
|
197
|
+
defaultValue: 50,
|
198
|
+
step: 10,
|
199
|
+
minValue: 10,
|
200
|
+
maxValue: 190
|
201
|
+
});
|
202
|
+
var slider = screen.getByRole('slider');
|
203
|
+
var output = screen.getByTestId(outputId);
|
204
|
+
userEvent.tab();
|
205
|
+
fireEvent.keyDown(slider, {
|
206
|
+
key: 'Home'
|
207
|
+
});
|
208
|
+
fireEvent.keyUp(slider, {
|
209
|
+
key: 'Home'
|
210
|
+
});
|
211
|
+
expect(onChangeMock).toHaveBeenCalledTimes(1);
|
212
|
+
output = screen.getByTestId(outputId);
|
213
|
+
expect(output).toHaveTextContent('10');
|
214
|
+
fireEvent.keyDown(slider, {
|
215
|
+
key: 'End'
|
216
|
+
});
|
217
|
+
fireEvent.keyUp(slider, {
|
218
|
+
key: 'End'
|
219
|
+
});
|
220
|
+
expect(onChangeMock).toHaveBeenCalledTimes(2);
|
221
|
+
output = screen.getByTestId(outputId);
|
222
|
+
expect(output).toHaveTextContent('190');
|
223
|
+
});
|
224
|
+
test('handles vertical slider keyboard functionality', function () {
|
225
|
+
var onChangeMock = jest.fn();
|
226
|
+
getComponent({
|
227
|
+
label: 'Vertical Slider',
|
228
|
+
onChange: onChangeMock,
|
229
|
+
defaultValue: 50,
|
230
|
+
step: 10,
|
231
|
+
orientation: 'vertical'
|
232
|
+
});
|
233
|
+
var slider = screen.getByRole('slider');
|
234
|
+
var output = screen.getByTestId(outputId);
|
235
|
+
userEvent.tab();
|
236
|
+
fireEvent.keyDown(slider, {
|
237
|
+
key: 'ArrowUp'
|
238
|
+
});
|
239
|
+
fireEvent.keyUp(slider, {
|
240
|
+
key: 'ArrowUp'
|
241
|
+
});
|
242
|
+
expect(onChangeMock).toHaveBeenCalledTimes(1);
|
243
|
+
output = screen.getByTestId(outputId);
|
244
|
+
expect(output).toHaveTextContent('60');
|
245
|
+
fireEvent.keyDown(slider, {
|
246
|
+
key: 'ArrowDown'
|
247
|
+
});
|
248
|
+
fireEvent.keyUp(slider, {
|
249
|
+
key: 'ArrowDown'
|
250
|
+
});
|
251
|
+
expect(onChangeMock).toHaveBeenCalledTimes(2);
|
252
|
+
output = screen.getByTestId(outputId);
|
253
|
+
expect(output).toHaveTextContent('50');
|
254
|
+
});
|
255
|
+
test('handles multi-thumb slider functionality', function () {
|
256
|
+
var onChangeMock = jest.fn();
|
257
|
+
getComponent({
|
258
|
+
label: 'Multi Thumb Slider',
|
259
|
+
onChange: onChangeMock,
|
260
|
+
defaultValue: [20, 80],
|
261
|
+
isMultiThumb: true
|
262
|
+
});
|
263
|
+
var thumbs = screen.getAllByTestId(thumbId);
|
264
|
+
expect(thumbs).toHaveLength(2);
|
265
|
+
var _thumbs = _slicedToArray(thumbs, 2),
|
266
|
+
thumb1 = _thumbs[0],
|
267
|
+
thumb2 = _thumbs[1];
|
268
|
+
fireEvent.keyDown(thumb1, {
|
269
|
+
key: 'ArrowRight'
|
270
|
+
});
|
271
|
+
fireEvent.keyUp(thumb1, {
|
272
|
+
key: 'ArrowRight'
|
273
|
+
});
|
274
|
+
expect(onChangeMock).toHaveBeenCalledWith([30, 80]);
|
275
|
+
fireEvent.keyDown(thumb2, {
|
276
|
+
key: 'ArrowLeft'
|
277
|
+
});
|
278
|
+
fireEvent.keyUp(thumb2, {
|
279
|
+
key: 'ArrowLeft'
|
280
|
+
});
|
281
|
+
expect(onChangeMock).toHaveBeenCalledWith([30, 70]);
|
282
|
+
});
|
283
|
+
test('adds custom class names to trackProps and activeTrackProps', function () {
|
284
|
+
var trackClassName = 'custom-track-class';
|
285
|
+
var activeTrackClassName = 'custom-active-track-class';
|
286
|
+
getComponent(_objectSpread({
|
287
|
+
trackProps: {
|
288
|
+
className: trackClassName,
|
289
|
+
'data-testid': trackId
|
290
|
+
},
|
291
|
+
activeTrackProps: {
|
292
|
+
className: activeTrackClassName,
|
293
|
+
'data-testid': activeTrackId
|
294
|
+
}
|
295
|
+
}, defaultProps));
|
296
|
+
var track = screen.getByTestId(trackId);
|
297
|
+
var activeTrack = screen.getByTestId(activeTrackId);
|
298
|
+
var slider = screen.getByRole('slider');
|
299
|
+
userEvent.tab();
|
300
|
+
fireEvent.keyDown(slider, {
|
301
|
+
key: 'ArrowRight'
|
302
|
+
});
|
303
|
+
fireEvent.keyUp(slider, {
|
304
|
+
key: 'ArrowRight'
|
305
|
+
});
|
306
|
+
expect(track).toBeInTheDocument();
|
307
|
+
expect(track).toHaveClass(trackClassName);
|
308
|
+
expect(activeTrack).toBeInTheDocument();
|
309
|
+
expect(activeTrack).toHaveClass(activeTrackClassName);
|
310
|
+
});
|
311
|
+
test('adds custom class names to labelProps and wrapperProps', function () {
|
312
|
+
getComponent(_objectSpread({
|
313
|
+
labelProps: labelProps,
|
314
|
+
wrapperProps: wrapperProps
|
315
|
+
}, defaultProps));
|
316
|
+
var label = screen.getByText('Slider Field');
|
317
|
+
var wrapper = screen.getByTestId(wrapperId);
|
318
|
+
userEvent.tab();
|
319
|
+
expect(label).toBeInTheDocument();
|
320
|
+
expect(label).toHaveClass(labelClassName);
|
321
|
+
expect(wrapper).toBeInTheDocument();
|
322
|
+
expect(wrapper).toHaveClass(wrapperClassName);
|
323
|
+
});
|
324
|
+
test('changes size property', function () {
|
325
|
+
var _getComponent = getComponent({
|
326
|
+
size: '300px'
|
327
|
+
}),
|
328
|
+
rerender = _getComponent.rerender;
|
329
|
+
var container = screen.getByTestId(sliderTestId);
|
330
|
+
expect(container).toHaveStyle({
|
331
|
+
width: '300px'
|
332
|
+
});
|
333
|
+
rerender(___EmotionJSX(SliderField, _extends({}, defaultProps, {
|
334
|
+
size: "500px"
|
335
|
+
})));
|
336
|
+
expect(container).toHaveStyle({
|
337
|
+
width: '500px'
|
338
|
+
});
|
339
|
+
});
|
340
|
+
test('applies custom styles via sx prop', function () {
|
341
|
+
var customStyles = {
|
342
|
+
backgroundColor: 'red',
|
343
|
+
padding: '20px'
|
344
|
+
};
|
345
|
+
getComponent({
|
346
|
+
sx: customStyles
|
347
|
+
});
|
348
|
+
var container = screen.getByTestId(sliderTestId);
|
349
|
+
expect(container).toHaveStyle({
|
350
|
+
backgroundColor: 'red',
|
351
|
+
padding: '20px'
|
352
|
+
});
|
353
|
+
});
|
354
|
+
});
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
|
+
import React, { forwardRef } from 'react';
|
3
|
+
import { Box, Label, Text } from '../../index';
|
4
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
5
|
+
var SliderLabelContainer = /*#__PURE__*/forwardRef(function (props, ref) {
|
6
|
+
var displayValue = props.displayValue,
|
7
|
+
label = props.label,
|
8
|
+
labelProps = props.labelProps,
|
9
|
+
isDisplayValueHidden = props.isDisplayValueHidden,
|
10
|
+
outputProps = props.outputProps,
|
11
|
+
className = props.className;
|
12
|
+
return ___EmotionJSX(Box, {
|
13
|
+
ref: ref,
|
14
|
+
className: className,
|
15
|
+
variant: "slider.labelContainer"
|
16
|
+
}, label && ___EmotionJSX(Box, {
|
17
|
+
sx: {
|
18
|
+
gap: '0px'
|
19
|
+
}
|
20
|
+
}, ___EmotionJSX(Label, _extends({}, labelProps, {
|
21
|
+
sx: {
|
22
|
+
mb: '0px'
|
23
|
+
}
|
24
|
+
}), label)), !isDisplayValueHidden && ___EmotionJSX(Box, {
|
25
|
+
className: className,
|
26
|
+
variant: "slider.outputContainer"
|
27
|
+
}, ___EmotionJSX(Text, outputProps, displayValue)));
|
28
|
+
});
|
29
|
+
export default SliderLabelContainer;
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
2
|
+
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
3
|
+
var _excluded = ["className", "index", "inputProps", "isHorizontal", "isVertical", "name", "onFocus", "onFocusChange", "onPress", "state", "trackRef"];
|
4
|
+
import React, { forwardRef, useRef } from 'react';
|
5
|
+
import { mergeProps, useFocusRing, useSliderThumb, VisuallyHidden } from 'react-aria';
|
6
|
+
import { useHover, usePress } from '@react-aria/interactions';
|
7
|
+
import { useLocalOrForwardRef, useStatusClasses } from '../../hooks';
|
8
|
+
import Box from '../Box';
|
9
|
+
import Input from '../Input';
|
10
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
11
|
+
var SliderThumb = /*#__PURE__*/forwardRef(function (props, ref) {
|
12
|
+
var inputRef = useRef(null);
|
13
|
+
var thumbRef = useLocalOrForwardRef(ref);
|
14
|
+
var className = props.className,
|
15
|
+
index = props.index,
|
16
|
+
inputProps = props.inputProps,
|
17
|
+
isHorizontal = props.isHorizontal,
|
18
|
+
isVertical = props.isVertical,
|
19
|
+
name = props.name,
|
20
|
+
onFocus = props.onFocus,
|
21
|
+
onFocusChange = props.onFocusChange,
|
22
|
+
onPress = props.onPress,
|
23
|
+
state = props.state,
|
24
|
+
trackRef = props.trackRef,
|
25
|
+
others = _objectWithoutProperties(props, _excluded);
|
26
|
+
var _useSliderThumb = useSliderThumb({
|
27
|
+
index: index,
|
28
|
+
trackRef: trackRef,
|
29
|
+
inputRef: inputRef,
|
30
|
+
name: name
|
31
|
+
}, state),
|
32
|
+
thumbProps = _useSliderThumb.thumbProps,
|
33
|
+
raInputProps = _useSliderThumb.inputProps,
|
34
|
+
isDragging = _useSliderThumb.isDragging;
|
35
|
+
var _useFocusRing = useFocusRing(),
|
36
|
+
focusProps = _useFocusRing.focusProps,
|
37
|
+
isFocusVisible = _useFocusRing.isFocusVisible;
|
38
|
+
var _useHover = useHover({}),
|
39
|
+
hoverProps = _useHover.hoverProps,
|
40
|
+
isHovered = _useHover.isHovered;
|
41
|
+
var _usePress = usePress({
|
42
|
+
ref: thumbRef,
|
43
|
+
onPress: onPress
|
44
|
+
}),
|
45
|
+
pressProps = _usePress.pressProps,
|
46
|
+
isPressed = _usePress.isPressed;
|
47
|
+
var _useStatusClasses = useStatusClasses(className, {
|
48
|
+
isDragging: isDragging,
|
49
|
+
isFocused: isFocusVisible,
|
50
|
+
isHorizontal: isHorizontal,
|
51
|
+
isVertical: isVertical,
|
52
|
+
isHovered: isHovered,
|
53
|
+
isPressed: isPressed
|
54
|
+
}),
|
55
|
+
classNames = _useStatusClasses.classNames;
|
56
|
+
var mergedThumbProps = mergeProps(pressProps, others, hoverProps, thumbProps);
|
57
|
+
return ___EmotionJSX(Box, _extends({
|
58
|
+
className: classNames,
|
59
|
+
variant: "slider.thumb",
|
60
|
+
"data-testid": "thumb"
|
61
|
+
}, mergedThumbProps), ___EmotionJSX(VisuallyHidden, null, ___EmotionJSX(Input, _extends({
|
62
|
+
ref: inputRef,
|
63
|
+
"data-testid": "input"
|
64
|
+
}, mergeProps(inputProps, raInputProps, focusProps), {
|
65
|
+
name: name
|
66
|
+
}))));
|
67
|
+
});
|
68
|
+
export default SliderThumb;
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './SliderField';
|
package/lib/hooks/index.js
CHANGED
@@ -19,5 +19,6 @@ export { default as useProgressiveState } from './useProgressiveState';
|
|
19
19
|
export { default as usePropWarning } from './usePropWarning';
|
20
20
|
export { default as useRockerButton } from './useRockerButton';
|
21
21
|
export { default as useSelectField } from './useSelectField';
|
22
|
+
export { default as useSliderField } from './useSliderField';
|
22
23
|
export { default as useStatusClasses } from './useStatusClasses';
|
23
24
|
export { default as useTShirtSize } from './useTShirtSize';
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './useSliderField';
|
@@ -0,0 +1,220 @@
|
|
1
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
2
|
+
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
3
|
+
var _excluded = ["activeTrackProps", "autoFocus", "className", "defaultValue", "displayValue", "formatOptions", "helperTextProps", "isDisabled", "isDisplayValueHidden", "isMultiThumb", "label", "labelProps", "maxValue", "minValue", "name", "onBlur", "onChange", "onChangeEnd", "onFocus", "onFocusChange", "onKeyDown", "onKeyUp", "orientation", "outputProps", "size", "status", "step", "sx", "thumbProps", "trackProps", "trackRef", "value", "wrapperProps"];
|
4
|
+
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; }
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
6
|
+
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
7
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
8
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
9
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
10
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
11
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
12
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
13
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
14
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
15
|
+
import { mergeProps, useNumberFormatter, useSlider } from 'react-aria';
|
16
|
+
import { useSliderState } from 'react-stately';
|
17
|
+
import { getAriaAttributeProps } from '../../utils/docUtils/ariaAttributes';
|
18
|
+
import useStatusClasses from '../useStatusClasses';
|
19
|
+
export var getDefaultValue = function getDefaultValue(_ref) {
|
20
|
+
var defaultValueProp = _ref.defaultValueProp,
|
21
|
+
minValue = _ref.minValue,
|
22
|
+
step = _ref.step;
|
23
|
+
if (defaultValueProp !== undefined) {
|
24
|
+
return defaultValueProp;
|
25
|
+
}
|
26
|
+
return [minValue, step * 3];
|
27
|
+
};
|
28
|
+
export var getDisplayValue = function getDisplayValue(_ref2) {
|
29
|
+
var displayValueProp = _ref2.displayValueProp,
|
30
|
+
isMultiThumb = _ref2.isMultiThumb,
|
31
|
+
state = _ref2.state;
|
32
|
+
if (displayValueProp) {
|
33
|
+
return displayValueProp;
|
34
|
+
}
|
35
|
+
if (isMultiThumb) {
|
36
|
+
var _context;
|
37
|
+
return _concatInstanceProperty(_context = "".concat(state.getThumbValueLabel(0), " - ")).call(_context, state.getThumbValueLabel(1));
|
38
|
+
}
|
39
|
+
return state.getThumbValueLabel(0);
|
40
|
+
};
|
41
|
+
var useSliderField = function useSliderField(props) {
|
42
|
+
var activeTrackProps = props.activeTrackProps,
|
43
|
+
autoFocus = props.autoFocus,
|
44
|
+
className = props.className,
|
45
|
+
defaultValueProp = props.defaultValue,
|
46
|
+
displayValueProp = props.displayValue,
|
47
|
+
formatOptions = props.formatOptions,
|
48
|
+
helperTextProps = props.helperTextProps,
|
49
|
+
isDisabled = props.isDisabled,
|
50
|
+
_props$isDisplayValue = props.isDisplayValueHidden,
|
51
|
+
isDisplayValueHidden = _props$isDisplayValue === void 0 ? false : _props$isDisplayValue,
|
52
|
+
_props$isMultiThumb = props.isMultiThumb,
|
53
|
+
isMultiThumb = _props$isMultiThumb === void 0 ? false : _props$isMultiThumb,
|
54
|
+
label = props.label,
|
55
|
+
labelProps = props.labelProps,
|
56
|
+
_props$maxValue = props.maxValue,
|
57
|
+
maxValue = _props$maxValue === void 0 ? 100 : _props$maxValue,
|
58
|
+
_props$minValue = props.minValue,
|
59
|
+
minValue = _props$minValue === void 0 ? 0 : _props$minValue,
|
60
|
+
name = props.name,
|
61
|
+
onBlur = props.onBlur,
|
62
|
+
onChange = props.onChange,
|
63
|
+
onChangeEnd = props.onChangeEnd,
|
64
|
+
onFocus = props.onFocus,
|
65
|
+
onFocusChange = props.onFocusChange,
|
66
|
+
onKeyDown = props.onKeyDown,
|
67
|
+
onKeyUp = props.onKeyUp,
|
68
|
+
orientation = props.orientation,
|
69
|
+
outputProps = props.outputProps,
|
70
|
+
_props$size = props.size,
|
71
|
+
size = _props$size === void 0 ? '300px' : _props$size,
|
72
|
+
status = props.status,
|
73
|
+
_props$step = props.step,
|
74
|
+
step = _props$step === void 0 ? 10 : _props$step,
|
75
|
+
_props$sx = props.sx,
|
76
|
+
sx = _props$sx === void 0 ? {} : _props$sx,
|
77
|
+
thumbProps = props.thumbProps,
|
78
|
+
trackProps = props.trackProps,
|
79
|
+
trackRef = props.trackRef,
|
80
|
+
value = props.value,
|
81
|
+
wrapperProps = props.wrapperProps,
|
82
|
+
others = _objectWithoutProperties(props, _excluded);
|
83
|
+
var defaultValue = !isMultiThumb ? defaultValueProp : getDefaultValue({
|
84
|
+
defaultValueProp: defaultValueProp,
|
85
|
+
minValue: minValue,
|
86
|
+
step: step
|
87
|
+
});
|
88
|
+
var numberFormatter = useNumberFormatter(formatOptions);
|
89
|
+
var sliderStateOptions = {
|
90
|
+
defaultValue: defaultValue,
|
91
|
+
isDisabled: isDisabled,
|
92
|
+
label: label,
|
93
|
+
maxValue: maxValue,
|
94
|
+
minValue: minValue,
|
95
|
+
numberFormatter: numberFormatter,
|
96
|
+
onChange: onChange,
|
97
|
+
onChangeEnd: onChangeEnd,
|
98
|
+
orientation: orientation,
|
99
|
+
step: step,
|
100
|
+
value: value
|
101
|
+
};
|
102
|
+
var state = useSliderState(sliderStateOptions);
|
103
|
+
var _getAriaAttributeProp = getAriaAttributeProps(others),
|
104
|
+
ariaProps = _getAriaAttributeProp.ariaProps,
|
105
|
+
nonAriaProps = _getAriaAttributeProp.nonAriaProps;
|
106
|
+
var thumbOptions = _objectSpread(_objectSpread({}, thumbProps), {}, {
|
107
|
+
autoFocus: autoFocus,
|
108
|
+
isDisabled: isDisabled,
|
109
|
+
name: name,
|
110
|
+
onBlur: onBlur,
|
111
|
+
onFocus: onFocus,
|
112
|
+
onFocusChange: onFocusChange,
|
113
|
+
onKeyDown: onKeyDown,
|
114
|
+
onKeyUp: onKeyUp
|
115
|
+
});
|
116
|
+
var sliderOptions = _objectSpread(_objectSpread({}, ariaProps), {}, {
|
117
|
+
defaultValue: defaultValue,
|
118
|
+
isDisabled: isDisabled,
|
119
|
+
label: label,
|
120
|
+
maxValue: maxValue,
|
121
|
+
minValue: minValue,
|
122
|
+
name: name,
|
123
|
+
onChange: onChange,
|
124
|
+
onChangeEnd: onChangeEnd,
|
125
|
+
orientation: orientation,
|
126
|
+
value: value
|
127
|
+
});
|
128
|
+
var _useSlider = useSlider(sliderOptions, state, trackRef),
|
129
|
+
groupProps = _useSlider.groupProps,
|
130
|
+
raTrackProps = _useSlider.trackProps,
|
131
|
+
raLabelProps = _useSlider.labelProps,
|
132
|
+
raOutputProps = _useSlider.outputProps;
|
133
|
+
var isHorizontal = state.orientation === 'horizontal';
|
134
|
+
var isVertical = state.orientation === 'vertical';
|
135
|
+
var displayValue = getDisplayValue({
|
136
|
+
displayValueProp: displayValueProp,
|
137
|
+
state: state,
|
138
|
+
isMultiThumb: isMultiThumb
|
139
|
+
});
|
140
|
+
var statusClasses = {
|
141
|
+
isHorizontal: isHorizontal,
|
142
|
+
isVertical: isVertical,
|
143
|
+
isMultiThumb: isMultiThumb,
|
144
|
+
isSingleThumb: !isMultiThumb
|
145
|
+
};
|
146
|
+
var _useStatusClasses = useStatusClasses(className, statusClasses),
|
147
|
+
classNames = _useStatusClasses.classNames;
|
148
|
+
var _useStatusClasses2 = useStatusClasses(trackProps === null || trackProps === void 0 ? void 0 : trackProps.className, statusClasses),
|
149
|
+
visibleTrackClassNames = _useStatusClasses2.classNames;
|
150
|
+
var _useStatusClasses3 = useStatusClasses(labelProps === null || labelProps === void 0 ? void 0 : labelProps.className, statusClasses),
|
151
|
+
labelContainerClassNames = _useStatusClasses3.classNames;
|
152
|
+
var _useStatusClasses4 = useStatusClasses(className, statusClasses),
|
153
|
+
hiddenTrackClassNames = _useStatusClasses4.classNames;
|
154
|
+
var _useStatusClasses5 = useStatusClasses(wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.className, statusClasses),
|
155
|
+
wrapperClassName = _useStatusClasses5.classNames;
|
156
|
+
var _useStatusClasses6 = useStatusClasses(activeTrackProps === null || activeTrackProps === void 0 ? void 0 : activeTrackProps.className, statusClasses),
|
157
|
+
activeTrackClassNames = _useStatusClasses6.classNames;
|
158
|
+
var thumbPropsSpread = _objectSpread(_objectSpread(_objectSpread({}, thumbOptions), thumbProps), {}, {
|
159
|
+
isHorizontal: isHorizontal,
|
160
|
+
isVertical: isVertical,
|
161
|
+
state: state,
|
162
|
+
trackRef: trackRef
|
163
|
+
});
|
164
|
+
var mergedOuputProps = mergeProps(outputProps, raOutputProps, {
|
165
|
+
as: 'output',
|
166
|
+
variant: 'label'
|
167
|
+
});
|
168
|
+
var mergedLabelProps = mergeProps(labelProps, raLabelProps);
|
169
|
+
var labelContainerProps = {
|
170
|
+
label: label,
|
171
|
+
labelProps: mergedLabelProps,
|
172
|
+
isDisplayValueHidden: isDisplayValueHidden,
|
173
|
+
outputProps: mergedOuputProps,
|
174
|
+
isHorizontal: isHorizontal,
|
175
|
+
displayValue: displayValue,
|
176
|
+
isVertical: isVertical,
|
177
|
+
className: labelContainerClassNames
|
178
|
+
};
|
179
|
+
var sliderActiveTrackProps = _objectSpread(_objectSpread({}, activeTrackProps), {}, {
|
180
|
+
isMultiThumb: isMultiThumb,
|
181
|
+
className: activeTrackClassNames,
|
182
|
+
isHorizontal: isHorizontal,
|
183
|
+
isVertical: isVertical,
|
184
|
+
state: state
|
185
|
+
});
|
186
|
+
var wrapperPropsSpread = _objectSpread(_objectSpread({}, wrapperProps), {}, {
|
187
|
+
className: wrapperClassName,
|
188
|
+
variant: 'slider.wrapper'
|
189
|
+
});
|
190
|
+
var sizeProperty = isHorizontal ? 'width' : 'height';
|
191
|
+
var containerProps = _objectSpread(_objectSpread(_objectSpread({}, others), groupProps), {}, {
|
192
|
+
sx: _objectSpread(_defineProperty({}, sizeProperty, size), sx),
|
193
|
+
variant: 'slider.slider',
|
194
|
+
className: classNames
|
195
|
+
});
|
196
|
+
var hiddenTrackProps = _objectSpread(_objectSpread({}, raTrackProps), {}, {
|
197
|
+
trackRef: trackRef,
|
198
|
+
variant: 'slider.hiddenTrack',
|
199
|
+
className: hiddenTrackClassNames
|
200
|
+
});
|
201
|
+
var visibleTrackProps = _objectSpread({
|
202
|
+
variant: 'slider.track',
|
203
|
+
className: visibleTrackClassNames
|
204
|
+
}, trackProps);
|
205
|
+
var helperTextPropsSpread = _objectSpread(_objectSpread({}, helperTextProps), {}, {
|
206
|
+
status: status
|
207
|
+
});
|
208
|
+
return {
|
209
|
+
containerProps: containerProps,
|
210
|
+
labelContainerProps: labelContainerProps,
|
211
|
+
sliderActiveTrackProps: sliderActiveTrackProps,
|
212
|
+
hiddenTrackProps: hiddenTrackProps,
|
213
|
+
thumbPropsSpread: thumbPropsSpread,
|
214
|
+
classNames: classNames,
|
215
|
+
visibleTrackProps: visibleTrackProps,
|
216
|
+
helperTextProps: helperTextPropsSpread,
|
217
|
+
wrapperProps: wrapperPropsSpread
|
218
|
+
};
|
219
|
+
};
|
220
|
+
export default useSliderField;
|