@telus-uds/components-base 1.72.0 → 1.73.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 (53) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/lib/Box/Box.js +17 -6
  3. package/lib/FlexGrid/Col/Col.js +42 -19
  4. package/lib/FlexGrid/FlexGrid.js +40 -17
  5. package/lib/FlexGrid/Row/Row.js +45 -22
  6. package/lib/Listbox/ListboxGroup.js +7 -1
  7. package/lib/MultiSelectFilter/MultiSelectFilter.js +1 -0
  8. package/lib/Notification/Notification.js +13 -5
  9. package/lib/OrderedList/ItemBase.js +7 -1
  10. package/lib/Responsive/Responsive.js +24 -14
  11. package/lib/Responsive/ResponsiveProp.js +46 -0
  12. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +72 -0
  13. package/lib/ThemeProvider/ThemeProvider.js +5 -2
  14. package/lib/ThemeProvider/index.js +9 -1
  15. package/lib/ThemeProvider/useResponsiveThemeTokens.js +89 -0
  16. package/lib/Typography/Typography.js +48 -22
  17. package/lib/server.js +40 -0
  18. package/lib/utils/ssr-media-query/utils/create-media-query-styles.js +39 -6
  19. package/lib-module/Box/Box.js +17 -6
  20. package/lib-module/FlexGrid/Col/Col.js +42 -19
  21. package/lib-module/FlexGrid/FlexGrid.js +40 -17
  22. package/lib-module/FlexGrid/Row/Row.js +45 -22
  23. package/lib-module/Listbox/ListboxGroup.js +7 -1
  24. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +1 -0
  25. package/lib-module/Notification/Notification.js +13 -5
  26. package/lib-module/OrderedList/ItemBase.js +7 -1
  27. package/lib-module/Responsive/Responsive.js +24 -15
  28. package/lib-module/Responsive/ResponsiveProp.js +39 -0
  29. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +64 -0
  30. package/lib-module/ThemeProvider/ThemeProvider.js +5 -2
  31. package/lib-module/ThemeProvider/index.js +1 -0
  32. package/lib-module/ThemeProvider/useResponsiveThemeTokens.js +81 -0
  33. package/lib-module/Typography/Typography.js +50 -24
  34. package/lib-module/server.js +4 -0
  35. package/lib-module/utils/ssr-media-query/utils/create-media-query-styles.js +36 -6
  36. package/package.json +13 -2
  37. package/src/Box/Box.jsx +35 -17
  38. package/src/FlexGrid/Col/Col.jsx +42 -13
  39. package/src/FlexGrid/FlexGrid.jsx +40 -11
  40. package/src/FlexGrid/Row/Row.jsx +40 -16
  41. package/src/Listbox/ListboxGroup.jsx +9 -2
  42. package/src/MultiSelectFilter/MultiSelectFilter.jsx +2 -0
  43. package/src/Notification/Notification.jsx +15 -3
  44. package/src/OrderedList/ItemBase.jsx +14 -2
  45. package/src/Responsive/Responsive.jsx +24 -11
  46. package/src/Responsive/ResponsiveProp.jsx +33 -0
  47. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +58 -0
  48. package/src/ThemeProvider/ThemeProvider.jsx +5 -2
  49. package/src/ThemeProvider/index.js +1 -0
  50. package/src/ThemeProvider/useResponsiveThemeTokens.js +85 -0
  51. package/src/Typography/Typography.jsx +72 -24
  52. package/src/server.js +4 -0
  53. package/src/utils/ssr-media-query/utils/create-media-query-styles.js +21 -6
package/CHANGELOG.md CHANGED
@@ -1,12 +1,30 @@
1
1
  # Change Log - @telus-uds/components-base
2
2
 
