@telus-uds/components-base 3.28.0 → 3.28.2

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 CHANGED
@@ -1,9 +1,27 @@
1
1
  # Change Log - @telus-uds/components-base
2
2
 
3
- This log was last generated on Wed, 18 Feb 2026 02:50:19 GMT and should not be manually modified.
3
+ This log was last generated on Tue, 03 Mar 2026 23:02:55 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 3.28.2
8
+
9
+ Tue, 03 Mar 2026 23:02:55 GMT
10
+
11
+ ### Patches
12
+
13
+ - `Carousel`: inverse variant navigation arrows fixed by always using raised style even in the inverse state (josue.higueros@telus.com)
14
+ - `Autocomplete`: add the ability to show all values and filter them (josue.higueroscalderon@telus.com)
15
+
16
+ ## 3.28.1
17
+
18
+ Fri, 20 Feb 2026 23:53:11 GMT
19
+
20
+ ### Patches
21
+
22
+ - `MultiSelectFilter`: onOpen callback now triggers when filter opens instead of when it closes (josue.higueroscalderon@telus.com)
23
+ - `Carousel`: fix peeking when using a larger maxWidth (guillermo.peitzner@telus.com)
24
+
7
25
  ## 3.28.0
8
26
 
9
27
  Wed, 18 Feb 2026 02:50:19 GMT
@@ -18,7 +36,7 @@ Wed, 18 Feb 2026 02:50:19 GMT
18
36
  ### Patches
19
37
 
20
38
  - `Card`: background image hidden behind the default background color issue fixed (josue.higueroscalderon@telus.com)
21
- - `IconButton`: Fix wrong specific padding calculation (david.melara1@telus.com)
39
+ - `IconButton`: Fix wrong specific padding calculation (david.melara1@telus.com)
22
40
 
23
41
  ## 3.27.0
24
42
 
@@ -51,22 +51,36 @@ const highlightAllMatches = function (str) {
51
51
  tokens: {
52
52
  color: resultsTextColor
53
53
  },
54
- children: matchIndexes.reduce((acc, matchIndex, index) => [...acc,
55
- // Add a piece of the string up to the first occurrence of the substring
56
- index === 0 && (str.slice(0, matchIndex) ?? ''),
57
- /*#__PURE__*/
58
- // Unbold the occurrence of the substring (while keeping the original casing)
59
- (0, _jsxRuntime.jsx)(_Typography.default, {
60
- variant: {
61
- bold: true
62
- },
63
- tokens: {
64
- color: resultsTextColor
65
- },
66
- children: str.slice(matchIndex, matchIndex + substring.length)
67
- }, matchIndex),
68
- // Add the rest of the string until the next occurrence or the end of it
69
- str.slice(matchIndex + substring.length, matchIndexes[index + 1] ?? str.length)], [])
54
+ children: matchIndexes.reduce((acc, matchIndex, index) => {
55
+ const prefix = index === 0 ? str.slice(0, matchIndex) : null;
56
+ const match = str.slice(matchIndex, matchIndex + substring.length);
57
+ const suffix = str.slice(matchIndex + substring.length, matchIndexes[index + 1] ?? str.length);
58
+ return [...acc, prefix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
59
+ variant: {
60
+ bold: false
61
+ },
62
+ tokens: {
63
+ color: resultsTextColor
64
+ },
65
+ children: prefix
66
+ }, `pre-${matchIndex}`) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
67
+ variant: {
68
+ bold: true
69
+ },
70
+ tokens: {
71
+ color: resultsTextColor
72
+ },
73
+ children: match
74
+ }, matchIndex), suffix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
75
+ variant: {
76
+ bold: false
77
+ },
78
+ tokens: {
79
+ color: resultsTextColor
80
+ },
81
+ children: suffix
82
+ }, `post-${matchIndex}`) : null];
83
+ }, []).filter(Boolean)
70
84
  })
71
85
  );
72
86
  };
@@ -100,12 +114,14 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
100
114
  isLoading = false,
101
115
  items,
102
116
  maxSuggestions = _constants.DEFAULT_MAX_SUGGESTIONS,
117
+ maxDropdownHeight = _constants.DEFAULT_MAX_DROPDOWN_HEIGHT,
103
118
  minToSuggestion = _constants.DEFAULT_MIN_TO_SUGGESTION,
104
119
  noResults,
105
120
  onChange,
106
121
  onClear,
107
122
  onSelect,
108
123
  readOnly,
124
+ showOptionsOnFocus = false,
109
125
  validation,
110
126
  value,
