@nebula.js/stardust 4.5.0-alpha.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * @nebula.js/stardust v4.5.0-alpha.0
2
+ * @nebula.js/stardust v4.5.0
3
3
  * Copyright (c) 2023 QlikTech International AB
4
4
  * Released under the MIT license.
5
5
  */
@@ -722,26 +722,26 @@
722
722
  }
723
723
  })(runtime);
724
724
 
725
- function ownKeys(object, enumerableOnly) {
726
- var keys = Object.keys(object);
725
+ function ownKeys(e, r) {
726
+ var t = Object.keys(e);
727
727
  if (Object.getOwnPropertySymbols) {
728
- var symbols = Object.getOwnPropertySymbols(object);
729
- enumerableOnly && (symbols = symbols.filter(function (sym) {
730
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
731
- })), keys.push.apply(keys, symbols);
732
- }
733
- return keys;
734
- }
735
- function _objectSpread2(target) {
736
- for (var i = 1; i < arguments.length; i++) {
737
- var source = null != arguments[i] ? arguments[i] : {};
738
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
739
- _defineProperty(target, key, source[key]);
740
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
741
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
728
+ var o = Object.getOwnPropertySymbols(e);
729
+ r && (o = o.filter(function (r) {
730
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
731
+ })), t.push.apply(t, o);
732
+ }
733
+ return t;
734
+ }
735
+ function _objectSpread2(e) {
736
+ for (var r = 1; r < arguments.length; r++) {
737
+ var t = null != arguments[r] ? arguments[r] : {};
738
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
739
+ _defineProperty(e, r, t[r]);
740
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
741
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
742
742
  });
743
743
  }
744
- return target;
744
+ return e;
745
745
  }
746
746
  function _defineProperty(obj, key, value) {
747
747
  key = _toPropertyKey(key);
@@ -4417,7 +4417,11 @@
4417
4417
  }
4418
4418
 
4419
4419
  function isMuiElement(element, muiNames) {
4420
- return /*#__PURE__*/reactExports.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;
4420
+ var _muiName, _element$type;
4421
+ return /*#__PURE__*/reactExports.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName
4422
+ // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45
4423
+ // eslint-disable-next-line no-underscore-dangle
4424
+ (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;
4421
4425
  }
4422
4426
 
4423
4427
  function ownerDocument(node) {
@@ -4456,6 +4460,13 @@
4456
4460
  }
4457
4461
  }
4458
4462
 
4463
+ /**
4464
+ * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.
4465
+ * This is useful for effects that are only needed for client-side rendering but not for SSR.
4466
+ *
4467
+ * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85
4468
+ * and confirm it doesn't apply to your use-case.
4469
+ */
4459
4470
  const useEnhancedEffect = typeof window !== 'undefined' ? reactExports.useLayoutEffect : reactExports.useEffect;
4460
4471
  var useEnhancedEffect$1 = useEnhancedEffect;
4461
4472
 
@@ -4520,7 +4531,8 @@
4520
4531
  }
4521
4532
 
4522
4533
  /**
4523
- * https://github.com/facebook/react/issues/14099#issuecomment-440013892
4534
+ * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892
4535
+ * See RFC in https://github.com/reactjs/rfcs/pull/220
4524
4536
  */
4525
4537
 
4526
4538
  function useEventCallback(fn) {
@@ -6940,7 +6952,7 @@
6940
6952
  }
6941
6953
 
6942
6954
  /**
6943
- * @mui/styled-engine v5.14.6
6955
+ * @mui/styled-engine v5.14.11
6944
6956
  *
6945
6957
  * @license MIT
6946
6958
  * This source code is licensed under the MIT license found in the
@@ -7620,10 +7632,20 @@
7620
7632
  const maxWidth = props => {
7621
7633
  if (props.maxWidth !== undefined && props.maxWidth !== null) {
7622
7634
  const styleFromPropValue = propValue => {
7623
- var _props$theme;
7635
+ var _props$theme, _props$theme2;
7624
7636
  const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || values$1[propValue];
7637
+ if (!breakpoint) {
7638
+ return {
7639
+ maxWidth: sizingTransform(propValue)
7640
+ };
7641
+ }
7642
+ if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {
7643
+ return {
7644
+ maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`
7645
+ };
7646
+ }
7625
7647
  return {
7626
- maxWidth: breakpoint || sizingTransform(propValue)
7648
+ maxWidth: breakpoint
7627
7649
  };
7628
7650
  };
7629
7651
  return handleBreakpoints(props, props.maxWidth, styleFromPropValue);
@@ -11129,6 +11151,12 @@
11129
11151
  const ButtonGroupContext = /*#__PURE__*/reactExports.createContext({});
11130
11152
  var ButtonGroupContext$1 = ButtonGroupContext;
11131
11153
 
11154
+ /**
11155
+ * @ignore - internal component.
11156
+ */
11157
+ const ButtonGroupButtonContext = /*#__PURE__*/reactExports.createContext(undefined);
11158
+ var ButtonGroupButtonContext$1 = ButtonGroupButtonContext;
11159
+
11132
11160
  const _excluded$C = ["children", "color", "component", "className", "disabled", "disableElevation", "disableFocusRipple", "endIcon", "focusVisibleClassName", "fullWidth", "size", "startIcon", "type", "variant"];
