@pingux/astro 2.124.0-alpha.1 → 2.124.0-alpha.3

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.
@@ -15,14 +15,13 @@ _Object$defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
17
  exports["default"] = void 0;
18
- var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
19
18
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
20
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
21
20
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
22
21
  var _react = _interopRequireWildcard(require("react"));
23
22
  var _index = require("../../index");
24
23
  var _react2 = require("@emotion/react");
25
- var _excluded = ["className", "isHorizontal", "isMultiThumb", "state", "sx"];
24
+ var _excluded = ["className", "isHorizontal", "isMultiThumb", "length", "sx", "trackStart"];
26
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
27
  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; }
@@ -31,11 +30,10 @@ var SliderActiveTrack = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref
31
30
  var className = props.className,
32
31
  isHorizontal = props.isHorizontal,
33
32
  isMultiThumb = props.isMultiThumb,
34
- state = props.state,
33
+ length = props.length,
35
34
  sx = props.sx,
35
+ trackStart = props.trackStart,
36
36
  others = (0, _objectWithoutProperties2["default"])(props, _excluded);
37
- var length = isMultiThumb ? "".concat((0, _values["default"])(state)[1] - (0, _values["default"])(state)[0], "%") : "".concat((0, _values["default"])(state)[0], "%");
38
- var trackStart = "".concat((0, _values["default"])(state)[0], "%");
39
37
  var cssLenProp = isHorizontal ? 'width' : 'height';
40
38
  var cssStartProp = isHorizontal ? 'left' : 'top';
41
39
  return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
@@ -4,7 +4,9 @@ export default _default;
4
4
  export declare const Default: ({ ...args }: {
5
5
  [x: string]: any;
6
6
  }) => React.JSX.Element;
7
- export declare const Controlled: () => React.JSX.Element;
7
+ export declare const Controlled: ({ ...args }: {
8
+ [x: string]: any;
9
+ }) => React.JSX.Element;
8
10
  export declare const Vertical: () => React.JSX.Element;
9
11
  export declare const MultiThumb: () => React.JSX.Element;
10
12
  export declare const ControlledMultiThumb: () => React.JSX.Element;
@@ -81,22 +81,22 @@ var loremText = 'Lorem ipsum';
81
81
  var Default = function Default(_ref) {
82
82
  var args = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_ref), _ref));
83
83
  return (0, _react2.jsx)(_index.SliderField, (0, _extends2["default"])({
84
- label: loremText,
85
- defaultValue: 40
84
+ label: loremText
86
85
  }, args));
87
86
  };
88
87
  exports.Default = Default;
89
- var Controlled = function Controlled() {
90
- var _useState = (0, _react.useState)(0),
88
+ var Controlled = function Controlled(_ref2) {
89
+ var args = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_ref2), _ref2));
90
+ var _useState = (0, _react.useState)(75),
91
91
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
92
92
  value = _useState2[0],
93
93
  setValue = _useState2[1];
94
- return (0, _react2.jsx)(_index.SliderField, {
94
+ return (0, _react2.jsx)(_index.SliderField, (0, _extends2["default"])({}, args, {
95
95
  value: value,
96
96
  onChange: setValue,
97
97
  displayValue: "(".concat(value, "px)"),
98
98
  label: loremText
99
- });
99
+ }));
100
100
  };
101
101
  exports.Controlled = Controlled;
102
102
  var Vertical = function Vertical() {
@@ -110,7 +110,10 @@ exports.Vertical = Vertical;
110
110
  var MultiThumb = function MultiThumb() {
111
111
  return (0, _react2.jsx)(_index.SliderField, {
112
112
  label: loremText,
113
- isMultiThumb: true
113
+ isMultiThumb: true,
114
+ defaultValue: [100, 180],
115
+ maxValue: 540,
116
+ minValue: 40
114
117
  });
115
118
  };
116
119
  exports.MultiThumb = MultiThumb;
@@ -14,6 +14,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/hel
14
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
15
15
  var _react = _interopRequireDefault(require("react"));
16
16
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
17
+ var _useSliderField = require("../../hooks/useSliderField/useSliderField");
17
18
  var _testWrapper = require("../../utils/testUtils/testWrapper");
18
19
  var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
19
20
  var _universalFormSubmitTest = require("../../utils/testUtils/universalFormSubmitTest");
@@ -354,4 +355,54 @@ describe('SliderField Component', function () {
354
355
  padding: '20px'
355
356
  });
356
357
  });