111
127
  helpText = '',
@@ -154,7 +170,7 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
154
170
  hint,
155
171
  label: inputLabel
156
172
  } = supportsProps;
157
- const hintExpansionEnabled = isFocused && helpText && !currentValue;
173
+ const hintExpansionEnabled = isFocused && !!helpText && !currentValue;
158
174
  const {
159
175
  overlaidPosition,
160
176
  sourceRef: inputRef,
@@ -208,9 +224,10 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
208
224
  }
209
225
  };
210
226
  const handleChange = newValue => {
211
- onChange?.(newValue || '');
227
+ onChange?.(newValue);
212
228
  setCurrentValue(newValue);
213
- setIsExpanded(newValue?.length >= minToSuggestion);
229
+ const shouldExpand = newValue?.length >= minToSuggestion || showOptionsOnFocus && isFocused && newValue?.length === 0;
230
+ setIsExpanded(shouldExpand);
214
231
  if (!isControlled && initialItems !== undefined) {
215
232
  setCurrentItems(initialItems.filter(_ref3 => {
216
233
  let {
@@ -222,25 +239,29 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
222
239
  };
223
240
  const handleSelect = selectedId => {
224
241
  onSelect?.(selectedId);
225
- const {
226
- label: newValue,
227
- nested,
228
- title
229
- } = (isControlled ? items : currentItems)?.find(_ref4 => {
242
+ const selectedItem = (isControlled ? items : currentItems)?.find(_ref4 => {
230
243
  let {
231
244
  id
232
245
  } = _ref4;
233
246
  return id === selectedId;
234
247
  });
248
+ const {
249
+ label,
250
+ nested,
251
+ title
252
+ } = selectedItem;
235
253
  if (title) return;
236
254
  if (!nested) {
237
255
  setNestedSelectedValue(null);
238
- onChange?.(newValue);
256
+ onChange?.(label);
239
257
  setIsExpanded(false);
258
+ setCurrentValue(label);
259
+ }
260
+ if (!isControlled && inputRef?.current) inputRef.current.value = label;
261
+ if (nested) {
262
+ setNestedSelectedValue(label);
263
+ setCurrentValue(label);
240
264
  }
241
- setCurrentValue(newValue);
242
- if (!isControlled && inputRef?.current) inputRef.current.value = newValue;
243
- if (nested) setNestedSelectedValue(newValue);
244
265
  inputRef.current.focus();
245
266
  };
246
267
 
@@ -288,15 +309,33 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
288
309
  };
289
310
  }, [inputRef]);
290
311
  const handleClose = event => {
291
- if (event.type === 'keydown' && (event.key === 'Escape' || event.key === '27') || event.type === 'click' && !openOverlayRef?.current?.contains(event.target) || event.type === 'touchstart' && openOverlayRef?.current && event.touches[0].target && !openOverlayRef?.current?.contains(event.touches[0].target)) {
312
+ if (event.type === 'keydown' && (event.key === 'Escape' || event.key === '27')) {
292
313
  setIsExpanded(false);
293
314
  setNestedSelectedValue(null);
294
- } else if (event.type === 'keydown' && (event.key === 'ArrowDown' || event.key === 'Tab') && isExpanded && !isLoading && targetRef?.current) {
315
+ return;
316
+ }
317
+ if (event.type === 'keydown' && (event.key === 'ArrowDown' || event.key === 'Tab') && isExpanded && !isLoading && targetRef?.current) {
295
318
  event.preventDefault();
296
319
  targetRef.current.focus();
320
+ return;
321
+ }
322
+ if (event.type === 'click' || event.type === 'touchstart') {
323
+ const clickTarget = event.type === 'click' ? event.target : event.touches[0]?.target;
324
+ const isOutsideOverlay = openOverlayRef?.current && !openOverlayRef.current.contains(clickTarget);
325
+ const isOutsideInput = inputRef?.current && !inputRef.current.contains(clickTarget);
326
+ if (isOutsideOverlay && isOutsideInput) {
327
+ setIsExpanded(false);
328
+ setNestedSelectedValue(null);
329
+ }
297
330
  }
298
331
  };
299
- const itemsToShow = currentValue ? itemsToSuggest(highlight(isControlled ? items : currentItems, currentValue, resultsTextColor)) : [];
332
+ // Calculate items to show based on current state
333
+ let itemsToShow = [];
334
+ if (currentValue?.length > 0) {
335
+ itemsToShow = itemsToSuggest(highlight(isControlled ? items : currentItems, currentValue, resultsTextColor));
336
+ } else if (showOptionsOnFocus && isFocused) {
337
+ itemsToShow = itemsToSuggest(isControlled ? items : currentItems || initialItems);
338
+ }
300
339
  const helpTextToShow = isFocused && !currentValue ? helpText : noResults ?? getCopy('noResults');
301
340
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
302
341
  style: staticStyles.container,
@@ -333,9 +372,15 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
333
372
  onChange: handleChange,
334
373
  onFocus: () => {
335
374
  setisFocused(true);
375
+ if (showOptionsOnFocus && (!currentValue || currentValue.length === 0)) {
376
+ setIsExpanded(true);
377
+ }
336
378
  },
337
379
  onBlur: () => {
338
380
  setisFocused(false);
381
+ if (showOptionsOnFocus && (!currentValue || currentValue.length === 0)) {
382
+ setIsExpanded(false);
383
+ }
339
384
  },
340
385
  onClear: onClear,
341
386
  onKeyPress: handleClose,
@@ -367,12 +412,13 @@ const Autocomplete = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
367
412
  })
368
413
  });
369
414
  }
