@telus-uds/components-base 1.93.0 → 1.95.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 (101) hide show
  1. package/CHANGELOG.md +32 -3
  2. package/lib/Autocomplete/Autocomplete.js +2 -1
  3. package/lib/Button/ButtonGroup.js +17 -1
  4. package/lib/Card/Card.js +12 -0
  5. package/lib/Card/CardBase.js +37 -2
  6. package/lib/Carousel/Carousel.js +55 -13
  7. package/lib/Carousel/CarouselItem/CarouselItem.js +86 -12
  8. package/lib/DownloadApp/DownloadApp.js +168 -0
  9. package/lib/DownloadApp/dictionary.js +17 -0
  10. package/lib/DownloadApp/index.js +10 -0
  11. package/lib/Fieldset/FieldsetContainer.js +7 -2
  12. package/lib/Fieldset/FieldsetContainer.native.js +4 -1
  13. package/lib/FileUpload/FileUpload.js +336 -0
  14. package/lib/FileUpload/NotificationContent.js +60 -0
  15. package/lib/FileUpload/dictionary.js +47 -0
  16. package/lib/FileUpload/index.js +10 -0
  17. package/lib/Icon/IconText.js +19 -2
  18. package/lib/Link/LinkBase.js +2 -2
  19. package/lib/Link/TextButton.js +7 -17
  20. package/lib/Modal/Modal.js +1 -1
  21. package/lib/Modal/ModalContent.js +12 -6
  22. package/lib/MultiSelectFilter/ModalOverlay.js +49 -30
  23. package/lib/MultiSelectFilter/MultiSelectFilter.js +170 -131
  24. package/lib/Notification/Notification.js +11 -2
  25. package/lib/Status/Status.js +9 -4
  26. package/lib/TabBar/TabBar.js +133 -0
  27. package/lib/TabBar/TabBarItem.js +184 -0
  28. package/lib/TabBar/index.js +10 -0
  29. package/lib/TextInput/TextInputBase.js +2 -1
  30. package/lib/Tooltip/getTooltipPosition.js +8 -9
  31. package/lib/index.js +24 -0
  32. package/lib/utils/convertFromMegaByteToByte.js +16 -0
  33. package/lib/utils/formatImageSource.js +34 -0
  34. package/lib/utils/index.js +17 -1
  35. package/lib-module/Autocomplete/Autocomplete.js +2 -1
  36. package/lib-module/Button/ButtonGroup.js +17 -1
  37. package/lib-module/Card/Card.js +13 -1
  38. package/lib-module/Card/CardBase.js +38 -3
  39. package/lib-module/Carousel/Carousel.js +55 -13
  40. package/lib-module/Carousel/CarouselItem/CarouselItem.js +86 -12
  41. package/lib-module/DownloadApp/DownloadApp.js +160 -0
  42. package/lib-module/DownloadApp/dictionary.js +10 -0
  43. package/lib-module/DownloadApp/index.js +2 -0
  44. package/lib-module/Fieldset/FieldsetContainer.js +7 -2
  45. package/lib-module/Fieldset/FieldsetContainer.native.js +4 -1
  46. package/lib-module/FileUpload/FileUpload.js +329 -0
  47. package/lib-module/FileUpload/NotificationContent.js +55 -0
  48. package/lib-module/FileUpload/dictionary.js +40 -0
  49. package/lib-module/FileUpload/index.js +2 -0
  50. package/lib-module/Icon/IconText.js +19 -2
  51. package/lib-module/Link/LinkBase.js +2 -2
  52. package/lib-module/Link/TextButton.js +7 -17
  53. package/lib-module/Modal/Modal.js +1 -1
  54. package/lib-module/Modal/ModalContent.js +12 -6
  55. package/lib-module/MultiSelectFilter/ModalOverlay.js +49 -30
  56. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +171 -132
  57. package/lib-module/Notification/Notification.js +11 -2
  58. package/lib-module/Status/Status.js +9 -4
  59. package/lib-module/TabBar/TabBar.js +125 -0
  60. package/lib-module/TabBar/TabBarItem.js +177 -0
  61. package/lib-module/TabBar/index.js +2 -0
  62. package/lib-module/TextInput/TextInputBase.js +2 -1
  63. package/lib-module/Tooltip/getTooltipPosition.js +8 -9
  64. package/lib-module/index.js +3 -0
  65. package/lib-module/utils/convertFromMegaByteToByte.js +10 -0
  66. package/lib-module/utils/formatImageSource.js +27 -0
  67. package/lib-module/utils/index.js +3 -1
  68. package/package.json +4 -3
  69. package/src/Autocomplete/Autocomplete.jsx +2 -1
  70. package/src/Button/ButtonGroup.jsx +9 -1
  71. package/src/Card/Card.jsx +18 -2
  72. package/src/Card/CardBase.jsx +47 -12
  73. package/src/Carousel/Carousel.jsx +59 -13
  74. package/src/Carousel/CarouselItem/CarouselItem.jsx +94 -9
  75. package/src/DownloadApp/DownloadApp.jsx +165 -0
  76. package/src/DownloadApp/dictionary.js +10 -0
  77. package/src/DownloadApp/index.js +3 -0
  78. package/src/Fieldset/FieldsetContainer.jsx +4 -3
  79. package/src/Fieldset/FieldsetContainer.native.jsx +9 -6
  80. package/src/FileUpload/FileUpload.jsx +396 -0
  81. package/src/FileUpload/NotificationContent.jsx +44 -0
  82. package/src/FileUpload/dictionary.js +40 -0
  83. package/src/FileUpload/index.js +3 -0
  84. package/src/Icon/IconText.jsx +21 -4
  85. package/src/Link/LinkBase.jsx +2 -2
  86. package/src/Link/TextButton.jsx +10 -17
  87. package/src/Modal/Modal.jsx +1 -1
  88. package/src/Modal/ModalContent.jsx +8 -3
  89. package/src/MultiSelectFilter/ModalOverlay.jsx +44 -18
  90. package/src/MultiSelectFilter/MultiSelectFilter.jsx +188 -126
  91. package/src/Notification/Notification.jsx +12 -4
  92. package/src/Status/Status.jsx +15 -4
  93. package/src/TabBar/TabBar.jsx +123 -0
  94. package/src/TabBar/TabBarItem.jsx +149 -0
  95. package/src/TabBar/index.js +3 -0
  96. package/src/TextInput/TextInputBase.jsx +1 -1
  97. package/src/Tooltip/getTooltipPosition.js +11 -12
  98. package/src/index.js +3 -0
  99. package/src/utils/convertFromMegaByteToByte.js +11 -0
  100. package/src/utils/formatImageSource.js +29 -0
  101. package/src/utils/index.js +2 -0
