@telus-uds/components-base 3.3.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -2
- package/lib/cjs/ActivityIndicator/Dots.js +165 -0
- package/lib/cjs/ActivityIndicator/Dots.native.js +221 -0
- package/lib/cjs/ActivityIndicator/Spinner.js +57 -50
- package/lib/cjs/ActivityIndicator/Spinner.native.js +90 -108
- package/lib/cjs/ActivityIndicator/index.js +12 -1
- package/lib/cjs/ActivityIndicator/shared.js +53 -6
- package/lib/cjs/Button/ButtonBase.js +1 -1
- package/lib/cjs/Button/ButtonLink.js +1 -0
- package/lib/cjs/Carousel/Carousel.js +18 -7
- package/lib/cjs/ExpandCollapse/ExpandCollapse.js +3 -1
- package/lib/cjs/ExpandCollapseMini/ExpandCollapseMini.js +10 -1
- package/lib/cjs/FileUpload/FileUpload.js +31 -2
- package/lib/cjs/Link/Link.js +8 -1
- package/lib/cjs/Link/LinkBase.js +2 -0
- package/lib/cjs/MultiSelectFilter/MultiSelectFilter.js +3 -2
- package/lib/cjs/utils/containUniqueFields.js +5 -5
- package/lib/cjs/utils/useUniqueId.js +2 -6
- package/lib/esm/ActivityIndicator/Dots.js +158 -0
- package/lib/esm/ActivityIndicator/Dots.native.js +212 -0
- package/lib/esm/ActivityIndicator/Spinner.js +58 -51
- package/lib/esm/ActivityIndicator/Spinner.native.js +90 -110
- package/lib/esm/ActivityIndicator/index.js +12 -1
- package/lib/esm/ActivityIndicator/shared.js +52 -5
- package/lib/esm/Button/ButtonBase.js +2 -2
- package/lib/esm/Button/ButtonLink.js +2 -1
- package/lib/esm/Carousel/Carousel.js +18 -7
- package/lib/esm/ExpandCollapse/ExpandCollapse.js +4 -2
- package/lib/esm/ExpandCollapseMini/ExpandCollapseMini.js +11 -2
- package/lib/esm/FileUpload/FileUpload.js +31 -2
- package/lib/esm/Link/Link.js +8 -1
- package/lib/esm/Link/LinkBase.js +2 -0
- package/lib/esm/MultiSelectFilter/MultiSelectFilter.js +3 -2
- package/lib/esm/utils/containUniqueFields.js +5 -5
- package/lib/esm/utils/useUniqueId.js +3 -7
- package/lib/package.json +4 -3
- package/package.json +4 -3
- package/src/ActivityIndicator/Dots.jsx +200 -0
- package/src/ActivityIndicator/Dots.native.jsx +213 -0
- package/src/ActivityIndicator/Spinner.jsx +95 -59
- package/src/ActivityIndicator/Spinner.native.jsx +125 -132
- package/src/ActivityIndicator/index.jsx +17 -2
- package/src/ActivityIndicator/shared.js +52 -5
- package/src/Button/ButtonBase.jsx +4 -2
- package/src/Button/ButtonLink.jsx +3 -1
- package/src/Carousel/Carousel.jsx +28 -7
- package/src/ExpandCollapse/ExpandCollapse.jsx +9 -4
- package/src/ExpandCollapseMini/ExpandCollapseMini.jsx +15 -3
- package/src/FileUpload/FileUpload.jsx +32 -2
- package/src/Link/Link.jsx +8 -1
- package/src/Link/LinkBase.jsx +2 -0
- package/src/MultiSelectFilter/MultiSelectFilter.jsx +2 -2
- package/src/utils/containUniqueFields.js +5 -5
- package/src/utils/useUniqueId.js +3 -8
|
@@ -5,147 +5,129 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
8
9
|
var _Animated = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Animated"));
|
|
9
10
|
var _Easing = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Easing"));
|
|
10
|
-
var
|
|
11
|
-
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
11
|
+
var _reactNativeSvg = _interopRequireWildcard(require("react-native-svg"));
|
|
12
12
|
var _shared = require("./shared");
|
|
13
13
|
var _A11yInfoProvider = require("../A11yInfoProvider");
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
-
const ea = _shared.MIN_EMPTY_ANGLE / 2;
|
|
17
|
-
const sa = _shared.MIN_STROKE_ANGLE / 2;
|
|
18
18
|
const Spinner = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
19
19
|
let {
|
|
20
20
|
size,
|
|
21
21
|
color,
|
|
22
|
+
indicatorBackgroundColor,
|
|
22
23
|
thickness,
|
|
23
24
|
label,
|
|
24
25
|
isStatic = false
|
|
25
26
|
} = _ref;
|
|
26
|
-
const {
|
|
27
|
-
current: timer
|
|
28
|
-
} = _react.default.useRef(new _Animated.default.Value(0));
|
|
29
27
|
const {
|
|
30
28
|
reduceMotionEnabled
|
|
31
29
|
} = (0, _A11yInfoProvider.useA11yInfo)();
|
|
32
30
|
const reduceMotion = reduceMotionEnabled || isStatic;
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
|
|
32
|
+
// Animated value between 0..1 that will loop
|
|
33
|
+
const progress = _react.default.useRef(new _Animated.default.Value(0)).current;
|
|
34
|
+
|
|
35
|
+
// Local state to force re-render on each frame
|
|
36
|
+
const [progressVal, setProgressVal] = _react.default.useState(0);
|
|
37
|
+
_react.default.useEffect(() => {
|
|
38
|
+
if (reduceMotion) {
|
|
39
|
+
progress.stopAnimation(() => {
|
|
40
|
+
progress.setValue(0);
|
|
41
|
+
setProgressVal(0);
|
|
42
|
+
});
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const id = progress.addListener(_ref2 => {
|
|
46
|
+
let {
|
|
47
|
+
value
|
|
48
|
+
} = _ref2;
|
|
49
|
+
setProgressVal(value);
|
|
50
|
+
});
|
|
51
|
+
_Animated.default.loop(_Animated.default.timing(progress, {
|
|
52
|
+
toValue: 1,
|
|
35
53
|
duration: _shared.DURATION,
|
|
36
54
|
easing: _Easing.default.linear,
|
|
37
|
-
|
|
38
|
-
useNativeDriver: true,
|
|
39
|
-
toValue: 1,
|
|
55
|
+
useNativeDriver: false,
|
|
40
56
|
isInteraction: false
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
width: size,
|
|
48
|
-
height: size / (reduceMotion ? 1.5 : 2),
|
|
49
|
-
overflow: 'hidden'
|
|
50
|
-
};
|
|
51
|
-
const animationFrequency = reduceMotion ? [0] : [0, 1];
|
|
57
|
+
})).start();
|
|
58
|
+
return () => {
|
|
59
|
+
progress.removeListener(id);
|
|
60
|
+
progress.stopAnimation();
|
|
61
|
+
};
|
|
62
|
+
}, [progress, reduceMotion]);
|
|
52
63
|
|
|
53
|
-
|
|
64
|
+
/* The same logic used in Wweb keyframes:
|
|
65
|
+
- rotation from -90° base plus 0..183° => -90..93
|
|
66
|
+
- dasharray from 1% -> 50% -> 1%
|
|
67
|
+
- dashoffset from 0 -> 0 -> -49%
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
// 1) rotation (0->183) plus base offset -90
|
|
71
|
+
const rotationDeg = -90 + 183 * progressVal; // -90..+93
|
|
72
|
+
|
|
73
|
+
// strokeDasharray
|
|
74
|
+
let dashArrayVisible;
|
|
75
|
+
if (progressVal < _shared.SPINNER_DASHARRAY_HALF) {
|
|
76
|
+
const segmentProgress = progressVal / _shared.SPINNER_DASHARRAY_HALF;
|
|
77
|
+
dashArrayVisible = _shared.SPINNER_DASHARRAY_MIN + (_shared.SPINNER_DASHARRAY_HALF - _shared.SPINNER_DASHARRAY_MIN) * segmentProgress;
|
|
78
|
+
} else {
|
|
79
|
+
const segmentProgress = (progressVal - _shared.SPINNER_DASHARRAY_HALF) / _shared.SPINNER_DASHARRAY_HALF;
|
|
80
|
+
dashArrayVisible = _shared.SPINNER_DASHARRAY_HALF + (_shared.SPINNER_DASHARRAY_MIN - _shared.SPINNER_DASHARRAY_HALF) * segmentProgress;
|
|
81
|
+
}
|
|
82
|
+
const visibleLength = dashArrayVisible * _shared.SVG_CIRCUMFERENCE;
|
|
83
|
+
const invisibleLength = _shared.SVG_CIRCUMFERENCE - visibleLength;
|
|
84
|
+
const strokeDasharray = `${visibleLength},${invisibleLength}`;
|
|
85
|
+
|
|
86
|
+
// strokeDashoffset
|
|
87
|
+
let strokeDashoffset = 0;
|
|
88
|
+
if (progressVal > _shared.SPINNER_DASHARRAY_HALF) {
|
|
89
|
+
const segmentProgress = (progressVal - _shared.SPINNER_DASHARRAY_HALF) / _shared.SPINNER_DASHARRAY_HALF;
|
|
90
|
+
strokeDashoffset = -_shared.SPINNER_DASHOFFSET_FACTOR * _shared.SVG_CIRCUMFERENCE * segmentProgress;
|
|
91
|
+
}
|
|
92
|
+
const strokeWidth = thickness * _shared.SVG_SIZE / size;
|
|
54
93
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
55
94
|
ref: ref,
|
|
56
|
-
style:
|
|
95
|
+
style: {
|
|
96
|
+
width: size,
|
|
97
|
+
height: size
|
|
98
|
+
},
|
|
57
99
|
accessible: true,
|
|
58
100
|
accessibilityLabel: label,
|
|
59
101
|
accessibilityRole: "progressbar",
|
|
60
102
|
accessibilityState: {
|
|
61
103
|
busy: true
|
|
62
104
|
},
|
|
63
|
-
children: /*#__PURE__*/(0, _jsxRuntime.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
height: size
|
|
87
|
-
};
|
|
88
|
-
if (!reduceMotion) {
|
|
89
|
-
layerStyle.transform = [{
|
|
90
|
-
rotate: timer.interpolate({
|
|
91
|
-
inputRange: [0, 1],
|
|
92
|
-
outputRange: [`${0 + ea + sa}deg`, `${2 * 360 + ea + sa}deg`]
|
|
93
|
-
})
|
|
94
|
-
}];
|
|
95
|
-
viewportStyle.transform = [{
|
|
96
|
-
translateY: index ? -size / 2 : 0
|
|
97
|
-
}, {
|
|
98
|
-
rotate: timer.interpolate({
|
|
99
|
-
inputRange,
|
|
100
|
-
outputRange
|
|
101
|
-
})
|
|
102
|
-
}];
|
|
103
|
-
}
|
|
104
|
-
const offsetStyle = index ? {
|
|
105
|
-
top: size / 2
|
|
106
|
-
} : null;
|
|
107
|
-
const lineStyle = {
|
|
108
|
-
width: size,
|
|
109
|
-
height: size,
|
|
110
|
-
borderColor: color,
|
|
111
|
-
borderWidth: thickness,
|
|
112
|
-
borderRadius: size / 2
|
|
113
|
-
};
|
|
114
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
|
|
115
|
-
style: [styles.layer],
|
|
116
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
|
|
117
|
-
style: layerStyle,
|
|
118
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
|
|
119
|
-
style: [containerStyle, offsetStyle],
|
|
120
|
-
collapsable: false,
|
|
121
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
|
|
122
|
-
style: viewportStyle,
|
|
123
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
|
|
124
|
-
style: containerStyle,
|
|
125
|
-
collapsable: false,
|
|
126
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
|
|
127
|
-
style: lineStyle
|
|
128
|
-
})
|
|
129
|
-
})
|
|
130
|
-
})
|
|
131
|
-
})
|
|
132
|
-
})
|
|
133
|
-
}, index);
|
|
134
|
-
})
|
|
105
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNativeSvg.default, {
|
|
106
|
+
width: size,
|
|
107
|
+
height: size,
|
|
108
|
+
viewBox: `0 0 ${_shared.SVG_SIZE} ${_shared.SVG_SIZE}`,
|
|
109
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
|
|
110
|
+
cx: _shared.SVG_CENTER,
|
|
111
|
+
cy: _shared.SVG_CENTER,
|
|
112
|
+
r: _shared.SPINNER_RADIUS,
|
|
113
|
+
fill: "none",
|
|
114
|
+
stroke: indicatorBackgroundColor,
|
|
115
|
+
strokeWidth: strokeWidth
|
|
116
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeSvg.Circle, {
|
|
117
|
+
cx: _shared.SVG_CENTER,
|
|
118
|
+
cy: _shared.SVG_CENTER,
|
|
119
|
+
r: _shared.SPINNER_RADIUS,
|
|
120
|
+
fill: "none",
|
|
121
|
+
stroke: color,
|
|
122
|
+
strokeWidth: strokeWidth,
|
|
123
|
+
strokeLinecap: "round",
|
|
124
|
+
transform: `rotate(${rotationDeg}, 24, 24)`,
|
|
125
|
+
strokeDasharray: strokeDasharray,
|
|
126
|
+
strokeDashoffset: strokeDashoffset
|
|
127
|
+
})]
|
|
135
128
|
})
|
|
136
129
|
});
|
|
137
130
|
});
|
|
138
131
|
Spinner.displayName = 'Spinner';
|
|
139
132
|
Spinner.propTypes = _shared.propTypes;
|
|
140
|
-
const styles = _StyleSheet.default.create({
|
|
141
|
-
container: {
|
|
142
|
-
flexGrow: 0,
|
|
143
|
-
flexShrink: 0
|
|
144
|
-
},
|
|
145
|
-
layer: {
|
|
146
|
-
..._StyleSheet.default.absoluteFillObject,
|
|
147
|
-
justifyContent: 'center',
|
|
148
|
-
alignItems: 'center'
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
133
|
var _default = exports.default = Spinner;
|
|
@@ -9,6 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
var _ThemeProvider = require("../ThemeProvider");
|
|
10
10
|
var _props = require("../utils/props");
|
|
11
11
|
var _Spinner = _interopRequireDefault(require("./Spinner"));
|
|
12
|
+
var _Dots = _interopRequireDefault(require("./Dots"));
|
|
12
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
15
|
/**
|
|
@@ -23,13 +24,23 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
23
24
|
} = _ref;
|
|
24
25
|
const {
|
|
25
26
|
size,
|
|
27
|
+
dotSize,
|
|
26
28
|
color,
|
|
29
|
+
indicatorBackgroundColor,
|
|
27
30
|
thickness
|
|
28
31
|
} = (0, _ThemeProvider.useThemeTokens)('ActivityIndicator', tokens, variant);
|
|
29
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
32
|
+
return variant?.dots ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dots.default, {
|
|
33
|
+
ref: ref,
|
|
34
|
+
size: dotSize,
|
|
35
|
+
color: color,
|
|
36
|
+
indicatorBackgroundColor: indicatorBackgroundColor,
|
|
37
|
+
label: label,
|
|
38
|
+
isStatic: isStatic
|
|
39
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
|
|
30
40
|
ref: ref,
|
|
31
41
|
size: size,
|
|
32
42
|
color: color,
|
|
43
|
+
indicatorBackgroundColor: indicatorBackgroundColor,
|
|
33
44
|
thickness: thickness,
|
|
34
45
|
label: label,
|
|
35
46
|
isStatic: isStatic
|
|
@@ -3,18 +3,65 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.propTypes = exports.
|
|
6
|
+
exports.propTypes = exports.UNDERSHOOT_FACTOR = exports.SVG_SIZE = exports.SVG_RADIUS = exports.SVG_CIRCUMFERENCE = exports.SVG_CENTER = exports.SPINNER_ROTATION_DEGREES = exports.SPINNER_RADIUS = exports.SPINNER_KEYTIMES = exports.SPINNER_DASHOFFSET_FACTOR = exports.SPINNER_DASHARRAY_MIN = exports.SPINNER_DASHARRAY_MAX = exports.SPINNER_DASHARRAY_HALF = exports.ROTATION_TRANSFORM = exports.OVERSHOOT_FACTOR = exports.DURATION = exports.DOT_FADEOUT_OUTPUT_RANGE = exports.DOT_FADEOUT_INPUT_RANGE = exports.DOTS_TOTAL_ANIMATION_DURATION = exports.DOTS_SPACING_X = exports.DOTS_PADDING_FACTOR = exports.DOTS_JUMP_HEIGHT_FACTOR = exports.DOTS_FADEOUT_VALUES = exports.DOTS_FADEOUT_KEYTIMES = exports.DOTS_BASE_Y_FACTOR = exports.DOTS_ANIMATION_DURATION = exports.DOT3_COLOR_KEYTIMES = exports.DOT3_ANIMATION_KEYTIMES = exports.DOT3_ANIMATION_INPUT_RANGE = exports.DOT2_COLOR_KEYTIMES = exports.DOT2_ANIMATION_KEYTIMES = exports.DOT2_ANIMATION_INPUT_RANGE = exports.DOT1_COLOR_KEYTIMES = exports.DOT1_ANIMATION_KEYTIMES = exports.DOT1_ANIMATION_INPUT_RANGE = exports.BOUNCY_CURVE = void 0;
|
|
7
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
//
|
|
10
|
-
const DURATION = exports.DURATION =
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
9
|
+
// Spinner
|
|
10
|
+
const DURATION = exports.DURATION = 1200;
|
|
11
|
+
const SVG_RADIUS = exports.SVG_RADIUS = 20;
|
|
12
|
+
const SVG_CIRCUMFERENCE = exports.SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
|
|
13
|
+
const SVG_SIZE = exports.SVG_SIZE = 48;
|
|
14
|
+
const ROTATION_TRANSFORM = exports.ROTATION_TRANSFORM = 'rotate(-90 24 24)';
|
|
15
|
+
const SVG_CENTER = exports.SVG_CENTER = 24;
|
|
16
|
+
const SPINNER_RADIUS = exports.SPINNER_RADIUS = 20;
|
|
17
|
+
const SPINNER_ROTATION_DEGREES = exports.SPINNER_ROTATION_DEGREES = 183;
|
|
18
|
+
const SPINNER_DASHARRAY_MIN = exports.SPINNER_DASHARRAY_MIN = 0.01;
|
|
19
|
+
const SPINNER_DASHARRAY_MAX = exports.SPINNER_DASHARRAY_MAX = 0.99;
|
|
20
|
+
|
|
21
|
+
// Spinner animation
|
|
22
|
+
const SPINNER_KEYTIMES = exports.SPINNER_KEYTIMES = '0; 0.5; 1';
|
|
23
|
+
const SPINNER_DASHARRAY_HALF = exports.SPINNER_DASHARRAY_HALF = 0.5;
|
|
24
|
+
const SPINNER_DASHOFFSET_FACTOR = exports.SPINNER_DASHOFFSET_FACTOR = 0.49;
|
|
25
|
+
|
|
26
|
+
// Dots
|
|
27
|
+
const DOTS_ANIMATION_DURATION = exports.DOTS_ANIMATION_DURATION = 300;
|
|
28
|
+
const DOTS_TOTAL_ANIMATION_DURATION = exports.DOTS_TOTAL_ANIMATION_DURATION = DOTS_ANIMATION_DURATION * 10;
|
|
29
|
+
const OVERSHOOT_FACTOR = exports.OVERSHOOT_FACTOR = 1.3;
|
|
30
|
+
const UNDERSHOOT_FACTOR = exports.UNDERSHOOT_FACTOR = 0.2;
|
|
31
|
+
const BOUNCY_CURVE = exports.BOUNCY_CURVE = '0.2 1 0.8 1';
|
|
32
|
+
const DOTS_SPACING_X = exports.DOTS_SPACING_X = 3;
|
|
33
|
+
const DOTS_BASE_Y_FACTOR = exports.DOTS_BASE_Y_FACTOR = 3;
|
|
34
|
+
const DOTS_JUMP_HEIGHT_FACTOR = exports.DOTS_JUMP_HEIGHT_FACTOR = 1;
|
|
35
|
+
const DOTS_PADDING_FACTOR = exports.DOTS_PADDING_FACTOR = 0.5;
|
|
36
|
+
|
|
37
|
+
// Dots fadeout
|
|
38
|
+
const DOTS_FADEOUT_KEYTIMES = exports.DOTS_FADEOUT_KEYTIMES = '0; 0.7; 0.8; 1';
|
|
39
|
+
const DOTS_FADEOUT_VALUES = exports.DOTS_FADEOUT_VALUES = '1; 1; 0; 0';
|
|
40
|
+
|
|
41
|
+
// Dots animation
|
|
42
|
+
const DOT1_ANIMATION_KEYTIMES = exports.DOT1_ANIMATION_KEYTIMES = '0; 0.1; 0.2; 1';
|
|
43
|
+
const DOT2_ANIMATION_KEYTIMES = exports.DOT2_ANIMATION_KEYTIMES = '0; 0.3; 0.4; 0.5; 1';
|
|
44
|
+
const DOT3_ANIMATION_KEYTIMES = exports.DOT3_ANIMATION_KEYTIMES = '0; 0.6; 0.7; 0.8; 1';
|
|
45
|
+
|
|
46
|
+
// Dots color keytimes
|
|
47
|
+
const DOT1_COLOR_KEYTIMES = exports.DOT1_COLOR_KEYTIMES = '0; 0.3; 0.4; 1';
|
|
48
|
+
const DOT2_COLOR_KEYTIMES = exports.DOT2_COLOR_KEYTIMES = '0; 0.3; 0.4; 0.6; 0.7; 1';
|
|
49
|
+
const DOT3_COLOR_KEYTIMES = exports.DOT3_COLOR_KEYTIMES = '0; 0.5; 0.6; 0.8; 1';
|
|
50
|
+
|
|
51
|
+
// Dots native fadeout
|
|
52
|
+
const DOT_FADEOUT_INPUT_RANGE = exports.DOT_FADEOUT_INPUT_RANGE = [0, 0.7, 0.8, 1];
|
|
53
|
+
const DOT_FADEOUT_OUTPUT_RANGE = exports.DOT_FADEOUT_OUTPUT_RANGE = [1, 1, 0, 0];
|
|
54
|
+
|
|
55
|
+
// Dots native animation
|
|
56
|
+
const DOT1_ANIMATION_INPUT_RANGE = exports.DOT1_ANIMATION_INPUT_RANGE = [0, 0.1, 0.2, 1];
|
|
57
|
+
const DOT2_ANIMATION_INPUT_RANGE = exports.DOT2_ANIMATION_INPUT_RANGE = [0, 0.3, 0.4, 0.5, 1];
|
|
58
|
+
const DOT3_ANIMATION_INPUT_RANGE = exports.DOT3_ANIMATION_INPUT_RANGE = [0, 0.6, 0.7, 0.8, 1];
|
|
14
59
|
const propTypes = exports.propTypes = {
|
|
15
60
|
color: _propTypes.default.string.isRequired,
|
|
61
|
+
baseColor: _propTypes.default.string,
|
|
16
62
|
label: _propTypes.default.string.isRequired,
|
|
17
63
|
size: _propTypes.default.number.isRequired,
|
|
64
|
+
dotsize: _propTypes.default.number,
|
|
18
65
|
thickness: _propTypes.default.number.isRequired,
|
|
19
66
|
isStatic: _propTypes.default.bool
|
|
20
67
|
};
|
|
@@ -16,7 +16,7 @@ var _utils = require("../utils");
|
|
|
16
16
|
var _Icon = require("../Icon");
|
|
17
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
|
-
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.focusHandlerProps, _utils.linkProps, _utils.viewProps]);
|
|
19
|
+
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.focusHandlerProps, _utils.linkProps, _utils.viewProps, _utils.contentfulProps]);
|
|
20
20
|
const getOuterBorderOffset = _ref => {
|
|
21
21
|
let {
|
|
22
22
|
outerBorderGap = 0,
|
|
@@ -50,6 +50,7 @@ ButtonLink.propTypes = {
|
|
|
50
50
|
..._props.a11yProps.types,
|
|
51
51
|
..._propTypes2.default,
|
|
52
52
|
..._props.linkProps.types,
|
|
53
|
+
..._props.contentfulProps.types,
|
|
53
54
|
children: _propTypes2.textAndA11yText,
|
|
54
55
|
dataSet: _propTypes.default.object,
|
|
55
56
|
accessibilityRole: _propTypes.default.string
|
|
@@ -91,7 +91,9 @@ const selectControlButtonPositionStyles = _ref => {
|
|
|
91
91
|
positionProperty = getDynamicPositionProperty(),
|
|
92
92
|
spaceBetweenSlideAndButton,
|
|
93
93
|
enablePeeking,
|
|
94
|
-
enableDisplayMultipleItemsPerSlide
|
|
94
|
+
enableDisplayMultipleItemsPerSlide,
|
|
95
|
+
isAutoPlayEnabled,
|
|
96
|
+
viewport
|
|
95
97
|
} = _ref;
|
|
96
98
|
const styles = {};
|
|
97
99
|
if (positionVariant === 'edge') {
|
|
@@ -99,7 +101,7 @@ const selectControlButtonPositionStyles = _ref => {
|
|
|
99
101
|
} else if (positionVariant === 'inside') {
|
|
100
102
|
styles[positionProperty] = _Constants.DEFAULT_POSITION_OFFSET;
|
|
101
103
|
} else if (positionVariant === 'outside') {
|
|
102
|
-
if (enablePeeking || enableDisplayMultipleItemsPerSlide) {
|
|
104
|
+
if (enablePeeking || enableDisplayMultipleItemsPerSlide || isAutoPlayEnabled && viewport === 'xs') {
|
|
103
105
|
styles[positionProperty] = 0;
|
|
104
106
|
} else {
|
|
105
107
|
styles[positionProperty] = -1 * (spaceBetweenSlideAndButton + buttonWidth);
|
|
@@ -107,7 +109,7 @@ const selectControlButtonPositionStyles = _ref => {
|
|
|
107
109
|
}
|
|
108
110
|
return styles;
|
|
109
111
|
};
|
|
110
|
-
const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton, enablePeeking, enableDisplayMultipleItemsPerSlide) => {
|
|
112
|
+
const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport) => {
|
|
111
113
|
const styles = {
|
|
112
114
|
zIndex: 1,
|
|
113
115
|
position: 'absolute'
|
|
@@ -127,7 +129,9 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
|
|
|
127
129
|
positionProperty: getDynamicPositionProperty(areStylesAppliedOnPreviousButton),
|
|
128
130
|
spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation,
|
|
129
131
|
enablePeeking,
|
|
130
|
-
enableDisplayMultipleItemsPerSlide
|
|
132
|
+
enableDisplayMultipleItemsPerSlide,
|
|
133
|
+
isAutoPlayEnabled,
|
|
134
|
+
viewport
|
|
131
135
|
})
|
|
132
136
|
};
|
|
133
137
|
};
|
|
@@ -174,6 +178,11 @@ const selectRootContainerStyles = (enableHero, viewport) => {
|
|
|
174
178
|
alignItems: 'center'
|
|
175
179
|
};
|
|
176
180
|
}
|
|
181
|
+
if (enableHero) {
|
|
182
|
+
return {
|
|
183
|
+
paddingHorizontal: 16
|
|
184
|
+
};
|
|
185
|
+
}
|
|
177
186
|
return {};
|
|
178
187
|
};
|
|
179
188
|
const selectMainContainerStyles = (enableHero, viewport) => {
|
|
@@ -888,7 +897,9 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
888
897
|
positionProperty: getDynamicPositionProperty(),
|
|
889
898
|
spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation,
|
|
890
899
|
enablePeeking,
|
|
891
|
-
enableDisplayMultipleItemsPerSlide
|
|
900
|
+
enableDisplayMultipleItemsPerSlide,
|
|
901
|
+
isAutoPlayEnabled,
|
|
902
|
+
viewport
|
|
892
903
|
})],
|
|
893
904
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
894
905
|
icon: isCarouselPlaying ? pauseIcon : playIcon,
|
|
@@ -897,7 +908,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
897
908
|
onPress: onAnimationControlButtonPress
|
|
898
909
|
})
|
|
899
910
|
}) : null, showPreviousNextNavigation && totalItems > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
900
|
-
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true, enablePeeking, enableDisplayMultipleItemsPerSlide),
|
|
911
|
+
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport),
|
|
901
912
|
testID: "previous-button-container",
|
|
902
913
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
903
914
|
onLayout: onPreviousNextNavigationButtonLayout,
|
|
@@ -949,7 +960,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
949
960
|
})
|
|
950
961
|
})
|
|
951
962
|
}), showPreviousNextNavigation && totalItems > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
952
|
-
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false, enablePeeking, enableDisplayMultipleItemsPerSlide),
|
|
963
|
+
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport),
|
|
953
964
|
testID: "next-button-container",
|
|
954
965
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
|
|
955
966
|
onLayout: onPreviousNextNavigationButtonLayout,
|
|
@@ -12,7 +12,7 @@ var _ThemeProvider = require("../ThemeProvider");
|
|
|
12
12
|
var _utils = require("../utils");
|
|
13
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
-
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
|
|
15
|
+
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps, _utils.contentfulProps]);
|
|
16
16
|
function selectBorderStyles(tokens) {
|
|
17
17
|
return {
|
|
18
18
|
borderBottomWidth: tokens.borderWidth,
|
|
@@ -37,6 +37,7 @@ const ExpandCollapse = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
37
37
|
open,
|
|
38
38
|
initialOpen,
|
|
39
39
|
onChange,
|
|
40
|
+
dataSet,
|
|
40
41
|
...rest
|
|
41
42
|
} = _ref;
|
|
42
43
|
const {
|
|
@@ -56,6 +57,7 @@ const ExpandCollapse = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
56
57
|
style: staticStyles.container,
|
|
57
58
|
ref: ref,
|
|
58
59
|
...selectProps(rest),
|
|
60
|
+
dataSet: dataSet,
|
|
59
61
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
60
62
|
style: selectBorderStyles(themeTokens),
|
|
61
63
|
children: typeof children === 'function' ? children({
|
|
@@ -11,6 +11,7 @@ var _utils = require("../utils");
|
|
|
11
11
|
var _ExpandCollapseMiniControl = _interopRequireDefault(require("./ExpandCollapseMiniControl"));
|
|
12
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
const [selectContainerProps, selectedContainerPropTypes] = (0, _utils.selectSystemProps)([_utils.contentfulProps]);
|
|
14
15
|
const ExpandCollapseMini = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
15
16
|
let {
|
|
16
17
|
children,
|
|
@@ -18,6 +19,7 @@ const ExpandCollapseMini = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
18
19
|
tokens = {},
|
|
19
20
|
nativeID,
|
|
20
21
|
initialOpen = false,
|
|
22
|
+
dataSet,
|
|
21
23
|
...rest
|
|
22
24
|
} = _ref;
|
|
23
25
|
const expandCollapeMiniPanelId = 'ExpandCollapseMiniPanel';
|
|
@@ -31,6 +33,8 @@ const ExpandCollapseMini = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
31
33
|
onChange: handleChange,
|
|
32
34
|
tokens: tokens,
|
|
33
35
|
initialOpen: initialOpen ? [expandCollapeMiniPanelId] : [],
|
|
36
|
+
...selectContainerProps(rest),
|
|
37
|
+
dataSet: dataSet,
|
|
34
38
|
children: expandProps => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandCollapse.default.Panel, {
|
|
35
39
|
...expandProps,
|
|
36
40
|
panelId: expandCollapeMiniPanelId,
|
|
@@ -60,6 +64,7 @@ const ExpandCollapseMini = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
60
64
|
ExpandCollapseMini.displayName = 'ExpandCollapseMini';
|
|
61
65
|
ExpandCollapseMini.propTypes = {
|
|
62
66
|
..._ExpandCollapseMiniControl.default.propTypes,
|
|
67
|
+
...selectedContainerPropTypes,
|
|
63
68
|
/**
|
|
64
69
|
* Function to call on pressing the panel's control, which should open or close the panel.
|
|
65
70
|
*/
|
|
@@ -79,6 +84,10 @@ ExpandCollapseMini.propTypes = {
|
|
|
79
84
|
/**
|
|
80
85
|
* Optional variant object to override the default theme tokens
|
|
81
86
|
*/
|
|
82
|
-
tokens: (0, _utils.getTokensPropType)('ExpandCollapseMini')
|
|
87
|
+
tokens: (0, _utils.getTokensPropType)('ExpandCollapseMini'),
|
|
88
|
+
/**
|
|
89
|
+
* The dataSet prop allows to pass data-* attributes element to the component.
|
|
90
|
+
*/
|
|
91
|
+
dataSet: _propTypes.default.object
|
|
83
92
|
};
|
|
84
93
|
var _default = exports.default = ExpandCollapseMini;
|
|
@@ -102,6 +102,7 @@ const FileUpload = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
|
|
|
102
102
|
onUpload,
|
|
103
103
|
onDelete,
|
|
104
104
|
documentPicker,
|
|
105
|
+
dictionary = _dictionary.default,
|
|
105
106
|
...rest
|
|
106
107
|
} = _ref2;
|
|
107
108
|
if (minFilesCount <= 0) {
|
|
@@ -109,7 +110,7 @@ const FileUpload = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
|
|
|
109
110
|
}
|
|
110
111
|
const themeTokens = (0, _ThemeProvider.useThemeTokens)('FileUpload', tokens, variant);
|
|
111
112
|
const getCopy = (0, _utils.useCopy)({
|
|
112
|
-
dictionary
|
|
113
|
+
dictionary,
|
|
113
114
|
copy
|
|
114
115
|
});
|
|
115
116
|
const inputFileRef = _react.default.useRef(null);
|
|
@@ -322,6 +323,27 @@ const FileUpload = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
|
|
|
322
323
|
});
|
|
323
324
|
});
|
|
324
325
|
FileUpload.displayName = 'FileUpload';
|
|
326
|
+
const dictionaryEntryShape = _propTypes.default.shape({
|
|
327
|
+
label: _propTypes.default.string.isRequired,
|
|
328
|
+
buttonLabel: _propTypes.default.string.isRequired,
|
|
329
|
+
dismissButtonLabel: _propTypes.default.string.isRequired,
|
|
330
|
+
wrongFileType: _propTypes.default.string.isRequired,
|
|
331
|
+
allowedFileTypes: _propTypes.default.string.isRequired,
|
|
332
|
+
fileTooBig: _propTypes.default.string.isRequired,
|
|
333
|
+
fileIsEmpty: _propTypes.default.string.isRequired,
|
|
334
|
+
problemUploading: _propTypes.default.string.isRequired,
|
|
335
|
+
problemDeleting: _propTypes.default.string.isRequired,
|
|
336
|
+
problemUploadingMultipleFiles: _propTypes.default.string.isRequired,
|
|
337
|
+
only: _propTypes.default.string.isRequired,
|
|
338
|
+
and: _propTypes.default.string.isRequired,
|
|
339
|
+
or: _propTypes.default.string.isRequired,
|
|
340
|
+
uploadSuccess: _propTypes.default.string.isRequired,
|
|
341
|
+
uploadError: _propTypes.default.string.isRequired,
|
|
342
|
+
deleteProblem: _propTypes.default.string.isRequired,
|
|
343
|
+
tooManyFiles: _propTypes.default.string.isRequired,
|
|
344
|
+
fileTooSmall: _propTypes.default.string.isRequired,
|
|
345
|
+
fewFiles: _propTypes.default.string.isRequired
|
|
346
|
+
});
|
|
325
347
|
FileUpload.propTypes = {
|
|
326
348
|
...selectedSystemPropTypes,
|
|
327
349
|
tokens: (0, _utils.getTokensPropType)('FileUpload'),
|
|
@@ -365,6 +387,13 @@ FileUpload.propTypes = {
|
|
|
365
387
|
/**
|
|
366
388
|
* The minimum file size allowed for upload in MB.
|
|
367
389
|
*/
|
|
368
|
-
minFileSize: _propTypes.default.number
|
|
390
|
+
minFileSize: _propTypes.default.number,
|
|
391
|
+
/**
|
|
392
|
+
* Custom dictionary containing the labels to use for the steps
|
|
393
|
+
*/
|
|
394
|
+
dictionary: _propTypes.default.shape({
|
|
395
|
+
en: dictionaryEntryShape,
|
|
396
|
+
fr: dictionaryEntryShape
|
|
397
|
+
})
|
|
369
398
|
};
|
|
370
399
|
var _default = exports.default = FileUpload;
|
package/lib/cjs/Link/Link.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
9
|
var _ThemeProvider = require("../ThemeProvider");
|
|
9
10
|
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -31,5 +32,11 @@ const Link = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
31
32
|
});
|
|
32
33
|
});
|
|
33
34
|
Link.displayName = 'Link';
|
|
34
|
-
Link.propTypes =
|
|
35
|
+
Link.propTypes = {
|
|
36
|
+
..._LinkBase.default.propTypes,
|
|
37
|
+
/**
|
|
38
|
+
* The dataSet prop allows to pass data-* attributes element to the component.
|
|
39
|
+
*/
|
|
40
|
+
dataSet: _propTypes.default.object
|
|
41
|
+
};
|
|
35
42
|
var _default = exports.default = Link;
|
package/lib/cjs/Link/LinkBase.js
CHANGED
|
@@ -143,6 +143,7 @@ const LinkBase = /*#__PURE__*/_react.default.forwardRef((_ref6, ref) => {
|
|
|
143
143
|
variant,
|
|
144
144
|
tokens = {},
|
|
145
145
|
children,
|
|
146
|
+
dataSet,
|
|
146
147
|
accessibilityRole = 'link',
|
|
147
148
|
...rawRest
|
|
148
149
|
} = _ref6;
|
|
@@ -177,6 +178,7 @@ const LinkBase = /*#__PURE__*/_react.default.forwardRef((_ref6, ref) => {
|
|
|
177
178
|
} = (0, _ThemeProvider.useTheme)();
|
|
178
179
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InlinePressable.default, {
|
|
179
180
|
...selectedProps,
|
|
181
|
+
dataSet: dataSet,
|
|
180
182
|
inlineFlex: hasIcon
|
|
181
183
|
// assuming links without icons should be inline (even if they are long)
|
|
182
184
|
,
|
|
@@ -108,6 +108,7 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
|
|
|
108
108
|
const [isOpen, setIsOpen] = _react.default.useState(false);
|
|
109
109
|
const [checkedIds, setCheckedIds] = _react.default.useState(currentValues ?? []);
|
|
110
110
|
const [maxWidth, setMaxWidth] = _react.default.useState(false);
|
|
111
|
+
const isSelected = currentValues.length > 0;
|
|
111
112
|
const {
|
|
112
113
|
headerFontColor,
|
|
113
114
|
headerFontSize,
|
|
@@ -140,7 +141,8 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
|
|
|
140
141
|
} = (0, _ThemeProvider.useThemeTokens)('MultiSelectFilter', tokens, {
|
|
141
142
|
...variant,
|
|
142
143
|
maxHeight,
|
|
143
|
-
maxWidth
|
|
144
|
+
maxWidth,
|
|
145
|
+
selected: isSelected
|
|
144
146
|
}, {
|
|
145
147
|
viewport
|
|
146
148
|
});
|
|
@@ -168,7 +170,6 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
|
|
|
168
170
|
const colSizeNotMobile = items.length > rowLimit ? 2 : 1;
|
|
169
171
|
const colSize = viewport !== 'xs' ? colSizeNotMobile : 1;
|
|
170
172
|
const itemsLengthNotMobile = items.length > 24 ? items.length / 2 : rowLimit;
|
|
171
|
-
const isSelected = currentValues.length > 0;
|
|
172
173
|
const rowLength = viewport !== 'xs' ? itemsLengthNotMobile : items.length;
|
|
173
174
|
_react.default.useEffect(() => {
|
|
174
175
|
if (colSize === 1) return setMaxWidth(false);
|
|
@@ -10,10 +10,10 @@ exports.default = void 0;
|
|
|
10
10
|
// Note that if a value of a field in an item is not set, it will be
|
|
11
11
|
// excluded from comparison.
|
|
12
12
|
const containUniqueFields = (items, fields) => {
|
|
13
|
-
const map =
|
|
13
|
+
const map = new Map();
|
|
14
14
|
const itemsHaveDuplicateFields = items.some(item => fields.some(field => {
|
|
15
|
-
if (!map
|
|
16
|
-
map
|
|
15
|
+
if (!map.has(field)) {
|
|
16
|
+
map.set(field, new Map());
|
|
17
17
|
}
|
|
18
18
|
if (!item[field]) {
|
|
19
19
|
// We exclude empty values from comparison
|
|
@@ -21,8 +21,8 @@ const containUniqueFields = (items, fields) => {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
// Duplicate found!
|
|
24
|
-
if (map
|
|
25
|
-
map
|
|
24
|
+
if (map.get(field).has(item[field])) return true;
|
|
25
|
+
map.get(field).set(item[field], true);
|
|
26
26
|
return false;
|
|
27
27
|
}));
|
|
28
28
|
return !itemsHaveDuplicateFields;
|