@telus-uds/components-web 2.30.0 → 2.31.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 +16 -2
- package/lib/OptimizeImage/OptimizeImage.js +5 -11
- package/lib/OptimizeImage/utils/getImageUrls.js +19 -0
- package/lib/OptimizeImage/utils/index.js +7 -0
- package/lib/OrderedList/OrderedList.js +17 -9
- package/lib-module/OptimizeImage/OptimizeImage.js +6 -12
- package/lib-module/OptimizeImage/utils/getImageUrls.js +12 -0
- package/lib-module/OptimizeImage/utils/index.js +2 -1
- package/lib-module/OrderedList/OrderedList.js +18 -10
- package/package.json +2 -2
- package/src/OptimizeImage/OptimizeImage.jsx +19 -47
- package/src/OptimizeImage/utils/getImageUrls.js +24 -0
- package/src/OptimizeImage/utils/index.js +2 -1
- package/src/OrderedList/OrderedList.jsx +23 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
# Change Log - @telus-uds/components-web
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Wed, 07 Feb 2024 19:09:40 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 2.31.0
|
|
8
|
+
|
|
9
|
+
Wed, 07 Feb 2024 19:09:40 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- updating optimizeimage to support ssr (sergiy.andronov1@telus.com)
|
|
14
|
+
- migrate pricelockup to component-base (chris.tafts@telus.com)
|
|
15
|
+
- Bump @telus-uds/components-base to v1.76.0
|
|
16
|
+
|
|
17
|
+
### Patches
|
|
18
|
+
|
|
19
|
+
- fix ordered-list component single child render (guillermo.peitzner@telus.com)
|
|
20
|
+
|
|
7
21
|
## 2.30.0
|
|
8
22
|
|
|
9
|
-
Mon, 29 Jan 2024 18:
|
|
23
|
+
Mon, 29 Jan 2024 18:41:50 GMT
|
|
10
24
|
|
|
11
25
|
### Minor changes
|
|
12
26
|
|
|
@@ -29,21 +29,15 @@ const OptimizeImage = _ref => {
|
|
|
29
29
|
disableRetina = false,
|
|
30
30
|
...rest
|
|
31
31
|
} = _ref;
|
|
32
|
-
const [imgUrls, setImgUrls] = (0, _react.useState)();
|
|
33
|
-
|
|
34
32
|
// `useHeight` is a deprecated TDS prop, replaced by `sizeByHeight`
|
|
35
33
|
const dimension = sizeByHeight || rest.useHeight ? 'h' : 'w';
|
|
34
|
+
// by default assuming webP support for SSR
|
|
35
|
+
const [imgUrls, setImgUrls] = (0, _react.useState)((0, _utils.getImageUrls)(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, true));
|
|
36
36
|
(0, _react.useEffect)(() => {
|
|
37
|
-
//
|
|
37
|
+
// Checking for webP support for CSR
|
|
38
38
|
(0, _utils.hasWebpSupport)().then(supportsWebp => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
smSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, sm, quality, disableRetina, supportsWebp),
|
|
42
|
-
mdSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, md, quality, disableRetina, supportsWebp),
|
|
43
|
-
lgSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, lg, quality, disableRetina, supportsWebp),
|
|
44
|
-
xlSrc: (0, _utils.getOptimizedUrl)(contentfulAssetUrl, dimension, xl, quality, disableRetina, supportsWebp),
|
|
45
|
-
fallbackSrc: (0, _utils.getFallbackUrl)(contentfulAssetUrl, dimension, xl, quality)
|
|
46
|
-
});
|
|
39
|
+
const imageUrls = (0, _utils.getImageUrls)(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, supportsWebp);
|
|
40
|
+
setImgUrls(imageUrls);
|
|
47
41
|
});
|
|
48
42
|
}, [contentfulAssetUrl, dimension, disableRetina, lg, md, quality, sm, xl, xs]);
|
|
49
43
|
if (!imgUrls) return null;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = getImageUrls;
|
|
7
|
+
var _getOptimizedUrl = _interopRequireDefault(require("./getOptimizedUrl"));
|
|
8
|
+
var _getFallbackUrl = _interopRequireDefault(require("./getFallbackUrl"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
function getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, supportsWebp) {
|
|
11
|
+
return {
|
|
12
|
+
xsSrc: (0, _getOptimizedUrl.default)(contentfulAssetUrl, dimension, xs, quality, disableRetina, supportsWebp),
|
|
13
|
+
smSrc: (0, _getOptimizedUrl.default)(contentfulAssetUrl, dimension, sm, quality, disableRetina, supportsWebp),
|
|
14
|
+
mdSrc: (0, _getOptimizedUrl.default)(contentfulAssetUrl, dimension, md, quality, disableRetina, supportsWebp),
|
|
15
|
+
lgSrc: (0, _getOptimizedUrl.default)(contentfulAssetUrl, dimension, lg, quality, disableRetina, supportsWebp),
|
|
16
|
+
xlSrc: (0, _getOptimizedUrl.default)(contentfulAssetUrl, dimension, xl, quality, disableRetina, supportsWebp),
|
|
17
|
+
fallbackSrc: (0, _getFallbackUrl.default)(contentfulAssetUrl, dimension, xl, quality)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "getFallbackUrl", {
|
|
|
9
9
|
return _getFallbackUrl.default;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "getImageUrls", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _getImageUrls.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
Object.defineProperty(exports, "getOptimizedUrl", {
|
|
13
19
|
enumerable: true,
|
|
14
20
|
get: function () {
|
|
@@ -24,4 +30,5 @@ Object.defineProperty(exports, "hasWebpSupport", {
|
|
|
24
30
|
var _getOptimizedUrl = _interopRequireDefault(require("./getOptimizedUrl"));
|
|
25
31
|
var _getFallbackUrl = _interopRequireDefault(require("./getFallbackUrl"));
|
|
26
32
|
var _hasWebpSupport = _interopRequireDefault(require("./hasWebpSupport"));
|
|
33
|
+
var _getImageUrls = _interopRequireDefault(require("./getImageUrls"));
|
|
27
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -41,21 +41,29 @@ const OrderedList = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
|
|
|
41
41
|
variant,
|
|
42
42
|
...rest
|
|
43
43
|
} = _ref2;
|
|
44
|
+
// Check if children is an array
|
|
45
|
+
const isChildrenArray = Array.isArray(children);
|
|
46
|
+
|
|
44
47
|
// Pass any variants "OrderedList" receives down to the individual list items.
|
|
45
|
-
const childrenWithParentVariants =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
props: {
|
|
51
|
-
...child.props,
|
|
48
|
+
const childrenWithParentVariants = (0, _react.useMemo)(() => {
|
|
49
|
+
const addVariantToProps = child => {
|
|
50
|
+
var _child$props;
|
|
51
|
+
const existingChildVariants = ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.variant) ?? {};
|
|
52
|
+
return /*#__PURE__*/_react.default.cloneElement(child, {
|
|
52
53
|
variant: {
|
|
53
54
|
...existingChildVariants,
|
|
54
55
|
...variant
|
|
55
56
|
}
|
|
56
|
-
}
|
|
57
|
+
});
|
|
57
58
|
};
|
|
58
|
-
|
|
59
|
+
if (variant) {
|
|
60
|
+
if (isChildrenArray) {
|
|
61
|
+
return children.map(addVariantToProps);
|
|
62
|
+
}
|
|
63
|
+
return [addVariantToProps(children)];
|
|
64
|
+
}
|
|
65
|
+
return children;
|
|
66
|
+
}, [children, variant, isChildrenArray]);
|
|
59
67
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledOrderedListBase, {
|
|
60
68
|
...selectProps(rest),
|
|
61
69
|
ref: ref,
|
|
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { selectSystemProps } from '@telus-uds/components-base';
|
|
4
4
|
import ResponsiveImage from '../ResponsiveImage';
|
|
5
|
-
import { hasWebpSupport,
|
|
5
|
+
import { hasWebpSupport, getImageUrls } from './utils';
|
|
6
6
|
import { htmlAttrs } from '../utils';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs]);
|
|
@@ -20,21 +20,15 @@ const OptimizeImage = _ref => {
|
|
|
20
20
|
disableRetina = false,
|
|
21
21
|
...rest
|
|
22
22
|
} = _ref;
|
|
23
|
-
const [imgUrls, setImgUrls] = useState();
|
|
24
|
-
|
|
25
23
|
// `useHeight` is a deprecated TDS prop, replaced by `sizeByHeight`
|
|
26
24
|
const dimension = sizeByHeight || rest.useHeight ? 'h' : 'w';
|
|
25
|
+
// by default assuming webP support for SSR
|
|
26
|
+
const [imgUrls, setImgUrls] = useState(getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, true));
|
|
27
27
|
useEffect(() => {
|
|
28
|
-
//
|
|
28
|
+
// Checking for webP support for CSR
|
|
29
29
|
hasWebpSupport().then(supportsWebp => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
smSrc: getOptimizedUrl(contentfulAssetUrl, dimension, sm, quality, disableRetina, supportsWebp),
|
|
33
|
-
mdSrc: getOptimizedUrl(contentfulAssetUrl, dimension, md, quality, disableRetina, supportsWebp),
|
|
34
|
-
lgSrc: getOptimizedUrl(contentfulAssetUrl, dimension, lg, quality, disableRetina, supportsWebp),
|
|
35
|
-
xlSrc: getOptimizedUrl(contentfulAssetUrl, dimension, xl, quality, disableRetina, supportsWebp),
|
|
36
|
-
fallbackSrc: getFallbackUrl(contentfulAssetUrl, dimension, xl, quality)
|
|
37
|
-
});
|
|
30
|
+
const imageUrls = getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, supportsWebp);
|
|
31
|
+
setImgUrls(imageUrls);
|
|
38
32
|
});
|
|
39
33
|
}, [contentfulAssetUrl, dimension, disableRetina, lg, md, quality, sm, xl, xs]);
|
|
40
34
|
if (!imgUrls) return null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import getOptimizedUrl from './getOptimizedUrl';
|
|
2
|
+
import getFallbackUrl from './getFallbackUrl';
|
|
3
|
+
export default function getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, supportsWebp) {
|
|
4
|
+
return {
|
|
5
|
+
xsSrc: getOptimizedUrl(contentfulAssetUrl, dimension, xs, quality, disableRetina, supportsWebp),
|
|
6
|
+
smSrc: getOptimizedUrl(contentfulAssetUrl, dimension, sm, quality, disableRetina, supportsWebp),
|
|
7
|
+
mdSrc: getOptimizedUrl(contentfulAssetUrl, dimension, md, quality, disableRetina, supportsWebp),
|
|
8
|
+
lgSrc: getOptimizedUrl(contentfulAssetUrl, dimension, lg, quality, disableRetina, supportsWebp),
|
|
9
|
+
xlSrc: getOptimizedUrl(contentfulAssetUrl, dimension, xl, quality, disableRetina, supportsWebp),
|
|
10
|
+
fallbackSrc: getFallbackUrl(contentfulAssetUrl, dimension, xl, quality)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import getOptimizedUrl from './getOptimizedUrl';
|
|
2
2
|
import getFallbackUrl from './getFallbackUrl';
|
|
3
3
|
import hasWebpSupport from './hasWebpSupport';
|
|
4
|
-
|
|
4
|
+
import getImageUrls from './getImageUrls';
|
|
5
|
+
export { getOptimizedUrl, getFallbackUrl, hasWebpSupport, getImageUrls };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react';
|
|
1
|
+
import React, { forwardRef, useMemo } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import styled from 'styled-components';
|
|
4
4
|
import { selectSystemProps, getTokensPropType, variantProp } from '@telus-uds/components-base';
|
|
@@ -32,21 +32,29 @@ const OrderedList = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
|
32
32
|
variant,
|
|
33
33
|
...rest
|
|
34
34
|
} = _ref2;
|
|
35
|
+
// Check if children is an array
|
|
36
|
+
const isChildrenArray = Array.isArray(children);
|
|
37
|
+
|
|
35
38
|
// Pass any variants "OrderedList" receives down to the individual list items.
|
|
36
|
-
const childrenWithParentVariants =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
props: {
|
|
42
|
-
...child.props,
|
|
39
|
+
const childrenWithParentVariants = useMemo(() => {
|
|
40
|
+
const addVariantToProps = child => {
|
|
41
|
+
var _child$props;
|
|
42
|
+
const existingChildVariants = ((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.variant) ?? {};
|
|
43
|
+
return /*#__PURE__*/React.cloneElement(child, {
|
|
43
44
|
variant: {
|
|
44
45
|
...existingChildVariants,
|
|
45
46
|
...variant
|
|
46
47
|
}
|
|
47
|
-
}
|
|
48
|
+
});
|
|
48
49
|
};
|
|
49
|
-
|
|
50
|
+
if (variant) {
|
|
51
|
+
if (isChildrenArray) {
|
|
52
|
+
return children.map(addVariantToProps);
|
|
53
|
+
}
|
|
54
|
+
return [addVariantToProps(children)];
|
|
55
|
+
}
|
|
56
|
+
return children;
|
|
57
|
+
}, [children, variant, isChildrenArray]);
|
|
50
58
|
return /*#__PURE__*/_jsx(StyledOrderedListBase, {
|
|
51
59
|
...selectProps(rest),
|
|
52
60
|
ref: ref,
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
],
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@gorhom/portal": "^1.0.14",
|
|
8
|
-
"@telus-uds/components-base": "1.
|
|
8
|
+
"@telus-uds/components-base": "1.76.0",
|
|
9
9
|
"@telus-uds/system-constants": "^1.3.0",
|
|
10
10
|
"fscreen": "^1.2.0",
|
|
11
11
|
"lodash.omit": "^4.5.0",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"skip": true
|
|
84
84
|
},
|
|
85
85
|
"types": "types/index.d.ts",
|
|
86
|
-
"version": "2.
|
|
86
|
+
"version": "2.31.0"
|
|
87
87
|
}
|
|
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'
|
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { selectSystemProps } from '@telus-uds/components-base'
|
|
4
4
|
import ResponsiveImage from '../ResponsiveImage'
|
|
5
|
-
import { hasWebpSupport,
|
|
5
|
+
import { hasWebpSupport, getImageUrls } from './utils'
|
|
6
6
|
import { htmlAttrs } from '../utils'
|
|
7
7
|
|
|
8
8
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([htmlAttrs])
|
|
@@ -20,57 +20,29 @@ const OptimizeImage = ({
|
|
|
20
20
|
disableRetina = false,
|
|
21
21
|
...rest
|
|
22
22
|
}) => {
|
|
23
|
-
const [imgUrls, setImgUrls] = useState()
|
|
24
|
-
|
|
25
23
|
// `useHeight` is a deprecated TDS prop, replaced by `sizeByHeight`
|
|
26
24
|
const dimension = sizeByHeight || rest.useHeight ? 'h' : 'w'
|
|
25
|
+
// by default assuming webP support for SSR
|
|
26
|
+
const [imgUrls, setImgUrls] = useState(
|
|
27
|
+
getImageUrls(contentfulAssetUrl, dimension, xs, sm, md, lg, xl, quality, disableRetina, true)
|
|
28
|
+
)
|
|
27
29
|
|
|
28
30
|
useEffect(() => {
|
|
29
|
-
//
|
|
31
|
+
// Checking for webP support for CSR
|
|
30
32
|
hasWebpSupport().then((supportsWebp) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
quality,
|
|
45
|
-
disableRetina,
|
|
46
|
-
supportsWebp
|
|
47
|
-
),
|
|
48
|
-
mdSrc: getOptimizedUrl(
|
|
49
|
-
contentfulAssetUrl,
|
|
50
|
-
dimension,
|
|
51
|
-
md,
|
|
52
|
-
quality,
|
|
53
|
-
disableRetina,
|
|
54
|
-
supportsWebp
|
|
55
|
-
),
|
|
56
|
-
lgSrc: getOptimizedUrl(
|
|
57
|
-
contentfulAssetUrl,
|
|
58
|
-
dimension,
|
|
59
|
-
lg,
|
|
60
|
-
quality,
|
|
61
|
-
disableRetina,
|
|
62
|
-
supportsWebp
|
|
63
|
-
),
|
|
64
|
-
xlSrc: getOptimizedUrl(
|
|
65
|
-
contentfulAssetUrl,
|
|
66
|
-
dimension,
|
|
67
|
-
xl,
|
|
68
|
-
quality,
|
|
69
|
-
disableRetina,
|
|
70
|
-
supportsWebp
|
|
71
|
-
),
|
|
72
|
-
fallbackSrc: getFallbackUrl(contentfulAssetUrl, dimension, xl, quality)
|
|
73
|
-
})
|
|
33
|
+
const imageUrls = getImageUrls(
|
|
34
|
+
contentfulAssetUrl,
|
|
35
|
+
dimension,
|
|
36
|
+
xs,
|
|
37
|
+
sm,
|
|
38
|
+
md,
|
|
39
|
+
lg,
|
|
40
|
+
xl,
|
|
41
|
+
quality,
|
|
42
|
+
disableRetina,
|
|
43
|
+
supportsWebp
|
|
44
|
+
)
|
|
45
|
+
setImgUrls(imageUrls)
|
|
74
46
|
})
|
|
75
47
|
}, [contentfulAssetUrl, dimension, disableRetina, lg, md, quality, sm, xl, xs])
|
|
76
48
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import getOptimizedUrl from './getOptimizedUrl'
|
|
2
|
+
import getFallbackUrl from './getFallbackUrl'
|
|
3
|
+
|
|
4
|
+
export default function getImageUrls(
|
|
5
|
+
contentfulAssetUrl,
|
|
6
|
+
dimension,
|
|
7
|
+
xs,
|
|
8
|
+
sm,
|
|
9
|
+
md,
|
|
10
|
+
lg,
|
|
11
|
+
xl,
|
|
12
|
+
quality,
|
|
13
|
+
disableRetina,
|
|
14
|
+
supportsWebp
|
|
15
|
+
) {
|
|
16
|
+
return {
|
|
17
|
+
xsSrc: getOptimizedUrl(contentfulAssetUrl, dimension, xs, quality, disableRetina, supportsWebp),
|
|
18
|
+
smSrc: getOptimizedUrl(contentfulAssetUrl, dimension, sm, quality, disableRetina, supportsWebp),
|
|
19
|
+
mdSrc: getOptimizedUrl(contentfulAssetUrl, dimension, md, quality, disableRetina, supportsWebp),
|
|
20
|
+
lgSrc: getOptimizedUrl(contentfulAssetUrl, dimension, lg, quality, disableRetina, supportsWebp),
|
|
21
|
+
xlSrc: getOptimizedUrl(contentfulAssetUrl, dimension, xl, quality, disableRetina, supportsWebp),
|
|
22
|
+
fallbackSrc: getFallbackUrl(contentfulAssetUrl, dimension, xl, quality)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import getOptimizedUrl from './getOptimizedUrl'
|
|
2
2
|
import getFallbackUrl from './getFallbackUrl'
|
|
3
3
|
import hasWebpSupport from './hasWebpSupport'
|
|
4
|
+
import getImageUrls from './getImageUrls'
|
|
4
5
|
|
|
5
|
-
export { getOptimizedUrl, getFallbackUrl, hasWebpSupport }
|
|
6
|
+
export { getOptimizedUrl, getFallbackUrl, hasWebpSupport, getImageUrls }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react'
|
|
1
|
+
import React, { forwardRef, useMemo } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import styled from 'styled-components'
|
|
4
4
|
import { selectSystemProps, getTokensPropType, variantProp } from '@telus-uds/components-base'
|
|
@@ -19,22 +19,31 @@ const StyledOrderedListBase = styled(OrderedListBase)(({ start }) => ({
|
|
|
19
19
|
* Themed semantic ordered list.
|
|
20
20
|
*/
|
|
21
21
|
const OrderedList = forwardRef(({ children, start, variant, ...rest }, ref) => {
|
|
22
|
+
// Check if children is an array
|
|
23
|
+
const isChildrenArray = Array.isArray(children)
|
|
24
|
+
|
|
22
25
|
// Pass any variants "OrderedList" receives down to the individual list items.
|
|
23
|
-
const childrenWithParentVariants =
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
variant: {
|
|
31
|
-
...existingChildVariants,
|
|
32
|
-
...variant
|
|
33
|
-
}
|
|
34
|
-
}
|
|
26
|
+
const childrenWithParentVariants = useMemo(() => {
|
|
27
|
+
const addVariantToProps = (child) => {
|
|
28
|
+
const existingChildVariants = child.props?.variant ?? {}
|
|
29
|
+
return React.cloneElement(child, {
|
|
30
|
+
variant: {
|
|
31
|
+
...existingChildVariants,
|
|
32
|
+
...variant
|
|
35
33
|
}
|
|
36
34
|
})
|
|
37
|
-
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (variant) {
|
|
38
|
+
if (isChildrenArray) {
|
|
39
|
+
return children.map(addVariantToProps)
|
|
40
|
+
}
|
|
41
|
+
return [addVariantToProps(children)]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return children
|
|
45
|
+
}, [children, variant, isChildrenArray])
|
|
46
|
+
|
|
38
47
|
return (
|
|
39
48
|
<StyledOrderedListBase {...selectProps(rest)} ref={ref} start={start}>
|
|
40
49
|
{childrenWithParentVariants}
|