@@ -8,6 +8,7 @@ var _react = _interopRequireDefault(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 _portal = require("@gorhom/portal");
12
13
  var _utils = require("../utils");
13
14
  var _ViewportProvider = require("../ViewportProvider");
@@ -21,10 +22,32 @@ const staticStyles = _StyleSheet.default.create({
21
22
  positioner: {
22
23
  flex: 1,
23
24
  // Grow to maxWidth when possible, shrink when not possible
24
- position: 'absolute',
25
- zIndex: 10000 // Position on top of all the other overlays, including backdrops and modals
25
+ zIndex: 10000,
26
+ // Position on top of all the other overlays, including backdrops and modals,
27
+ elevation: 10000,
28
+ // Position on top of all the other overlays, including backdrops and modals,
29
+ borderRadius: 4,
30
+ ..._Platform.default.select({
31
+ web: {
32
+ boxShadow: 'rgba(0, 0, 0, 0.1) 0px 4px 8px 0px'
33
+ },
34
+ default: {
35
+ shadowColor: 'rgba(0, 0, 0, 0.1)',
36
+ shadowOffset: {
37
+ width: 0,
38
+ height: 4
39
+ },
40
+ shadowOpacity: 1,
41
+ shadowRadius: 8
42
+ }
43
+ })
44
+ },
45
+ card: {
46
+ paddingLeft: 0,
47
+ paddingRight: 0,
48
+ paddingTop: 0,
49
+ paddingBottom: 0
26
50
  },
27
-
28
51
  closeButtonContainer: {
29
52
  position: 'absolute',
30
53
  top: 0,
@@ -37,6 +60,17 @@ const staticStyles = _StyleSheet.default.create({
37
60
  opacity: 0
38
61
  }
39
62
  });
63
+ const selectContainerStyle = (enableFullscreen, themeTokens) => ({
64
+ borderColor: themeTokens.borderColor,
65
+ ..._Platform.default.select({
66
+ web: {
67
+ position: enableFullscreen ? 'fixed' : 'absolute'
68
+ },
69
+ default: {
70
+ position: 'absolute'
71
+ }
72
+ })
73
+ });
40
74
  const selectCloseButtonContainerStyles = _ref => {
41
75
  let {
42
76
  paddingRight,
@@ -47,20 +81,7 @@ const selectCloseButtonContainerStyles = _ref => {
47
81
  paddingTop
48
82
  };
49
83
  };
50
- const selectPaddingContainerStyles = _ref2 => {
51
- let {
52
- paddingTop,
53
- paddingLeft,
54
- paddingRight
55
- } = _ref2;
56
- return {
57
- paddingBottom: 35,
58
- paddingTop,
59
- paddingLeft,
60
- paddingRight
61
- };
62
- };
63
- const ModalOverlay = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
84
+ const ModalOverlay = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
64
85
  let {
65
86
  children,
66
87
  isReady = false,
@@ -74,22 +95,19 @@ const ModalOverlay = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
74
95
  variant,
75
96
  tokens,
76
97
  copy,
77
- onClose
78
- } = _ref3;
98
+ onClose,
99
+ enableFullscreen = false
100
+ } = _ref2;
79
101
  const viewport = (0, _ViewportProvider.useViewport)();
80
102
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Modal', tokens, variant, {
81
103
  viewport,
82
104
  maxWidth: false
83
105
  });
84
106
  const containerWidthHeight = {
85
- minWidth,
86
- minHeight,
87
- ...(tokens.maxWidth && maxWidthSize && {
88
- maxWidth: maxWidthSize
89
- }),
90
- ...(maxHeight && maxHeightSize && {
91
- maxHeight: maxHeightSize
92
- })
107
+ minWidth: tokens.maxWidth ? maxWidthSize : minWidth,
108
+ minHeight: maxHeight ? maxHeightSize : minHeight,
109
+ maxWidth: maxWidthSize,
110
+ maxHeight: maxHeightSize
93
111
  };
94
112
  const {
95
113
  closeIcon: CloseIconComponent
@@ -103,9 +121,9 @@ const ModalOverlay = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
103
121
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
104
122
  ref: ref,
105
123
  onLayout: onLayout,
106
- style: [overlaidPosition, containerWidthHeight, staticStyles.positioner, !isReady && staticStyles.hidden],
124
+ style: [overlaidPosition, containerWidthHeight, staticStyles.positioner, !isReady && staticStyles.hidden, selectContainerStyle(enableFullscreen, themeTokens)],
107
125
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Card.default, {
108
- tokens: selectPaddingContainerStyles(themeTokens),
126
+ tokens: staticStyles.card,
109
127
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
110
128
  style: [staticStyles.closeButtonContainer, selectCloseButtonContainerStyles(themeTokens)],
111
129
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
@@ -138,7 +156,8 @@ ModalOverlay.propTypes = {
138
156
  variant: _utils.variantProp.propType,
139
157
  tokens: (0, _utils.getTokensPropType)('Modal'),
140
158
  copy: _utils.copyPropTypes,
141
- onClose: _propTypes.default.func
159
+ onClose: _propTypes.default.func,
160
+ enableFullscreen: _propTypes.default.bool
142
161
  };
143
162
  var _default = ModalOverlay;
144
163
  exports.default = _default;
@@ -8,6 +8,10 @@ var _react = _interopRequireDefault(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 _Dimensions = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Dimensions"));
12
+ var _SafeAreaView = _interopRequireDefault(require("react-native-web/dist/cjs/exports/SafeAreaView"));
13
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
14
+ var _ScrollView = _interopRequireDefault(require("react-native-web/dist/cjs/exports/ScrollView"));
11
15
  var _ThemeProvider = require("../ThemeProvider");
12
16
  var _utils = require("../utils");
13
17
  var _dictionary = _interopRequireDefault(require("./dictionary"));
@@ -22,7 +26,6 @@ var _StackView = _interopRequireDefault(require("../StackView"));
22
26
  var _Typography = _interopRequireDefault(require("../Typography"));
23
27
  var _Link = require("../Link");
24
28
  var _ModalOverlay = _interopRequireDefault(require("./ModalOverlay"));
25
- var _Modal = _interopRequireDefault(require("../Modal"));
26
29
  var _jsxRuntime = require("react/jsx-runtime");
27
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
31
  const {
@@ -37,21 +40,54 @@ const selectSubTitleTokens = _ref => {
37
40
  color: subtitleColor
38
41
  };
39
42
  };
40
- const selectDividerToknes = _ref2 => {
43
+ const selectDividerTokens = _ref2 => {
41
44
  let {
42
- dividerColor,
43
- width,
44
- decorative = true,
45
- weight = 'thin'
45
+ dividerColor
46
46
  } = _ref2;
47
47
  return {
48
- color: dividerColor,
49
- width,
50
- decorative,
51
- weight
48
+ color: dividerColor
52
49
  };
53
50
  };
54
- const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
51
+ const selectHeaderTokens = _ref3 => {
52
+ let {
53
+ contentMarginLeft,
54
+ contentMarginRight,
55
+ contentMarginTop,
56
+ contentPaddingLeft,
57
+ contentPaddingRight
58
+ } = _ref3;
59
+ return {
60
+ marginLeft: contentMarginLeft,
61
+ marginRight: contentMarginRight,
62
+ marginTop: contentMarginTop,
63
+ paddingLeft: contentPaddingLeft,
64
+ paddingRight: contentPaddingRight,
65
+ flexGrow: 1
66
+ };
67
+ };
68
+ const selectControlsTokens = _ref4 => {
69
+ let {
70
+ contentMarginBottom,
71
+ contentMarginLeft,
72
+ contentMarginRight,
73
+ contentPaddingLeft,
74
+ contentPaddingRight
75
+ } = _ref4;
76
+ return {
77
+ marginBottom: contentMarginBottom,
78
+ marginLeft: contentMarginLeft,
79
+ marginRight: contentMarginRight,
80
+ paddingLeft: contentPaddingLeft,
81
+ paddingRight: contentPaddingRight
82
+ };
83
+ };
84
+ const selectContainerStyle = (windowHeight, windowWidth) => ({
85
+ height: windowHeight,
86
+ width: windowWidth
87
+ });
88
+ const TOTAL_COLUMNS = 12;
89
+ const MAX_ITEMS_THRESHOLD = 12;
90
+ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref5, ref) => {
55
91
  let {
56
92
  label,
57
93
  subtitle,
@@ -73,7 +109,7 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
73
109
  rowLimit = 12,
74
110
  dictionary = _dictionary.default,
75
111
  ...rest
76
- } = _ref3;
112
+ } = _ref5;
77
113
  const viewport = (0, _ViewportProvider.useViewport)();
78
114
  const {
79
115
  currentValues,
@@ -117,7 +153,8 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
117
153
  maxWidthSize,
118
154
  subHeaderLineHeight,
119
155
  minHeight,
120
- minWidth
156
+ minWidth,
157
+ ...restTokens
121
158
  } = (0, _ThemeProvider.useThemeTokens)('MultiSelectFilter', tokens, {
122
159
  ...variant,
123
160
  maxHeight,
@@ -195,21 +232,35 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
195
232
  offsets,
196
233
  align
197
234
  });
198
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
199
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.ButtonDropdown, {
200
- ref: sourceRef,
201
- ...pressHandlers,
202
- value: isOpen,
203
- selected: isSelected,
204
- label: label,
205
- onChange: handleChange,
206
- tokens: getButtonTokens,
207
- inactive: inactive
208
- }, id), isOpen && viewport === 'xs' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Modal.default, {
209
- isOpen: isOpen,
210
- onClose: onClose,
211
- ref: ref,
212
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
235
+ const [isScrolling, setIsScrolling] = _react.default.useState(false);
236
+ const [scrollViewHeight, setScrollViewHeight] = _react.default.useState(0);
237
+ const [rowHeight, setRowHeight] = _react.default.useState(0);
238
+ const modalRef = (0, _utils.useScrollBlocking)(isOpen);
239
+ const windowWidth = _Dimensions.default.get('window').width;
240
+ const windowHeight = _Dimensions.default.get('window').height;
241
+ _react.default.useEffect(() => {
242
+ if (rowHeight > scrollViewHeight) {
243
+ setIsScrolling(true);
244
+ } else {
245
+ setIsScrolling(false);
246
+ }
247
+ }, [scrollViewHeight, rowHeight]);
248
+ const handleScrollViewLayout = event => {
249
+ const {
250
+ height
251
+ } = event.nativeEvent.layout;
252
+ setScrollViewHeight(height);
253
+ };
254
+ const handleRowLayout = event => {
255
+ const {
256
+ height
257
+ } = event.nativeEvent.layout;
258
+ setRowHeight(height);
259
+ };
260
+ const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
261
+ style: [selectHeaderTokens(restTokens), styles.container],
262
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
263
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
213
264
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
214
265
  tokens: {
215
266
  ...headerStyles,
@@ -217,26 +268,30 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
217
268
  },
218
269
  children: getCopy('filterByLabel').replace(/%\{filterCategory\}/g, label.toLowerCase())
219
270
  })
220
- }), subtitle && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
221
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
222
- space: 5
223
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
224
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
225
- tokens: {
226
- ...subeHeaderStyles,
227
- lineHeight: subHeaderLineHeight
228
- },
229
- children: subtitle
230
- })
231
- })]
271
+ })
272
+ }), subtitle && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
273
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
274
+ space: 4
275
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
276
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
277
+ tokens: {
278
+ ...subeHeaderStyles,
279
+ lineHeight: subHeaderLineHeight
280
+ },
281
+ children: subtitle
282
+ })
232
283
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
233
284
  space: 4