3
- This log was last generated on Wed, 13 Dec 2023 21:13:56 GMT and should not be manually modified.
3
+ This log was last generated on Mon, 08 Jan 2024 20:08:06 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 1.73.0
8
+
9
+ Mon, 08 Jan 2024 20:08:06 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - RNMQ integration to Responsive component (srikanthkhari@gmail.com)
14
+ - Changes in the Notification component (35577399+JoshHC@users.noreply.github.com)
15
+ - Support server component (wlsdud194@hotmail.com)
16
+ - Changes to the box component for allow gradient in mobile (35577399+JoshHC@users.noreply.github.com)
17
+ - update story for badge to include subtle variant (evander.owusu@telus.com)
18
+ - Bump @telus-uds/system-theme-tokens to v2.49.0
19
+
20
+ ### Patches
21
+
22
+ - fix multiselectfilter controlled rendered values (guillermo.peitzner@telus.com)
23
+ - remove listitem accessibility role from android devices (guillermo.peitzner@telus.com)
24
+
7
25
  ## 1.72.0
8
26
 
9
- Wed, 13 Dec 2023 21:13:56 GMT
27
+ Wed, 13 Dec 2023 21:24:24 GMT
10
28
 
11
29
  ### Minor changes
12
30
 
package/lib/Box/Box.js CHANGED
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
10
  var _ScrollView = _interopRequireDefault(require("react-native-web/dist/cjs/exports/ScrollView"));
11
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
12
  var _ThemeProvider = require("../ThemeProvider");
12
13
  var _utils = require("../utils");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
@@ -23,7 +24,7 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
23
24
  * @typedef {import('../utils/props/spacingProps.js').SpacingOptions} SpacingOptions
24
25
  */
25
26
 
26
- const selectBoxStyles = _ref => {
27
+ const selectBoxStyles = (_ref, customGradient) => {
27
28
  let {
28
29
  backgroundColor,
29
30
  gradient,
@@ -49,7 +50,11 @@ const selectBoxStyles = _ref => {
49
50
  angle,
50
51
  stops: [stopOne, stopTwo]
51
52
  } = gradient;
52
- styles.backgroundImage = `linear-gradient(${angle}deg, ${stopOne.color}, 75% , ${stopTwo.color})`;
53
+ if (_Platform.default.OS === 'web') {
54
+ styles.backgroundImage = `linear-gradient(${angle}deg, ${stopOne.color}, 75%, ${stopTwo.color})`;
55
+ } else if (customGradient && _Platform.default.OS !== 'web') {
56
+ styles.colors = [stopOne.color, stopTwo.color];
57
+ }
53
58
  }
54
59
  const paddings = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'];
55
60
  // Only set on styles if token provided because we spread this object after the spacing scale values
@@ -144,6 +149,7 @@ const Box = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
144
149
  accessibilityRole,
145
150
  testID,
146
151
  dataSet,
152
+ customGradient,
147
153
  ...rest
148
154
  } = _ref2;
149
155
  const props = {
@@ -158,8 +164,9 @@ const Box = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
158
164
  paddingRight: (0, _utils.useSpacingScale)(right),
159
165
  paddingTop: (0, _utils.useSpacingScale)(top),
160
166
  paddingBottom: (0, _utils.useSpacingScale)(bottom),
161
- ...selectBoxStyles(themeTokens)
167
+ ...selectBoxStyles(themeTokens, customGradient)
162
168
  };
169
+ const childrenToRender = typeof customGradient === 'function' ? customGradient(styles.colors, styles)(children) : children;
163
170
  if (scroll) {
164
171
  const scrollProps = typeof scroll === 'object' ? scroll : {};
165
172
  scrollProps.contentContainerStyle = [styles, scrollProps.contentContainerStyle];
@@ -169,7 +176,7 @@ const Box = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
169
176
  testID: testID,
170
177
  dataSet: dataSet,
171
178
  ref: ref,
172
- children: children
179
+ children: childrenToRender
173
180
  });
174
181
  }
175
182
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
@@ -178,7 +185,7 @@ const Box = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
178
185
  testID: testID,
179
186
  dataSet: dataSet,
180
187
  ref: ref,
181
- children: children
188
+ children: childrenToRender
182
189
  });
183
190
  });
184
191
  Box.displayName = 'Box';
@@ -262,7 +269,11 @@ Box.propTypes = {
262
269
  /**
263
270
  * Box accepts any content as children.
264
271
  */
265
- children: _propTypes.default.node.isRequired
272
+ children: _propTypes.default.node.isRequired,
273
+ /**
274
+ Use this prop if need to add a custom gradient for mobile
275
+ */
276
+ customGradient: _propTypes.default.func
266
277
  };
