@lumx/react 4.17.0 → 4.17.1-alpha.1

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 (4) hide show
  1. package/index.d.ts +68 -22
  2. package/index.js +379 -240
  3. package/index.js.map +1 -1
  4. package/package.json +6 -5
package/index.js CHANGED
@@ -571,7 +571,7 @@ const {
571
571
  /**
572
572
  * Component default props.
573
573
  */
574
- const DEFAULT_PROPS$1i = {
574
+ const DEFAULT_PROPS$1j = {
575
575
  size: Size.tiny,
576
576
  kind: Kind.info
577
577
  };
@@ -593,8 +593,8 @@ const AlertDialog$1 = props => {
593
593
  cancelProps,
594
594
  confirmProps,
595
595
  ref,
596
- kind = DEFAULT_PROPS$1i.kind,
597
- size = DEFAULT_PROPS$1i.size,
596
+ kind = DEFAULT_PROPS$1j.kind,
597
+ size = DEFAULT_PROPS$1j.size,
598
598
  dialogProps,
599
599
  children,
600
600
  DescriptionElement,
@@ -734,7 +734,7 @@ const AlertDialog = forwardRef((props, ref) => {
734
734
  });
735
735
  AlertDialog.displayName = COMPONENT_NAME$1F;
736
736
  AlertDialog.className = CLASSNAME$1C;
737
- AlertDialog.defaultProps = DEFAULT_PROPS$1i;
737
+ AlertDialog.defaultProps = DEFAULT_PROPS$1j;
738
738
 
739
739
  /**
740
740
  * Hook focusing an element when defined and `focus` boolean `true`.
@@ -836,7 +836,7 @@ const CLASSNAME$1B = 'lumx-autocomplete';
836
836
  /**
837
837
  * Component default props.
838
838
  */
839
- const DEFAULT_PROPS$1h = {
839
+ const DEFAULT_PROPS$1i = {
840
840
  anchorToInput: false,
841
841
  closeOnClick: false,
842
842
  closeOnClickAway: true,
@@ -859,13 +859,13 @@ const Autocomplete = forwardRef((props, ref) => {
859
859
  otherProps
860
860
  } = useDisableStateProps(props);
861
861
  const {
862
- anchorToInput = DEFAULT_PROPS$1h.anchorToInput,
862
+ anchorToInput = DEFAULT_PROPS$1i.anchorToInput,
863
863
  children,
864
864
  chips,
865
865
  className,
866
- closeOnClick = DEFAULT_PROPS$1h.closeOnClick,
867
- closeOnClickAway = DEFAULT_PROPS$1h.closeOnClickAway,
868
- closeOnEscape = DEFAULT_PROPS$1h.closeOnEscape,
866
+ closeOnClick = DEFAULT_PROPS$1i.closeOnClick,
867
+ closeOnClickAway = DEFAULT_PROPS$1i.closeOnClickAway,
868
+ closeOnEscape = DEFAULT_PROPS$1i.closeOnEscape,
869
869
  error,
870
870
  fitToAnchorWidth,
871
871
  hasError,
@@ -886,7 +886,7 @@ const Autocomplete = forwardRef((props, ref) => {
886
886
  onInfiniteScroll,
887
887
  placeholder,
888
888
  placement,
889
- shouldFocusOnClose = DEFAULT_PROPS$1h.shouldFocusOnClose,
889
+ shouldFocusOnClose = DEFAULT_PROPS$1i.shouldFocusOnClose,
890
890
  theme = defaultTheme,
891
891
  value,
892
892
  textFieldProps = {},
@@ -941,7 +941,7 @@ const Autocomplete = forwardRef((props, ref) => {
941
941
  });
942
942
  Autocomplete.displayName = COMPONENT_NAME$1E;
943
943
  Autocomplete.className = CLASSNAME$1B;
944
- Autocomplete.defaultProps = DEFAULT_PROPS$1h;
944
+ Autocomplete.defaultProps = DEFAULT_PROPS$1i;
945
945
 
946
946
  /**
947
947
  * Component display name.
@@ -956,7 +956,7 @@ const CLASSNAME$1A = 'lumx-autocomplete-multiple';
956
956
  /**
957
957
  * Component default props.
958
958
  */
959
- const DEFAULT_PROPS$1g = {
959
+ const DEFAULT_PROPS$1h = {
960
960
  closeOnClickAway: true,
961
961
  closeOnEscape: true,
962
962
  selectedChipRender(choice, index, onClear, isDisabled) {
@@ -997,8 +997,8 @@ const AutocompleteMultiple = forwardRef((props, ref) => {
997
997
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
998
998
  chipsAlignment,
999
999
  className,
1000
- closeOnClickAway = DEFAULT_PROPS$1g.closeOnClickAway,
1001
- closeOnEscape = DEFAULT_PROPS$1g.closeOnEscape,
1000
+ closeOnClickAway = DEFAULT_PROPS$1h.closeOnClickAway,
1001
+ closeOnEscape = DEFAULT_PROPS$1h.closeOnEscape,
1002
1002
  fitToAnchorWidth,
1003
1003
  hasError,
1004
1004
  helper,
@@ -1020,12 +1020,12 @@ const AutocompleteMultiple = forwardRef((props, ref) => {
1020
1020
  onKeyDown,
1021
1021
  placeholder,
1022
1022
  placement,
1023
- selectedChipRender = DEFAULT_PROPS$1g.selectedChipRender,
1023
+ selectedChipRender = DEFAULT_PROPS$1h.selectedChipRender,
1024
1024
  shouldFocusOnClose,
1025
1025
  theme = defaultTheme,
1026
1026
  type,
1027
1027
  value,
1028
- values = DEFAULT_PROPS$1g.values,
1028
+ values = DEFAULT_PROPS$1h.values,
1029
1029
  ...forwardedProps
1030
1030
  } = otherProps;
1031
1031
  return /*#__PURE__*/jsx(Autocomplete, {
@@ -1067,7 +1067,7 @@ const AutocompleteMultiple = forwardRef((props, ref) => {
1067
1067
  });
1068
1068
  AutocompleteMultiple.displayName = COMPONENT_NAME$1D;
1069
1069
  AutocompleteMultiple.className = CLASSNAME$1A;
1070
- AutocompleteMultiple.defaultProps = DEFAULT_PROPS$1g;
1070
+ AutocompleteMultiple.defaultProps = DEFAULT_PROPS$1h;
1071
1071
 
1072
1072
  /**
1073
1073
  * Component display name.
@@ -1086,7 +1086,7 @@ const {
1086
1086
  /**
1087
1087
  * Component default props.
1088
1088
  */
1089
- const DEFAULT_PROPS$1f = {
1089
+ const DEFAULT_PROPS$1g = {
1090
1090
  size: Size.m
1091
1091
  };
1092
1092
 
@@ -1103,7 +1103,7 @@ const Avatar$1 = props => {
1103
1103
  badge,
1104
1104
  className,
1105
1105
  image,
1106
- size = DEFAULT_PROPS$1f.size,
1106
+ size = DEFAULT_PROPS$1g.size,
1107
1107
  theme,
1108
1108
  ref,
1109
1109
  ...forwardedProps
@@ -1144,7 +1144,7 @@ const Avatar = forwardRef((props, ref) => {
1144
1144
  linkAs,
1145
1145
  onClick,
1146
1146
  onKeyPress,
1147
- size = DEFAULT_PROPS$1f.size,
1147
+ size = DEFAULT_PROPS$1g.size,
1148
1148
  theme = defaultTheme,
1149
1149
  thumbnailProps,
1150
1150
  ...forwardedProps
@@ -1174,7 +1174,7 @@ const Avatar = forwardRef((props, ref) => {
1174
1174
  });
1175
1175
  Avatar.displayName = COMPONENT_NAME$1C;
1176
1176
  Avatar.className = CLASSNAME$1z;
1177
- Avatar.defaultProps = DEFAULT_PROPS$1f;
1177
+ Avatar.defaultProps = DEFAULT_PROPS$1g;
1178
1178
 
1179
1179
  /**
1180
1180
  * Component display name.
@@ -1192,7 +1192,7 @@ const {
1192
1192
  /**
1193
1193
  * Component default props.
1194
1194
  */
1195
- const DEFAULT_PROPS$1e = {
1195
+ const DEFAULT_PROPS$1f = {
1196
1196
  color: ColorPalette.primary
1197
1197
  };
1198
1198
 
@@ -1206,7 +1206,7 @@ const Badge$1 = props => {
1206
1206
  const {
1207
1207
  children,
1208
1208
  className,
1209
- color = DEFAULT_PROPS$1e.color,
1209
+ color = DEFAULT_PROPS$1f.color,
1210
1210
  ref,
1211
1211
  ...forwardedProps
1212
1212
  } = props;
@@ -1221,7 +1221,7 @@ const Badge$1 = props => {
1221
1221
  };
1222
1222
  Badge$1.displayName = COMPONENT_NAME$1B;
1223
1223
  Badge$1.className = CLASSNAME$1y;
1224
- Badge$1.defaultProps = DEFAULT_PROPS$1e;
1224
+ Badge$1.defaultProps = DEFAULT_PROPS$1f;
1225
1225
 
1226
1226
  /**
1227
1227
  * Defines the props of the component.
@@ -1447,7 +1447,7 @@ const {
1447
1447
  /**
1448
1448
  * Component default props.
1449
1449
  */
1450
- const DEFAULT_PROPS$1d = {
1450
+ const DEFAULT_PROPS$1e = {
1451
1451
  emphasis: Emphasis.high,
1452
1452
  size: Size.m
1453
1453
  };
@@ -1461,10 +1461,10 @@ const DEFAULT_PROPS$1d = {
1461
1461
  const Button$1 = props => {
1462
1462
  const {
1463
1463
  className,
1464
- emphasis = DEFAULT_PROPS$1d.emphasis,
1464
+ emphasis = DEFAULT_PROPS$1e.emphasis,
1465
1465
  leftIcon,
1466
1466
  rightIcon,
1467
- size = DEFAULT_PROPS$1d.size,
1467
+ size = DEFAULT_PROPS$1e.size,
1468
1468
  ...forwardedProps
1469
1469
  } = props;
1470
1470
  const buttonClassName = classnames(className, modifier({
@@ -1481,7 +1481,7 @@ const Button$1 = props => {
1481
1481
  };
1482
1482
  Button$1.displayName = COMPONENT_NAME$1y;
1483
1483
  Button$1.className = CLASSNAME$1w;
1484
- Button$1.defaultProps = DEFAULT_PROPS$1d;
1484
+ Button$1.defaultProps = DEFAULT_PROPS$1e;
1485
1485
 
1486
1486
  /**
1487
1487
  * Properties of a component to use to determine it's name.
@@ -1556,7 +1556,7 @@ const Button = forwardRef((props, ref) => {
1556
1556
  });
1557
1557
  Button.displayName = COMPONENT_NAME$1y;
1558
1558
  Button.className = CLASSNAME$1w;
1559
- Button.defaultProps = DEFAULT_PROPS$1d;
1559
+ Button.defaultProps = DEFAULT_PROPS$1e;
1560
1560
 
1561
1561
  const COMPONENT_NAME$1x = 'Icon';
1562
1562
  const IconClassName = 'lumx-icon';
@@ -1573,7 +1573,7 @@ const {
1573
1573
  /**
1574
1574
  * Component default props.
1575
1575
  */
1576
- const DEFAULT_PROPS$1c = {};
1576
+ const DEFAULT_PROPS$1d = {};
1577
1577
 
1578
1578
  /**
1579
1579
  * Icon component.
@@ -1653,7 +1653,7 @@ const Icon$1 = props => {
1653
1653
  };
1654
1654
  Icon$1.displayName = COMPONENT_NAME$1x;
1655
1655
  Icon$1.className = CLASSNAME$1v;
1656
- Icon$1.defaultProps = DEFAULT_PROPS$1c;
1656
+ Icon$1.defaultProps = DEFAULT_PROPS$1d;
1657
1657
 
1658
1658
  /**
1659
1659
  * Component display name.
@@ -1668,7 +1668,7 @@ const CLASSNAME$1u = 'lumx-icon-button';
1668
1668
  /**
1669
1669
  * Component default props.
1670
1670
  */
1671
- const DEFAULT_PROPS$1b = {
1671
+ const DEFAULT_PROPS$1c = {
1672
1672
  emphasis: Emphasis.high,
1673
1673
  size: Size.m
1674
1674
  };
@@ -1681,11 +1681,11 @@ const DEFAULT_PROPS$1b = {
1681
1681
  */
1682
1682
  const IconButton$1 = props => {
1683
1683
  const {
1684
- emphasis = DEFAULT_PROPS$1b.emphasis,
1684
+ emphasis = DEFAULT_PROPS$1c.emphasis,
1685
1685
  image,
1686
1686
  icon,
1687
1687
  label,
1688
- size = DEFAULT_PROPS$1b.size,
1688
+ size = DEFAULT_PROPS$1c.size,
1689
1689
  ...forwardedProps
1690
1690
  } = props;
1691
1691
  const defaultChildren = image ? /*#__PURE__*/jsx("img", {
@@ -1706,7 +1706,7 @@ const IconButton$1 = props => {
1706
1706
  };
1707
1707
  IconButton$1.displayName = COMPONENT_NAME$1w;
1708
1708
  IconButton$1.className = CLASSNAME$1u;
1709
- IconButton$1.defaultProps = DEFAULT_PROPS$1b;
1709
+ IconButton$1.defaultProps = DEFAULT_PROPS$1c;
1710
1710
 
1711
1711
  /**
1712
1712
  * IconButton component.
@@ -1751,7 +1751,7 @@ const IconButton = forwardRef((props, ref) => {
1751
1751
  });
1752
1752
  IconButton.displayName = COMPONENT_NAME$1w;
1753
1753
  IconButton.className = CLASSNAME$1u;
1754
- IconButton.defaultProps = DEFAULT_PROPS$1b;
1754
+ IconButton.defaultProps = DEFAULT_PROPS$1c;
1755
1755
 
1756
1756
  /**
1757
1757
  * Component display name.
@@ -1766,7 +1766,7 @@ const CLASSNAME$1t = 'lumx-button-group';
1766
1766
  /**
1767
1767
  * Component default props.
1768
1768
  */
1769
- const DEFAULT_PROPS$1a = {};
1769
+ const DEFAULT_PROPS$1b = {};
1770
1770
 
1771
1771
  /**
1772
1772
  * ButtonGroup component.
@@ -1788,7 +1788,7 @@ const ButtonGroup$1 = props => {
1788
1788
  };
1789
1789
  ButtonGroup$1.displayName = COMPONENT_NAME$1v;
1790
1790
  ButtonGroup$1.className = CLASSNAME$1t;
1791
- ButtonGroup$1.defaultProps = DEFAULT_PROPS$1a;
1791
+ ButtonGroup$1.defaultProps = DEFAULT_PROPS$1b;
1792
1792
 
1793
1793
  /**
1794
1794
  * ButtonGroup component.
@@ -1805,7 +1805,7 @@ const ButtonGroup = forwardRef((props, ref) => {
1805
1805
  });
1806
1806
  ButtonGroup.displayName = COMPONENT_NAME$1v;
1807
1807
  ButtonGroup.className = CLASSNAME$1t;
1808
- ButtonGroup.defaultProps = DEFAULT_PROPS$1a;
1808
+ ButtonGroup.defaultProps = DEFAULT_PROPS$1b;
1809
1809
 
1810
1810
  const COMPONENT_NAME$1u = 'InputLabel';
1811
1811
  const InputLabelClassName = 'lumx-input-label';
@@ -1813,7 +1813,7 @@ const CLASSNAME$1s = InputLabelClassName;
1813
1813
  const {
1814
1814
  block: block$16
1815
1815
  } = bem(CLASSNAME$1s);
1816
- const DEFAULT_PROPS$19 = {};
1816
+ const DEFAULT_PROPS$1a = {};
1817
1817
 
1818
1818
  /**
1819
1819
  * InputLabel component.
@@ -1845,7 +1845,7 @@ function InputLabel$1(props) {
1845
1845
  }
1846
1846
  InputLabel$1.displayName = COMPONENT_NAME$1u;
1847
1847
  InputLabel$1.className = CLASSNAME$1s;
1848
- InputLabel$1.defaultProps = DEFAULT_PROPS$19;
1848
+ InputLabel$1.defaultProps = DEFAULT_PROPS$1a;
1849
1849
 
1850
1850
  const INPUT_HELPER_CONFIGURATION = {
1851
1851
  [Kind.error]: {
@@ -1874,7 +1874,7 @@ const {
1874
1874
  /**
1875
1875
  * Component default props.
1876
1876
  */
1877
- const DEFAULT_PROPS$18 = {
1877
+ const DEFAULT_PROPS$19 = {
1878
1878
  kind: Kind.info
1879
1879
  };
1880
1880
 
@@ -1885,7 +1885,7 @@ function InputHelper$1(props) {
1885
1885
  const {
1886
1886
  children,
1887
1887
  className,
1888
- kind = DEFAULT_PROPS$18.kind,
1888
+ kind = DEFAULT_PROPS$19.kind,
1889
1889
  theme,
1890
1890
  ref,
1891
1891
  ...forwardedProps
@@ -1905,7 +1905,7 @@ function InputHelper$1(props) {
1905
1905
  }
1906
1906
  InputHelper$1.displayName = COMPONENT_NAME$1t;
1907
1907
  InputHelper$1.className = CLASSNAME$1r;
1908
- InputHelper$1.defaultProps = DEFAULT_PROPS$18;
1908
+ InputHelper$1.defaultProps = DEFAULT_PROPS$19;
1909
1909
 
1910
1910
  const INTERMEDIATE_STATE = 'intermediate';
1911
1911
 
@@ -2020,7 +2020,7 @@ const Checkbox$1 = props => {
2020
2020
  /**
2021
2021
  * Component default props.
2022
2022
  */
2023
- const DEFAULT_PROPS$17 = {};
2023
+ const DEFAULT_PROPS$18 = {};
2024
2024
 
2025
2025
  /**
2026
2026
  * Checkbox component.
@@ -2082,7 +2082,7 @@ const Checkbox = forwardRef((props, ref) => {
2082
2082
  });
2083
2083
  Checkbox.displayName = COMPONENT_NAME$1s;
2084
2084
  Checkbox.className = CLASSNAME$1q;
2085
- Checkbox.defaultProps = DEFAULT_PROPS$17;
2085
+ Checkbox.defaultProps = DEFAULT_PROPS$18;
2086
2086
 
2087
2087
  /**
2088
2088
  * Wrap mouse event handler to stop event propagation.
@@ -2117,7 +2117,7 @@ const {
2117
2117
  /**
2118
2118
  * Component default props.
2119
2119
  */
2120
- const DEFAULT_PROPS$16 = {
2120
+ const DEFAULT_PROPS$17 = {
2121
2121
  size: Size.m
2122
2122
  };
2123
2123
 
@@ -2144,7 +2144,7 @@ const Chip$1 = props => {
2144
2144
  hasAfterClick,
2145
2145
  hasBeforeClick,
2146
2146
  hasOnClick,
2147
- size = DEFAULT_PROPS$16.size,
2147
+ size = DEFAULT_PROPS$17.size,
2148
2148
  theme,
2149
2149
  ref,
2150
2150
  href,
@@ -2266,7 +2266,7 @@ const Chip = forwardRef((props, ref) => {
2266
2266
  });
2267
2267
  Chip.displayName = COMPONENT_NAME$1r;
2268
2268
  Chip.className = CLASSNAME$1p;
2269
- Chip.defaultProps = DEFAULT_PROPS$16;
2269
+ Chip.defaultProps = DEFAULT_PROPS$17;
2270
2270
 
2271
2271
  /**
2272
2272
  * Component display name.
@@ -2281,7 +2281,7 @@ const CLASSNAME$1o = 'lumx-chip-group';
2281
2281
  /**
2282
2282
  * Component default props.
2283
2283
  */
2284
- const DEFAULT_PROPS$15 = {};
2284
+ const DEFAULT_PROPS$16 = {};
2285
2285
 
2286
2286
  /**
2287
2287
  * ChipGroup component.
@@ -2379,7 +2379,7 @@ const InternalChipGroup = forwardRef((props, ref) => {
2379
2379
  });
2380
2380
  InternalChipGroup.displayName = COMPONENT_NAME$1q;
2381
2381
  InternalChipGroup.className = CLASSNAME$1o;
2382
- InternalChipGroup.defaultProps = DEFAULT_PROPS$15;
2382
+ InternalChipGroup.defaultProps = DEFAULT_PROPS$16;
2383
2383
  const ChipGroup = Object.assign(InternalChipGroup, {
2384
2384
  useChipGroupNavigation
2385
2385
  });
@@ -2722,7 +2722,7 @@ const {
2722
2722
  /**
2723
2723
  * Component default props.
2724
2724
  */
2725
- const DEFAULT_PROPS$14 = {};
2725
+ const DEFAULT_PROPS$15 = {};
2726
2726
 
2727
2727
  /**
2728
2728
  * Text component common props
@@ -2809,7 +2809,7 @@ const Text = forwardRef((props, ref) => {
2809
2809
  });
2810
2810
  Text.displayName = COMPONENT_NAME$1o;
2811
2811
  Text.className = CLASSNAME$1m;
2812
- Text.defaultProps = DEFAULT_PROPS$14;
2812
+ Text.defaultProps = DEFAULT_PROPS$15;
2813
2813
 
2814
2814
  /**
2815
2815
  * Custom positioning reference element.
@@ -4891,7 +4891,7 @@ const TOOLTIP_ZINDEX = 10000;
4891
4891
  /**
4892
4892
  * Component default props.
4893
4893
  */
4894
- const DEFAULT_PROPS$13 = {
4894
+ const DEFAULT_PROPS$14 = {
4895
4895
  placement: 'bottom',
4896
4896
  closeMode: 'unmount',
4897
4897
  ariaLinkMode: 'aria-describedby',
@@ -5255,11 +5255,11 @@ const Tooltip = forwardRef((props, ref) => {
5255
5255
  children,
5256
5256
  className,
5257
5257
  delay,
5258
- placement = DEFAULT_PROPS$13.placement,
5258
+ placement = DEFAULT_PROPS$14.placement,
5259
5259
  forceOpen,
5260
- closeMode = DEFAULT_PROPS$13.closeMode,
5261
- ariaLinkMode = DEFAULT_PROPS$13.ariaLinkMode,
5262
- zIndex = DEFAULT_PROPS$13.zIndex,
5260
+ closeMode = DEFAULT_PROPS$14.closeMode,
5261
+ ariaLinkMode = DEFAULT_PROPS$14.ariaLinkMode,
5262
+ zIndex = DEFAULT_PROPS$14.zIndex,
5263
5263
  ...forwardedProps
5264
5264
  } = props;
5265
5265
  // Disable in SSR.
@@ -5324,7 +5324,7 @@ const Tooltip = forwardRef((props, ref) => {
5324
5324
  });
5325
5325
  Tooltip.displayName = COMPONENT_NAME$1n;
5326
5326
  Tooltip.className = CLASSNAME$1l;
5327
- Tooltip.defaultProps = DEFAULT_PROPS$13;
5327
+ Tooltip.defaultProps = DEFAULT_PROPS$14;
5328
5328
 
5329
5329
  /** Create a pending navigation store; discards intent on abort. */
5330
5330
  function createPendingNavigation(signal) {
@@ -6460,6 +6460,12 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6460
6460
  /** Last notified input value, to re-fire `optionsChange` when the user keeps typing while empty. */
6461
6461
  let lastInputValue = '';
6462
6462
 
6463
+ /** Last notified loading state, used to replay current state to late subscribers. */
6464
+ let lastLoadingState = false;
6465
+
6466
+ /** Number of currently mounted skeleton placeholders. */
6467
+ let skeletonCount = 0;
6468
+
6463
6469
  /** Event subscribers managed by the handle. */
6464
6470
  const subscribers = {
6465
6471
  open: new Set(),
@@ -6474,6 +6480,20 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6474
6480
  subscribers[event].forEach(cb => cb(value));
6475
6481
  }
6476
6482
 
6483
+ /** Count visible (non-filtered) options. */
6484
+ function getVisibleOptionCount() {
6485
+ let count = 0;
6486
+ for (const reg of optionRegistrations.values()) {
6487
+ if (!reg.lastFiltered) count += 1;
6488
+ }
6489
+ return count;
6490
+ }
6491
+
6492
+ /** True when the popup has visible content (options or skeletons). */
6493
+ function hasVisibleContent() {
6494
+ return getVisibleOptionCount() > 0 || skeletonCount > 0;
6495
+ }
6496
+
6477
6497
  /**
6478
6498
  * Notify all registered sections and fire `optionsChange` if the visible option count changed
6479
6499
  * or if the input value changed while the list is empty (so `emptyMessage` callbacks get
@@ -6484,10 +6504,7 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6484
6504
  for (const [sectionElement] of sectionRegistrations) {
6485
6505
  notifySection(sectionElement, sectionRegistrations, optionRegistrations);
6486
6506
  }
6487
- let visibleCount = 0;
6488
- for (const reg of optionRegistrations.values()) {
6489
- if (!reg.lastFiltered) visibleCount += 1;
6490
- }
6507
+ const visibleCount = getVisibleOptionCount();
6491
6508
  const inputValue = trigger?.value ?? '';
6492
6509
  const isEmpty = visibleCount === 0;
6493
6510
  if (visibleCount !== lastOptionsLength || isEmpty && inputValue !== lastInputValue) {
@@ -6498,6 +6515,12 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6498
6515
  inputValue
6499
6516
  });
6500
6517
  }
6518
+
6519
+ // Re-evaluate aria-expanded when the combobox is open — visible content may have
6520
+ // changed due to filtering, option register/unregister, or skeleton transitions.
6521
+ if (isOpenState) {
6522
+ trigger?.setAttribute('aria-expanded', String(hasVisibleContent()));
6523
+ }
6501
6524
  }
6502
6525
 
6503
6526
  // ── Skeleton loading tracking ──────────────────────────────
@@ -6505,9 +6528,6 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6505
6528
  /** Delay before announcing loading in the live region (ms). */
6506
6529
  const LOADING_ANNOUNCEMENT_DELAY = 500;
6507
6530
 
6508
- /** Number of currently mounted skeleton placeholders. */
6509
- let skeletonCount = 0;
6510
-
6511
6531
  /** Timer for debounced loading announcement. */
6512
6532
  let loadingTimer;
6513
6533
 
@@ -6533,6 +6553,7 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6533
6553
  */
6534
6554
  function onSkeletonCountChange() {
6535
6555
  const isLoading = skeletonCount > 0;
6556
+ lastLoadingState = isLoading;
6536
6557
  notify('loadingChange', isLoading);
6537
6558
  if (isLoading) {
6538
6559
  startLoadingAnnouncementTimer();
@@ -6735,8 +6756,8 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6735
6756
  startLoadingAnnouncementTimer();
6736
6757
  }
6737
6758
 
6738
- // Update aria-expanded on trigger
6739
- trigger?.setAttribute('aria-expanded', String(isOpen));
6759
+ // Update aria-expanded on trigger (false when no visible options or skeletons)
6760
+ trigger?.setAttribute('aria-expanded', String(isOpen && hasVisibleContent()));
6740
6761
  notify('open', isOpen);
6741
6762
  },
6742
6763
  select(option) {
@@ -6871,6 +6892,17 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6871
6892
  },
6872
6893
  subscribe(event, callback) {
6873
6894
  subscribers[event].add(callback);
6895
+ // Replay current loading state to late subscribers so that framework wrappers
6896
+ // that subscribe after initial mount (e.g. async Vue watchers) don't miss the
6897
+ // initial events fired during mount.
6898
+ if (event === 'open' && isOpenState) {
6899
+ callback(true);
6900
+ }
6901
+ if (event === 'loadingChange' && lastLoadingState) {
6902
+ callback(true);
6903
+ }
6904
+
6905
+ // Cleanup function
6874
6906
  return () => {
6875
6907
  subscribers[event].delete(callback);
6876
6908
  };
@@ -6882,6 +6914,7 @@ function setupCombobox(callbacks, options, onTriggerAttach) {
6882
6914
  filterValue = '';
6883
6915
  lastOptionsLength = 0;
6884
6916
  lastInputValue = '';
6917
+ lastLoadingState = false;
6885
6918
  optionRegistrations.clear();
6886
6919
  sectionRegistrations.clear();
6887
6920
  skeletonCount = 0;
@@ -7278,6 +7311,10 @@ const ComboboxButton = Object.assign(forwardRefPolymorphic((props, ref) => {
7278
7311
  setHandle
7279
7312
  } = useComboboxContext();
7280
7313
  const [isOpen] = useComboboxOpen();
7314
+ const state = useComboboxEvent('optionsChange', {
7315
+ optionsLength: 0
7316
+ });
7317
+ const isLoading = useComboboxEvent('loadingChange', false);
7281
7318
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7282
7319
  const {
7283
7320
  as,
@@ -7319,7 +7356,7 @@ const ComboboxButton = Object.assign(forwardRefPolymorphic((props, ref) => {
7319
7356
  value,
7320
7357
  labelDisplayMode,
7321
7358
  listboxId,
7322
- isOpen,
7359
+ isOpen: isOpen && (!!state?.optionsLength || isLoading),
7323
7360
  ref: mergedRef
7324
7361
  }, {
7325
7362
  Button: ButtonComp,
@@ -7369,13 +7406,15 @@ function setupComboboxInput(input, options) {
7369
7406
  /**
7370
7407
  * Wraps the consumer's onSelect to perform input-mode side effects after selection:
7371
7408
  * resets the filter and typing state.
7409
+ * Forwards the return value of the consumer callback.
7372
7410
  */
7373
7411
  const onSelect = option => {
7374
- optionOnSelect?.(option);
7412
+ const result = optionOnSelect?.(option);
7375
7413
  userHasTyped = false;
7376
7414
  if (autoFilter) {
7377
7415
  handle.setFilter('');
7378
7416
  }
7417
+ return result;
7379
7418
  };
7380
7419
  handle = setupCombobox({
7381
7420
  onSelect
@@ -7731,7 +7770,7 @@ const {
7731
7770
  /**
7732
7771
  * Component default props.
7733
7772
  */
7734
- const DEFAULT_PROPS$12 = {
7773
+ const DEFAULT_PROPS$13 = {
7735
7774
  type: 'text'
7736
7775
  };
7737
7776
 
@@ -7748,7 +7787,7 @@ const RawInputText$1 = props => {
7748
7787
  handleInput,
7749
7788
  handleFocus,
7750
7789
  handleBlur,
7751
- type = DEFAULT_PROPS$12.type,
7790
+ type = DEFAULT_PROPS$13.type,
7752
7791
  name,
7753
7792
  ref,
7754
7793
  ...forwardedProps
@@ -7810,7 +7849,7 @@ const {
7810
7849
  /**
7811
7850
  * Component default props.
7812
7851
  */
7813
- const DEFAULT_PROPS$11 = {
7852
+ const DEFAULT_PROPS$12 = {
7814
7853
  rows: 2
7815
7854
  };
7816
7855
 
@@ -7827,7 +7866,7 @@ const RawInputTextarea$1 = props => {
7827
7866
  handleInput,
7828
7867
  handleFocus,
7829
7868
  handleBlur,
7830
- rows = DEFAULT_PROPS$11.rows,
7869
+ rows = DEFAULT_PROPS$12.rows,
7831
7870
  name,
7832
7871
  ref,
7833
7872
  ...forwardedProps
@@ -7903,8 +7942,8 @@ function useFitRowsToContent(minimumRows, textareaRef, value) {
7903
7942
  /**
7904
7943
  * Component default props.
7905
7944
  */
7906
- const DEFAULT_PROPS$10 = {
7907
- minimumRows: DEFAULT_PROPS$11.rows
7945
+ const DEFAULT_PROPS$11 = {
7946
+ minimumRows: DEFAULT_PROPS$12.rows
7908
7947
  };
7909
7948
 
7910
7949
  /**
@@ -7915,7 +7954,7 @@ const RawInputTextarea = forwardRef((props, ref) => {
7915
7954
  const defaultTheme = useTheme() || Theme$1.light;
7916
7955
  const {
7917
7956
  theme = defaultTheme,
7918
- minimumRows = DEFAULT_PROPS$10.minimumRows,
7957
+ minimumRows = DEFAULT_PROPS$11.minimumRows,
7919
7958
  value,
7920
7959
  onChange,
7921
7960
  onFocus,
@@ -7939,7 +7978,7 @@ const RawInputTextarea = forwardRef((props, ref) => {
7939
7978
  /**
7940
7979
  * Component default props.
7941
7980
  */
7942
- const DEFAULT_PROPS$$ = {
7981
+ const DEFAULT_PROPS$10 = {
7943
7982
  type: 'text'
7944
7983
  };
7945
7984
 
@@ -7983,7 +8022,7 @@ const TextField = forwardRef((props, ref) => {
7983
8022
  placeholder,
7984
8023
  textFieldRef,
7985
8024
  theme = defaultTheme,
7986
- type = DEFAULT_PROPS$$.type,
8025
+ type = DEFAULT_PROPS$10.type,
7987
8026
  value,
7988
8027
  afterElement,
7989
8028
  ...forwardedProps
@@ -8090,7 +8129,7 @@ const TextField = forwardRef((props, ref) => {
8090
8129
  });
8091
8130
  TextField.displayName = COMPONENT_NAME$1k;
8092
8131
  TextField.className = CLASSNAME$1i;
8093
- TextField.defaultProps = DEFAULT_PROPS$$;
8132
+ TextField.defaultProps = DEFAULT_PROPS$10;
8094
8133
 
8095
8134
  /**
8096
8135
  * Props for Combobox.Input component.
@@ -8112,6 +8151,10 @@ const ComboboxInput = forwardRef((props, ref) => {
8112
8151
  setHandle
8113
8152
  } = useComboboxContext();
8114
8153
  const [isOpen, setIsOpen] = useComboboxOpen();
8154
+ const state = useComboboxEvent('optionsChange', {
8155
+ optionsLength: 0
8156
+ });
8157
+ const isLoading = useComboboxEvent('loadingChange', false);
8115
8158
  const {
8116
8159
  inputRef: externalInputRef,
8117
8160
  toggleButtonProps,
@@ -8135,9 +8178,13 @@ const ComboboxInput = forwardRef((props, ref) => {
8135
8178
  if (!input) return undefined;
8136
8179
  const handle = setupComboboxInput(input, {
8137
8180
  onSelect(option) {
8138
- // Update controlled value through React's normal onChange flow.
8139
- onChangeRef.current?.(option.value);
8140
- onSelectRef.current?.(option);
8181
+ // Fire consumer callback first so it can return false before onChange.
8182
+ const prevented = onSelectRef.current?.(option) === false;
8183
+ // Update controlled value through React's normal onChange flow,
8184
+ // unless the consumer returned false.
8185
+ if (!prevented) {
8186
+ onChangeRef.current?.(option.value);
8187
+ }
8141
8188
  },
8142
8189
  onInput(value) {
8143
8190
  // Keep controlled value in sync.
@@ -8160,7 +8207,7 @@ const ComboboxInput = forwardRef((props, ref) => {
8160
8207
  ...otherProps,
8161
8208
  ref,
8162
8209
  listboxId,
8163
- isOpen,
8210
+ isOpen: isOpen && (!!state?.optionsLength || isLoading),
8164
8211
  filter,
8165
8212
  inputRef: mergedInputRef,
8166
8213
  textFieldRef: anchorRef,
@@ -8190,7 +8237,7 @@ const {
8190
8237
  /**
8191
8238
  * Component default props.
8192
8239
  */
8193
- const DEFAULT_PROPS$_ = {};
8240
+ const DEFAULT_PROPS$$ = {};
8194
8241
 
8195
8242
  /**
8196
8243
  * List component.
@@ -8217,7 +8264,7 @@ const List$1 = props => {
8217
8264
  };
8218
8265
  List$1.displayName = COMPONENT_NAME$1j;
8219
8266
  List$1.className = CLASSNAME$1h;
8220
- List$1.defaultProps = DEFAULT_PROPS$_;
8267
+ List$1.defaultProps = DEFAULT_PROPS$$;
8221
8268
 
8222
8269
  /**
8223
8270
  * Popup type for the combobox listbox.
@@ -8369,7 +8416,7 @@ const {
8369
8416
  /**
8370
8417
  * Component default props.
8371
8418
  */
8372
- const DEFAULT_PROPS$Z = {
8419
+ const DEFAULT_PROPS$_ = {
8373
8420
  size: Size.regular
8374
8421
  };
8375
8422
 
@@ -8393,7 +8440,7 @@ const ListItem$1 = props => {
8393
8440
  linkProps = {},
8394
8441
  linkRef,
8395
8442
  handleClick,
8396
- size = DEFAULT_PROPS$Z.size,
8443
+ size = DEFAULT_PROPS$_.size,
8397
8444
  ref,
8398
8445
  ...forwardedProps
8399
8446
  } = props;
@@ -8433,7 +8480,7 @@ const ListItem$1 = props => {
8433
8480
  };
8434
8481
  ListItem$1.displayName = COMPONENT_NAME$1h;
8435
8482
  ListItem$1.className = CLASSNAME$1f;
8436
- ListItem$1.defaultProps = DEFAULT_PROPS$Z;
8483
+ ListItem$1.defaultProps = DEFAULT_PROPS$_;
8437
8484
 
8438
8485
  /**
8439
8486
  * ListItemAction props.
@@ -8448,7 +8495,7 @@ const COMPONENT_NAME$1g = 'ListItemAction';
8448
8495
  * Component classname (used by action area CSS pattern).
8449
8496
  */
8450
8497
  const CLASSNAME$1e = 'lumx-action-area__action';
8451
- const DEFAULT_PROPS$Y = {};
8498
+ const DEFAULT_PROPS$Z = {};
8452
8499
 
8453
8500
  /**
8454
8501
  * ListItemAction component.
@@ -9068,15 +9115,6 @@ const Placement = {
9068
9115
  LEFT_END: 'left-end',
9069
9116
  LEFT_START: 'left-start'
9070
9117
  };
9071
-
9072
- /**
9073
- * Offset of the popover.
9074
- */
9075
-
9076
- /**
9077
- * Popover elevation index.
9078
- */
9079
-
9080
9118
  /**
9081
9119
  * Popover fit anchor width options.
9082
9120
  */
@@ -9092,6 +9130,11 @@ const ARROW_SIZE = 14;
9092
9130
  */
9093
9131
  const POPOVER_ZINDEX = 9999;
9094
9132
 
9133
+ /**
9134
+ * Popover height/width sizes
9135
+ */
9136
+ [Size.m, Size.l, Size.xl, Size.xxl];
9137
+
9095
9138
  /**
9096
9139
  * Component display name.
9097
9140
  */
@@ -9109,7 +9152,7 @@ const {
9109
9152
  /**
9110
9153
  * Component default props (used by framework wrappers).
9111
9154
  */
9112
- const DEFAULT_PROPS$X = {
9155
+ const DEFAULT_PROPS$Y = {
9113
9156
  closeMode: 'unmount',
9114
9157
  elevation: 3,
9115
9158
  placement: Placement.AUTO,
@@ -9133,8 +9176,8 @@ const Popover$1 = (props, {
9133
9176
  as: asTag = 'div',
9134
9177
  children,
9135
9178
  className,
9136
- closeMode = DEFAULT_PROPS$X.closeMode,
9137
- elevation = DEFAULT_PROPS$X.elevation,
9179
+ closeMode = DEFAULT_PROPS$Y.closeMode,
9180
+ elevation = DEFAULT_PROPS$Y.elevation,
9138
9181
  hasArrow,
9139
9182
  isOpen,
9140
9183
  position,
@@ -9144,7 +9187,7 @@ const Popover$1 = (props, {
9144
9187
  // Framework-specific
9145
9188
  ref,
9146
9189
  arrowRef,
9147
- usePortal = DEFAULT_PROPS$X.usePortal,
9190
+ usePortal = DEFAULT_PROPS$Y.usePortal,
9148
9191
  clickAwayCallback,
9149
9192
  clickAwayRefs,
9150
9193
  unmountSentinel,
@@ -9275,8 +9318,6 @@ function useRestoreFocusOnClose({
9275
9318
  });
9276
9319
  }
9277
9320
 
9278
- /* eslint-disable no-param-reassign */
9279
-
9280
9321
  /**
9281
9322
  * Parse a Popover placement into floating-ui placement or auto-placement config.
9282
9323
  */
@@ -9306,6 +9347,29 @@ function parseFitWidth(fitToAnchorWidth) {
9306
9347
  if (typeof fitToAnchorWidth === 'string') return fitToAnchorWidth;
9307
9348
  return FitAnchorWidth.MIN_WIDTH;
9308
9349
  }
9350
+
9351
+ /** Resolve a t-shirt size token to its CSS custom property, or pass through as-is. */
9352
+
9353
+ function resolveCssSize(value) {
9354
+ if (value && value in Size) return `var(--lumx-size-${value})`;
9355
+ return value;
9356
+ }
9357
+
9358
+ /** Create a CSS min()/max() combiner function. */
9359
+ function combineSize(combinator) {
9360
+ return (size1, size2) => {
9361
+ if (size1 && size2) return `${combinator}(${size1}, ${size2})`;
9362
+ return size1 || size2 || '';
9363
+ };
9364
+ }
9365
+
9366
+ /** Combine two CSS values with `min()`. */
9367
+ const cssMin = combineSize('min');
9368
+
9369
+ /** Combine two CSS values with `max()`. */
9370
+ const cssMax = combineSize('max');
9371
+
9372
+ /* eslint-disable no-param-reassign */
9309
9373
  /**
9310
9374
  * Build the floating-ui middleware array for popover positioning.
9311
9375
  *
@@ -9317,10 +9381,24 @@ function buildPopoverMiddleware(options) {
9317
9381
  hasArrow,
9318
9382
  fitWidth,
9319
9383
  fitWithinViewportHeight,
9384
+ width: rawWidth,
9385
+ minWidth: rawMinWidth,
9386
+ maxWidth: rawMaxWidth,
9387
+ height: rawHeight,
9388
+ minHeight: rawMinHeight,
9389
+ maxHeight: rawMaxHeight,
9320
9390
  boundary,
9321
9391
  parsedPlacement,
9322
9392
  arrowElement
9323
9393
  } = options;
9394
+
9395
+ // Resolve t-shirt sizes to CSS pixel strings for the apply callback.
9396
+ const width = resolveCssSize(rawWidth);
9397
+ const minWidth = resolveCssSize(rawMinWidth);
9398
+ const maxWidth = resolveCssSize(rawMaxWidth);
9399
+ const height = resolveCssSize(rawHeight);
9400
+ const minHeight = resolveCssSize(rawMinHeight);
9401
+ const maxHeight = resolveCssSize(rawMaxHeight);
9324
9402
  const middlewares = [];
9325
9403
 
9326
9404
  // Offset middleware
@@ -9348,8 +9426,9 @@ function buildPopoverMiddleware(options) {
9348
9426
  } : {}));
9349
9427
  }
9350
9428
 
9351
- // Size middleware
9352
- if (fitWidth || fitWithinViewportHeight) {
9429
+ // Size middleware — always required when any sizing constraint is set
9430
+ const anySizeConstraint = !!fitWidth || !!fitWithinViewportHeight || width || minWidth || maxWidth || height || minHeight || maxHeight;
9431
+ if (anySizeConstraint) {
9353
9432
  middlewares.push(size({
9354
9433
  ...(boundary ? {
9355
9434
  boundary
@@ -9359,14 +9438,21 @@ function buildPopoverMiddleware(options) {
9359
9438
  rects,
9360
9439
  elements
9361
9440
  }) {
9362
- if (fitWidth) {
9363
- Object.assign(elements.floating.style, {
9364
- [fitWidth]: `${rects.reference.width}px`
9365
- });
9366
- }
9367
- if (fitWithinViewportHeight) {
9368
- elements.floating.style.maxHeight = `${Math.max(0, availableHeight - ARROW_SIZE)}px`;
9369
- }
9441
+ const anchorWidth = `${rects.reference.width}px`;
9442
+
9443
+ // Width: explicit width wins, else fitToAnchorWidth.
9444
+ elements.floating.style.width = width || (fitWidth === 'width' ? anchorWidth : '');
9445
+ // Min-width: anchor constrained by explicit min-width.
9446
+ elements.floating.style.minWidth = cssMax(minWidth, fitWidth === 'minWidth' ? anchorWidth : '');
9447
+ // Max-width: anchor constrained by explicit max-width.
9448
+ elements.floating.style.maxWidth = cssMin(maxWidth, fitWidth === 'maxWidth' ? anchorWidth : '');
9449
+
9450
+ // Height: explicit values only.
9451
+ elements.floating.style.height = height || '';
9452
+ elements.floating.style.minHeight = minHeight || '';
9453
+ // Max-height: viewport combined with explicit max-height.
9454
+ const adaptedAvailableHeight = `${Math.max(0, availableHeight - ARROW_SIZE)}px`;
9455
+ elements.floating.style.maxHeight = cssMin(maxHeight, fitWithinViewportHeight ? adaptedAvailableHeight : '');
9370
9456
  }
9371
9457
  }));
9372
9458
  }
@@ -9405,6 +9491,12 @@ function usePopoverStyle({
9405
9491
  hasArrow,
9406
9492
  fitToAnchorWidth,
9407
9493
  fitWithinViewportHeight,
9494
+ width,
9495
+ minWidth,
9496
+ maxWidth,
9497
+ height,
9498
+ minHeight,
9499
+ maxHeight,
9408
9500
  boundaryRef,
9409
9501
  anchorRef,
9410
9502
  placement,
@@ -9421,10 +9513,16 @@ function usePopoverStyle({
9421
9513
  hasArrow,
9422
9514
  fitWidth,
9423
9515
  fitWithinViewportHeight,
9516
+ width,
9517
+ minWidth,
9518
+ maxWidth,
9519
+ height,
9520
+ minHeight,
9521
+ maxHeight,
9424
9522
  boundary,
9425
9523
  parsedPlacement,
9426
9524
  arrowElement
9427
- }), [offset, hasArrow, fitWidth, fitWithinViewportHeight, boundary, parsedPlacement, arrowElement]);
9525
+ }), [offset, hasArrow, fitWidth, fitWithinViewportHeight, width, minWidth, maxWidth, height, minHeight, maxHeight, boundary, parsedPlacement, arrowElement]);
9428
9526
  const anchorElement = anchorRef.current;
9429
9527
  const {
9430
9528
  floatingStyles,
@@ -9483,27 +9581,33 @@ const _InnerPopover = forwardRef((props, ref) => {
9483
9581
  as,
9484
9582
  children,
9485
9583
  className,
9486
- closeMode = DEFAULT_PROPS$X.closeMode,
9584
+ closeMode = DEFAULT_PROPS$Y.closeMode,
9487
9585
  closeOnClickAway,
9488
9586
  closeOnEscape,
9489
- elevation = DEFAULT_PROPS$X.elevation,
9587
+ elevation = DEFAULT_PROPS$Y.elevation,
9490
9588
  focusElement,
9491
9589
  hasArrow,
9492
9590
  isOpen,
9493
9591
  onClose,
9494
9592
  parentElement,
9495
- usePortal = DEFAULT_PROPS$X.usePortal,
9496
- focusAnchorOnClose = DEFAULT_PROPS$X.focusAnchorOnClose,
9593
+ usePortal = DEFAULT_PROPS$Y.usePortal,
9594
+ focusAnchorOnClose = DEFAULT_PROPS$Y.focusAnchorOnClose,
9497
9595
  withFocusTrap,
9498
9596
  boundaryRef,
9499
9597
  fitToAnchorWidth,
9500
9598
  fitWithinViewportHeight,
9501
9599
  focusTrapZoneElement,
9600
+ width,
9601
+ minWidth,
9602
+ maxWidth,
9603
+ height,
9604
+ minHeight,
9605
+ maxHeight,
9502
9606
  offset,
9503
- placement = DEFAULT_PROPS$X.placement,
9607
+ placement = DEFAULT_PROPS$Y.placement,
9504
9608
  style,
9505
9609
  theme,
9506
- zIndex = DEFAULT_PROPS$X.zIndex,
9610
+ zIndex = DEFAULT_PROPS$Y.zIndex,
9507
9611
  ...forwardedProps
9508
9612
  } = props;
9509
9613
  const popoverRef = useRef(null);
@@ -9519,6 +9623,12 @@ const _InnerPopover = forwardRef((props, ref) => {
9519
9623
  hasArrow,
9520
9624
  fitToAnchorWidth,
9521
9625
  fitWithinViewportHeight,
9626
+ width,
9627
+ minWidth,
9628
+ maxWidth,
9629
+ height,
9630
+ minHeight,
9631
+ maxHeight,
9522
9632
  boundaryRef,
9523
9633
  anchorRef,
9524
9634
  placement,
@@ -9577,7 +9687,7 @@ const Popover = skipRender(
9577
9687
  () => Boolean(DOCUMENT), _InnerPopover);
9578
9688
  Popover.displayName = COMPONENT_NAME$1c;
9579
9689
  Popover.className = CLASSNAME$1a;
9580
- Popover.defaultProps = DEFAULT_PROPS$X;
9690
+ Popover.defaultProps = DEFAULT_PROPS$Y;
9581
9691
 
9582
9692
  /**
9583
9693
  * Props for Combobox.OptionMoreInfo component.
@@ -9781,6 +9891,8 @@ const ComboboxOptionSkeleton = props => {
9781
9891
  ComboboxOptionSkeleton.displayName = COMPONENT_NAME$1a;
9782
9892
  ComboboxOptionSkeleton.className = CLASSNAME$18;
9783
9893
 
9894
+ const DEFAULT_COMBOBOX_POPOVER_MAX_HEIGHT = '80vh';
9895
+
9784
9896
  const COMPONENT_NAME$19 = 'ComboboxPopover';
9785
9897
 
9786
9898
  /**
@@ -9822,6 +9934,7 @@ const ComboboxPopover$1 = (props, {
9822
9934
  closeOnEscape = false,
9823
9935
  fitToAnchorWidth = true,
9824
9936
  isOpen,
9937
+ maxHeight = DEFAULT_COMBOBOX_POPOVER_MAX_HEIGHT,
9825
9938
  placement = 'bottom-start',
9826
9939
  anchorRef,
9827
9940
  handleClose,
@@ -9831,6 +9944,7 @@ const ComboboxPopover$1 = (props, {
9831
9944
  ...forwardedProps,
9832
9945
  placement: placement,
9833
9946
  fitToAnchorWidth: fitToAnchorWidth,
9947
+ maxHeight: maxHeight,
9834
9948
  className: block$S([className]),
9835
9949
  anchorRef: anchorRef,
9836
9950
  isOpen: isOpen,
@@ -10060,7 +10174,7 @@ const {
10060
10174
  /**
10061
10175
  * Component default props.
10062
10176
  */
10063
- const DEFAULT_PROPS$W = {};
10177
+ const DEFAULT_PROPS$X = {};
10064
10178
 
10065
10179
  /**
10066
10180
  * ListSection component.
@@ -10104,7 +10218,7 @@ const ListSection$1 = props => {
10104
10218
  };
10105
10219
  ListSection$1.displayName = COMPONENT_NAME$16;
10106
10220
  ListSection$1.className = CLASSNAME$14;
10107
- ListSection$1.defaultProps = DEFAULT_PROPS$W;
10221
+ ListSection$1.defaultProps = DEFAULT_PROPS$X;
10108
10222
 
10109
10223
  /**
10110
10224
  * Defines the props of the component.
@@ -10128,7 +10242,7 @@ const ListSection = forwardRef((props, ref) => {
10128
10242
  });
10129
10243
  ListSection.displayName = COMPONENT_NAME$16;
10130
10244
  ListSection.className = CLASSNAME$14;
10131
- ListSection.defaultProps = DEFAULT_PROPS$W;
10245
+ ListSection.defaultProps = DEFAULT_PROPS$X;
10132
10246
 
10133
10247
  /**
10134
10248
  * Props for Combobox.Section component.
@@ -10377,7 +10491,7 @@ const {
10377
10491
  /**
10378
10492
  * Component default props.
10379
10493
  */
10380
- const DEFAULT_PROPS$V = {
10494
+ const DEFAULT_PROPS$W = {
10381
10495
  gap: Size.big,
10382
10496
  orientation: Orientation.horizontal
10383
10497
  };
@@ -10401,10 +10515,10 @@ const GenericBlock$1 = props => {
10401
10515
  children,
10402
10516
  actions,
10403
10517
  actionsProps,
10404
- gap = DEFAULT_PROPS$V.gap,
10518
+ gap = DEFAULT_PROPS$W.gap,
10405
10519
  ref,
10406
10520
  content,
10407
- orientation = DEFAULT_PROPS$V.orientation,
10521
+ orientation = DEFAULT_PROPS$W.orientation,
10408
10522
  contentProps,
10409
10523
  FlexBox,
10410
10524
  ...forwardedProps
@@ -10516,7 +10630,7 @@ const BaseGenericBlock = forwardRef((props, ref) => {
10516
10630
  });
10517
10631
  BaseGenericBlock.displayName = COMPONENT_NAME$14;
10518
10632
  BaseGenericBlock.className = CLASSNAME$12;
10519
- BaseGenericBlock.defaultProps = DEFAULT_PROPS$V;
10633
+ BaseGenericBlock.defaultProps = DEFAULT_PROPS$W;
10520
10634
  const GenericBlock = Object.assign(BaseGenericBlock, {
10521
10635
  Figure,
10522
10636
  Content,
@@ -10610,7 +10724,7 @@ const CLASSNAME$11 = 'lumx-list-divider';
10610
10724
  /**
10611
10725
  * Component default props.
10612
10726
  */
10613
- const DEFAULT_PROPS$U = {};
10727
+ const DEFAULT_PROPS$V = {};
10614
10728
 
10615
10729
  /**
10616
10730
  * ListDivider component.
@@ -10634,7 +10748,7 @@ const ListDivider$1 = props => {
10634
10748
  };
10635
10749
  ListDivider$1.displayName = COMPONENT_NAME$13;
10636
10750
  ListDivider$1.className = CLASSNAME$11;
10637
- ListDivider$1.defaultProps = DEFAULT_PROPS$U;
10751
+ ListDivider$1.defaultProps = DEFAULT_PROPS$V;
10638
10752
 
10639
10753
  /**
10640
10754
  * Defines the props of the component.
@@ -10656,7 +10770,7 @@ const ListDivider = forwardRef((props, ref) => {
10656
10770
  });
10657
10771
  ListDivider.displayName = COMPONENT_NAME$13;
10658
10772
  ListDivider.className = CLASSNAME$11;
10659
- ListDivider.defaultProps = DEFAULT_PROPS$U;
10773
+ ListDivider.defaultProps = DEFAULT_PROPS$V;
10660
10774
 
10661
10775
  /**
10662
10776
  * Combobox compound component namespace.
@@ -10719,7 +10833,7 @@ const {
10719
10833
  /**
10720
10834
  * Component default props.
10721
10835
  */
10722
- const DEFAULT_PROPS$T = {
10836
+ const DEFAULT_PROPS$U = {
10723
10837
  variant: CommentBlockVariant.indented
10724
10838
  };
10725
10839
 
@@ -10749,7 +10863,7 @@ const CommentBlock = forwardRef((props, ref) => {
10749
10863
  onMouseLeave,
10750
10864
  text,
10751
10865
  theme = defaultTheme,
10752
- variant = DEFAULT_PROPS$T.variant,
10866
+ variant = DEFAULT_PROPS$U.variant,
10753
10867
  ...forwardedProps
10754
10868
  } = props;
10755
10869
  const hasChildren = Children.count(children) > 0;
@@ -10818,7 +10932,7 @@ const CommentBlock = forwardRef((props, ref) => {
10818
10932
  });
10819
10933
  CommentBlock.displayName = COMPONENT_NAME$12;
10820
10934
  CommentBlock.className = CLASSNAME$10;
10821
- CommentBlock.defaultProps = DEFAULT_PROPS$T;
10935
+ CommentBlock.defaultProps = DEFAULT_PROPS$U;
10822
10936
 
10823
10937
  /**
10824
10938
  * Add a number of months from a date while resetting the day to prevent month length mismatches.
@@ -11721,7 +11835,7 @@ const {
11721
11835
  /**
11722
11836
  * Component default props.
11723
11837
  */
11724
- const DEFAULT_PROPS$S = {
11838
+ const DEFAULT_PROPS$T = {
11725
11839
  size: Size.big
11726
11840
  };
11727
11841
 
@@ -11744,7 +11858,7 @@ const Dialog$1 = props => {
11744
11858
  isOpen,
11745
11859
  handleClose,
11746
11860
  contentRef,
11747
- size = DEFAULT_PROPS$S.size,
11861
+ size = DEFAULT_PROPS$T.size,
11748
11862
  zIndex,
11749
11863
  dialogProps,
11750
11864
  headerChildContent,
@@ -11848,7 +11962,7 @@ const isFooter$1 = isComponent('footer');
11848
11962
  /**
11849
11963
  * Component default props.
11850
11964
  */
11851
- const DEFAULT_PROPS$R = {
11965
+ const DEFAULT_PROPS$S = {
11852
11966
  closeMode: 'unmount',
11853
11967
  size: Size$1.big,
11854
11968
  disableBodyScroll: true
@@ -11869,7 +11983,7 @@ const Dialog = forwardRef((props, ref) => {
11869
11983
  const {
11870
11984
  children,
11871
11985
  className,
11872
- closeMode = DEFAULT_PROPS$R.closeMode,
11986
+ closeMode = DEFAULT_PROPS$S.closeMode,
11873
11987
  header,
11874
11988
  focusElement,
11875
11989
  forceFooterDivider,
@@ -11881,11 +11995,11 @@ const Dialog = forwardRef((props, ref) => {
11881
11995
  parentElement,
11882
11996
  contentRef,
11883
11997
  preventAutoClose,
11884
- size = DEFAULT_PROPS$R.size,
11998
+ size = DEFAULT_PROPS$S.size,
11885
11999
  zIndex,
11886
12000
  dialogProps,
11887
12001
  onVisibilityChange,
11888
- disableBodyScroll = DEFAULT_PROPS$R.disableBodyScroll,
12002
+ disableBodyScroll = DEFAULT_PROPS$S.disableBodyScroll,
11889
12003
  preventCloseOnClick,
11890
12004
  preventCloseOnEscape,
11891
12005
  ...forwardedProps
@@ -11991,7 +12105,7 @@ const Dialog = forwardRef((props, ref) => {
11991
12105
  });
11992
12106
  Dialog.displayName = COMPONENT_NAME$_;
11993
12107
  Dialog.className = CLASSNAME$_;
11994
- Dialog.defaultProps = DEFAULT_PROPS$R;
12108
+ Dialog.defaultProps = DEFAULT_PROPS$S;
11995
12109
 
11996
12110
  /**
11997
12111
  * Component display name.
@@ -12035,7 +12149,7 @@ const Divider$1 = props => {
12035
12149
  /**
12036
12150
  * Component default props.
12037
12151
  */
12038
- const DEFAULT_PROPS$Q = {};
12152
+ const DEFAULT_PROPS$R = {};
12039
12153
 
12040
12154
  /**
12041
12155
  * Divider component.
@@ -12058,7 +12172,7 @@ const Divider = forwardRef((props, ref) => {
12058
12172
  });
12059
12173
  Divider.displayName = COMPONENT_NAME$Z;
12060
12174
  Divider.className = CLASSNAME$Z;
12061
- Divider.defaultProps = DEFAULT_PROPS$Q;
12175
+ Divider.defaultProps = DEFAULT_PROPS$R;
12062
12176
 
12063
12177
  /**
12064
12178
  * Component display name.
@@ -12107,7 +12221,7 @@ const DragHandle$1 = props => {
12107
12221
  /**
12108
12222
  * Component default props.
12109
12223
  */
12110
- const DEFAULT_PROPS$P = {};
12224
+ const DEFAULT_PROPS$Q = {};
12111
12225
 
12112
12226
  /**
12113
12227
  * DragHandle component.
@@ -12130,7 +12244,7 @@ const DragHandle = forwardRef((props, ref) => {
12130
12244
  });
12131
12245
  DragHandle.displayName = COMPONENT_NAME$Y;
12132
12246
  DragHandle.className = CLASSNAME$Y;
12133
- DragHandle.defaultProps = DEFAULT_PROPS$P;
12247
+ DragHandle.defaultProps = DEFAULT_PROPS$Q;
12134
12248
 
12135
12249
  const INITIAL_INDEX = -1;
12136
12250
 
@@ -12326,7 +12440,7 @@ const InternalList = forwardRef((props, ref) => {
12326
12440
  });
12327
12441
  InternalList.displayName = COMPONENT_NAME$1j;
12328
12442
  InternalList.className = CLASSNAME$1h;
12329
- InternalList.defaultProps = DEFAULT_PROPS$_;
12443
+ InternalList.defaultProps = DEFAULT_PROPS$$;
12330
12444
  const List = Object.assign(InternalList, {
12331
12445
  useKeyboardListNavigation
12332
12446
  });
@@ -12389,7 +12503,7 @@ const {
12389
12503
  /**
12390
12504
  * Component default props.
12391
12505
  */
12392
- const DEFAULT_PROPS$O = {
12506
+ const DEFAULT_PROPS$P = {
12393
12507
  closeOnClick: true,
12394
12508
  closeOnClickAway: true,
12395
12509
  closeOnEscape: true,
@@ -12403,6 +12517,7 @@ const DEFAULT_PROPS$O = {
12403
12517
  /**
12404
12518
  * Dropdown component.
12405
12519
  *
12520
+ * @deprecated Use `MenuButton` for action-based dropdowns, `SelectButton` for selection-based dropdowns, or `Popover` for lower-level control.
12406
12521
  * @param props Component props.
12407
12522
  * @param ref Component ref.
12408
12523
  * @return React element.
@@ -12412,18 +12527,18 @@ const Dropdown = forwardRef((props, ref) => {
12412
12527
  anchorRef,
12413
12528
  children,
12414
12529
  className,
12415
- closeOnClick = DEFAULT_PROPS$O.closeOnClick,
12416
- closeOnClickAway = DEFAULT_PROPS$O.closeOnClickAway,
12417
- closeOnEscape = DEFAULT_PROPS$O.closeOnEscape,
12418
- fitToAnchorWidth = DEFAULT_PROPS$O.fitToAnchorWidth,
12419
- fitWithinViewportHeight = DEFAULT_PROPS$O.fitWithinViewportHeight,
12530
+ closeOnClick = DEFAULT_PROPS$P.closeOnClick,
12531
+ closeOnClickAway = DEFAULT_PROPS$P.closeOnClickAway,
12532
+ closeOnEscape = DEFAULT_PROPS$P.closeOnEscape,
12533
+ fitToAnchorWidth = DEFAULT_PROPS$P.fitToAnchorWidth,
12534
+ fitWithinViewportHeight = DEFAULT_PROPS$P.fitWithinViewportHeight,
12420
12535
  isOpen,
12421
12536
  offset,
12422
- focusAnchorOnClose = DEFAULT_PROPS$O.focusAnchorOnClose,
12537
+ focusAnchorOnClose = DEFAULT_PROPS$P.focusAnchorOnClose,
12423
12538
  onClose,
12424
12539
  onInfiniteScroll,
12425
- placement = DEFAULT_PROPS$O.placement,
12426
- shouldFocusOnOpen = DEFAULT_PROPS$O.shouldFocusOnOpen,
12540
+ placement = DEFAULT_PROPS$P.placement,
12541
+ shouldFocusOnOpen = DEFAULT_PROPS$P.shouldFocusOnOpen,
12427
12542
  zIndex,
12428
12543
  ...forwardedProps
12429
12544
  } = props;
@@ -12469,7 +12584,7 @@ const Dropdown = forwardRef((props, ref) => {
12469
12584
  });
12470
12585
  Dropdown.displayName = COMPONENT_NAME$X;
12471
12586
  Dropdown.className = CLASSNAME$X;
12472
- Dropdown.defaultProps = DEFAULT_PROPS$O;
12587
+ Dropdown.defaultProps = DEFAULT_PROPS$P;
12473
12588
 
12474
12589
  /**
12475
12590
  * Component display name.
@@ -12488,7 +12603,7 @@ const {
12488
12603
  /**
12489
12604
  * Component default props.
12490
12605
  */
12491
- const DEFAULT_PROPS$N = {
12606
+ const DEFAULT_PROPS$O = {
12492
12607
  closeMode: 'unmount'
12493
12608
  };
12494
12609
 
@@ -12601,7 +12716,7 @@ const isFooter = isComponent('footer');
12601
12716
  const ExpansionPanel = forwardRef((props, ref) => {
12602
12717
  const defaultTheme = useTheme() || Theme$1.light;
12603
12718
  const {
12604
- closeMode = DEFAULT_PROPS$N.closeMode,
12719
+ closeMode = DEFAULT_PROPS$O.closeMode,
12605
12720
  children: anyChildren,
12606
12721
  isOpen,
12607
12722
  label,
@@ -12674,11 +12789,11 @@ const ExpansionPanel = forwardRef((props, ref) => {
12674
12789
  });
12675
12790
  ExpansionPanel.displayName = COMPONENT_NAME$W;
12676
12791
  ExpansionPanel.className = CLASSNAME$W;
12677
- ExpansionPanel.defaultProps = DEFAULT_PROPS$N;
12792
+ ExpansionPanel.defaultProps = DEFAULT_PROPS$O;
12678
12793
 
12679
12794
  const COMPONENT_NAME$V = 'Flag';
12680
12795
  const CLASSNAME$V = 'lumx-flag';
12681
- const DEFAULT_PROPS$M = {};
12796
+ const DEFAULT_PROPS$N = {};
12682
12797
  const {
12683
12798
  block: block$H,
12684
12799
  element: element$y
@@ -12742,7 +12857,7 @@ const Flag = forwardRef((props, ref) => {
12742
12857
  });
12743
12858
  Flag.displayName = COMPONENT_NAME$V;
12744
12859
  Flag.className = CLASSNAME$V;
12745
- Flag.defaultProps = DEFAULT_PROPS$M;
12860
+ Flag.defaultProps = DEFAULT_PROPS$N;
12746
12861
 
12747
12862
  /** The maximum authorized heading level. */
12748
12863
  const MAX_HEADING_LEVEL = 6;
@@ -12780,7 +12895,7 @@ const CLASSNAME$U = 'lumx-heading';
12780
12895
  /**
12781
12896
  * Component default props.
12782
12897
  */
12783
- const DEFAULT_PROPS$L = {};
12898
+ const DEFAULT_PROPS$M = {};
12784
12899
 
12785
12900
  /**
12786
12901
  * Get Heading component common props
@@ -12840,7 +12955,7 @@ const Heading = forwardRef((props, ref) => {
12840
12955
  });
12841
12956
  Heading.displayName = COMPONENT_NAME$U;
12842
12957
  Heading.className = CLASSNAME$U;
12843
- Heading.defaultProps = DEFAULT_PROPS$L;
12958
+ Heading.defaultProps = DEFAULT_PROPS$M;
12844
12959
 
12845
12960
  /**
12846
12961
  * Computes the next heading level based on the optional prop level or the parent context level.
@@ -12891,7 +13006,7 @@ const {
12891
13006
  /**
12892
13007
  * Component default props.
12893
13008
  */
12894
- const DEFAULT_PROPS$K = {
13009
+ const DEFAULT_PROPS$L = {
12895
13010
  orientation: Orientation$1.horizontal,
12896
13011
  wrap: 'nowrap'
12897
13012
  };
@@ -12909,9 +13024,9 @@ const Grid = forwardRef((props, ref) => {
12909
13024
  className,
12910
13025
  gutter,
12911
13026
  hAlign,
12912
- orientation = DEFAULT_PROPS$K.orientation,
13027
+ orientation = DEFAULT_PROPS$L.orientation,
12913
13028
  vAlign,
12914
- wrap = DEFAULT_PROPS$K.wrap,
13029
+ wrap = DEFAULT_PROPS$L.wrap,
12915
13030
  ...forwardedProps
12916
13031
  } = props;
12917
13032
  return /*#__PURE__*/jsx("div", {
@@ -12929,7 +13044,7 @@ const Grid = forwardRef((props, ref) => {
12929
13044
  });
12930
13045
  Grid.displayName = COMPONENT_NAME$T;
12931
13046
  Grid.className = CLASSNAME$T;
12932
- Grid.defaultProps = DEFAULT_PROPS$K;
13047
+ Grid.defaultProps = DEFAULT_PROPS$L;
12933
13048
 
12934
13049
  /**
12935
13050
  * Component display name.
@@ -12987,7 +13102,7 @@ const CLASSNAME$R = 'lumx-grid-column';
12987
13102
  /**
12988
13103
  * Component default props.
12989
13104
  */
12990
- const DEFAULT_PROPS$J = {};
13105
+ const DEFAULT_PROPS$K = {};
12991
13106
 
12992
13107
  /**
12993
13108
  * The GridColumn is a layout component that can display children in a grid
@@ -13024,7 +13139,7 @@ const GridColumn$1 = props => {
13024
13139
  };
13025
13140
  GridColumn$1.displayName = COMPONENT_NAME$R;
13026
13141
  GridColumn$1.className = CLASSNAME$R;
13027
- GridColumn$1.defaultProps = DEFAULT_PROPS$J;
13142
+ GridColumn$1.defaultProps = DEFAULT_PROPS$K;
13028
13143
 
13029
13144
  /**
13030
13145
  * Defines the props of the component.
@@ -13035,7 +13150,7 @@ GridColumn$1.defaultProps = DEFAULT_PROPS$J;
13035
13150
  /**
13036
13151
  * Component default props.
13037
13152
  */
13038
- const DEFAULT_PROPS$I = {};
13153
+ const DEFAULT_PROPS$J = {};
13039
13154
 
13040
13155
  /**
13041
13156
  * The GridColumn is a layout component that can display children in a grid
@@ -13054,7 +13169,7 @@ const GridColumn = forwardRef((props, ref) => {
13054
13169
  });
13055
13170
  GridColumn.displayName = COMPONENT_NAME$R;
13056
13171
  GridColumn.className = CLASSNAME$R;
13057
- GridColumn.defaultProps = DEFAULT_PROPS$I;
13172
+ GridColumn.defaultProps = DEFAULT_PROPS$J;
13058
13173
 
13059
13174
  /**
13060
13175
  * Image block variants.
@@ -13089,7 +13204,7 @@ const {
13089
13204
  /**
13090
13205
  * Component default props.
13091
13206
  */
13092
- const DEFAULT_PROPS$H = {
13207
+ const DEFAULT_PROPS$I = {
13093
13208
  captionPosition: ImageBlockCaptionPosition.below,
13094
13209
  align: Alignment.left
13095
13210
  };
@@ -13104,9 +13219,9 @@ const DEFAULT_PROPS$H = {
13104
13219
  const ImageBlock$1 = props => {
13105
13220
  const {
13106
13221
  actions,
13107
- align = DEFAULT_PROPS$H.align,
13222
+ align = DEFAULT_PROPS$I.align,
13108
13223
  alt,
13109
- captionPosition = DEFAULT_PROPS$H.captionPosition,
13224
+ captionPosition = DEFAULT_PROPS$I.captionPosition,
13110
13225
  captionStyle,
13111
13226
  className,
13112
13227
  description,
@@ -13278,7 +13393,7 @@ const ImageBlock = forwardRef((props, ref) => {
13278
13393
  });
13279
13394
  ImageBlock.displayName = COMPONENT_NAME$Q;
13280
13395
  ImageBlock.className = CLASSNAME$Q;
13281
- ImageBlock.defaultProps = DEFAULT_PROPS$H;
13396
+ ImageBlock.defaultProps = DEFAULT_PROPS$I;
13282
13397
 
13283
13398
  /**
13284
13399
  * Component display name.
@@ -14032,7 +14147,7 @@ const {
14032
14147
  /**
14033
14148
  * Component default props.
14034
14149
  */
14035
- const DEFAULT_PROPS$G = {};
14150
+ const DEFAULT_PROPS$H = {};
14036
14151
 
14037
14152
  /**
14038
14153
  * InlineList component.
@@ -14081,7 +14196,7 @@ const InlineList$1 = props => {
14081
14196
  };
14082
14197
  InlineList$1.displayName = COMPONENT_NAME$O;
14083
14198
  InlineList$1.className = CLASSNAME$O;
14084
- InlineList$1.defaultProps = DEFAULT_PROPS$G;
14199
+ InlineList$1.defaultProps = DEFAULT_PROPS$H;
14085
14200
 
14086
14201
  /**
14087
14202
  * Defines the props of the component.
@@ -14107,7 +14222,7 @@ const InlineList = forwardRef((props, ref) => {
14107
14222
  });
14108
14223
  InlineList.displayName = COMPONENT_NAME$O;
14109
14224
  InlineList.className = CLASSNAME$O;
14110
- InlineList.defaultProps = DEFAULT_PROPS$G;
14225
+ InlineList.defaultProps = DEFAULT_PROPS$H;
14111
14226
 
14112
14227
  /**
14113
14228
  * InputHelper component.
@@ -14466,7 +14581,7 @@ const {
14466
14581
  /**
14467
14582
  * Component default props.
14468
14583
  */
14469
- const DEFAULT_PROPS$F = {
14584
+ const DEFAULT_PROPS$G = {
14470
14585
  size: Size.regular,
14471
14586
  titleHeading: 'h2'
14472
14587
  };
@@ -14485,7 +14600,7 @@ const LinkPreview$1 = props => {
14485
14600
  link,
14486
14601
  linkAs,
14487
14602
  linkProps,
14488
- size = DEFAULT_PROPS$F.size,
14603
+ size = DEFAULT_PROPS$G.size,
14489
14604
  theme,
14490
14605
  thumbnailProps,
14491
14606
  ref,
@@ -14573,7 +14688,7 @@ const LinkPreview = forwardRef((props, ref) => {
14573
14688
  const defaultTheme = useTheme() || Theme$1.light;
14574
14689
  const {
14575
14690
  theme = defaultTheme,
14576
- titleHeading = DEFAULT_PROPS$F.titleHeading,
14691
+ titleHeading = DEFAULT_PROPS$G.titleHeading,
14577
14692
  ...forwardedProps
14578
14693
  } = props;
14579
14694
  // Use title heading as title wrapper (see DEFAULT_PROPS for the default value).
@@ -14589,7 +14704,7 @@ const LinkPreview = forwardRef((props, ref) => {
14589
14704
  });
14590
14705
  LinkPreview.displayName = COMPONENT_NAME$L;
14591
14706
  LinkPreview.className = CLASSNAME$L;
14592
- LinkPreview.defaultProps = DEFAULT_PROPS$F;
14707
+ LinkPreview.defaultProps = DEFAULT_PROPS$G;
14593
14708
 
14594
14709
  /**
14595
14710
  * ListItem.Action props.
@@ -14622,7 +14737,7 @@ const ListItemAction = Object.assign(forwardRefPolymorphic((props, ref) => {
14622
14737
  }), {
14623
14738
  displayName: COMPONENT_NAME$1g,
14624
14739
  className: CLASSNAME$1e,
14625
- defaultProps: DEFAULT_PROPS$Y
14740
+ defaultProps: DEFAULT_PROPS$Z
14626
14741
  });
14627
14742
 
14628
14743
  /**
@@ -14662,7 +14777,7 @@ const _ListItem = forwardRef((props, ref) => {
14662
14777
  });
14663
14778
  _ListItem.displayName = COMPONENT_NAME$1h;
14664
14779
  _ListItem.className = CLASSNAME$1f;
14665
- _ListItem.defaultProps = DEFAULT_PROPS$Z;
14780
+ _ListItem.defaultProps = DEFAULT_PROPS$_;
14666
14781
 
14667
14782
  /**
14668
14783
  * ListItem component with Action sub-component.
@@ -14706,7 +14821,7 @@ const ListSubheader = forwardRef((props, ref) => {
14706
14821
  ListSubheader.displayName = COMPONENT_NAME$K;
14707
14822
  ListSubheader.className = CLASSNAME$K;
14708
14823
 
14709
- const DEFAULT_PROPS$E = {
14824
+ const DEFAULT_PROPS$F = {
14710
14825
  variant: 'button'
14711
14826
  };
14712
14827
 
@@ -15417,7 +15532,7 @@ const MenuButton = forwardRef((props, ref) => {
15417
15532
  children,
15418
15533
  popoverProps,
15419
15534
  onOpen,
15420
- variant = DEFAULT_PROPS$E.variant,
15535
+ variant = DEFAULT_PROPS$F.variant,
15421
15536
  ...triggerProps
15422
15537
  } = props;
15423
15538
  return MenuButton$1({
@@ -15439,7 +15554,7 @@ const MenuButton = forwardRef((props, ref) => {
15439
15554
  });
15440
15555
  });
15441
15556
  MenuButton.displayName = COMPONENT_NAME$J;
15442
- MenuButton.defaultProps = DEFAULT_PROPS$E;
15557
+ MenuButton.defaultProps = DEFAULT_PROPS$F;
15443
15558
 
15444
15559
  /** MenuItem props. */
15445
15560
 
@@ -15686,7 +15801,7 @@ const {
15686
15801
  /**
15687
15802
  * Component default props.
15688
15803
  */
15689
- const DEFAULT_PROPS$D = {};
15804
+ const DEFAULT_PROPS$E = {};
15690
15805
 
15691
15806
  /**
15692
15807
  * Mosaic component.
@@ -15781,7 +15896,7 @@ const Mosaic = forwardRef((props, ref) => {
15781
15896
  });
15782
15897
  Mosaic.displayName = COMPONENT_NAME$D;
15783
15898
  Mosaic.className = CLASSNAME$E;
15784
- Mosaic.defaultProps = DEFAULT_PROPS$D;
15899
+ Mosaic.defaultProps = DEFAULT_PROPS$E;
15785
15900
 
15786
15901
  const NavigationContext = /*#__PURE__*/createContext({
15787
15902
  orientation: Orientation$1.vertical
@@ -15979,7 +16094,7 @@ const {
15979
16094
  /**
15980
16095
  * Component default props
15981
16096
  */
15982
- const DEFAULT_PROPS$C = {
16097
+ const DEFAULT_PROPS$D = {
15983
16098
  orientation: Orientation$1.vertical
15984
16099
  };
15985
16100
  const Navigation = forwardRef((props, ref) => {
@@ -15988,7 +16103,7 @@ const Navigation = forwardRef((props, ref) => {
15988
16103
  children,
15989
16104
  className,
15990
16105
  theme = defaultTheme,
15991
- orientation = DEFAULT_PROPS$C.orientation,
16106
+ orientation = DEFAULT_PROPS$D.orientation,
15992
16107
  ...forwardedProps
15993
16108
  } = props;
15994
16109
  return /*#__PURE__*/jsx(ThemeProvider, {
@@ -16014,7 +16129,7 @@ const Navigation = forwardRef((props, ref) => {
16014
16129
  });
16015
16130
  Navigation.displayName = COMPONENT_NAME$B;
16016
16131
  Navigation.className = CLASSNAME$C;
16017
- Navigation.defaultProps = DEFAULT_PROPS$C;
16132
+ Navigation.defaultProps = DEFAULT_PROPS$D;
16018
16133
 
16019
16134
  // Sub components
16020
16135
  Navigation.Section = NavigationSection;
@@ -16059,7 +16174,7 @@ const {
16059
16174
  /**
16060
16175
  * Component default props.
16061
16176
  */
16062
- const DEFAULT_PROPS$B = {
16177
+ const DEFAULT_PROPS$C = {
16063
16178
  zIndex: 9999,
16064
16179
  usePortal: true
16065
16180
  };
@@ -16083,8 +16198,8 @@ const Notification = forwardRef((props, ref) => {
16083
16198
  onClick,
16084
16199
  theme = defaultTheme,
16085
16200
  type,
16086
- zIndex = DEFAULT_PROPS$B.zIndex,
16087
- usePortal = DEFAULT_PROPS$B.usePortal,
16201
+ zIndex = DEFAULT_PROPS$C.zIndex,
16202
+ usePortal = DEFAULT_PROPS$C.usePortal,
16088
16203
  style,
16089
16204
  ...forwardedProps
16090
16205
  } = props;
@@ -16149,7 +16264,7 @@ const Notification = forwardRef((props, ref) => {
16149
16264
  });
16150
16265
  Notification.displayName = COMPONENT_NAME$A;
16151
16266
  Notification.className = CLASSNAME$B;
16152
- Notification.defaultProps = DEFAULT_PROPS$B;
16267
+ Notification.defaultProps = DEFAULT_PROPS$C;
16153
16268
 
16154
16269
  /**
16155
16270
  * PopoverDialog props.
@@ -16169,7 +16284,7 @@ const CLASSNAME$A = 'lumx-popover-dialog';
16169
16284
  /**
16170
16285
  * Component default props.
16171
16286
  */
16172
- const DEFAULT_PROPS$A = {};
16287
+ const DEFAULT_PROPS$B = {};
16173
16288
 
16174
16289
  /**
16175
16290
  * PopoverDialog component.
@@ -16209,7 +16324,7 @@ const PopoverDialog = forwardRef((props, ref) => {
16209
16324
  });
16210
16325
  PopoverDialog.displayName = COMPONENT_NAME$z;
16211
16326
  PopoverDialog.className = CLASSNAME$A;
16212
- PopoverDialog.defaultProps = DEFAULT_PROPS$A;
16327
+ PopoverDialog.defaultProps = DEFAULT_PROPS$B;
16213
16328
 
16214
16329
  /**
16215
16330
  * Component display name.
@@ -16228,7 +16343,7 @@ const {
16228
16343
  /**
16229
16344
  * Component default props.
16230
16345
  */
16231
- const DEFAULT_PROPS$z = {
16346
+ const DEFAULT_PROPS$A = {
16232
16347
  orientation: Orientation$1.horizontal
16233
16348
  };
16234
16349
 
@@ -16248,7 +16363,7 @@ const PostBlock = forwardRef((props, ref) => {
16248
16363
  className,
16249
16364
  meta,
16250
16365
  onClick,
16251
- orientation = DEFAULT_PROPS$z.orientation,
16366
+ orientation = DEFAULT_PROPS$A.orientation,
16252
16367
  tags,
16253
16368
  text,
16254
16369
  theme = defaultTheme,
@@ -16310,7 +16425,7 @@ const PostBlock = forwardRef((props, ref) => {
16310
16425
  });
16311
16426
  PostBlock.displayName = COMPONENT_NAME$y;
16312
16427
  PostBlock.className = CLASSNAME$z;
16313
- PostBlock.defaultProps = DEFAULT_PROPS$z;
16428
+ PostBlock.defaultProps = DEFAULT_PROPS$A;
16314
16429
 
16315
16430
  /**
16316
16431
  * Component display name.
@@ -16329,7 +16444,7 @@ const {
16329
16444
  /**
16330
16445
  * Component default props.
16331
16446
  */
16332
- const DEFAULT_PROPS$y = {};
16447
+ const DEFAULT_PROPS$z = {};
16333
16448
 
16334
16449
  /**
16335
16450
  * ProgressLinear component.
@@ -16383,7 +16498,7 @@ const ProgressLinear = forwardRef((props, ref) => {
16383
16498
  });
16384
16499
  ProgressLinear.displayName = COMPONENT_NAME$x;
16385
16500
  ProgressLinear.className = CLASSNAME$y;
16386
- ProgressLinear.defaultProps = DEFAULT_PROPS$y;
16501
+ ProgressLinear.defaultProps = DEFAULT_PROPS$z;
16387
16502
 
16388
16503
  /* eslint-disable react/no-unknown-property */
16389
16504
 
@@ -16404,7 +16519,7 @@ const {
16404
16519
  /**
16405
16520
  * Component default props.
16406
16521
  */
16407
- const DEFAULT_PROPS$x = {
16522
+ const DEFAULT_PROPS$y = {
16408
16523
  size: Size.m,
16409
16524
  display: 'block'
16410
16525
  };
@@ -16419,8 +16534,8 @@ const ProgressCircular$1 = props => {
16419
16534
  const {
16420
16535
  className,
16421
16536
  theme,
16422
- size = DEFAULT_PROPS$x.size,
16423
- display = DEFAULT_PROPS$x.display,
16537
+ size = DEFAULT_PROPS$y.size,
16538
+ display = DEFAULT_PROPS$y.display,
16424
16539
  ref,
16425
16540
  circleProps,
16426
16541
  svgProps,
@@ -16485,7 +16600,7 @@ const ProgressCircular = forwardRef((props, ref) => {
16485
16600
  });
16486
16601
  ProgressCircular.displayName = COMPONENT_NAME$w;
16487
16602
  ProgressCircular.className = CLASSNAME$x;
16488
- ProgressCircular.defaultProps = DEFAULT_PROPS$x;
16603
+ ProgressCircular.defaultProps = DEFAULT_PROPS$y;
16489
16604
 
16490
16605
  const ProgressVariant = {
16491
16606
  linear: 'linear',
@@ -16512,7 +16627,7 @@ const {
16512
16627
  /**
16513
16628
  * Component default props.
16514
16629
  */
16515
- const DEFAULT_PROPS$w = {
16630
+ const DEFAULT_PROPS$x = {
16516
16631
  variant: ProgressVariant.circular
16517
16632
  };
16518
16633
 
@@ -16529,7 +16644,7 @@ const Progress = forwardRef((props, ref) => {
16529
16644
  const {
16530
16645
  className,
16531
16646
  theme = defaultTheme,
16532
- variant = DEFAULT_PROPS$w.variant,
16647
+ variant = DEFAULT_PROPS$x.variant,
16533
16648
  ...forwardedProps
16534
16649
  } = props;
16535
16650
  return /*#__PURE__*/jsxs("div", {
@@ -16548,7 +16663,7 @@ const Progress = forwardRef((props, ref) => {
16548
16663
  });
16549
16664
  Progress.displayName = COMPONENT_NAME$v;
16550
16665
  Progress.className = CLASSNAME$w;
16551
- Progress.defaultProps = DEFAULT_PROPS$w;
16666
+ Progress.defaultProps = DEFAULT_PROPS$x;
16552
16667
 
16553
16668
  const INIT_STATE = {
16554
16669
  isLazy: true,
@@ -16674,7 +16789,7 @@ const useTabProviderContextState = () => {
16674
16789
  return context?.[0];
16675
16790
  };
16676
16791
 
16677
- const DEFAULT_PROPS$v = {
16792
+ const DEFAULT_PROPS$w = {
16678
16793
  isLazy: INIT_STATE.isLazy,
16679
16794
  shouldActivateOnFocus: INIT_STATE.shouldActivateOnFocus
16680
16795
  };
@@ -16703,7 +16818,7 @@ const ProgressTrackerProvider = props => {
16703
16818
  dispatch({
16704
16819
  type: 'update',
16705
16820
  payload: {
16706
- ...DEFAULT_PROPS$v,
16821
+ ...DEFAULT_PROPS$w,
16707
16822
  ...propState,
16708
16823
  activeTabIndex: propState.activeStepIndex || INIT_STATE.activeTabIndex
16709
16824
  }
@@ -16726,7 +16841,7 @@ const ProgressTrackerProvider = props => {
16726
16841
  children: children
16727
16842
  });
16728
16843
  };
16729
- ProgressTrackerProvider.defaultProps = DEFAULT_PROPS$v;
16844
+ ProgressTrackerProvider.defaultProps = DEFAULT_PROPS$w;
16730
16845
 
16731
16846
  /**
16732
16847
  * Component display name.
@@ -16745,7 +16860,7 @@ const {
16745
16860
  /**
16746
16861
  * Component default props.
16747
16862
  */
16748
- const DEFAULT_PROPS$u = {};
16863
+ const DEFAULT_PROPS$v = {};
16749
16864
 
16750
16865
  /**
16751
16866
  * ProgressTracker component.
@@ -16799,7 +16914,7 @@ const ProgressTracker = forwardRef((props, ref) => {
16799
16914
  });
16800
16915
  ProgressTracker.displayName = COMPONENT_NAME$u;
16801
16916
  ProgressTracker.className = CLASSNAME$v;
16802
- ProgressTracker.defaultProps = DEFAULT_PROPS$u;
16917
+ ProgressTracker.defaultProps = DEFAULT_PROPS$v;
16803
16918
 
16804
16919
  /**
16805
16920
  * Component display name.
@@ -16818,7 +16933,7 @@ const {
16818
16933
  /**
16819
16934
  * Component default props.
16820
16935
  */
16821
- const DEFAULT_PROPS$t = {};
16936
+ const DEFAULT_PROPS$u = {};
16822
16937
 
16823
16938
  /**
16824
16939
  * ProgressTrackerStep component.
@@ -16913,7 +17028,7 @@ const ProgressTrackerStep = forwardRef((props, ref) => {
16913
17028
  });
16914
17029
  ProgressTrackerStep.displayName = COMPONENT_NAME$t;
16915
17030
  ProgressTrackerStep.className = CLASSNAME$u;
16916
- ProgressTrackerStep.defaultProps = DEFAULT_PROPS$t;
17031
+ ProgressTrackerStep.defaultProps = DEFAULT_PROPS$u;
16917
17032
 
16918
17033
  /**
16919
17034
  * Component display name.
@@ -16931,7 +17046,7 @@ const {
16931
17046
  /**
16932
17047
  * Component default props.
16933
17048
  */
16934
- const DEFAULT_PROPS$s = {};
17049
+ const DEFAULT_PROPS$t = {};
16935
17050
 
16936
17051
  /**
16937
17052
  * ProgressTrackerStepPanel component.
@@ -16967,7 +17082,7 @@ const ProgressTrackerStepPanel = forwardRef((props, ref) => {
16967
17082
  });
16968
17083
  ProgressTrackerStepPanel.displayName = COMPONENT_NAME$s;
16969
17084
  ProgressTrackerStepPanel.className = CLASSNAME$t;
16970
- ProgressTrackerStepPanel.defaultProps = DEFAULT_PROPS$s;
17085
+ ProgressTrackerStepPanel.defaultProps = DEFAULT_PROPS$t;
16971
17086
 
16972
17087
  /**
16973
17088
  * Component display name.
@@ -17070,7 +17185,7 @@ const RadioButton$1 = props => {
17070
17185
  /**
17071
17186
  * Component default props.
17072
17187
  */
17073
- const DEFAULT_PROPS$r = {};
17188
+ const DEFAULT_PROPS$s = {};
17074
17189
 
17075
17190
  /**
17076
17191
  * RadioButton component.
@@ -17126,7 +17241,7 @@ const RadioButton = forwardRef((props, ref) => {
17126
17241
  });
17127
17242
  RadioButton.displayName = COMPONENT_NAME$r;
17128
17243
  RadioButton.className = CLASSNAME$s;
17129
- RadioButton.defaultProps = DEFAULT_PROPS$r;
17244
+ RadioButton.defaultProps = DEFAULT_PROPS$s;
17130
17245
 
17131
17246
  /**
17132
17247
  * Component display name.
@@ -17141,7 +17256,7 @@ const CLASSNAME$r = 'lumx-radio-group';
17141
17256
  /**
17142
17257
  * Component default props.
17143
17258
  */
17144
- const DEFAULT_PROPS$q = {};
17259
+ const DEFAULT_PROPS$r = {};
17145
17260
 
17146
17261
  /**
17147
17262
  * RadioGroup component.
@@ -17165,7 +17280,7 @@ const RadioGroup$1 = props => {
17165
17280
  };
17166
17281
  RadioGroup$1.displayName = COMPONENT_NAME$q;
17167
17282
  RadioGroup$1.className = CLASSNAME$r;
17168
- RadioGroup$1.defaultProps = DEFAULT_PROPS$q;
17283
+ RadioGroup$1.defaultProps = DEFAULT_PROPS$r;
17169
17284
 
17170
17285
  /**
17171
17286
  * Defines the props of the component.
@@ -17349,7 +17464,7 @@ const {
17349
17464
  } = classNames.bem(CLASSNAME$p);
17350
17465
 
17351
17466
  /** The default value of props. */
17352
- const DEFAULT_PROPS$p = {
17467
+ const DEFAULT_PROPS$q = {
17353
17468
  selectedValueRender: choice => choice,
17354
17469
  variant: SelectVariant.input
17355
17470
  };
@@ -17473,7 +17588,7 @@ const Select = forwardRef((props, ref) => {
17473
17588
  const isEmpty$1 = isEmpty(props.value);
17474
17589
  const hasInputClear = props.onClear && props.clearButtonProps && !isEmpty$1;
17475
17590
  return WithSelectContext(SelectField, {
17476
- ...DEFAULT_PROPS$p,
17591
+ ...DEFAULT_PROPS$q,
17477
17592
  ...props,
17478
17593
  className: classNames.join(props.className, block$j({
17479
17594
  'has-input-clear': hasInputClear,
@@ -17485,7 +17600,7 @@ const Select = forwardRef((props, ref) => {
17485
17600
  });
17486
17601
  Select.displayName = COMPONENT_NAME$p;
17487
17602
  Select.className = CLASSNAME$p;
17488
- Select.defaultProps = DEFAULT_PROPS$p;
17603
+ Select.defaultProps = DEFAULT_PROPS$q;
17489
17604
  Select.className = CLASSNAME$p;
17490
17605
 
17491
17606
  /** The display name of the component. */
@@ -17499,7 +17614,7 @@ const {
17499
17614
  } = classNames.bem(CLASSNAME$o);
17500
17615
 
17501
17616
  /** The default value of props. */
17502
- const DEFAULT_PROPS$o = {
17617
+ const DEFAULT_PROPS$p = {
17503
17618
  selectedChipRender(choice, index, onClear, isDisabled, theme) {
17504
17619
  const onClick = event => onClear && onClear(event, choice);
17505
17620
  return /*#__PURE__*/jsx(Chip, {
@@ -17628,7 +17743,7 @@ const SelectMultipleField = props => {
17628
17743
  */
17629
17744
  const SelectMultiple = forwardRef((props, ref) => {
17630
17745
  return WithSelectContext(SelectMultipleField, {
17631
- ...DEFAULT_PROPS$o,
17746
+ ...DEFAULT_PROPS$p,
17632
17747
  ...props,
17633
17748
  className: classNames.join(props.className, block$i({
17634
17749
  'has-multiple': !props.isEmpty
@@ -17639,7 +17754,7 @@ const SelectMultiple = forwardRef((props, ref) => {
17639
17754
  });
17640
17755
  SelectMultiple.displayName = COMPONENT_NAME$o;
17641
17756
  SelectMultiple.className = CLASSNAME$o;
17642
- SelectMultiple.defaultProps = DEFAULT_PROPS$o;
17757
+ SelectMultiple.defaultProps = DEFAULT_PROPS$p;
17643
17758
 
17644
17759
  /**
17645
17760
  * Find the option whose id matches the given value.
@@ -17797,6 +17912,13 @@ const COMPONENT_NAME$n = 'SelectButton';
17797
17912
  */
17798
17913
  const CLASSNAME$n = 'lumx-select-button';
17799
17914
 
17915
+ /**
17916
+ * Component default props.
17917
+ */
17918
+ const DEFAULT_PROPS$o = {
17919
+ selectionType: 'single'
17920
+ };
17921
+
17800
17922
  /**
17801
17923
  * SelectButton core template.
17802
17924
  * Renders a Combobox with a button trigger and a dropdown list of options.
@@ -17820,7 +17942,7 @@ const SelectButton$2 = (props, {
17820
17942
  getSectionId,
17821
17943
  renderSectionTitle,
17822
17944
  value,
17823
- isMultiselectable,
17945
+ selectionType = DEFAULT_PROPS$o.selectionType,
17824
17946
  label,
17825
17947
  labelDisplayMode,
17826
17948
  buttonProps,
@@ -17836,6 +17958,7 @@ const SelectButton$2 = (props, {
17836
17958
  const isFullLoading = listStatus === 'loading';
17837
17959
  const isLoadingMore = listStatus === 'loadingMore';
17838
17960
  const isError = listStatus === 'error';
17961
+ const isMultiselectable = selectionType === 'multiple';
17839
17962
 
17840
17963
  /*
17841
17964
  * Display value: castArray normalizes single/multi value to an array, then resolve
@@ -18009,7 +18132,7 @@ const SelectButton$1 = React__default.forwardRef((props, ref) => {
18009
18132
  renderOption,
18010
18133
  getSectionId,
18011
18134
  renderSectionTitle,
18012
- selectionType,
18135
+ selectionType = DEFAULT_PROPS$o.selectionType,
18013
18136
  value,
18014
18137
  onChange,
18015
18138
  onLoadMore,
@@ -18045,7 +18168,7 @@ const SelectButton$1 = React__default.forwardRef((props, ref) => {
18045
18168
  getSectionId,
18046
18169
  renderSectionTitle,
18047
18170
  value,
18048
- isMultiselectable: isMultiple,
18171
+ selectionType,
18049
18172
  label,
18050
18173
  labelDisplayMode,
18051
18174
  buttonProps: {
@@ -21559,7 +21682,8 @@ const {
21559
21682
  * Default values for `TimePickerFieldWrapperProps`.
21560
21683
  */
21561
21684
  const DEFAULT_PROPS$3 = {
21562
- step: 30
21685
+ step: 30,
21686
+ boundsMode: 'on-blur'
21563
21687
  };
21564
21688
 
21565
21689
  /**
@@ -21817,9 +21941,11 @@ const TimePickerField = props => {
21817
21941
  step = DEFAULT_PROPS$3.step,
21818
21942
  minTime,
21819
21943
  maxTime,
21944
+ boundsMode = DEFAULT_PROPS$3.boundsMode,
21820
21945
  className,
21821
21946
  theme,
21822
21947
  translations,
21948
+ name,
21823
21949
  ...forwardedProps
21824
21950
  } = props;
21825
21951
 
@@ -21844,10 +21970,23 @@ const TimePickerField = props => {
21844
21970
  name: formatTime(value, locale)
21845
21971
  };
21846
21972
  }, [value, locale]);
21973
+
21974
+ // Clamp the current value to bounds whenever enforce mode is set and value/bounds change.
21975
+ useEffect(() => {
21976
+ if (boundsMode !== 'enforce' || !value) return;
21977
+ const timeOfDay = {
21978
+ hour: value.getHours(),
21979
+ minute: value.getMinutes()
21980
+ };
21981
+ const clamped = snapTimeToBounds(timeOfDay, minTime, maxTime);
21982
+ if (clamped.hour !== value.getHours() || clamped.minute !== value.getMinutes()) {
21983
+ onChange(getDateAtTime(clamped, value), name);
21984
+ }
21985
+ }, [boundsMode, value, minTime, maxTime, onChange, name]);
21847
21986
  const handleChange = useCallback(next => {
21848
21987
  const date = next ? getDateAtTime(next, value) : undefined;
21849
- onChange(date, forwardedProps.name);
21850
- }, [forwardedProps.name, onChange, value]);
21988
+ onChange(date, name);
21989
+ }, [name, onChange, value]);
21851
21990
  const handleBlur = useCallback(() => {
21852
21991
  if (!searchValue) return;
21853
21992
  const parsed = parseTimeInput(searchValue);
@@ -21858,8 +21997,8 @@ const TimePickerField = props => {
21858
21997
  // Snap to bounds if needed, then dedup against the current value.
21859
21998
  const time = snapTimeToBounds(parsed, minTime, maxTime);
21860
21999
  if (value && isDateOnTime(value, time)) return;
21861
- onChange(getDateAtTime(time, value), forwardedProps.name);
21862
- }, [maxTime, minTime, forwardedProps.name, onChange, searchValue, value]);
22000
+ onChange(getDateAtTime(time, value), name);
22001
+ }, [maxTime, minTime, name, onChange, searchValue, value]);
21863
22002
  const searchInputValue = value ? formatTime(value, locale) : undefined;
21864
22003
  return TimePickerField$1({
21865
22004
  ...forwardedProps,
@@ -22350,5 +22489,5 @@ UserBlock.displayName = COMPONENT_NAME;
22350
22489
  UserBlock.className = CLASSNAME;
22351
22490
  UserBlock.defaultProps = DEFAULT_PROPS;
22352
22491
 
22353
- export { AlertDialog, Autocomplete, AutocompleteMultiple, Avatar, Badge, BadgeWrapper, Button, ButtonGroup, CLASSNAME$1w as CLASSNAME, COMPONENT_NAME$1y as COMPONENT_NAME, Checkbox, Chip, ChipGroup, Combobox, CommentBlock, CommentBlockVariant, DEFAULT_PROPS$1d as DEFAULT_PROPS, DatePicker, DatePickerControlled, DatePickerField, Dialog, Divider, DragHandle, Dropdown, ExpansionPanel, Flag, FlexBox, GenericBlock, GenericBlockGapSize, Grid, GridColumn, GridItem, Heading, HeadingLevelProvider, Icon, IconButton, ImageBlock, ImageBlockCaptionPosition, ImageLightbox, InlineList, InputHelper, InputLabel, Lightbox, Link, LinkPreview, List, ListDivider, ListItem, ListSection, ListSubheader, MenuButton, ListDivider as MenuDivider, MenuItem, Message, Mosaic, Navigation, Notification, Placement, Popover, PopoverDialog, PostBlock, Progress, ProgressCircular, ProgressLinear, ProgressTracker, ProgressTrackerProvider, ProgressTrackerStep, ProgressTrackerStepPanel, ProgressVariant, RadioButton, RadioGroup, RawInputText, RawInputTextarea, Select, SelectButton, SelectMultiple, SelectMultipleField, SelectTextField, SelectVariant, SelectionChipGroup, SideNavigation, SideNavigationItem, SkeletonCircle, SkeletonRectangle, SkeletonRectangleVariant, SkeletonTypography, Slider, Slides, Slideshow, SlideshowControls, SlideshowItem, Switch, CLASSNAME$3 as TIME_PICKER_FIELD_CLASSNAME, COMPONENT_NAME$2 as TIME_PICKER_FIELD_COMPONENT_NAME, Tab, TabList, TabListLayout, TabPanel, TabProvider, Table, TableBody, TableCell, TableCellVariant, TableHeader, TableRow, Text, TextField, ThOrder, ThemeProvider, Thumbnail, ThumbnailAspectRatio, ThumbnailObjectFit, ThumbnailVariant, TimePickerField, Toolbar, Tooltip, Uploader, UploaderVariant, UserBlock, clamp, useFocusPointStyle, useHeadingLevel, useTheme };
22492
+ export { AlertDialog, Autocomplete, AutocompleteMultiple, Avatar, Badge, BadgeWrapper, Button, ButtonGroup, CLASSNAME$1w as CLASSNAME, COMPONENT_NAME$1y as COMPONENT_NAME, Checkbox, Chip, ChipGroup, Combobox, CommentBlock, CommentBlockVariant, DEFAULT_PROPS$1e as DEFAULT_PROPS, DatePicker, DatePickerControlled, DatePickerField, Dialog, Divider, DragHandle, Dropdown, ExpansionPanel, Flag, FlexBox, GenericBlock, GenericBlockGapSize, Grid, GridColumn, GridItem, Heading, HeadingLevelProvider, Icon, IconButton, ImageBlock, ImageBlockCaptionPosition, ImageLightbox, InlineList, InputHelper, InputLabel, Lightbox, Link, LinkPreview, List, ListDivider, ListItem, ListSection, ListSubheader, MenuButton, ListDivider as MenuDivider, MenuItem, Message, Mosaic, Navigation, Notification, Placement, Popover, PopoverDialog, PostBlock, Progress, ProgressCircular, ProgressLinear, ProgressTracker, ProgressTrackerProvider, ProgressTrackerStep, ProgressTrackerStepPanel, ProgressVariant, RadioButton, RadioGroup, RawInputText, RawInputTextarea, Select, SelectButton, SelectMultiple, SelectMultipleField, SelectTextField, SelectVariant, SelectionChipGroup, SideNavigation, SideNavigationItem, SkeletonCircle, SkeletonRectangle, SkeletonRectangleVariant, SkeletonTypography, Slider, Slides, Slideshow, SlideshowControls, SlideshowItem, Switch, CLASSNAME$3 as TIME_PICKER_FIELD_CLASSNAME, COMPONENT_NAME$2 as TIME_PICKER_FIELD_COMPONENT_NAME, Tab, TabList, TabListLayout, TabPanel, TabProvider, Table, TableBody, TableCell, TableCellVariant, TableHeader, TableRow, Text, TextField, ThOrder, ThemeProvider, Thumbnail, ThumbnailAspectRatio, ThumbnailObjectFit, ThumbnailVariant, TimePickerField, Toolbar, Tooltip, Uploader, UploaderVariant, UserBlock, clamp, useFocusPointStyle, useHeadingLevel, useTheme };
22354
22493
  //# sourceMappingURL=index.js.map