234
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
235
- scroll: true,
285
+ })]
286
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
287
+ style: styles.options,
288
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollView.default, {
289
+ onLayout: handleScrollViewLayout,
236
290
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
237
291
  distribute: "between",
292
+ onLayout: handleRowLayout,
238
293
  children: [...Array(colSize).keys()].map(i => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Col, {
239
- xs: 12 / colSize,
294
+ xs: TOTAL_COLUMNS / colSize,
240
295
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.CheckboxGroup, {
241
296
  items: items.slice(i * rowLength, (i + 1) * rowLength),
242
297
  checkedIds: checkedIds,
@@ -246,13 +301,18 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
246
301
  })]
247
302
  }, i))
248
303
  })
249
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
250
- variant: selectDividerToknes({
251
- ...themeTokens,
252
- width: 'full'
253
- }),
254
- space: 4
255
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
304
+ })
305
+ })]
306
+ });
307
+ const controlsContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
308
+ children: [isScrolling ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
309
+ tokens: selectDividerTokens(themeTokens),
310
+ space: 4
311
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
312
+ space: 4
313
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
314
+ style: selectControlsTokens(restTokens),
315
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
256
316
  horizontalAlign: buttonDirection === 'column' ? 'center' : 'start',
257
317
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
258
318
  direction: buttonDirection,
@@ -266,7 +326,6 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
266
326
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
267
327
  onPress: () => onApply(checkedIds),
268
328
  variant: {
269
- size: 'small',
270
329
  priority: 'high',
271
330
  ...(viewport === 'xs' && {
272
331
  width: 'full'
@@ -280,105 +339,85 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
280
339
  })
281
340
  })]