267
278
  var _default = Box;
268
279
  exports.default = _default;
@@ -10,6 +10,8 @@ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/export
10
10
  var _GutterContext = _interopRequireDefault(require("../providers/GutterContext"));
11
11
  var _helpers = _interopRequireDefault(require("../helpers"));
12
12
  var _utils = require("../../utils");
13
+ var _ViewportProvider = require("../../ViewportProvider");
14
+ var _ThemeProvider = require("../../ThemeProvider");
13
15
  var _jsxRuntime = require("react/jsx-runtime");
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -32,6 +34,12 @@ const Col = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
32
34
  ...viewProps
33
35
  } = _ref;
34
36
  const gutter = (0, _react.useContext)(_GutterContext.default);
37
+ const viewport = (0, _ViewportProvider.useViewport)();
38
+ const {
39
+ themeOptions: {
40
+ enableMediaQueryStyleSheet
41
+ }
42
+ } = (0, _ThemeProvider.useTheme)();
35
43
  const hiddenLevels = (0, _helpers.default)([xs, sm, md, lg, xl]);
36
44
  const getHorizontalAlignLevel = () => {
37
45
  if (typeof horizontalAlign === 'object') {
@@ -95,7 +103,15 @@ const Col = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
95
103
  lg: offsetsWithIheritance[3],
96
104
  xl: offsetsWithIheritance[4]
97
105
  };
98
- const mediaQueryStyles = (0, _utils.createMediaQueryStyles)({
106
+ const staticStyles = {
107
+ flexGrow: 1,
108
+ flexShrink: 0,
109
+ flexBasis: 'auto',
110
+ maxWidth: '100%',
111
+ paddingLeft: gutter ? 16 : 0,
112
+ paddingRight: gutter ? 16 : 0
113
+ };
114
+ const stylesByViewport = {
99
115
  xs: {
100
116
  display: hiddenLevels[0] === 0 ? 'none' : shown,
101
117
  textAlign: horizontalAlignLevel[0],
@@ -126,27 +142,34 @@ const Col = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
126
142
  ...calculateWidth(sizes.xl),
127
143
  ...calculateOffset(offsets.xl)
128
144
  }
129
- });
130
- const {
131
- ids,
132
- styles
133
- } = _utils.StyleSheet.create({
134
- col: {
135
- flexGrow: 1,
136
- flexShrink: 0,
137
- flexBasis: 'auto',
138
- maxWidth: '100%',
139
- paddingLeft: gutter ? 16 : 0,
140
- paddingRight: gutter ? 16 : 0,
141
- ...mediaQueryStyles
142
- }
143
- });
145
+ };
146
+ let colStyles;
147
+ let mediaIds;
148
+ if (enableMediaQueryStyleSheet) {
149
+ const mediaQueryStyles = (0, _utils.createMediaQueryStyles)(stylesByViewport);
150
+ const {
151
+ ids,
152
+ styles
153
+ } = _utils.StyleSheet.create({
154
+ col: {
155
+ ...staticStyles,
156
+ ...mediaQueryStyles
157
+ }
158
+ });
159
+ colStyles = styles.col;
160
+ mediaIds = ids.col;
161
+ } else {
162
+ colStyles = {
163
+ ...staticStyles,
164
+ ...stylesByViewport[viewport]
165
+ };
166
+ }
144
167
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
145
168
  ref: ref,
146
169
  ...viewProps,
147
- style: [styles.col],
148
- dataSet: {
149
- media: ids.col
170
+ style: colStyles,
171
+ dataSet: mediaIds && {
172
+ media: mediaIds
150
173
  },
151
174
  children: children
152
175
  });
@@ -12,6 +12,8 @@ var _Row = _interopRequireDefault(require("./Row"));
12
12
  var _Col = _interopRequireDefault(require("./Col"));
13
13
  var _GutterContext = _interopRequireDefault(require("./providers/GutterContext"));
14
14
  var _helpers = _interopRequireDefault(require("./helpers"));
15
+ var _ThemeProvider = require("../ThemeProvider");
16
+ var _ViewportProvider = require("../ViewportProvider");
15
17
  var _jsxRuntime = require("react/jsx-runtime");
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -38,7 +40,15 @@ const FlexGrid = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
38
40
  ...rest