11133
11161
  const useUtilityClasses$q = ownerState => {
11134
11162
  const {
@@ -11334,6 +11362,7 @@
11334
11362
  const Button = /*#__PURE__*/reactExports.forwardRef(function Button(inProps, ref) {
11335
11363
  // props priority: `inProps` > `contextProps` > `themeDefaultProps`
11336
11364
  const contextProps = reactExports.useContext(ButtonGroupContext$1);
11365
+ const buttonGroupButtonContextPositionClassName = reactExports.useContext(ButtonGroupButtonContext$1);
11337
11366
  const resolvedProps = resolveProps(contextProps, inProps);
11338
11367
  const props = useThemeProps({
11339
11368
  props: resolvedProps,
@@ -11378,9 +11407,10 @@
11378
11407
  ownerState: ownerState,
11379
11408
  children: endIconProp
11380
11409
  });
11410
+ const positionClassName = buttonGroupButtonContextPositionClassName || '';
11381
11411
  return /*#__PURE__*/jsxRuntimeExports.jsxs(ButtonRoot, _extends$5({
11382
11412
  ownerState: ownerState,
11383
- className: clsx(contextProps.className, classes.root, className),
11413
+ className: clsx(contextProps.className, classes.root, className, positionClassName),
11384
11414
  component: component,
11385
11415
  disabled: disabled,
11386
11416
  focusRipple: !disableFocusRipple,
@@ -11712,7 +11742,7 @@
11712
11742
  return cache[key];
11713
11743
  }
11714
11744
 
11715
- const NEBULA_VERSION_HASH = "d1ff" ;
11745
+ const NEBULA_VERSION_HASH = "7c03" ;
11716
11746
  ClassNameGenerator$1.configure(componentName => {
11717
11747
  return "njs-".concat(NEBULA_VERSION_HASH, "-").concat(componentName.replace('Mui', ''));
11718
11748
  });
@@ -11973,7 +12003,7 @@
11973
12003
  const appRef = React.createRef();
11974
12004
  const element = document.createElement('div');
11975
12005
  element.style.display = 'none';
11976
- element.setAttribute('data-nebulajs-version', "4.5.0-alpha.0" );
12006
+ element.setAttribute('data-nebulajs-version', "4.5.0" );
11977
12007
  element.setAttribute('data-app-id', app.id);
11978
12008
  document.body.appendChild(element);
11979
12009
  if (context) {
@@ -12934,51 +12964,6 @@
12934
12964
  return;
12935
12965
  }
12936
12966
  const doc = ownerDocument(rootRef.current);
12937
- const contain = nativeEvent => {
12938
- const {
12939
- current: rootElement
12940
- } = rootRef;
12941
-
12942
- // Cleanup functions are executed lazily in React 17.
12943
- // Contain can be called between the component being unmounted and its cleanup function being run.
12944
- if (rootElement === null) {
12945
- return;
12946
- }
12947
- if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {
12948
- ignoreNextEnforceFocus.current = false;
12949
- return;
12950
- }
12951
- if (!rootElement.contains(doc.activeElement)) {
12952
- // if the focus event is not coming from inside the children's react tree, reset the refs
12953
- if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {
12954
- reactFocusEventTarget.current = null;
12955
- } else if (reactFocusEventTarget.current !== null) {
12956
- return;
12957
- }
12958
- if (!activated.current) {
12959
- return;
12960
- }
12961
- let tabbable = [];
12962
- if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
12963
- tabbable = getTabbable(rootRef.current);
12964
- }
12965
- if (tabbable.length > 0) {
12966
- var _lastKeydown$current, _lastKeydown$current2;
12967
- const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
12968
- const focusNext = tabbable[0];
12969
- const focusPrevious = tabbable[tabbable.length - 1];
12970
- if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
12971
- if (isShiftTab) {
12972
- focusPrevious.focus();
12973
- } else {
12974
- focusNext.focus();
12975
- }
12976
- }
12977
- } else {
12978
- rootElement.focus();
12979
- }
12980
- }
12981
- };
12982
12967
  const loopFocus = nativeEvent => {
12983
12968
  lastKeydown.current = nativeEvent;
12984
12969
  if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {
@@ -12996,6 +12981,62 @@
12996
12981
  }
12997
12982
  }
12998
12983
  };
12984
+ const contain = () => {
12985
+ const rootElement = rootRef.current;
12986
+
12987
+ // Cleanup functions are executed lazily in React 17.
12988
+ // Contain can be called between the component being unmounted and its cleanup function being run.
12989
+ if (rootElement === null) {
12990
+ return;
12991
+ }
12992
+ if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {
12993
+ ignoreNextEnforceFocus.current = false;
12994
+ return;
12995
+ }
12996
+
12997
+ // The focus is already inside
12998
+ if (rootElement.contains(doc.activeElement)) {
12999
+ return;
13000
+ }
13001
+
13002
+ // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)
13003
+ if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {
13004
+ return;
13005
+ }
13006
+
13007
+ // if the focus event is not coming from inside the children's react tree, reset the refs
13008
+ if (doc.activeElement !== reactFocusEventTarget.current) {
13009
+ reactFocusEventTarget.current = null;
13010
+ } else if (reactFocusEventTarget.current !== null) {
13011
+ return;
13012
+ }
13013
+ if (!activated.current) {
13014
+ return;
13015
+ }
13016
+ let tabbable = [];
13017
+ if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
13018
+ tabbable = getTabbable(rootRef.current);
13019
+ }
13020
+
13021
+ // one of the sentinel nodes was focused, so move the focus
13022
+ // to the first/last tabbable element inside the focus trap
13023
+ if (tabbable.length > 0) {
13024
+ var _lastKeydown$current, _lastKeydown$current2;
13025
+ const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');
13026
+ const focusNext = tabbable[0];
13027
+ const focusPrevious = tabbable[tabbable.length - 1];
13028
+ if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {
13029
+ if (isShiftTab) {
13030
+ focusPrevious.focus();
13031
+ } else {
13032
+ focusNext.focus();
13033
+ }
13034
+ }
13035
+ // no tabbable elements in the trap focus or the focus was outside of the focus trap
13036
+ } else {
13037
+ rootElement.focus();
13038
+ }
13039
+ };
12999
13040
  doc.addEventListener('focusin', contain);
13000
13041
  doc.addEventListener('keydown', loopFocus, true);
13001
13042
 
@@ -13007,7 +13048,7 @@
13007
13048
  // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.
13008
13049
  const interval = setInterval(() => {
13009
13050
  if (doc.activeElement && doc.activeElement.tagName === 'BODY') {
13010
- contain(null);
13051
+ contain();
13011
13052
  }
13012
13053
  }, 50);
13013
13054
  return () => {
@@ -15448,7 +15489,7 @@
15448
15489
  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);
15449
15490
  const createHandleKeyDown = otherHandlers => event => {
15450
15491
  var _otherHandlers$onKeyD;
15451
- (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null ? void 0 : _otherHandlers$onKeyD.call(otherHandlers, event);
15492
+ (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
15452
15493
 
15453
15494
  // The handler doesn't take event.defaultPrevented into account:
15454
15495
  //
@@ -15469,7 +15510,7 @@
15469
15510
  };
15470
15511
  const createHandleBackdropClick = otherHandlers => event => {
15471
15512
  var _otherHandlers$onClic;
15472
- (_otherHandlers$onClic = otherHandlers.onClick) == null ? void 0 : _otherHandlers$onClic.call(otherHandlers, event);
15513
+ (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
15473
15514
  if (event.target !== event.currentTarget) {
15474
15515
  return;
15475
15516
  }
@@ -15517,8 +15558,8 @@
15517
15558
  }
15518
15559
  };
15519
15560
  return {
15520
- onEnter: createChainedFunction(handleEnter, children.props.onEnter),
15521
- onExited: createChainedFunction(handleExited, children.props.onExited)
15561
+ onEnter: createChainedFunction(handleEnter, children == null ? void 0 : children.props.onEnter),
15562
+ onExited: createChainedFunction(handleExited, children == null ? void 0 : children.props.onExited)
15522
15563
  };
15523
15564
  };
15524
15565
  return {
@@ -15656,53 +15697,51 @@
15656
15697
  if (isEmpty$1(newState)) {
15657
15698
  return;
15658
15699
  }
15659
- setState(prevState => {
15660
- return updateState(prevState, newState);
15661
- });
15700
+ setState(prevState => updateState(prevState, newState));
15662
15701
  }, [getUpdatedState]);
15663
- const syncHeightWithFlushSync = () => {
15664
- const newState = getUpdatedState();
15665
- if (isEmpty$1(newState)) {
15666
- return;
15667
- }
15702
+ useEnhancedEffect$1(() => {
15703
+ const syncHeightWithFlushSync = () => {
15704
+ const newState = getUpdatedState();
15705
+ if (isEmpty$1(newState)) {
15706
+ return;
15707
+ }
15668
15708
 
15669
- // In React 18, state updates in a ResizeObserver's callback are happening after the paint which causes flickering
15670
- // when doing some visual updates in it. Using flushSync ensures that the dom will be painted after the states updates happen
15671
- // Related issue - https://github.com/facebook/react/issues/24331
15672
- reactDomExports.flushSync(() => {
15673
- setState(prevState => {
15674
- return updateState(prevState, newState);
15709
+ // In React 18, state updates in a ResizeObserver's callback are happening after
15710
+ // the paint, this leads to an infinite rendering.
15711
+ //
15712
+ // Using flushSync ensures that the states is updated before the next pain.
15713
+ // Related issue - https://github.com/facebook/react/issues/24331
15714
+ reactDomExports.flushSync(() => {
15715
+ setState(prevState => updateState(prevState, newState));
15675
15716
  });
15676
- });
15677
- };
15678
- reactExports.useEffect(() => {
15679
- const handleResize = debounce$1(() => {
15717
+ };
15718
+ const handleResize = () => {
15680
15719
  renders.current = 0;
15681
-
15682
- // If the TextareaAutosize component is replaced by Suspense with a fallback, the last
15683
- // ResizeObserver's handler that runs because of the change in the layout is trying to
15684
- // access a dom node that is no longer there (as the fallback component is being shown instead).
15685
- // See https://github.com/mui/material-ui/issues/32640
15686
- if (inputRef.current) {
15687
- syncHeightWithFlushSync();
15688
- }
15689
- });
15690
- let resizeObserver;
15720
+ syncHeightWithFlushSync();
15721
+ };
15722
+ // Workaround a "ResizeObserver loop completed with undelivered notifications" error
15723
+ // in test.
15724
+ // Note that we might need to use this logic in production per https://github.com/WICG/resize-observer/issues/38
15725
+ // Also see https://github.com/mui/mui-x/issues/8733
15726
+ let rAF;
15727
+ const debounceHandleResize = debounce$1(handleResize);
15691
15728
  const input = inputRef.current;
15692
15729
  const containerWindow = ownerWindow(input);
15693
- containerWindow.addEventListener('resize', handleResize);
15730
+ containerWindow.addEventListener('resize', debounceHandleResize);
15731
+ let resizeObserver;
15694
15732
  if (typeof ResizeObserver !== 'undefined') {
15695
15733
  resizeObserver = new ResizeObserver(handleResize);
15696
15734
  resizeObserver.observe(input);
15697
15735
  }
15698
15736
  return () => {
15699
- handleResize.clear();
15700
- containerWindow.removeEventListener('resize', handleResize);
15737
+ debounceHandleResize.clear();
15738
+ cancelAnimationFrame(rAF);
15739
+ containerWindow.removeEventListener('resize', debounceHandleResize);
15701
15740
  if (resizeObserver) {
15702
15741
  resizeObserver.disconnect();
15703
15742
  }
15704
15743
  };
15705
- });
15744
+ }, [getUpdatedState]);
15706
15745
  useEnhancedEffect$1(() => {
15707
15746
  syncHeight();
15708
15747
  });
@@ -15907,7 +15946,7 @@
15907
15946
  type
15908
15947
  } = ownerState;
15909
15948
  const slots = {
15910
- root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size === 'small' && 'sizeSmall', multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],
15949
+ root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size && size !== 'medium' && `size${capitalize(size)}`, multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],
15911
15950
  input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']
15912
15951
  };
15913
15952
  return composeClasses(slots, getInputBaseUtilityClass, classes);
@@ -17227,7 +17266,7 @@
17227
17266
  }
