@elliemae/ds-slider 2.3.0-alpha.6 → 2.3.0-next.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.
Files changed (78) hide show
  1. package/cjs/DSSlider.js +33 -0
  2. package/cjs/components/SliderImp.js +199 -0
  3. package/cjs/components/Thumb.js +71 -0
  4. package/cjs/components/TickMarks.js +46 -0
  5. package/cjs/components/TickMarksValues.js +43 -0
  6. package/cjs/components/Track.js +67 -0
  7. package/cjs/components/context.js +13 -0
  8. package/cjs/components/styled.js +61 -0
  9. package/cjs/components/utils.js +49 -0
  10. package/cjs/index.js +11 -0
  11. package/cjs/prop-types.js +64 -0
  12. package/esm/DSSlider.js +23 -0
  13. package/esm/components/SliderImp.js +192 -0
  14. package/esm/components/Thumb.js +64 -0
  15. package/esm/components/TickMarks.js +39 -0
  16. package/esm/components/TickMarksValues.js +36 -0
  17. package/esm/components/Track.js +59 -0
  18. package/esm/components/context.js +5 -0
  19. package/esm/components/styled.js +47 -0
  20. package/esm/components/utils.js +44 -0
  21. package/esm/index.js +1 -0
  22. package/esm/prop-types.js +59 -0
  23. package/package.json +41 -43
  24. package/types/DSSlider.d.ts +107 -0
  25. package/types/components/SliderImp.d.ts +3 -0
  26. package/types/components/Thumb.d.ts +14 -0
  27. package/types/components/TickMarks.d.ts +3 -0
  28. package/types/components/TickMarksValues.d.ts +3 -0
  29. package/types/components/Track.d.ts +6 -0
  30. package/types/components/context.d.ts +2 -0
  31. package/types/components/styled.d.ts +8 -0
  32. package/types/components/utils.d.ts +2 -0
  33. package/types/index.d.ts +2 -0
  34. package/types/prop-types.d.ts +109 -0
  35. package/dist/cjs/DSSlider.js +0 -48
  36. package/dist/cjs/DSSlider.js.map +0 -7
  37. package/dist/cjs/components/SliderImp.js +0 -195
  38. package/dist/cjs/components/SliderImp.js.map +0 -7
  39. package/dist/cjs/components/Thumb.js +0 -72
  40. package/dist/cjs/components/Thumb.js.map +0 -7
  41. package/dist/cjs/components/TickMarks.js +0 -87
  42. package/dist/cjs/components/TickMarks.js.map +0 -7
  43. package/dist/cjs/components/TickMarksValues.js +0 -64
  44. package/dist/cjs/components/TickMarksValues.js.map +0 -7
  45. package/dist/cjs/components/Track.js +0 -78
  46. package/dist/cjs/components/Track.js.map +0 -7
  47. package/dist/cjs/components/context.js +0 -36
  48. package/dist/cjs/components/context.js.map +0 -7
  49. package/dist/cjs/components/styled.js +0 -96
  50. package/dist/cjs/components/styled.js.map +0 -7
  51. package/dist/cjs/components/utils.js +0 -59
  52. package/dist/cjs/components/utils.js.map +0 -7
  53. package/dist/cjs/index.js +0 -36
  54. package/dist/cjs/index.js.map +0 -7
  55. package/dist/cjs/prop-types.js +0 -67
  56. package/dist/cjs/prop-types.js.map +0 -7
  57. package/dist/esm/DSSlider.js +0 -19
  58. package/dist/esm/DSSlider.js.map +0 -7
  59. package/dist/esm/components/SliderImp.js +0 -173
  60. package/dist/esm/components/SliderImp.js.map +0 -7
  61. package/dist/esm/components/Thumb.js +0 -43
  62. package/dist/esm/components/Thumb.js.map +0 -7
  63. package/dist/esm/components/TickMarks.js +0 -58
  64. package/dist/esm/components/TickMarks.js.map +0 -7
  65. package/dist/esm/components/TickMarksValues.js +0 -35
  66. package/dist/esm/components/TickMarksValues.js.map +0 -7
  67. package/dist/esm/components/Track.js +0 -49
  68. package/dist/esm/components/Track.js.map +0 -7
  69. package/dist/esm/components/context.js +0 -7
  70. package/dist/esm/components/context.js.map +0 -7
  71. package/dist/esm/components/styled.js +0 -67
  72. package/dist/esm/components/styled.js.map +0 -7
  73. package/dist/esm/components/utils.js +0 -30
  74. package/dist/esm/components/utils.js.map +0 -7
  75. package/dist/esm/index.js +0 -7
  76. package/dist/esm/index.js.map +0 -7
  77. package/dist/esm/prop-types.js +0 -38
  78. package/dist/esm/prop-types.js.map +0 -7
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
+ require('react');
12
+ var reactDesc = require('react-desc');
13
+ var SliderImp = require('./components/SliderImp.js');
14
+ var propTypes = require('./prop-types.js');
15
+ var jsxRuntime = require('react/jsx-runtime');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
20
+
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
+
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
+
25
+ const DSSlider = props => /*#__PURE__*/jsxRuntime.jsx(SliderImp, _objectSpread({}, props));
26
+
27
+ DSSlider.defaultProps = propTypes.defaultProps;
28
+ const DSSliderWithSchema = reactDesc.describe(DSSlider);
29
+ DSSliderWithSchema.propTypes = propTypes.sliderPropTypes;
30
+
31
+ exports.DSSlider = DSSlider;
32
+ exports.DSSliderWithSchema = DSSliderWithSchema;
33
+ exports["default"] = DSSlider;
@@ -0,0 +1,199 @@
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ require('core-js/modules/web.dom-collections.iterator.js');
5
+ var React = require('react');
6
+ var uuid = require('uuid');
7
+ var reactRange = require('react-range');
8
+ var dsUtilities = require('@elliemae/ds-utilities');
9
+ var DSTruncatedTooltipText = require('@elliemae/ds-truncated-tooltip-text');
10
+ var dsGrid = require('@elliemae/ds-grid');
11
+ var Track = require('./Track.js');
12
+ var Thumb = require('./Thumb.js');
13
+ var styled = require('./styled.js');
14
+ var utils = require('./utils.js');
15
+ var context = require('./context.js');
16
+ var jsxRuntime = require('react/jsx-runtime');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
21
+ var DSTruncatedTooltipText__default = /*#__PURE__*/_interopDefaultLegacy(DSTruncatedTooltipText);
22
+
23
+ const getSubArrayFromRange = function (arr, _ref) {
24
+ let [minVal, maxVal] = _ref;
25
+ let isCustomTickMarksValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
26
+ const trueMinVal = isCustomTickMarksValues ? arr[minVal] : minVal;
27
+ const minIndex = arr.findIndex(el => el === trueMinVal);
28
+
29
+ if (maxVal !== undefined) {
30
+ // if two handlers, return the found slice
31
+ const trueMaxVal = isCustomTickMarksValues ? arr[maxVal] : maxVal;
32
+ const maxIndex = arr.findIndex(el => el === trueMaxVal);
33
+ if (minIndex >= 0 && maxIndex > minIndex) return arr.slice(minIndex, maxIndex + 1);
34
+ return [];
35
+ } // if only one handler, return the value in an array
36
+
37
+
38
+ return [trueMinVal];
39
+ };
40
+
41
+ const SliderImp = props => {
42
+ var _ref$current3;
43
+
44
+ const {
45
+ containerProps,
46
+ disabled,
47
+ label,
48
+ labelWithValue,
49
+ minValue,
50
+ maxValue,
51
+ step,
52
+ onChange,
53
+ withTickMarks,
54
+ withTickMarksValues,
55
+ withTwoHandles,
56
+ customTickMarksValues,
57
+ zIndex
58
+ } = props;
59
+ const ref = React.useRef();
60
+ const [width, setWidth] = React.useState(0);
61
+ const sliderUUID = React.useMemo(() => uuid.v4(), []);
62
+ const parsedMinValue = React.useMemo(() => {
63
+ // ensure this works correctly with customTickMarksValues array
64
+ if (customTickMarksValues !== null && customTickMarksValues !== void 0 && customTickMarksValues.length) return 0;
65
+ return minValue;
66
+ }, [customTickMarksValues === null || customTickMarksValues === void 0 ? void 0 : customTickMarksValues.length, minValue]);
67
+ const parsedMaxValue = React.useMemo(() => {
68
+ // ensure this works correctly with customTickMarksValues array
69
+ if (customTickMarksValues !== null && customTickMarksValues !== void 0 && customTickMarksValues.length) return (customTickMarksValues === null || customTickMarksValues === void 0 ? void 0 : customTickMarksValues.length) - 1;
70
+ return maxValue;
71
+ }, [customTickMarksValues === null || customTickMarksValues === void 0 ? void 0 : customTickMarksValues.length, maxValue]);
72
+ const parsedStep = React.useMemo(() => {
73
+ // ensure this works correctly with customTickMarksValues array
74
+ if (customTickMarksValues !== null && customTickMarksValues !== void 0 && customTickMarksValues.length) return 1;
75
+ return step;
76
+ }, [customTickMarksValues === null || customTickMarksValues === void 0 ? void 0 : customTickMarksValues.length, step]);
77
+ const parsedValuesArray = React.useMemo(() => {
78
+ // ensure this works correctly with customTickMarksValues array
79
+ if (customTickMarksValues !== null && customTickMarksValues !== void 0 && customTickMarksValues.length) return customTickMarksValues;
80
+ const newLength = Math.ceil(maxValue / step);
81
+ const valuesArray = [];
82
+
83
+ for (let i = 0; i <= newLength; i += 1) {
84
+ valuesArray.push(step * i);
85
+ }
86
+
87
+ return valuesArray;
88
+ }, [customTickMarksValues === null || customTickMarksValues === void 0 ? void 0 : customTickMarksValues.length, minValue, maxValue, step]);
89
+ const [rangeValues, setRangeValues] = React.useState(withTwoHandles ? [parsedMinValue, parsedMaxValue] : [parsedMinValue]); // track the full slice of values selected instead of only the limits
90
+ // this is important to handle the selected range labels colors
91
+
92
+ const [fullSelectedValues, setFullSelectedValues] = React.useState([]);
93
+ React.useEffect(() => {
94
+ const selectedRangeValues = getSubArrayFromRange(parsedValuesArray, rangeValues, !!(customTickMarksValues !== null && customTickMarksValues !== void 0 && customTickMarksValues.length));
95
+ setFullSelectedValues(selectedRangeValues);
96
+ }, [parsedValuesArray, rangeValues, customTickMarksValues === null || customTickMarksValues === void 0 ? void 0 : customTickMarksValues.length]);
97
+ const prevWithTwoHandles = dsUtilities.usePrevious(withTwoHandles);
98
+
99
+ const resizeHandler = () => {
100
+ var _ref$current;
101
+
102
+ setWidth(0);
103
+ setWidth((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.clientWidth);
104
+ };
105
+
106
+ React.useEffect(() => {
107
+ window.addEventListener('resize', resizeHandler);
108
+ return () => window.removeEventListener('resize', resizeHandler);
109
+ });
110
+ React.useEffect(() => {
111
+ if (!prevWithTwoHandles && withTwoHandles) {
112
+ setRangeValues([parsedMinValue, parsedMaxValue]);
113
+ } else if (prevWithTwoHandles && !withTwoHandles) {
114
+ setRangeValues([parsedMinValue]);
115
+ }
116
+ }, [withTwoHandles]);
117
+ React.useEffect(() => {
118
+ var _ref$current2;
119
+
120
+ setWidth((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.clientWidth);
121
+ }, [(_ref$current3 = ref.current) === null || _ref$current3 === void 0 ? void 0 : _ref$current3.clientWidth]);
122
+ const [finalLabelText, finalValueText] = React.useMemo(() => utils.conformedLabel(rangeValues, label, labelWithValue, withTwoHandles, customTickMarksValues, parsedStep), [rangeValues, label, labelWithValue, withTwoHandles, customTickMarksValues, parsedStep]);
123
+
124
+ const SliderLabel = /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
125
+ children: [/*#__PURE__*/_jsx__default["default"](styled.LabelText, {}, void 0, finalLabelText), finalLabelText && ' ', /*#__PURE__*/_jsx__default["default"](styled.ValueText, {
126
+ disabled: disabled
127
+ }, void 0, finalValueText)]
128
+ });
129
+
130
+ return /*#__PURE__*/_jsx__default["default"](DSTruncatedTooltipText.TooltipTextProvider, {}, void 0, /*#__PURE__*/jsxRuntime.jsx("div", {
131
+ ref: ref,
132
+ children: /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
133
+ width: "100%",
134
+ style: {
135
+ maxWidth: '100%'
136
+ },
137
+ containerProps: containerProps,
138
+ "data-testid": "slider",
139
+ rows: ['auto', 'auto']
140
+ }, void 0, /*#__PURE__*/_jsx__default["default"](context.SliderContext.Provider, {
141
+ value: {
142
+ disabled,
143
+ sliderUUID,
144
+ label,
145
+ labelWithValue,
146
+ minValue: parsedMinValue,
147
+ maxValue: parsedMaxValue,
148
+ step: parsedStep,
149
+ parsedValuesArray,
150
+ withTickMarks,
151
+ withTickMarksValues,
152
+ withTwoHandles,
153
+ customTickMarksValues,
154
+ rangeValues,
155
+ fullSelectedValues,
156
+ zIndex
157
+ }
158
+ }, void 0, finalLabelText && /*#__PURE__*/_jsx__default["default"](styled.LabelWrapper, {
159
+ width: width
160
+ }, void 0, /*#__PURE__*/_jsx__default["default"](DSTruncatedTooltipText__default["default"], {
161
+ value: SliderLabel
162
+ })), /*#__PURE__*/_jsx__default["default"](styled.StyledRangeWrapper, {}, void 0, /*#__PURE__*/_jsx__default["default"](reactRange.Range, {
163
+ step: parsedStep,
164
+ min: parsedMinValue,
165
+ max: parsedMaxValue,
166
+ values: rangeValues,
167
+ disabled: disabled,
168
+ onChange: values => {
169
+ if (withTwoHandles && values[0] === values[1]) return;
170
+ setRangeValues(values);
171
+ onChange(values);
172
+ },
173
+ renderTrack: _ref2 => {
174
+ let {
175
+ props: trackProps,
176
+ children
177
+ } = _ref2;
178
+ return /*#__PURE__*/_jsx__default["default"](Track, {
179
+ props: trackProps
180
+ }, void 0, children);
181
+ },
182
+ renderThumb: renderArgs => {
183
+ const {
184
+ index,
185
+ props: thumbProps,
186
+ isDragged
187
+ } = renderArgs;
188
+ return /*#__PURE__*/_jsx__default["default"](Thumb, {
189
+ props: thumbProps,
190
+ isDragged: isDragged,
191
+ index: index
192
+ }, "".concat(sliderUUID, "-").concat(thumbProps.key));
193
+ },
194
+ allowOverlap: false
195
+ }))))
196
+ }));
197
+ }; // SliderImp.propTypes = sliderPropTypes;
198
+
199
+ module.exports = SliderImp;
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
5
+ require('core-js/modules/web.dom-collections.iterator.js');
6
+ require('core-js/modules/esnext.async-iterator.filter.js');
7
+ require('core-js/modules/esnext.iterator.constructor.js');
8
+ require('core-js/modules/esnext.iterator.filter.js');
9
+ require('core-js/modules/esnext.async-iterator.for-each.js');
10
+ require('core-js/modules/esnext.iterator.for-each.js');
11
+ var React = require('react');
12
+ var dsTooltip = require('@elliemae/ds-tooltip');
13
+ var context = require('./context.js');
14
+ var utils = require('./utils.js');
15
+ var styled = require('./styled.js');
16
+ var jsxRuntime = require('react/jsx-runtime');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
21
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
22
+
23
+ var _TooltipArrow;
24
+
25
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
26
+
27
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
28
+
29
+ const Thumb = _ref => {
30
+ let {
31
+ index,
32
+ props,
33
+ isDragged
34
+ } = _ref;
35
+ const [isHovered, setIsHovered] = React.useState(false);
36
+ const {
37
+ disabled,
38
+ rangeValues,
39
+ zIndex,
40
+ customTickMarksValues,
41
+ step,
42
+ minValue
43
+ } = React.useContext(context.SliderContext);
44
+
45
+ const cleanedProps = _objectSpread({}, props); // delete cleanedProps.key;
46
+ // delete cleanedProps.draggable;
47
+
48
+
49
+ return (
50
+ /*#__PURE__*/
51
+ // ...props is needed because it's received from the library
52
+ // ...props.style has it own style from the library but has a bug with the zIndex for two thumbs, so that's why it has to be overwrite
53
+ jsxRuntime.jsx(styled.ThumbStyled, _objectSpread(_objectSpread({}, cleanedProps), {}, {
54
+ "data-testid": "slider-thumb",
55
+ disabled: disabled // eslint-disable-next-line react/prop-types
56
+ ,
57
+ style: _objectSpread(_objectSpread({}, cleanedProps.style), {}, {
58
+ zIndex
59
+ }),
60
+ index: index,
61
+ onMouseEnter: () => setIsHovered(true),
62
+ onMouseLeave: () => setIsHovered(false),
63
+ children: /*#__PURE__*/_jsx__default["default"](styled.TooltipContainerStyled, {
64
+ isDragged: isDragged,
65
+ isHovered: isHovered
66
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsTooltip.TooltipText, {}, void 0, utils.conformedThumbLabel(rangeValues, customTickMarksValues, index, step, minValue)), _TooltipArrow || (_TooltipArrow = /*#__PURE__*/_jsx__default["default"](styled.TooltipArrow, {})))
67
+ }))
68
+ );
69
+ };
70
+
71
+ module.exports = Thumb;
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ var React = require('react');
5
+ var styled = require('styled-components');
6
+ var dsSystem = require('@elliemae/ds-system');
7
+ var context = require('./context.js');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
12
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
13
+
14
+ const TickMarks = () => {
15
+ const {
16
+ minValue,
17
+ maxValue,
18
+ rangeValues,
19
+ step,
20
+ withTwoHandles,
21
+ zIndex
22
+ } = React.useContext(context.SliderContext);
23
+ const dots = [];
24
+
25
+ for (let index = minValue || 0; index <= maxValue; index += step) {
26
+ const isActive = withTwoHandles ? rangeValues[0] <= index && index < rangeValues[1] : rangeValues[0] > index;
27
+ dots.push( /*#__PURE__*/_jsx__default["default"](Dot, {
28
+ "data-testid": "slider-dot",
29
+ isActive: isActive
30
+ }, index));
31
+ }
32
+
33
+ return /*#__PURE__*/_jsx__default["default"](DotsContainer, {
34
+ "data-testid": "slider-tick-marks",
35
+ zIndex: zIndex
36
+ }, void 0, dots);
37
+ };
38
+
39
+ const Dot = /*#__PURE__*/styled__default["default"].div.withConfig({
40
+ componentId: "sc-15z2sh4-0"
41
+ })(["&:after{content:'';background:", ";border-radius:", ";display:block;position:relative;width:2px;height:2px;}"], props => props.isActive ? props.theme.colors.brand[300] : props.theme.colors.neutral[400], props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs));
42
+ const DotsContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
43
+ componentId: "sc-15z2sh4-1"
44
+ })(["padding:0 calc(", " * 0.5);align-items:center;display:flex;justify-content:space-between;pointer-events:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:", ";"], props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => props.zIndex - 1);
45
+
46
+ module.exports = TickMarks;
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var _jsx = require('@babel/runtime/helpers/jsx');
4
+ require('core-js/modules/esnext.async-iterator.map.js');
5
+ require('core-js/modules/esnext.iterator.map.js');
6
+ var React = require('react');
7
+ var styled = require('styled-components');
8
+ var dsSystem = require('@elliemae/ds-system');
9
+ var context = require('./context.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
14
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
15
+
16
+ const TickMarks = () => {
17
+ var _TickMarksContainer;
18
+
19
+ const {
20
+ parsedValuesArray,
21
+ fullSelectedValues,
22
+ sliderUUID
23
+ } = React.useContext(context.SliderContext);
24
+ const TickMarksLabels = React.useMemo(() => parsedValuesArray.map(value => {
25
+ const isSelected = fullSelectedValues.findIndex(selectedVal => selectedVal === value) >= 0;
26
+ return /*#__PURE__*/_jsx__default["default"](TickMarkValue, {
27
+ isSelected: isSelected
28
+ }, "".concat(sliderUUID, "-").concat(value), value);
29
+ }), [parsedValuesArray, sliderUUID, fullSelectedValues]);
30
+ const PureTickMArksValues = React.useMemo(() => _TickMarksContainer || (_TickMarksContainer = /*#__PURE__*/_jsx__default["default"](TickMarksContainer, {
31
+ "data-testid": "slider-tick-marks-values"
32
+ }, void 0, TickMarksLabels)), [TickMarksLabels]);
33
+ return PureTickMArksValues;
34
+ };
35
+
36
+ const TickMarkValue = /*#__PURE__*/styled__default["default"].div.withConfig({
37
+ componentId: "sc-lq3yel-0"
38
+ })(["margin:", " 0;overflow:visible;transform:translateX(-100%);width:", ";color:", ";"], props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.s), props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => props.isSelected ? props.theme.colors.neutral[800] : props.theme.colors.neutral[500]);
39
+ const TickMarksContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
40
+ componentId: "sc-lq3yel-1"
41
+ })(["display:flex;justify-content:space-between;"]);
42
+
43
+ module.exports = TickMarks;
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ require('core-js/modules/esnext.async-iterator.filter.js');
4
+ require('core-js/modules/esnext.iterator.constructor.js');
5
+ require('core-js/modules/esnext.iterator.filter.js');
6
+ require('core-js/modules/esnext.async-iterator.for-each.js');
7
+ require('core-js/modules/esnext.iterator.for-each.js');
8
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
9
+ var _jsx = require('@babel/runtime/helpers/jsx');
10
+ var React = require('react');
11
+ var reactRange = require('react-range');
12
+ var styled = require('styled-components');
13
+ var dsSystem = require('@elliemae/ds-system');
14
+ var TickMarks = require('./TickMarks.js');
15
+ var TickMarksValues = require('./TickMarksValues.js');
16
+ var context = require('./context.js');
17
+ var jsxRuntime = require('react/jsx-runtime');
18
+
19
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
+
21
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
22
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
24
+
25
+ var _TickMarks, _TickMarksValues;
26
+
27
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
+
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+
31
+ const Track = _ref => {
32
+ let {
33
+ children,
34
+ props
35
+ } = _ref;
36
+ const {
37
+ disabled,
38
+ minValue,
39
+ maxValue,
40
+ rangeValues,
41
+ withTickMarks,
42
+ withTickMarksValues,
43
+ withTwoHandles
44
+ } = React.useContext(context.SliderContext);
45
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
46
+ children: [/*#__PURE__*/jsxRuntime.jsxs(TrackStyled, _objectSpread(_objectSpread({}, props), {}, {
47
+ // This is needed because it's received from the library
48
+ disabled: disabled,
49
+ minValue: minValue,
50
+ maxValue: maxValue,
51
+ rangeValues: rangeValues,
52
+ withTwoHandles: withTwoHandles,
53
+ children: [children, withTickMarks && !disabled && (_TickMarks || (_TickMarks = /*#__PURE__*/_jsx__default["default"](TickMarks, {})))]
54
+ })), withTickMarksValues && (_TickMarksValues || (_TickMarksValues = /*#__PURE__*/_jsx__default["default"](TickMarksValues, {})))]
55
+ });
56
+ };
57
+
58
+ const TrackStyled = /*#__PURE__*/styled__default["default"].div.withConfig({
59
+ componentId: "sc-13fbuj5-0"
60
+ })(["position:relative;height:", ";width:100%;min-width:", ";border-radius:", ";background:", ";"], props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxl), props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => props.disabled ? props.theme.colors.neutral[100] : reactRange.getTrackBackground({
61
+ values: props.rangeValues,
62
+ colors: props.withTwoHandles ? [props.theme.colors.neutral[100], props.theme.colors.brand[600], props.theme.colors.neutral[100]] : [props.theme.colors.brand[600], props.theme.colors.neutral[100]],
63
+ min: props.minValue,
64
+ max: props.maxValue
65
+ }));
66
+
67
+ module.exports = Track;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
+
11
+ const SliderContext = /*#__PURE__*/React__default["default"].createContext();
12
+
13
+ exports.SliderContext = SliderContext;
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styled = require('styled-components');
6
+ var dsSystem = require('@elliemae/ds-system');
7
+ var dsTooltip = require('@elliemae/ds-tooltip');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
12
+
13
+ /* eslint-disable indent */
14
+ const ThumbStyled = /*#__PURE__*/styled__default["default"].div.withConfig({
15
+ componentId: "sc-24in0j-0"
16
+ })(["height:20px;width:20px;background-color:", ";border-radius:10px;border:1px solid ", ";:focus{border:1px solid ", ";outline:unset;}:hover{background-color:", ";}"], props => props.disabled ? props.theme.colors.neutral[100] : props.theme.colors.neutral['000'], props => props.disabled ? props.theme.colors.neutral[100] : props.theme.colors.neutral[400], props => props.theme.colors.brand[600], _ref => {
17
+ let {
18
+ disabled,
19
+ theme
20
+ } = _ref;
21
+ return disabled ? theme.colors.neutral[100] : theme.colors.brand[200];
22
+ });
23
+ const TooltipContainerStyled = /*#__PURE__*/styled__default["default"](dsTooltip.TooltipContainer).withConfig({
24
+ componentId: "sc-24in0j-1"
25
+ })(["position:relative;display:flex;align-items:center;flex-direction:column;top:-35px;width:max-content;left:50%;transform:translateX(-50%);visibility:", ";"], _ref2 => {
26
+ let {
27
+ isDragged,
28
+ isHovered
29
+ } = _ref2;
30
+ return isDragged || isHovered ? 'visible' : 'hidden';
31
+ }); // TODO: didn't work with DSTooltip, see how to improve
32
+
33
+ const TooltipArrow = /*#__PURE__*/styled__default["default"].div.withConfig({
34
+ componentId: "sc-24in0j-2"
35
+ })(["position:absolute;width:0;height:0;top:20px;border-left:calc(", " * 2.5) solid transparent;border-right:calc(", " * 2.5) solid transparent;border-top:calc(", " * 2.5) solid ", ";"], props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => dsSystem.__UNSAFE_SPACE_TO_DIMSUM(props.theme.space.xxs), props => props.theme.colors.neutral[0]);
36
+ const LabelWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
37
+ componentId: "sc-24in0j-3"
38
+ })(["margin-bottom:", ";max-width:100%;width:", ";"], props => props.theme.space.xxs, props => "".concat(props.width || 0, "px"));
39
+ const LabelText = /*#__PURE__*/styled__default["default"].span.withConfig({
40
+ componentId: "sc-24in0j-4"
41
+ })(["color:", ";"], props => props.theme.colors.neutral[600]);
42
+ const ValueText = /*#__PURE__*/styled__default["default"].span.withConfig({
43
+ componentId: "sc-24in0j-5"
44
+ })(["color:", ";"], _ref3 => {
45
+ let {
46
+ disabled,
47
+ theme
48
+ } = _ref3;
49
+ return theme.colors.neutral[disabled ? 500 : 800];
50
+ });
51
+ const StyledRangeWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
52
+ componentId: "sc-24in0j-6"
53
+ })(["min-height:28px;margin:0 10px;"]);
54
+
55
+ exports.LabelText = LabelText;
56
+ exports.LabelWrapper = LabelWrapper;
57
+ exports.StyledRangeWrapper = StyledRangeWrapper;
58
+ exports.ThumbStyled = ThumbStyled;
59
+ exports.TooltipArrow = TooltipArrow;
60
+ exports.TooltipContainerStyled = TooltipContainerStyled;
61
+ exports.ValueText = ValueText;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dsUtilities = require('@elliemae/ds-utilities');
6
+
7
+ /* eslint-disable max-params */
8
+ const conformedLabel = function (rangeValues) {
9
+ let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
10
+ let labelWithValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
11
+ let withTwoHandles = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
12
+ let customTickMarksValues = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
13
+ let step = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
14
+ let minValue = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;
15
+ const msg = label.trim();
16
+ let value = '';
17
+
18
+ if (!dsUtilities.isEmpty(customTickMarksValues) && labelWithValue && label) {
19
+ const firstValue = customTickMarksValues[(rangeValues[0] - minValue) / step];
20
+ const secondValue = customTickMarksValues[(rangeValues[1] - minValue) / step];
21
+ value = "".concat(firstValue || rangeValues[0].toFixed(1), " ").concat(withTwoHandles ? ", ".concat(secondValue || rangeValues[1].toFixed(1)) : '', " ");
22
+ } else if (labelWithValue && label) {
23
+ var _rangeValues$;
24
+
25
+ value = "".concat(rangeValues[0].toFixed(1), " ").concat(withTwoHandles ? ", ".concat((_rangeValues$ = rangeValues[1]) === null || _rangeValues$ === void 0 ? void 0 : _rangeValues$.toFixed(1)) : '', " ");
26
+ }
27
+
28
+ value = value.trim();
29
+ return [msg, value];
30
+ };
31
+ const conformedThumbLabel = function (rangeValues) {
32
+ let customTickMarksValues = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
33
+ let index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
34
+ let step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
35
+ let minValue = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
36
+ let msg = "Value: ";
37
+
38
+ if (!dsUtilities.isEmpty(customTickMarksValues)) {
39
+ const foundValue = customTickMarksValues[(rangeValues[index] - minValue) / step];
40
+ msg += "".concat(foundValue || rangeValues[index].toFixed(1));
41
+ } else {
42
+ msg += "".concat(rangeValues[index].toFixed(1));
43
+ }
44
+
45
+ return msg;
46
+ };
47
+
48
+ exports.conformedLabel = conformedLabel;
49
+ exports.conformedThumbLabel = conformedThumbLabel;
package/cjs/index.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var DSSlider = require('./DSSlider.js');
6
+
7
+
8
+
9
+ exports.DSSlider = DSSlider.DSSlider;
10
+ exports.DSSliderWithSchema = DSSlider.DSSliderWithSchema;
11
+ exports["default"] = DSSlider.DSSlider;
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var reactDesc = require('react-desc');
6
+
7
+ const defaultProps = {
8
+ containerProps: {},
9
+ disabled: false,
10
+ label: '',
11
+ labelWithValue: false,
12
+ minValue: 0,
13
+ maxValue: 100,
14
+ step: 5,
15
+ onChange: () => {},
16
+ withTickMarks: false,
17
+ withTickMarksValues: false,
18
+ withTwoHandles: false,
19
+ customTickMarksValues: [],
20
+ zIndex: 0
21
+ };
22
+ const sliderPropTypes = {
23
+ /** props to inject to slider wrapper */
24
+ containerProps: reactDesc.PropTypes.shape({}).description('props to inject to slider wrapper'),
25
+
26
+ /** disable slider */
27
+ disabled: reactDesc.PropTypes.bool.description('disable slider'),
28
+
29
+ /** label for slider */
30
+ label: reactDesc.PropTypes.string.description('label for slider'),
31
+
32
+ /** if the label comes with value attached for slider or not */
33
+ labelWithValue: reactDesc.PropTypes.bool.description('if the label comes with value attached for slider or not'),
34
+
35
+ /** min value for slider */
36
+ minValue: reactDesc.PropTypes.number.description('min value for slider'),
37
+
38
+ /** max value for slider */
39
+ maxValue: reactDesc.PropTypes.number.description('max value for slider'),
40
+
41
+ /** steps of values from min to max */
42
+ step: reactDesc.PropTypes.number.description('steps of values from min to max'),
43
+
44
+ /** change handler */
45
+ onChange: reactDesc.PropTypes.func.description('change handler'),
46
+
47
+ /** add tick marks between steps */
48
+ withTickMarks: reactDesc.PropTypes.bool.description('add tick marks between steps'),
49
+
50
+ /** add step value to tickmark */
51
+ withTickMarksValues: reactDesc.PropTypes.bool.description('add step value to tickmark'),
52
+
53
+ /** add two handles */
54
+ withTwoHandles: reactDesc.PropTypes.bool.description('add two handles'),
55
+
56
+ /** change manually tickmark values */
57
+ customTickMarksValues: reactDesc.PropTypes.arrayOf(reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.number])).description('change manually tickmark values'),
58
+
59
+ /** z index for thumb */
60
+ zIndex: reactDesc.PropTypes.number.description('z index for thumb')
61
+ };
62
+
63
+ exports.defaultProps = defaultProps;
64
+ exports.sliderPropTypes = sliderPropTypes;