358
+ });
359
+ describe('getLengthValues', function () {
360
+ it('should calculate correct values for a single thumb slider', function () {
361
+ var minValue = 0;
362
+ var maxValue = 100;
363
+ var state = {
364
+ values: [50]
365
+ };
366
+ var result = (0, _useSliderField.getLengthValues)(minValue, maxValue, state);
367
+ expect(result).toEqual({
368
+ length: '50%',
369
+ trackStart: '50%'
370
+ });
371
+ });
372
+ it('should calculate correct values for a multi-thumb slider', function () {
373
+ var minValue = 0;
374
+ var maxValue = 100;
375
+ var state = {
376
+ values: [30, 70]
377
+ };
378
+ var result = (0, _useSliderField.getLengthValuesMultiThumb)(minValue, maxValue, state);
379
+ expect(result).toEqual({
380
+ length: '40%',
381
+ trackStart: '30%'
382
+ });
383
+ });
384
+ it('should handle edge cases where values are at the boundaries', function () {
385
+ var minValue = 0;
386
+ var maxValue = 100;
387
+ var state = {
388
+ values: [0, 100]
389
+ };
390
+ var result = (0, _useSliderField.getLengthValuesMultiThumb)(minValue, maxValue, state);
391
+ expect(result).toEqual({
392
+ length: '100%',
393
+ trackStart: '0%'
394
+ });
395
+ });
396
+ it('should handle cases where minValue and maxValue are not 0 and 100', function () {
397
+ var minValue = 50;
398
+ var maxValue = 150;
399
+ var state = {
400
+ values: [75, 125]
401
+ };
402
+ var result = (0, _useSliderField.getLengthValuesMultiThumb)(minValue, maxValue, state);
403
+ expect(result).toEqual({
404
+ length: '50%',
405
+ trackStart: '25%'
406
+ });
407
+ });
357
408
  });
@@ -11,6 +11,14 @@ export declare const getDisplayValue: ({ displayValueProp, isMultiThumb, state,
11
11
  isMultiThumb: any;
12
12
  state: any;
13
13
  }) => any;