370
- }), (isExpanded || hintExpansionEnabled) && isInputVisible && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
415
+ }), (isExpanded || hintExpansionEnabled) && isInputVisible && (itemsToShow.length > 0 || isExpanded || hintExpansionEnabled) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
371
416
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Listbox.default.Overlay, {
372
417
  overlaidPosition: overlaidPosition,
373
418
  isReady: isReady,
374
419
  minWidth: fullWidth ? inputWidth : _constants.MIN_LISTBOX_WIDTH,
375
420
  maxWidth: inputWidth,
421
+ maxHeight: maxDropdownHeight,
376
422
  onLayout: handleMeasure,
377
423
  tokens: restOfTokens,
378
424
  ref: openOverlayRef,
@@ -456,6 +502,10 @@ Autocomplete.propTypes = {
456
502
  * Maximum number of suggestions provided at the same time
457
503
  */
458
504
  maxSuggestions: _propTypes.default.number,
505
+ /**
506
+ * Maximum height (in pixels) of the dropdown before scrolling is enabled
507
+ */
508
+ maxDropdownHeight: _propTypes.default.number,
459
509
  /**
460
510
  * Text or JSX to render when no results are available
461
511
  */
@@ -476,6 +526,10 @@ Autocomplete.propTypes = {
476
526
  * Callback function to be called when an item is selected from the list
477
527
  */
478
528
  onSelect: _propTypes.default.func,
529
+ /**
530
+ * When true, displays all available options when the input receives focus (even without typing)
531
+ */
532
+ showOptionsOnFocus: _propTypes.default.bool,
479
533
  /**
480
534
  * Input value for controlled usage
481
535
  */
@@ -3,8 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MIN_LISTBOX_WIDTH = exports.INPUT_LEFT_PADDING = exports.DEFAULT_MIN_TO_SUGGESTION = exports.DEFAULT_MAX_SUGGESTIONS = void 0;
6
+ exports.MIN_LISTBOX_WIDTH = exports.INPUT_LEFT_PADDING = exports.DEFAULT_MIN_TO_SUGGESTION = exports.DEFAULT_MAX_SUGGESTIONS = exports.DEFAULT_MAX_DROPDOWN_HEIGHT = void 0;
7
7
  const DEFAULT_MIN_TO_SUGGESTION = exports.DEFAULT_MIN_TO_SUGGESTION = 1;
8
8
  const DEFAULT_MAX_SUGGESTIONS = exports.DEFAULT_MAX_SUGGESTIONS = 5;
9
+ const DEFAULT_MAX_DROPDOWN_HEIGHT = exports.DEFAULT_MAX_DROPDOWN_HEIGHT = 336; // Approximately 7 items (48px each)
9
10
  const INPUT_LEFT_PADDING = exports.INPUT_LEFT_PADDING = 16;
10
11
  const MIN_LISTBOX_WIDTH = exports.MIN_LISTBOX_WIDTH = 288;
@@ -91,7 +91,7 @@ const selectControlButtonPositionStyles = _ref => {
91
91
  isAutoPlayEnabled,
92
92
  viewport,
93
93
  maxWidth,
94
- viewportWidth
94
+ containerWidth
95
95
  } = _ref;
96
96
  const styles = {};
97
97
  let positionOffset = 0;
@@ -107,18 +107,19 @@ const selectControlButtonPositionStyles = _ref => {
107
107
  }
108
108
  }
109
109
  if (enablePeeking) {
110
- if (positionProperty === _Constants.POSITION_PROPERTIES.RIGHT) {
111
- const rightMargin = (viewportWidth - maxWidth) / 2;
112
- positionOffset += rightMargin;
113
- } else if (positionProperty === _Constants.POSITION_PROPERTIES.LEFT) {
114
- const leftMargin = (viewportWidth - maxWidth) / 2;
115
- positionOffset += leftMargin;
116
- }
110
+ const {
111
+ peekingMiddleSpace,
112
+ peekingGap
113
+ } = getPeekingProps(viewport);
114
+ const clampedMaxWidth = Math.min(maxWidth || containerWidth, containerWidth);
115
+ const slideRightEdge = (containerWidth + clampedMaxWidth) / 2 - peekingMiddleSpace;
116
+ const buttonCenter = slideRightEdge + peekingGap / 2;
117
+ positionOffset = containerWidth - buttonCenter - buttonWidth / 2;
117
118
  }
118
119
  styles[positionProperty] = positionOffset;
119
120
  return styles;
120
121
  };
121
- const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport, maxWidth, viewportWidth) => {
122
+ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport, maxWidth, containerWidth) => {
122
123
  const styles = {
123
124
  zIndex: 1,
124
125
  position: 'absolute'
@@ -142,7 +143,7 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
142
143
  isAutoPlayEnabled,
143
144
  viewport,
144
145
  maxWidth,
145
- viewportWidth
146
+ containerWidth
146
147
  })