282
341
  })
283
- })]
342
+ })
343
+ })]
344
+ });
345
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
346
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.ButtonDropdown, {
347
+ ref: sourceRef,
348
+ ...pressHandlers,
349
+ value: isOpen,
350
+ selected: isSelected,
351
+ label: label,
352
+ onChange: handleChange,
353
+ tokens: getButtonTokens,
354
+ inactive: inactive
355
+ }, id), isOpen && viewport === 'xs' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ModalOverlay.default, {
356
+ overlaidPosition: {
357
+ top: 0,
358
+ left: 0
359
+ },
360
+ onClose: onClose,
361
+ maxHeight: true,
362
+ maxHeightSize: windowHeight,
363
+ maxWidthSize: windowWidth,
364
+ minHeight: windowHeight,
365
+ minWidth: windowWidth,
366
+ tokens: {
367
+ ...tokens,
368
+ maxWidth: true
369
+ },
370
+ copy: copy,
371
+ isReady: isReady,
372
+ onLayout: onTargetLayout,
373
+ ref: modalRef,
374
+ enableFullscreen: true,
375
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_SafeAreaView.default, {
376
+ style: [selectContainerStyle(windowHeight, windowWidth), styles.content],
377
+ ref: ref,
378
+ children: [headerContent, /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
379
+ style: styles.controls,
380
+ children: controlsContent
381
+ })]
382
+ })
284
383
  }), isOpen && viewport !== 'xs' && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ModalOverlay.default, {
285
384
  overlaidPosition: overlaidPosition,
286
385
  onClose: onClose,
287
- maxHeight: maxHeight,
386
+ maxHeight: items.length > MAX_ITEMS_THRESHOLD ? true : maxHeight,
288
387
  maxHeightSize: maxHeightSize,
289
388
  maxWidthSize: maxWidthSize,
290
389
  minHeight: minHeight,
291
390
  minWidth: minWidth,
292
391
  tokens: {
293
392
  ...tokens,
294
- maxWidth
393
+ maxWidth: items.length > MAX_ITEMS_THRESHOLD ? true : maxWidth
295
394
  },
296
395
  copy: copy,
297
396
  isReady: isReady,
298
397
  onLayout: onTargetLayout,
299
398
  ref: ref,
300
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
301
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
302
- style: styles.textContainerStyle,
303
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
304
- tokens: {
305
- ...headerStyles,
306
- lineHeight: headerLineHeight
307
- },
308
- children: getCopy('filterByLabel').replace(/%\{filterCategory\}/g, label.toLowerCase())
309
- })
310
- })
311
- }), subtitle && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
312
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
313
- space: 5
314
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
315
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
316
- tokens: {
317
- ...subeHeaderStyles,
318
- lineHeight: subHeaderLineHeight
319
- },
320
- children: subtitle
321
- })
322
- })]
323
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
324
- space: 4
325
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
326
- scroll: true,
327
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
328
- distribute: "between",
329
- children: [...Array(colSize).keys()].map(i => /*#__PURE__*/(0, _jsxRuntime.jsxs)(Col, {
330
- xs: 12 / colSize,
331
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.CheckboxGroup, {
332
- items: items.slice(i * rowLength, (i + 1) * rowLength),
333
- checkedIds: checkedIds,
334
- onChange: e => setCheckedIds(e, i)
335
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
336
- size: 4
337
- })]
338
- }, i))
339
- })
340
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Divider.default, {
341
- variant: selectDividerToknes({
342
- ...themeTokens,
343
- width: 'full'
344
- }),
345
- space: 4
346
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
347
- horizontalAlign: buttonDirection === 'column' ? 'center' : 'start',
348
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
349
- direction: buttonDirection,
350
- space: 3,
351
- tokens: {
352
- alignItems: 'center',
353
- ...(viewport === 'xs' && {
354
- flexGrow: 1
355
- })
356
- },
357
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
358
- onPress: () => onApply(checkedIds),
359
- variant: {
360
- size: 'small',
361
- priority: 'high',
362
- ...(viewport === 'xs' && {
363
- width: 'full'
364
- })
365
- },
366
- children: getCopy('applyButtonLabel')
367
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
368
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Link.TextButton, {
369
- onPress: onClear,
370
- children: getCopy('clearButtonLabel')
371
- })
372
- })]
373
- })
374
- })]
399
+ children: [headerContent, controlsContent]
375
400
  })]