39
41
  } = _ref;
40
42
  const reverseLevel = (0, _helpers.default)([xsReverse, smReverse, mdReverse, lgReverse, xlReverse]);
41
- const mediaQueryStyles = (0, _utils.createMediaQueryStyles)({
43
+ const viewport = (0, _ViewportProvider.useViewport)();
44
+ const {
45
+ themeOptions: {
46
+ enableMediaQueryStyleSheet
47
+ }
48
+ } = (0, _ThemeProvider.useTheme)();
49
+ let flexgridStyles;
50
+ let mediaIds;
51
+ const stylesByViewport = {
42
52
  xs: {
43
53
  flexDirection: reverseLevel[0] ? 'column-reverse' : 'column'
44
54
  },
@@ -58,19 +68,32 @@ const FlexGrid = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
58
68
  maxWidth: limitWidth && _systemConstants.viewports.map.get('xl'),
59
69
  flexDirection: reverseLevel[4] ? 'column-reverse' : 'column'
60
70
  }
61
- });
62
- const {
63
- ids,
64
- styles
65
- } = _utils.StyleSheet.create({
66
- flexgrid: {
67
- flexWrap: 'wrap',
68
- width: outsideGutter ? '100%' : 'auto',
69
- marginVertical: 0,
70
- marginHorizontal: outsideGutter ? 'auto' : -16,
71
- ...mediaQueryStyles
72
- }
73
- });
71
+ };
72
+ const staticStyles = {
73
+ flexWrap: 'wrap',
74
+ width: outsideGutter ? '100%' : 'auto',
75
+ marginVertical: 0,
76
+ marginHorizontal: outsideGutter ? 'auto' : -16
77
+ };
78
+ if (enableMediaQueryStyleSheet) {
79
+ const mediaQueryStyles = (0, _utils.createMediaQueryStyles)(stylesByViewport);
80
+ const {
81
+ ids,
82
+ styles
83
+ } = _utils.StyleSheet.create({
84
+ flexgrid: {
85
+ ...staticStyles,
86
+ ...mediaQueryStyles
87
+ }
88
+ });
89
+ flexgridStyles = styles.flexgrid;
90
+ mediaIds = ids.flexgrid;
91
+ } else {
92
+ flexgridStyles = {
93
+ ...staticStyles,
94
+ ...stylesByViewport[viewport]
95
+ };
96
+ }
74
97
  const props = {
75
98
  accessibilityRole,
76
99
  ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
@@ -81,9 +104,9 @@ const FlexGrid = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
81
104
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
82
105
  ref: ref,
83
106
  ...props,
84
- style: [styles.flexgrid],
85
- dataSet: {
86
- media: ids.flexgrid
107
+ style: flexgridStyles,
108
+ dataSet: mediaIds && {
109
+ media: mediaIds
87
110
  },
88
111
  children: children
89
112
  })
@@ -8,6 +8,8 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _helpers = _interopRequireDefault(require("../helpers"));
10
10
  var _utils = require("../../utils");
11
+ var _ThemeProvider = require("../../ThemeProvider");
12
+ var _ViewportProvider = require("../../ViewportProvider");
11
13
  var _jsxRuntime = require("react/jsx-runtime");
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -78,8 +80,25 @@ const Row = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
78
80
  children,
79
81
  ...rest
80
82
  } = _ref;
83
+ const {
84
+ themeOptions: {
85
+ enableMediaQueryStyleSheet
86
+ }
87
+ } = (0, _ThemeProvider.useTheme)();
88
+ const viewport = (0, _ViewportProvider.useViewport)();
89
+ const staticStyles = {
90
+ width: '100%',
91
+ marginVertical: 0,
92
+ marginHorizontal: 'auto',
93
+ flexGrow: 0,
94
+ flexShrink: 1,
95
+ flexBasis: 'auto',
96
+ ...horizontalAlignStyles(horizontalAlign),
97
+ ...verticalAlignStyles(verticalAlign),
98
+ ...distributeStyles(distribute)
99
+ };
81
100
  const reverseLevel = (0, _helpers.default)([xsReverse, smReverse, mdReverse, lgReverse, xlReverse]);