147
148
  };
148
149
  };
@@ -279,7 +280,7 @@ const calculateFinalWidth = (containerWidth, enablePeeking, viewport, maxWidth)
279
280
  peekingGap,
280
281
  peekingMiddleSpace
281
282
  } = getPeekingProps(viewport);
282
- const baseWidth = maxWidth || containerWidth;
283
+ const baseWidth = Math.min(maxWidth || containerWidth, containerWidth);
283
284
  finalWidth = baseWidth - peekingMiddleSpace * _Constants.PEEKING_MULTIPLIER + peekingGap;
284
285
  }
285
286
  return finalWidth;
@@ -499,7 +500,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
499
500
  peekingMiddleSpace
500
501
  } = getPeekingProps(viewport);
501
502
  let finalWidth;
502
- const baseWidth = maxWidth || containerLayoutRef.current.width;
503
+ const baseWidth = Math.min(maxWidth || containerLayoutRef.current.width, containerLayoutRef.current.width);
503
504
  const slideWide = baseWidth - peekingMiddleSpace * _Constants.PEEKING_MULTIPLIER;
504
505
  if (activeIndexRef.current === 0) {
505
506
  finalWidth = 0;
@@ -923,8 +924,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
923
924
  // Related discussion - https://github.com/telus/universal-design-system/issues/1549
924
925
  const previousNextIconButtonVariants = {
925
926
  size: previousNextIconSize,
926
- raised: !variant?.inverse && true,
927
- inverse: variant?.inverse
927
+ raised: true
928
928
  };
929
929
  const getCopyWithPlaceholders = _react.default.useCallback(copyKey => {
930
930
  const copyText = getCopy(copyKey).replace(/%\{title\}/g, title).replace(/%\{itemLabel\}/g, itemLabel).replace(/%\{stepNumber\}/g, activeIndex + 1).replace(/%\{stepCount\}/g, totalItems);
@@ -1021,7 +1021,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
1021
1021
  isAutoPlayEnabled,
1022
1022
  viewport,
1023
1023
  maxWidth,
1024
- viewportWidth: currentViewportWidth
1024
+ containerWidth: containerLayout.width
1025
1025
  })],
1026
1026
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
1027
1027
  icon: isCarouselPlaying ? pauseIcon : playIcon,
@@ -1030,7 +1030,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
1030
1030
  onPress: onAnimationControlButtonPress
1031
1031
  })
1032
1032
  }) : null, showPreviousNextNavigation && totalItems > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
1033
- style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport, maxWidth, currentViewportWidth),
1033
+ style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport, maxWidth, containerLayout.width),
1034
1034
  testID: "previous-button-container",
1035
1035
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
1036
1036
  onLayout: onPreviousNextNavigationButtonLayout,
@@ -1090,7 +1090,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
1090
1090
  })
1091
1091
  })
1092
1092
  }), showPreviousNextNavigation && totalItems > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
1093
- style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport, maxWidth, currentViewportWidth),
1093
+ style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false, enablePeeking, enableDisplayMultipleItemsPerSlide, isAutoPlayEnabled, viewport, maxWidth, containerLayout.width),
1094
1094
  testID: "next-button-container",