14
+ export declare const getLengthValues: (minValue: any, maxValue: any, state: any) => {
15
+ length: string;
16
+ trackStart: string;
17
+ };
18
+ export declare const getLengthValuesMultiThumb: (minValue: any, maxValue: any, state: any) => {
19
+ length: string;
20
+ trackStart: string;
21
+ };
14
22
  declare const useSliderField: (props: UseSliderFieldProps) => {
15
23
  containerProps: {
16
24
  sx: {
@@ -260,6 +268,8 @@ declare const useSliderField: (props: UseSliderFieldProps) => {
260
268
  className: string;
261
269
  };
262
270
  sliderActiveTrackProps: {
271
+ length: string;
272
+ trackStart: string;
263
273
  isMultiThumb: boolean;
264
274
  className: string;
265
275
  isHorizontal: boolean;
@@ -12,10 +12,12 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
12
12
  _Object$defineProperty(exports, "__esModule", {
13
13
  value: true
14
14
  });
15
- exports.getDisplayValue = exports.getDefaultValue = exports["default"] = void 0;
15
+ exports.getLengthValuesMultiThumb = exports.getLengthValues = exports.getDisplayValue = exports.getDefaultValue = exports["default"] = void 0;
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
17
17
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
18
18
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
19
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
20
+ var _react = require("react");
19
21
  var _reactAria = require("react-aria");
20
22
  var _reactStately = require("react-stately");
21
23
  var _ariaAttributes = require("../../utils/docUtils/ariaAttributes");
@@ -47,6 +49,29 @@ var getDisplayValue = function getDisplayValue(_ref2) {
47
49
  return state.getThumbValueLabel(0);
48
50
  };
49
51
  exports.getDisplayValue = getDisplayValue;
52
+ var getLengthValues = function getLengthValues(minValue, maxValue, state) {
53
+ var total = maxValue - minValue;
54
+ var firstValue = ((0, _values["default"])(state)[0] - minValue) / total * 100;
55
+ var length = "".concat(firstValue, "%");
56
+ var trackStart = "".concat(firstValue, "%");
57
+ return {
58
+ length: length,
59
+ trackStart: trackStart
60
+ };
61
+ };
62
+ exports.getLengthValues = getLengthValues;
63
+ var getLengthValuesMultiThumb = function getLengthValuesMultiThumb(minValue, maxValue, state) {
64
+ var total = maxValue - minValue;
65
+ var firstValue = ((0, _values["default"])(state)[0] - minValue) / total * 100;
66
+ var secondValue = ((0, _values["default"])(state)[1] - (0, _values["default"])(state)[0]) / total * 100;
67
+ var length = "".concat(secondValue, "%");
68
+ var trackStart = "".concat(firstValue, "%");
69
+ return {
70
+ length: length,
71
+ trackStart: trackStart
72
+ };
73
+ };
74
+ exports.getLengthValuesMultiThumb = getLengthValuesMultiThumb;
50
75
  var useSliderField = function useSliderField(props) {
51
76
  var activeTrackProps = props.activeTrackProps,
52
77
  autoFocus = props.autoFocus,
@@ -114,6 +139,23 @@ var useSliderField = function useSliderField(props) {
114
139
  var _getAriaAttributeProp = (0, _ariaAttributes.getAriaAttributeProps)(others),
115
140
  ariaProps = _getAriaAttributeProp.ariaProps,
116
141
  nonAriaProps = _getAriaAttributeProp.nonAriaProps;
142
+ (0, _react.useEffect)(function () {
143
+ if ((0, _values["default"])(state)[0] < minValue) {
144
+ state.setThumbValue(0, minValue);
145
+ }
146
+ }, [minValue, state]);
147
+ (0, _react.useEffect)(function () {
148
+ if ((0, _values["default"])(state).length === 1) {
149
+ if ((0, _values["default"])(state)[0] > maxValue) {
150
+ state.setThumbValue(0, maxValue);
151
+ }
152
+ }
153
+ if ((0, _values["default"])(state).length === 2) {
154
+ if ((0, _values["default"])(state)[1] > maxValue) {
155
+ state.setThumbValue(1, maxValue);
156
+ }
157
+ }
158
+ }, [maxValue, state]);
117
159
  var thumbOptions = _objectSpread(_objectSpread({}, thumbProps), {}, {
118
160
  autoFocus: autoFocus,
119
161
  isDisabled: isDisabled,
@@ -179,6 +221,7 @@ var useSliderField = function useSliderField(props) {
179
221
  var mergedLabelProps = (0, _reactAria.mergeProps)(labelProps, raLabelProps, {
180
222
  hintText: hintText
181
223
  });
224
+ var trackDisplayValues = isMultiThumb ? getLengthValuesMultiThumb(minValue, maxValue, state) : getLengthValues(minValue, maxValue, state);
182
225
  var labelContainerProps = {
183
226
  label: label,
184
227
  labelProps: mergedLabelProps,
@@ -196,7 +239,7 @@ var useSliderField = function useSliderField(props) {
196
239
  isHorizontal: isHorizontal,
197
240
  isVertical: isVertical,
198
241
  state: state
199
- });
242
+ }, trackDisplayValues);
200
243
  var wrapperPropsSpread = _objectSpread(_objectSpread({}, wrapperProps), {}, {
201
244
  className: wrapperClassName,
202
245
  variant: 'slider.wrapper'
@@ -106,4 +106,75 @@ describe('useSliderField hook', function () {
106
106
  defaultValue: 30
107
107
  }));
108
108
  });
109
+ });
110
+ describe('useSliderField - minValue and maxValue constraints', function () {
111
+ test('should set thumb value to minValue if it is less than minValue', function () {
112
+ var _renderHook3 = (0, _react.renderHook)(function (props) {
113
+ return (0, _useSliderField["default"])(props);
114
+ }, {
115
+ initialProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
116
+ minValue: 20,
117
+ defaultValue: 10
118
+ })
119
+ }),
120
+ result = _renderHook3.result,
121
+ rerender = _renderHook3.rerender;
122
+
123
+ // Verify that the thumb value is adjusted to minValue
124
+ expect((0, _values["default"])(result.current.sliderActiveTrackProps.state)[0]).toEqual(20);
125
+
126
+ // Update minValue and verify adjustment
127
+ rerender(_objectSpread(_objectSpread({}, defaultProps), {}, {
128
+ defaultValue: 10,
129
+ minValue: 30
130
+ }));
131
+ expect((0, _values["default"])(result.current.sliderActiveTrackProps.state)[0]).toEqual(30);
132
+ });
133
+ test('should set thumb value to maxValue if it exceeds maxValue', function () {
134
+ var _renderHook4 = (0, _react.renderHook)(function (props) {
135
+ return (0, _useSliderField["default"])(props);
136
+ }, {
137
+ initialProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
138
+ maxValue: 80,
139
+ defaultValue: 90
140
+ })
141
+ }),
142
+ result = _renderHook4.result,
143
+ rerender = _renderHook4.rerender;
144
+
145
+ // Verify that the thumb value is adjusted to maxValue
146
+ expect((0, _values["default"])(result.current.sliderActiveTrackProps.state)[0]).toEqual(80);
147
+
148
+ // Update maxValue and verify adjustment
149
+ rerender(_objectSpread(_objectSpread({}, defaultProps), {}, {
150
+ defaultValue: 10,
151
+ maxValue: 70
152
+ }));
153
+ expect((0, _values["default"])(result.current.sliderActiveTrackProps.state)[0]).toEqual(70);
154
+ });
155
+ test('should handle multi-thumb sliders with minValue and maxValue constraints', function () {
156
+ var _renderHook5 = (0, _react.renderHook)(function (props) {
157
+ return (0, _useSliderField["default"])(props);
158
+ }, {
159
+ initialProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
160
+ isMultiThumb: true,
161
+ minValue: 20,
162
+ maxValue: 80,
163
+ defaultValue: [10, 90]
164
+ })
165
+ }),
166
+ result = _renderHook5.result,
167
+ rerender = _renderHook5.rerender;
168
+
169
+ // Verify that both thumb values are adjusted to minValue and maxValue
170
+ expect((0, _values["default"])(result.current.sliderActiveTrackProps.state)).toEqual([20, 80]);
171
+
172
+ // Update minValue and maxValue and verify adjustment
173
+ rerender(_objectSpread(_objectSpread({}, defaultProps), {}, {
174
+ isMultiThumb: true,
175
+ minValue: 30,
176
+ maxValue: 70
177
+ }));
178
+ expect((0, _values["default"])(result.current.sliderActiveTrackProps.state)).toEqual([30, 70]);
179
+ });
109
180
  });