17228
17267
  generateUtilityClasses('MuiModal', ['root', 'hidden', 'backdrop']);
17229
17268
 
17230
- const _excluded$m = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "open", "slotProps", "slots", "theme"];
17269
+ const _excluded$m = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "onTransitionEnter", "onTransitionExited", "open", "slotProps", "slots", "theme"];
17231
17270
  const useUtilityClasses$e = ownerState => {
17232
17271
  const {
17233
17272
  open,
@@ -19243,7 +19282,7 @@
19243
19282
  generateUtilityClasses('MuiPopover', ['root', 'paper']);
19244
19283
 
19245
19284
  const _excluded$a = ["onEntering"],
19246
- _excluded2$1 = ["action", "anchorEl", "anchorOrigin", "anchorPosition", "anchorReference", "children", "className", "container", "elevation", "marginThreshold", "open", "PaperProps", "slots", "slotProps", "transformOrigin", "TransitionComponent", "transitionDuration", "TransitionProps"],
19285
+ _excluded2$1 = ["action", "anchorEl", "anchorOrigin", "anchorPosition", "anchorReference", "children", "className", "container", "elevation", "marginThreshold", "open", "PaperProps", "slots", "slotProps", "transformOrigin", "TransitionComponent", "transitionDuration", "TransitionProps", "disableScrollLock"],
19247
19286
  _excluded3 = ["slotProps"];
19248
19287
  function getOffsetTop(rect, vertical) {
19249
19288
  let offset = 0;
@@ -19337,7 +19376,8 @@
19337
19376
  transitionDuration: transitionDurationProp = 'auto',
19338
19377
  TransitionProps: {
19339
19378
  onEntering
19340
- } = {}
19379
+ } = {},
19380
+ disableScrollLock = false
19341
19381
  } = props,
19342
19382
  TransitionProps = _objectWithoutPropertiesLoose$3(props.TransitionProps, _excluded$a),
19343
19383
  other = _objectWithoutPropertiesLoose$3(props, _excluded2$1);
@@ -19414,18 +19454,18 @@
19414
19454
  const widthThreshold = containerWindow.innerWidth - marginThreshold;
19415
19455
 
19416
19456
  // Check if the vertical axis needs shifting
19417
- if (top < marginThreshold) {
19457
+ if (marginThreshold !== null && top < marginThreshold) {
19418
19458
  const diff = top - marginThreshold;
19419
19459
  top -= diff;
19420
19460
  elemTransformOrigin.vertical += diff;
19421
- } else if (bottom > heightThreshold) {
19461
+ } else if (marginThreshold !== null && bottom > heightThreshold) {
19422
19462
  const diff = bottom - heightThreshold;
19423
19463
  top -= diff;
19424
19464
  elemTransformOrigin.vertical += diff;
19425
19465
  }
19426
19466
 
19427
19467
  // Check if the horizontal axis needs shifting
19428
- if (left < marginThreshold) {
19468
+ if (marginThreshold !== null && left < marginThreshold) {
19429
19469
  const diff = left - marginThreshold;
19430
19470
  left -= diff;
19431
19471
  elemTransformOrigin.horizontal += diff;
@@ -19456,6 +19496,12 @@
19456
19496
  element.style.transformOrigin = positioning.transformOrigin;
19457
19497
  setIsPositioned(true);
19458
19498
  }, [getPositioningStyle]);
19499
+ reactExports.useEffect(() => {
19500
+ if (disableScrollLock) {
19501
+ window.addEventListener('scroll', setPositioningStyles);
19502
+ }
19503
+ return () => window.removeEventListener('scroll', setPositioningStyles);
19504
+ }, [anchorEl, disableScrollLock, setPositioningStyles]);
19459
19505
  const handleEntering = (element, isAppearing) => {
19460
19506
  if (onEntering) {
19461
19507
  onEntering(element, isAppearing);
@@ -19536,7 +19582,8 @@
19536
19582
  } = _useSlotProps,
19537
19583
  rootProps = _objectWithoutPropertiesLoose$3(_useSlotProps, _excluded3);
19538
19584
  return /*#__PURE__*/jsxRuntimeExports.jsx(RootSlot, _extends$5({}, rootProps, !isHostComponent(RootSlot) && {
19539
- slotProps: rootSlotPropsProp
19585
+ slotProps: rootSlotPropsProp,
19586
+ disableScrollLock
19540
19587
  }, {
19541
19588
  children: /*#__PURE__*/jsxRuntimeExports.jsx(TransitionComponent, _extends$5({
19542
19589
  appear: true,
@@ -20064,17 +20111,18 @@
20064
20111
  function getRadioUtilityClass(slot) {
20065
20112
  return generateUtilityClass('MuiRadio', slot);
20066
20113
  }
20067
- const radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);
20114
+ const radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);
20068
20115
  var radioClasses$1 = radioClasses;
20069
20116
 
20070
20117
  const _excluded$6 = ["checked", "checkedIcon", "color", "icon", "name", "onChange", "size", "className"];
20071
20118
  const useUtilityClasses$1 = ownerState => {
20072
20119
  const {
20073
20120
  classes,
20074
- color
20121
+ color,
20122
+ size
20075
20123
  } = ownerState;
20076
20124
  const slots = {
20077
- root: ['root', `color${capitalize(color)}`]
20125
+ root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]
20078
20126
  };
20079
20127
  return _extends$5({}, classes, composeClasses(slots, getRadioUtilityClass, classes));
20080
20128
  };
@@ -21850,6 +21898,9 @@
21850
21898
  const barPadPx = 4;
21851
21899
  const barBorderWidthPx = 1;
21852
21900
  const barWithCheckboxLeftPadPx = 29;
21901
+ const GRID_ROW_HEIGHT = 32;
21902
+ const LIST_ROW_HEIGHT = 29;
21903
+ const DENSE_ROW_HEIGHT = 20; // same for both list and grid in dense mode
21853
21904
 
21854
21905
  const joinClassNames = namesArray => namesArray.filter(c => !!c).join(' ').trim();
21855
21906
  const getBarWidth = _ref => {
@@ -22691,13 +22742,13 @@
22691
22742
  const getElementIndex = currentTarget => +currentTarget.getAttribute('data-n');
22692
22743
  const focusSearch = container => {
22693
22744
  const searchField = container === null || container === void 0 ? void 0 : container.querySelector('.search input');
22694
- searchField === null || searchField === void 0 ? void 0 : searchField.focus();
22745
+ searchField === null || searchField === void 0 || searchField.focus();
22695
22746
  return searchField;
22696
22747
  };
22697
22748
  const focusRow = container => {
22698
22749
  const row = container === null || container === void 0 ? void 0 : container.querySelector('.value.last-focused, .value.selector, .value');
22699
- row === null || row === void 0 ? void 0 : row.setAttribute('tabIndex', 0);
22700
- row === null || row === void 0 ? void 0 : row.focus();
22750
+ row === null || row === void 0 || row.setAttribute('tabIndex', 0);
22751
+ row === null || row === void 0 || row.focus();
22701
22752
  return row;
22702
22753
  };
22703
22754
 
@@ -22879,18 +22930,18 @@
22879
22930
  case KEYS.HOME:
22880
22931
  focusListItems.setFirst(true);
22881
22932
  if (ctrlKey) {
22882
- setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('overflowStart');
22933
+ setScrollPosition === null || setScrollPosition === void 0 || setScrollPosition('overflowStart');
22883
22934
  break;
22884
22935
  }
22885
- setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('start');
22936
+ setScrollPosition === null || setScrollPosition === void 0 || setScrollPosition('start');
22886
22937
  break;
22887
22938
  case KEYS.END:
22888
22939
  focusListItems.setLast(true);
22889
22940
  if (ctrlKey) {
22890
- setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('overflowEnd');
22941
+ setScrollPosition === null || setScrollPosition === void 0 || setScrollPosition('overflowEnd');
22891
22942
  break;
22892
22943
  }
22893
- setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('end');
22944
+ setScrollPosition === null || setScrollPosition === void 0 || setScrollPosition('end');
22894
22945
  break;
22895
22946
  case KEYS.A:
22896
22947
  if (ctrlKey || metaKey) {
@@ -25071,9 +25122,8 @@
25071
25122
  let rowCount;
25072
25123
  const isGridMode = dataLayout === 'grid';
25073
25124
  const itemPadding = 4;
25074
- const denseItemHeight = 20;
25075
- const normalItemHeight = isGridMode ? 32 : 29;
25076
- let itemHeight = dense ? denseItemHeight : normalItemHeight;
25125
+ const normalItemHeight = isGridMode ? GRID_ROW_HEIGHT : LIST_ROW_HEIGHT;
25126
+ let itemHeight = dense ? DENSE_ROW_HEIGHT : normalItemHeight;
25077
25127
  if (isGridMode) {
25078
25128
  // Emulate a margin between items using padding, since the list library
25079
25129
  // needs an explicit row height and cannot handle margins.
@@ -25651,7 +25701,7 @@
25651
25701
  const cardinal = layout === null || layout === void 0 ? void 0 : layout.qListObject.qDimensionInfo.qCardinal;
25652
25702
  if (itemsLoader !== null && itemsLoader !== void 0 && itemsLoader.pages.length && !awaitingFrequencyMax || cardinal === 0) {
25653
25703
  // All necessary data fetching done - signal rendering done!
25654
- renderedCallback === null || renderedCallback === void 0 ? void 0 : renderedCallback();
25704
+ renderedCallback === null || renderedCallback === void 0 || renderedCallback();
25655
25705
  }
25656
25706
  const isItemLoaded = reactExports.useCallback(index => {
25657
25707
  if (!(pages !== null && pages !== void 0 && pages.length) || !local.current.validPages) {
@@ -26404,7 +26454,7 @@
26404
26454
  actionsRefMock = null,
26405
26455
  // for testing
26406
26456
  direction = 'ltr',
26407
- autoConfirm
26457
+ autoConfirm = false
26408
26458
  } = _ref3;
26409
26459
  const defaultSelectionActions = useDefaultSelectionActions(selections);
26410
26460
  const {
@@ -26451,14 +26501,7 @@
26451
26501
  focusHandler.on('focus_toolbar_last', focusLast);
26452
26502
  }, []);
26453
26503
  if (autoConfirm) {
26454
- const canConfirm = selections.show;
26455
- if (canConfirm) {
26456
- const confirm = defaultSelectionActions.find(o => o.key === 'confirm') || {
26457
- action: () => {}
26458
- };
26459
- confirm.action();
26460
- }
26461
- return null;
26504
+ return undefined;
26462
26505
  }
26463
26506
  let moreEnabled = more$1.enabled;
26464
26507
  let moreActions = more$1.actions;
@@ -26535,13 +26578,15 @@
26535
26578
  transformOrigin: popoverTransformOrigin,
26536
26579
  hideBackdrop: true,
26537
26580
  style: popoverStyle,
26538
- PaperProps: {
26539
- id: 'njs-action-toolbar-popover',
26540
- 'data-testid': 'njs-action-toolbar-popover',
26541
- className: ActionToolbarElement.className,
26542
- style: {
26543
- pointerEvents: 'auto',
26544
- padding: theme.spacing(0.5, 0.25)
26581
+ slotProps: {
26582
+ paper: {
26583
+ id: 'njs-action-toolbar-popover',
26584
+ 'data-testid': 'njs-action-toolbar-popover',
26585
+ className: ActionToolbarElement.className,
26586
+ style: {
26587
+ pointerEvents: 'auto',
26588
+ padding: theme.spacing(0.5, 0.25)
26589
+ }
26545
26590
  }
26546
26591
  }
26547
26592
  }, Actions) : show && Actions;
@@ -26672,7 +26717,7 @@
26672
26717
  function focusRow(container) {
26673
26718
  const row = (container === null || container === void 0 ? void 0 : container.querySelector('.last-focused')) || (container === null || container === void 0 ? void 0 : container.querySelector('[role="row"]:first-child'));
26674
26719
  row.setAttribute('tabIndex', 0);
26675
- row === null || row === void 0 ? void 0 : row.focus();
26720
+ row === null || row === void 0 || row.focus();
26676
26721
  }
26677
26722
  const onKeyDown = async e => {
26678
26723
  const {
@@ -26698,7 +26743,7 @@
26698
26743
  focusRow(container);
26699
26744
 
26700
26745
  // Clean up.
26701
- container === null || container === void 0 ? void 0 : container.querySelectorAll('.last-focused').forEach(elm => {
26746
+ container === null || container === void 0 || container.querySelectorAll('.last-focused').forEach(elm => {
26702
26747
  elm.classList.remove('last-focused');
26703
26748
  });
26704
26749
  }
@@ -27007,12 +27052,12 @@
27007
27052
  activateClickOut() {
27008
27053
  var _options$onSelectionA;
27009
27054
  document.addEventListener('mousedown', handler);
27010
- options === null || options === void 0 || (_options$onSelectionA = options.onSelectionActivated) === null || _options$onSelectionA === void 0 ? void 0 : _options$onSelectionA.call(options);
27055
+ options === null || options === void 0 || (_options$onSelectionA = options.onSelectionActivated) === null || _options$onSelectionA === void 0 || _options$onSelectionA.call(options);
27011
27056
  },
27012
27057
  deactivateClickOut() {
27013
27058
  var _options$onSelectionD;
27014
27059
  document.removeEventListener('mousedown', handler);
27015
- options === null || options === void 0 || (_options$onSelectionD = options.onSelectionDeactivated) === null || _options$onSelectionD === void 0 ? void 0 : _options$onSelectionD.call(options);
27060
+ options === null || options === void 0 || (_options$onSelectionD = options.onSelectionDeactivated) === null || _options$onSelectionD === void 0 || _options$onSelectionD.call(options);
27016
27061
  }
27017
27062
  };
27018
27063
  };
@@ -27137,7 +27182,7 @@
27137
27182
  if (selected && !additive) {
27138
27183
  state.itemStates[elementNumber] = false;
27139
27184
  } else if (!selected) {
27140
- selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.push(elementNumber);
27185
+ selectedValues === null || selectedValues === void 0 || selectedValues.push(elementNumber);
27141
27186
  state.itemStates[elementNumber] = true;
27142
27187
  }
27143
27188
  },
@@ -27277,7 +27322,7 @@
27277
27322
  });
27278
27323
  const onCtrlF = () => {
27279
27324
  const input = searchContainerRef.current.querySelector('input');
27280
- input === null || input === void 0 ? void 0 : input.focus();
27325
+ input === null || input === void 0 || input.focus();
27281
27326
  };
27282
27327
  const hasSelections$1 = hasSelections(layout);
27283
27328
  return /*#__PURE__*/React.createElement(Popover$1, {
@@ -28530,12 +28575,12 @@
28530
28575
  var DrillDownIcon = (props => SvgIcon(drillDown(props)));
28531
28576
 
28532
28577
  function removeInnnerTabStops(container) {
28533
- container === null || container === void 0 ? void 0 : container.querySelectorAll('[tabIndex="0"]').forEach(elm => {
28578
+ container === null || container === void 0 || container.querySelectorAll('[tabIndex="0"]').forEach(elm => {
28534
28579
  elm.setAttribute('tabIndex', -1);
28535
28580
  });
28536
28581
  }
28537
28582
  function removeLastFocused(container) {
28538
- container === null || container === void 0 ? void 0 : container.querySelectorAll('.last-focused').forEach(elm => {
28583
+ container === null || container === void 0 || container.querySelectorAll('.last-focused').forEach(elm => {
28539
28584
  elm.classList.remove('last-focused');
28540
28585
  });
28541
28586
  }
@@ -28583,13 +28628,13 @@
28583
28628
  const firstRowElement = c === null || c === void 0 ? void 0 : c.querySelector('.value.selector, .value');
28584
28629
  const confirmButton = c === null || c === void 0 ? void 0 : c.querySelector('.actions-toolbar-default-actions .actions-toolbar-confirm');
28585
28630
  const elementToFocus = searchField || lastSelectedRow || firstRowElement || confirmButton;
28586
- elementToFocus === null || elementToFocus === void 0 ? void 0 : elementToFocus.setAttribute('tabIndex', 0);
28587
- elementToFocus === null || elementToFocus === void 0 ? void 0 : elementToFocus.focus();
28631
+ elementToFocus === null || elementToFocus === void 0 || elementToFocus.setAttribute('tabIndex', 0);
28632
+ elementToFocus === null || elementToFocus === void 0 || elementToFocus.focus();
28588
28633
  },
28589
28634
  focusSelection() {
28590
28635
  const confirmButton = document.querySelector('.actions-toolbar-default-actions .actions-toolbar-confirm');
28591
- confirmButton === null || confirmButton === void 0 ? void 0 : confirmButton.setAttribute('tabIndex', 0);
28592
- confirmButton === null || confirmButton === void 0 ? void 0 : confirmButton.focus();
28636
+ confirmButton === null || confirmButton === void 0 || confirmButton.setAttribute('tabIndex', 0);
28637
+ confirmButton === null || confirmButton === void 0 || confirmButton.focus();
28593
28638
  }
28594
28639
  };
28595
28640
  return keyboard;
@@ -28631,7 +28676,7 @@
28631
28676
  keyboard.blur();
28632
28677
  const c = currentTarget.closest('.listbox-container');
28633
28678
  c.setAttribute('tabIndex', -1);
28634
- c === null || c === void 0 ? void 0 : c.focus();
28679
+ c === null || c === void 0 || c.focus();
28635
28680
  }
28636
28681
  };
28637
28682
  const handleKeyDown = event => {
@@ -28794,11 +28839,9 @@
28794
28839
  isLocked,
28795
28840
  listboxSelectionToolbarItems,
28796
28841
  selections,
28797
- keyboard,
28798
- autoConfirm
28842
+ keyboard
28799
28843
  } = _ref;
28800
28844
  return {
28801
- autoConfirm,
28802
28845
  show: showToolbar && !isDetached,
28803
28846
  popover: {
28804
28847
  show: showToolbar && isDetached,
@@ -28819,10 +28862,10 @@
28819
28862
  show: showToolbar,
28820
28863
  api: selections,
28821
28864
  onConfirm: () => {
28822
- keyboard === null || keyboard === void 0 ? void 0 : keyboard.focus();
28865
+ keyboard === null || keyboard === void 0 || keyboard.focus();
28823
28866
  },
28824
28867
  onCancel: () => {
28825
- keyboard === null || keyboard === void 0 ? void 0 : keyboard.focus();
28868
+ keyboard === null || keyboard === void 0 || keyboard.focus();
28826
28869
  }
28827
28870
  }
28828
28871
  };
@@ -29104,10 +29147,6 @@
29104
29147
  const showSearchToggle = search === 'toggle' && showSearch;
29105
29148
  const searchVisible = (search === true || showSearchToggle) && !selectDisabled() && searchEnabled !== false;
29106
29149
  const dense = (_layoutOptions$dense = layoutOptions.dense) !== null && _layoutOptions$dense !== void 0 ? _layoutOptions$dense : false;
29107
- const searchHeight = dense ? 27 : 40;
29108
- const extraheight = dense ? 39 : 49;
29109
- const searchAddHeight = searchVisible ? searchHeight : 0;
29110
- const minHeight = showToolbarWithTitle ? 49 + searchAddHeight + extraheight : 0;
29111
29150
  const headerHeight = 32;
29112
29151
  const onShowSearch = () => {
29113
29152
  const newValue = !showSearch;
@@ -29118,17 +29157,18 @@
29118
29157
  onShowSearch();
29119
29158
  } else {
29120
29159
  const input = searchContainer.current.querySelector('input');
29121
- input === null || input === void 0 ? void 0 : input.focus();
29160
+ input === null || input === void 0 || input.focus();
29122
29161
  }
29123
29162
  };
29124
- const getActionToolbarProps = isDetached => getListboxActionProps({
29163
+ const getActionToolbarProps = isDetached => _objectSpread2(_objectSpread2({}, getListboxActionProps({
29125
29164
  isDetached: isPopover ? false : isDetached,
29126
29165
  showToolbar,
29127
29166
  containerRef,
29128
29167
  isLocked,
29129
29168
  listboxSelectionToolbarItems,
29130
29169
  selections,
29131
- keyboard,
29170
+ keyboard
29171
+ })), {}, {
29132
29172
  autoConfirm
29133
29173
  });
29134
29174
  const shouldAutoFocus = searchVisible && search === 'toggle';
@@ -29176,7 +29216,7 @@
29176
29216
  }
29177
29217
  }));
29178
29218
  if (isInvalid) {
29179
- renderedCallback === null || renderedCallback === void 0 ? void 0 : renderedCallback();
29219
+ renderedCallback === null || renderedCallback === void 0 || renderedCallback();
29180
29220
  }
29181
29221
  return /*#__PURE__*/React.createElement(React.Fragment, null, showDetachedToolbarOnly && /*#__PURE__*/React.createElement(ActionsToolbar, _extends$7({
29182
29222
  direction: direction
@@ -29189,7 +29229,6 @@
29189
29229
  containerPadding: containerPadding,
29190
29230
  style: {
29191
29231
  height: '100%',
29192
- minHeight: "".concat(minHeight, "px"),
29193
29232
  flexFlow: 'column nowrap'
29194
29233
  },
29195
29234
  onKeyDown: handleKeyDown,
@@ -29244,7 +29283,7 @@
29244
29283
  direction: "column",
29245
29284
  style: {
29246
29285
  height: '100%',
29247
- minHeight: '50px'
29286
+ minHeight: DENSE_ROW_HEIGHT + SCROLL_BAR_WIDTH
29248
29287
  },
29249
29288
  role: "region",
29250
29289
  "aria-label": translator.get('Listbox.ResultFilterLabel')
@@ -29459,7 +29498,7 @@
29459
29498
  */
29460
29499
  wildCardSearch: false,
29461
29500
  /**
29462
- * Automatically confirm selections without showing the selections toolbar.
29501
+ * Automatically confirm selections when clicking outside a listbox, without showing the selections toolbar.
29463
29502
  * @type {boolean=}
29464
29503
  * @default
29465
29504
  */