1095
1095
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
1096
1096
  onLayout: onPreviousNextNavigationButtonLayout,
@@ -31,10 +31,10 @@ const selectContainerStyle = _ref => {
31
31
  let marginLeft = 0;
32
32
  if (enablePeeking) {
33
33
  const isFirst = elementIndex === 0;
34
- const baseWidth = maxWidth || width;
35
- adjustedWidth = baseWidth - peekingMiddleSpace * 2;
34
+ const clampedMaxWidth = Math.min(maxWidth || width, width);
35
+ adjustedWidth = clampedMaxWidth - peekingMiddleSpace * 2;
36
36
  if (isFirst) {
37
- marginLeft = peekingMiddleSpace + (viewportWidth - maxWidth) / 2;
37
+ marginLeft = peekingMiddleSpace + (viewportWidth - clampedMaxWidth) / 2;
38
38
  } else {
39
39
  marginLeft = peekingGap;
40
40
  }
@@ -35,6 +35,7 @@ const DropdownOverlay = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
35
35
  isReady = false,
36
36
  overlaidPosition,
37
37
  maxWidth,
38
+ maxHeight,
38
39
  minWidth,
39
40
  onLayout,
40
41
  tokens,
@@ -50,12 +51,16 @@ const DropdownOverlay = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
50
51
  maxWidth,
51
52
  minWidth
52
53
  }, staticStyles.positioner, !isReady && staticStyles.hidden],
54
+ onMouseDown: e => {
55
+ e.preventDefault();
56
+ },
53
57
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Card.default, {
54
58
  tokens: {
55
59
  shadow: systemTokens.shadow,
56
60
  borderRadius: systemTokens.borderRadius,
57
61
  ...(_Platform.default.OS === 'web' && {
58
- overflowY: 'hidden'
62
+ maxHeight,
63
+ overflowY: 'auto'
59
64
  }),
60
65
  paddingBottom: paddingVertical,
61
66
  paddingTop: paddingVertical,
@@ -85,6 +90,7 @@ DropdownOverlay.propTypes = {
85
90
  width: _propTypes.default.number
86
91
  }),
87
92
  maxWidth: _propTypes.default.number,
93
+ maxHeight: _propTypes.default.number,
88
94
  minWidth: _propTypes.default.number,
89
95
  onLayout: _propTypes.default.func,
90
96
  tokens: _propTypes.default.object,
@@ -129,9 +129,9 @@ const PressableItem = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
129
129
  onPress(event);
130
130
  },
131
131
  children: pressableState => {
132
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Text.default, {
132
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
133
133
  style: selectTextStyles(resolveButtonTokens(pressableState)),
134
- children: [children, " "]
134
+ children: children
135
135
  });
136
136
  }
137
137
  });
@@ -185,6 +185,11 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
185
185
  setMaxWidth(items.length >= rowLimit);
186
186
  }, [items.length, rowLimit]);
187
187
  _react.default.useEffect(() => setCheckedIds(currentValues ?? []), [currentValues]);
188
+ _react.default.useEffect(() => {
189
+ if (isOpen && onOpen) {
190
+ onOpen();
191
+ }
192
+ }, [isOpen, onOpen]);
188
193
  const uniqueFields = ['id', 'label'];
189
194
  if (!(0, _utils.containUniqueFields)(items, uniqueFields)) {
190
195
  throw new Error(`MultiSelectFilter items must have unique ${uniqueFields.join(', ')}`);
@@ -197,7 +202,6 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
197
202
  }]);
198
203
  const handleChange = event => {
199
204
  if (pressHandlers.onPress) pressHandlers?.onPress(event);
200
- if (isOpen) onOpen();
201
205
  setIsOpen(!isOpen);
202
206
  };
203
207
  const onApply = e => {
@@ -278,8 +278,8 @@ const TextInputBase = /*#__PURE__*/_react.default.forwardRef((_ref8, ref) => {
278
278
  }
279
279
  }, [element, pattern]);
280
280
  const handleChangeText = event => {
281
- const text = event.nativeEvent?.text || event.target?.value;
282
- let filteredText = isNumeric ? text?.replace(/[^\d]/g, '') : text;
281
+ const text = event.nativeEvent?.text ?? event.target?.value;
282
+ let filteredText = isNumeric ? text?.replace(/[^\d]/g, '') || undefined : text;
283
283
  if (type === 'card' && filteredText) {
284
284
  const formattedValue = filteredText.replace(/[^a-zA-Z0-9]/g, '');
285
285
  const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g');