376
401
  });
377
402
  });
378
403
  MultiSelectFilter.displayName = 'MultiSelectFilter';
379
404
  const styles = _StyleSheet.default.create({
380
- textContainerStyle: {
381
- marginRight: 52
405
+ container: {
406
+ flex: 1
407
+ },
408
+ controls: _Platform.default.select({
409
+ web: {},
410
+ default: {
411
+ flex: 0.35
412
+ }
413
+ }),
414
+ content: {
415
+ flex: 1,
416
+ justifyContent: 'space-between',
417
+ backgroundColor: 'transparent'
418
+ },
419
+ options: {
420
+ flex: 1
382
421
  }
383
422
  });
384
423
 
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
9
+ var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
11
  var _ThemeProvider = require("../ThemeProvider");
11
12
  var _utils = require("../utils");
@@ -182,7 +183,7 @@ const getMediaQueryStyles = (themeTokens, themeOptions, mediaIdsRef, dismissible
182
183
  const getDefaultStyles = (themeTokens, themeOptions, maxWidth, dismissible, viewport, system) => ({
183
184
  containerStyles: {
184
185
  container: {
185
- flexDirection: system === true && viewport === 'xl' ? 'row' : 'inherit',
186
+ flexDirection: system === true && viewport === 'xl' || _Platform.default.OS === 'android' ? 'row' : 'inherit',
186
187
  ...selectContainerStyles(themeTokens)
187
188
  }
188
189
  },
@@ -287,6 +288,7 @@ const Notification = /*#__PURE__*/_react.default.forwardRef((_ref6, ref) => {
287
288
  copy = 'en',
288
289
  tokens,
289
290
  variant,
291
+ onDismiss,
290
292
  ...rest
291
293
  } = _ref6;
292
294
  const [isDismissed, setIsDismissed] = _react.default.useState(false);
@@ -346,7 +348,10 @@ const Notification = /*#__PURE__*/_react.default.forwardRef((_ref6, ref) => {
346
348
  dismissIcon: DismissIconComponent,
347
349
  dismissIconColor
348
350
  } = enableMediaQueryStyleSheet === false ? themeTokens : themeTokens[viewport];
349
- const onDismissPress = () => setIsDismissed(true);
351
+ const onDismissPress = () => {
352
+ setIsDismissed(true);
353
+ onDismiss === null || onDismiss === void 0 ? void 0 : onDismiss();
354
+ };
350
355
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
351
356
  ref: ref,
352
357
  style: notificationComponentRef.current.containerStyles.container,
@@ -420,6 +425,10 @@ Notification.propTypes = {
420
425
  copy: _propTypes.default.oneOfType([_propTypes.default.oneOf(['en', 'fr']), _propTypes.default.shape({
421
426
  dismiss: _propTypes.default.string
422
427
  })]),
428
+ /**
429
+ * Callback function called when the dismiss button is clicked
430
+ */
431
+ onDismiss: _propTypes.default.func,
423
432
  tokens: (0, _utils.getTokensPropType)('Notification'),
424
433
  variant: _utils.variantProp.propType
425
434
  };
@@ -80,7 +80,8 @@ const selectTextStyles = _ref3 => {
80
80
  textLineHeight,
81
81
  fontName,
82
82
  fontSize,
83
- fontWeight
83
+ fontWeight,
84
+ marginLeft
84
85
  } = _ref3;
85
86
  return (0, _ThemeProvider.applyTextStyles)({
86
87
  fontColor: textColor,
@@ -88,7 +89,7 @@ const selectTextStyles = _ref3 => {
88
89
  fontSize,
89
90
  fontWeight,
90
91
  lineHeight: _Platform.default.OS === 'web' ? textLineHeight : textLineHeight * 1.2,
91
- marginLeft: 8
92
+ marginLeft
92
93
  });
93
94
  };
94
95
 
@@ -100,6 +101,7 @@ const selectTextStyles = _ref3 => {
100
101
  * @param {string} variant - The variant of the status component.
101
102
  * @param {ReactNode} children - The content to be displayed inside the status component.
102
103
  * @param {function} customGradient - The custom gradient function for the status component.
104
+ * @param {elementType} customGradient - Defines an icon to be rendered.
103
105
  * @param {object} rest - The rest of the props to be applied to the status component.
104
106
  * @param {React.Ref} ref - The ref to be applied to the status component.
105
107
  * @returns {ReactNode} The rendered status component.
@@ -113,14 +115,17 @@ const Status = /*#__PURE__*/_react.default.forwardRef((_ref4, ref) => {
113
115
  ...rest
114
116
  } = _ref4;
115
117
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Status', tokens, variant);
118
+ const {
119
+ icon
120
+ } = themeTokens;
116
121
  const containerStyles = {
117
122
  ...selectContainerStyles(themeTokens),
118
123
  ...staticStyles.container
119
124
  };
120
125
  let content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
121
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
126
+ children: [icon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
122
127
  ...selectIconProps(themeTokens)
123
- }), (0, _utils.wrapStringsInText)(children, {
128
+ }) : null, (0, _utils.wrapStringsInText)(children, {
124
129
  style: selectTextStyles(themeTokens)
125
130
  })]
126
131
  });