82
- const mediaQueryStyles = (0, _utils.createMediaQueryStyles)({
101
+ const stylesByViewport = {
83
102
  xs: {
84
103
  flexDirection: reverseLevel[0] ? 'row-reverse' : 'row',
85
104
  flexWrap: reverseLevel[0] ? 'wrap-reverse' : 'wrap'
@@ -100,30 +119,34 @@ const Row = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
100
119
  flexDirection: reverseLevel[4] ? 'row-reverse' : 'row',
101
120
  flexWrap: reverseLevel[4] ? 'wrap-reverse' : 'wrap'
102
121
  }
103
- });
104
- const {
105
- ids,
106
- styles
107
- } = _utils.StyleSheet.create({
108
- row: {
109
- width: '100%',
110
- marginVertical: 0,
111
- marginHorizontal: 'auto',
112
- flexGrow: 0,
113
- flexShrink: 1,
114
- flexBasis: 'auto',
115
- ...horizontalAlignStyles(horizontalAlign),
116
- ...verticalAlignStyles(verticalAlign),
117
- ...distributeStyles(distribute),
118
- ...mediaQueryStyles
119
- }
120
- });
122
+ };
123
+ let rowStyles;
124
+ let mediaIds;
125
+ if (enableMediaQueryStyleSheet) {
126
+ const mediaQueryStyles = (0, _utils.createMediaQueryStyles)(stylesByViewport);
127
+ const {
128
+ ids,
129
+ styles
130
+ } = _utils.StyleSheet.create({
131
+ row: {
132
+ ...staticStyles,
133
+ ...mediaQueryStyles
134
+ }
135
+ });
136
+ rowStyles = styles.row;
137
+ mediaIds = ids.row;
138
+ } else {
139
+ rowStyles = {
140
+ ...staticStyles,
141
+ ...stylesByViewport[viewport]
142
+ };
143
+ }
121
144
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
122
145
  ref: ref,
123
146
  ...rest,
124
- style: [styles.row],
125
- dataSet: {
126
- media: ids.row
147
+ style: rowStyles,
148
+ dataSet: mediaIds && {
149
+ media: mediaIds
127
150
  },
128
151
  children: children
129
152
  });
@@ -8,6 +8,7 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
10
  var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
11
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
12
  var _utils = require("../utils");
12
13
  var _ExpandCollapse = _interopRequireDefault(require("../ExpandCollapse"));
13
14
  var _ListboxItem = _interopRequireDefault(require("./ListboxItem"));
@@ -30,6 +31,11 @@ const styles = _StyleSheet.default.create({
30
31
  padding: 0
31
32
  }
32
33
  });
34
+ const getAccessibilityRole = () => _Platform.default.select({
35
+ ios: 'listitem',
36
+ android: 'none',
37
+ web: 'listitem'
38
+ });
33
39
  const ListboxGroup = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