@@ -38,8 +38,10 @@ export interface SliderActiveTrackProps {
38
38
  isHorizontal?: boolean;
39
39
  isMultiThumb?: boolean;
40
40
  isVertical?: boolean;
41
+ length: string;
41
42
  state: SliderState;
42
43
  sx?: ThemeUICSSObject | object;
44
+ trackStart: string;
43
45
  }
44
46
  export interface SliderFieldProps {
45
47
  activeTrackProps?: BoxProps;
@@ -1,10 +1,3 @@
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
1
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
9
2
  import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
10
3
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
@@ -13,6 +6,12 @@ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/inst
13
6
  import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
14
7
  import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
15
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
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
+ var _excluded = ["className", "isHorizontal", "isMultiThumb", "length", "sx", "trackStart"];
13
+ 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; }
14
+ 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; }
16
15
  import React, { forwardRef } from 'react';
17
16
  import { Box } from '../../index';
18
17
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -20,11 +19,10 @@ var SliderActiveTrack = /*#__PURE__*/forwardRef(function (props, ref) {
20
19
  var className = props.className,
21
20
  isHorizontal = props.isHorizontal,
22
21
  isMultiThumb = props.isMultiThumb,
23
- state = props.state,
22
+ length = props.length,
24
23
  sx = props.sx,
24
+ trackStart = props.trackStart,
25
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
26
  var cssLenProp = isHorizontal ? 'width' : 'height';
29
27
  var cssStartProp = isHorizontal ? 'left' : 'top';
30
28
  return ___EmotionJSX(Box, _extends({
@@ -67,21 +67,21 @@ var loremText = 'Lorem ipsum';
67
67
  export var Default = function Default(_ref) {
68
68
  var args = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
69
69
  return ___EmotionJSX(SliderField, _extends({
70
- label: loremText,
71
- defaultValue: 40
70
+ label: loremText
72
71
  }, args));
73
72
  };
74
- export var Controlled = function Controlled() {
75
- var _useState = useState(0),
73
+ export var Controlled = function Controlled(_ref2) {
74
+ var args = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
75
+ var _useState = useState(75),
76
76
  _useState2 = _slicedToArray(_useState, 2),
77
77
  value = _useState2[0],
78
78
  setValue = _useState2[1];
79
- return ___EmotionJSX(SliderField, {
79
+ return ___EmotionJSX(SliderField, _extends({}, args, {
80
80
  value: value,
81
81
  onChange: setValue,
82
82
  displayValue: "(".concat(value, "px)"),
83
83
  label: loremText
84
- });
84
+ }));
85
85
  };
86
86
  export var Vertical = function Vertical() {
87
87
  return ___EmotionJSX(SliderField, {
@@ -93,7 +93,10 @@ export var Vertical = function Vertical() {
93
93
  export var MultiThumb = function MultiThumb() {
94
94
  return ___EmotionJSX(SliderField, {
95
95
  label: loremText,
96
- isMultiThumb: true
96
+ isMultiThumb: true,
97
+ defaultValue: [100, 180],
98
+ maxValue: 540,
99
+ minValue: 40
97
100
  });
98
101
  };
99
102
  export var ControlledMultiThumb = function ControlledMultiThumb() {
@@ -13,6 +13,7 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
13
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
14
  import React from 'react';
15
15
  import userEvent from '@testing-library/user-event';
16
+ import { getLengthValues, getLengthValuesMultiThumb } from '../../hooks/useSliderField/useSliderField';
16
17
  import { fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
17
18
  import { universalComponentTests } from '../../utils/testUtils/universalComponentTest';
18
19
  import { universalFieldComponentTests } from '../../utils/testUtils/universalFormSubmitTest';
@@ -351,4 +352,54 @@ describe('SliderField Component', function () {
351
352
  padding: '20px'
352
353
  });
353
354
  });
355
+ });
356
+ describe('getLengthValues', function () {
357
+ it('should calculate correct values for a single thumb slider', function () {
358
+ var minValue = 0;
359
+ var maxValue = 100;
360
+ var state = {
361
+ values: [50]
362
+ };
363
+ var result = getLengthValues(minValue, maxValue, state);
364
+ expect(result).toEqual({
365
+ length: '50%',
366
+ trackStart: '50%'
367
+ });
368
+ });
369
+ it('should calculate correct values for a multi-thumb slider', function () {
370
+ var minValue = 0;
371
+ var maxValue = 100;
372
+ var state = {
373
+ values: [30, 70]
374
+ };
375
+ var result = getLengthValuesMultiThumb(minValue, maxValue, state);
376
+ expect(result).toEqual({
377
+ length: '40%',
378
+ trackStart: '30%'
379
+ });
380
+ });
381
+ it('should handle edge cases where values are at the boundaries', function () {
382
+ var minValue = 0;
383
+ var maxValue = 100;
384
+ var state = {
385
+ values: [0, 100]
386
+ };
387
+ var result = getLengthValuesMultiThumb(minValue, maxValue, state);
388
+ expect(result).toEqual({
389
+ length: '100%',
390
+ trackStart: '0%'
391
+ });
392
+ });
393
+ it('should handle cases where minValue and maxValue are not 0 and 100', function () {
394
+ var minValue = 50;
395
+ var maxValue = 150;
396
+ var state = {
397
+ values: [75, 125]
398
+ };
399
+ var result = getLengthValuesMultiThumb(minValue, maxValue, state);
400
+ expect(result).toEqual({
401
+ length: '50%',
402
+ trackStart: '25%'
403
+ });
404
+ });
354
405
  });
@@ -4,6 +4,7 @@ var _excluded = ["activeTrackProps", "autoFocus", "className", "defaultValue", "
4
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
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
6
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
7
+ import _valuesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/values";
7
8
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
8
9
  import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
9
10
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
@@ -12,6 +13,7 @@ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/inst
12
13
  import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
13
14
  import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
14
15
  import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
16
+ import { useEffect } from 'react';
15
17
  import { mergeProps, useNumberFormatter, useSlider } from 'react-aria';
16
18
  import { useSliderState } from 'react-stately';
17
19
  import { getAriaAttributeProps } from '../../utils/docUtils/ariaAttributes';
@@ -38,6 +40,27 @@ export var getDisplayValue = function getDisplayValue(_ref2) {
38
40
  }
39
41
  return state.getThumbValueLabel(0);
40
42
  };
43
+ export var getLengthValues = function getLengthValues(minValue, maxValue, state) {
44
+ var total = maxValue - minValue;
45
+ var firstValue = (_valuesInstanceProperty(state)[0] - minValue) / total * 100;
46
+ var length = "".concat(firstValue, "%");
47
+ var trackStart = "".concat(firstValue, "%");
48
+ return {
49
+ length: length,
50
+ trackStart: trackStart
51
+ };
52
+ };
53
+ export var getLengthValuesMultiThumb = function getLengthValuesMultiThumb(minValue, maxValue, state) {
54
+ var total = maxValue - minValue;
55
+ var firstValue = (_valuesInstanceProperty(state)[0] - minValue) / total * 100;
56
+ var secondValue = (_valuesInstanceProperty(state)[1] - _valuesInstanceProperty(state)[0]) / total * 100;
57
+ var length = "".concat(secondValue, "%");
58
+ var trackStart = "".concat(firstValue, "%");
59
+ return {
60
+ length: length,
61
+ trackStart: trackStart
62
+ };
63
+ };
41
64
  var useSliderField = function useSliderField(props) {
42
65
  var activeTrackProps = props.activeTrackProps,
43
66
  autoFocus = props.autoFocus,
@@ -105,6 +128,23 @@ var useSliderField = function useSliderField(props) {
105
128
  var _getAriaAttributeProp = getAriaAttributeProps(others),
106
129
  ariaProps = _getAriaAttributeProp.ariaProps,
107
130
  nonAriaProps = _getAriaAttributeProp.nonAriaProps;
131
+ useEffect(function () {
132
+ if (_valuesInstanceProperty(state)[0] < minValue) {
133
+ state.setThumbValue(0, minValue);
134
+ }
135
+ }, [minValue, state]);
136
+ useEffect(function () {
137
+ if (_valuesInstanceProperty(state).length === 1) {
138
+ if (_valuesInstanceProperty(state)[0] > maxValue) {
139
+ state.setThumbValue(0, maxValue);
140
+ }
141
+ }
142
+ if (_valuesInstanceProperty(state).length === 2) {
143
+ if (_valuesInstanceProperty(state)[1] > maxValue) {
144
+ state.setThumbValue(1, maxValue);
145
+ }
146
+ }
147
+ }, [maxValue, state]);
108
148
  var thumbOptions = _objectSpread(_objectSpread({}, thumbProps), {}, {
109
149
  autoFocus: autoFocus,
110
150
  isDisabled: isDisabled,
@@ -170,6 +210,7 @@ var useSliderField = function useSliderField(props) {
170
210
  var mergedLabelProps = mergeProps(labelProps, raLabelProps, {
171
211
  hintText: hintText
172
212
  });
213
+ var trackDisplayValues = isMultiThumb ? getLengthValuesMultiThumb(minValue, maxValue, state) : getLengthValues(minValue, maxValue, state);
173
214
  var labelContainerProps = {
174
215
  label: label,
175
216
  labelProps: mergedLabelProps,
@@ -187,7 +228,7 @@ var useSliderField = function useSliderField(props) {
187
228
  isHorizontal: isHorizontal,
188
229
  isVertical: isVertical,
189
230
  state: state
190
- });
231
+ }, trackDisplayValues);
191
232
  var wrapperPropsSpread = _objectSpread(_objectSpread({}, wrapperProps), {}, {
192
233
  className: wrapperClassName,
193
234
  variant: 'slider.wrapper'
@@ -99,4 +99,75 @@ describe('useSliderField hook', function () {
99
99
  defaultValue: 30
100
100
  }));
101
101
  });
102
+ });
103
+ describe('useSliderField - minValue and maxValue constraints', function () {
104
+ test('should set thumb value to minValue if it is less than minValue', function () {
105
+ var _renderHook3 = renderHook(function (props) {
106
+ return useSliderField(props);
107
+ }, {
108
+ initialProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
109
+ minValue: 20,
110
+ defaultValue: 10
111
+ })
112
+ }),
113
+ result = _renderHook3.result,
114
+ rerender = _renderHook3.rerender;
115
+
116
+ // Verify that the thumb value is adjusted to minValue
117
+ expect(_valuesInstanceProperty(result.current.sliderActiveTrackProps.state)[0]).toEqual(20);
118
+
119
+ // Update minValue and verify adjustment
120
+ rerender(_objectSpread(_objectSpread({}, defaultProps), {}, {
121
+ defaultValue: 10,
122
+ minValue: 30
123
+ }));
124
+ expect(_valuesInstanceProperty(result.current.sliderActiveTrackProps.state)[0]).toEqual(30);
125
+ });
126
+ test('should set thumb value to maxValue if it exceeds maxValue', function () {
127
+ var _renderHook4 = renderHook(function (props) {
128
+ return useSliderField(props);
129
+ }, {
130
+ initialProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
131
+ maxValue: 80,
132
+ defaultValue: 90
133
+ })
134
+ }),
135
+ result = _renderHook4.result,
136
+ rerender = _renderHook4.rerender;
137
+
138
+ // Verify that the thumb value is adjusted to maxValue
139
+ expect(_valuesInstanceProperty(result.current.sliderActiveTrackProps.state)[0]).toEqual(80);
140
+
141
+ // Update maxValue and verify adjustment
142
+ rerender(_objectSpread(_objectSpread({}, defaultProps), {}, {
143
+ defaultValue: 10,
144
+ maxValue: 70
145
+ }));
146
+ expect(_valuesInstanceProperty(result.current.sliderActiveTrackProps.state)[0]).toEqual(70);
147
+ });
148
+ test('should handle multi-thumb sliders with minValue and maxValue constraints', function () {
149
+ var _renderHook5 = renderHook(function (props) {
150
+ return useSliderField(props);
151
+ }, {
152
+ initialProps: _objectSpread(_objectSpread({}, defaultProps), {}, {
153
+ isMultiThumb: true,
154
+ minValue: 20,
155
+ maxValue: 80,
156
+ defaultValue: [10, 90]
157
+ })
158
+ }),
159
+ result = _renderHook5.result,
160
+ rerender = _renderHook5.rerender;
161
+
162
+ // Verify that both thumb values are adjusted to minValue and maxValue
163
+ expect(_valuesInstanceProperty(result.current.sliderActiveTrackProps.state)).toEqual([20, 80]);
164
+
165
+ // Update minValue and maxValue and verify adjustment
166
+ rerender(_objectSpread(_objectSpread({}, defaultProps), {}, {
167
+ isMultiThumb: true,
168
+ minValue: 30,
169
+ maxValue: 70
170
+ }));
171
+ expect(_valuesInstanceProperty(result.current.sliderActiveTrackProps.state)).toEqual([30, 70]);
172
+ });
102
173
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.124.0-alpha.1",
3
+ "version": "2.124.0-alpha.3",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",