34
40
  let {
35
41
  id,
@@ -50,7 +56,7 @@ const ListboxGroup = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
50
56
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
51
57
  id: "test",
52
58
  style: styles.groupWrapper,
53
- accessibilityRole: "listitem",
59
+ accessibilityRole: getAccessibilityRole(),
54
60
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExpandCollapse.default.Panel, {
55
61
  panelId: id ?? label,
56
62
  controlTokens: {
@@ -105,6 +105,7 @@ const MultiSelectFilter = _ref3 => {
105
105
  if (colSize === 1) return setMaxWidth(false);
106
106
  return colSize === 2 && setMaxWidth(true);
107
107
  }, [colSize]);
108
+ (0, _react.useEffect)(() => setCheckedIds(currentValues ?? []), [currentValues]);
108
109
  const {
109
110
  headerFontColor,
110
111
  headerFontSize,
@@ -22,10 +22,18 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
22
22
  const selectContainerStyles = tokens => ({
23
23
  ...tokens
24
24
  });
25
- const selectTextStyles = (tokens, themeOptions) => (0, _ThemeProvider.applyTextStyles)({
26
- ...(0, _utils.selectTokens)('Typography', tokens),
27
- themeOptions
28
- });
25
+ const selectTextStyles = (tokens, themeOptions, isDismissible) => {
26
+ const textTokens = (0, _utils.selectTokens)('Typography', tokens);
27
+ const styles = {
28
+ ...textTokens,
29
+ themeOptions,
30
+ overflow: 'hidden'
31
+ };
32
+ if (!isDismissible) {
33
+ styles.flexShrink = 1;
34
+ }
35
+ return (0, _ThemeProvider.applyTextStyles)(styles);
36
+ };
29
37
  const selectIconProps = _ref => {
30
38
  let {
31
39
  iconSize,
@@ -146,7 +154,7 @@ const Notification = /*#__PURE__*/(0, _react.forwardRef)((_ref5, ref) => {
146
154
  if (isDismissed) {
147
155
  return null;
148
156
  }
149
- const textStyles = selectTextStyles(themeTokens, themeOptions);
157
+ const textStyles = selectTextStyles(themeTokens, themeOptions, dismissible);
150
158
  const content = (0, _utils.wrapStringsInText)(typeof children === 'function' ? children({
151
159
  textStyles,
152
160
  variant
@@ -8,12 +8,18 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
10
10
  var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
11
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
15
  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; }
15
16
  /* eslint-disable react-native-a11y/has-valid-accessibility-role */
16
17
 
18
+ const getAccessibilityRole = () => _Platform.default.select({
19
+ ios: 'listitem',
20
+ android: 'none',
21
+ web: 'listitem'
22
+ });
17
23
  const Item = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
18
24
  let {
19
25
  children,
@@ -21,7 +27,7 @@ const Item = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
21
27
  ...rest
22
28
  } = _ref;
23
29
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
24
- accessibilityRole: "listitem",
30
+ accessibilityRole: getAccessibilityRole(),
25
31
  ref: ref,
26
32
  style: [staticStyles.container, style],
27
33
  ...rest,
@@ -6,37 +6,47 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _systemConstants = require("@telus-uds/system-constants");
10
- var _utils = require("../utils");
9
+ var _ThemeProvider = require("../ThemeProvider");
10
+ var _ResponsiveProp = _interopRequireDefault(require("./ResponsiveProp"));
11
+ var _ResponsiveWithMediaQueryStyleSheet = _interopRequireDefault(require("./ResponsiveWithMediaQueryStyleSheet"));
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  /**
14
15
  * Responsive conditionally renders children based on whether the viewport matches the provided
15
16
  * min and max viewports.
16
17
  *
17
- * In SSR, like other viewport utilities, it treats the viewport as `xs` both in SSR itself and
18
+ * If enableMediaQueryStyleSheet themeOption is set to false in ThemeProvider, then in SSR,
19
+ * like other viewport utilities, it treats the viewport as `xs` both in SSR itself and
18
20
  * during first hydration on the client side; then if the viewport is not `xs`, it re-renders
19
21
  * after hydration. This may cause a layout shift on devices other than the narrowest.
22
+ *
23
+ * If enableMediaQueryStyleSheet themeOption is set to true in ThemeProvider, then media query stylesheet
24
+ * is used to hide and show children of `Responsive` within a View.
20
25
  */const Responsive = _ref => {
21
26
  let {
22
27
  min = 'xs',
23
28
  max,
24
29
  children
25
30
  } = _ref;
26
- // Start returning children at the 'min' viewport or greater
27
- const byViewports = {
28
- [min]: children
29
- };
30
- if (max && max !== 'xl') {
31
- // Stop returning children at the viewport one above 'max' or greater
32
- const maxIndex = _systemConstants.viewports.keys.indexOf(max);
33
- const maxPlusOne = maxIndex >= 0 ? _systemConstants.viewports.keys[maxIndex + 1] : null;
34
- if (maxPlusOne) byViewports[maxPlusOne] = null;
31
+ const {
32
+ themeOptions: {
33
+ enableMediaQueryStyleSheet
34
+ }
35
+ } = (0, _ThemeProvider.useTheme)();
36
+ if (enableMediaQueryStyleSheet) {
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ResponsiveWithMediaQueryStyleSheet.default, {
38
+ min: min,
39
+ max: max,
40
+ children: children
41
+ });
35
42
  }
36
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
37
- children: (0, _utils.useResponsiveProp)(byViewports, null)
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ResponsiveProp.default, {
44
+ min: min,
45
+ max: max,
46
+ children: children
38
47
  });
39
48
  };
49
+ Responsive.displayName = 'Responsive';
40
50
  Responsive.propTypes = {
41
51
  /**
42
52
  * To hide children of `Responsive` if the current viewport is smaller than `min`
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _systemConstants = require("@telus-uds/system-constants");
10
+ var _utils = require("../utils");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const ResponsiveProp = _ref => {
14
+ let {
15
+ min = 'xs',
16
+ max,
17
+ children
18
+ } = _ref;
19
+ const byViewports = {
20
+ [min]: children
21
+ };
22
+ if (max && max !== 'xl') {
23
+ // Stop returning children at the viewport one above 'max' or greater
24
+ const maxIndex = _systemConstants.viewports.keys.indexOf(max);
25
+ const maxPlusOne = maxIndex >= 0 ? _systemConstants.viewports.keys[maxIndex + 1] : null;
26
+ if (maxPlusOne) byViewports[maxPlusOne] = null;
27
+ }
28
+ const responsiveProp = (0, _utils.useResponsiveProp)(byViewports, null);
29
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
30
+ children: responsiveProp
31
+ });
32
+ };
33
+ ResponsiveProp.displayName = 'Responsive';
34
+ ResponsiveProp.propTypes = {
35
+ /**
36
+ * To hide children of `Responsive` if the current viewport is smaller than `min`
37
+ */
38
+ min: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
39
+ /**
40
+ * To hide children of `Responsive` if the current viewport is larger than `max`
41
+ */
42
+ max: _propTypes.default.oneOf(['sm', 'md', 'lg', 'xl']),
43
+ children: _propTypes.default.node.isRequired
44
+ };
45
+ var _default = ResponsiveProp;
46
+ exports.default = _default;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _systemConstants = require("@telus-uds/system-constants");
10
+ var _utils = require("../utils");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function generateResponsiveStyles(min, max) {
14
+ const viewportsArray = _systemConstants.viewports.keys;
15
+ const minIndex = viewportsArray.indexOf(min);
16
+ const maxIndex = viewportsArray.indexOf(max);
17
+ let hiddenViewports = [];
18
+ if (minIndex !== -1) {
19
+ hiddenViewports = viewportsArray.slice(0, minIndex);
20
+ }
21
+ if (maxIndex !== -1) {
22
+ hiddenViewports = hiddenViewports.concat(viewportsArray.slice(maxIndex + 1));
23
+ }
24
+ const styles = {};
25
+ viewportsArray.forEach(viewport => {
26
+ if (hiddenViewports.includes(viewport)) {
27
+ styles[viewport] = {
28
+ display: 'none'
29
+ };
30
+ }
31
+ });
32
+ return (0, _utils.createMediaQueryStyles)(styles, false);
33
+ }
34
+ const ResponsiveWithMediaQueryStyleSheet = _ref => {
35
+ let {
36
+ min,
37
+ max,
38
+ children
39
+ } = _ref;
40
+ const {
41
+ ids,
42
+ styles
43
+ } = _utils.StyleSheet.create({
44
+ responsive: {
45
+ flexDirection: 'inherit',
46
+ alignItems: 'inherit',
47
+ justifyContent: 'inherit',
48
+ ...generateResponsiveStyles(min, max)
49
+ }
50
+ });
51
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.BaseView, {
52
+ style: styles.responsive,
53
+ dataSet: ids.responsive && {
54
+ media: ids.responsive
55
+ },
56
+ children: children
57
+ });
58
+ };
59
+ ResponsiveWithMediaQueryStyleSheet.displayName = 'Responsive';
60
+ ResponsiveWithMediaQueryStyleSheet.propTypes = {
61
+ /**
62
+ * To hide children of `Responsive` if the current viewport is smaller than `min`
63
+ */
64
+ min: _propTypes.default.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
65
+ /**
66
+ * To hide children of `Responsive` if the current viewport is larger than `max`
67
+ */
68
+ max: _propTypes.default.oneOf(['sm', 'md', 'lg', 'xl']),
69
+ children: _propTypes.default.node.isRequired
70
+ };
71
+ var _default = ResponsiveWithMediaQueryStyleSheet;
72
+ exports.default = _default;