@nebula.js/stardust 4.12.0 → 4.14.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.
package/core/esm/dev.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * @nebula.js/stardust v4.12.0
2
+ * @nebula.js/stardust v4.14.0
3
3
  * Copyright (c) 2024 QlikTech International AB
4
4
  * Released under the MIT license.
5
5
  */
@@ -952,6 +952,26 @@ var CurrentSelections_Of = {
952
952
  "zh-TW": "{0}/ {1}"
953
953
  }
954
954
  };
955
+ var Listbox_Cyclic = {
956
+ id: "Listbox.Cyclic",
957
+ locale: {
958
+ "de-DE": "Zyklische Dimension",
959
+ "en-US": "Cyclic dimension",
960
+ "es-ES": "Dimensión cíclica",
961
+ "fr-FR": "Dimension cyclique",
962
+ "it-IT": "Dimensione ciclica",
963
+ "ja-JP": "サイクリック軸",
964
+ "ko-KR": "순환 차원",
965
+ "nl-NL": "Cyclische dimensie",
966
+ "pl-PL": "Wymiar cykliczny",
967
+ "pt-BR": "Dimensão cíclica",
968
+ "ru-RU": "Циклическое измерение",
969
+ "sv-SE": "Cyklisk dimension",
970
+ "tr-TR": "Döngüsel boyut",
971
+ "zh-CN": "循环维度",
972
+ "zh-TW": "循環維度"
973
+ }
974
+ };
955
975
  var Listbox_Dismiss = {
956
976
  id: "Listbox.Dismiss",
957
977
  locale: {
@@ -1956,6 +1976,7 @@ var all = {
1956
1976
  Cancel: Cancel$1,
1957
1977
  CurrentSelections_All: CurrentSelections_All,
1958
1978
  CurrentSelections_Of: CurrentSelections_Of,
1979
+ Listbox_Cyclic: Listbox_Cyclic,
1959
1980
  Listbox_Dismiss: Listbox_Dismiss,
1960
1981
  Listbox_DrillDown: Listbox_DrillDown,
1961
1982
  Listbox_ItemsOverflow: Listbox_ItemsOverflow,
@@ -2850,6 +2871,23 @@ var dataColors = {
2850
2871
  errorColor: "#ff4444",
2851
2872
  nullColor: "#d2d2d2"
2852
2873
  };
2874
+ var object$2 = {
2875
+ title: {
2876
+ main: {
2877
+ color: "@B50",
2878
+ fontSize: "15px"
2879
+ },
2880
+ subTitle: {
2881
+ color: "@B50",
2882
+ fontSize: "12px"
2883
+ },
2884
+ footer: {
2885
+ color: "@B50",
2886
+ fontSize: "12px",
2887
+ backgroundColor: "transparent"
2888
+ }
2889
+ }
2890
+ };
2853
2891
  var scales = [
2854
2892
  {
2855
2893
  name: "Sequential Gradient",
@@ -3036,6 +3074,7 @@ var baseRawJSON = {
3036
3074
  fontFamily: fontFamily,
3037
3075
  backgroundColor: backgroundColor$1,
3038
3076
  dataColors: dataColors,
3077
+ object: object$2,
3039
3078
  scales: scales,
3040
3079
  palettes: palettes
3041
3080
  };
@@ -3233,9 +3272,15 @@ function theme$1(resolvedTheme) {
3233
3272
  };
3234
3273
  },
3235
3274
  uiColor(c, shift) {
3275
+ const indexIsValid = typeof (c === null || c === void 0 ? void 0 : c.index) === 'number' && !Number.isNaN(c === null || c === void 0 ? void 0 : c.index);
3276
+ const colorIsValid = typeof (c === null || c === void 0 ? void 0 : c.color) === 'string';
3277
+ const somethingIsValid = indexIsValid || colorIsValid;
3278
+ if (!somethingIsValid) {
3279
+ return undefined;
3280
+ }
3236
3281
  // eslint-disable-next-line no-param-reassign
3237
3282
  shift = !!shift;
3238
- if (c.index < 0 || typeof c.index === 'undefined') {
3283
+ if ((c === null || c === void 0 ? void 0 : c.index) < 0 || typeof (c === null || c === void 0 ? void 0 : c.index) === 'undefined') {
3239
3284
  return c.color;
3240
3285
  }
3241
3286
  if (typeof uiPalette === 'undefined') {
@@ -5338,7 +5383,7 @@ var deepmerge = /*#__PURE__*/Object.freeze({
5338
5383
  isPlainObject: isPlainObject
5339
5384
  });
5340
5385
 
5341
- const _excluded$g = ["values", "unit", "step"];
5386
+ const _excluded$h = ["values", "unit", "step"];
5342
5387
  const sortBreakpointsValues = values => {
5343
5388
  const breakpointsAsArray = Object.keys(values).map(key => ({
5344
5389
  key,
@@ -5372,7 +5417,7 @@ function createBreakpoints(breakpoints) {
5372
5417
  unit = 'px',
5373
5418
  step = 5
5374
5419
  } = breakpoints,
5375
- other = _objectWithoutPropertiesLoose(breakpoints, _excluded$g);
5420
+ other = _objectWithoutPropertiesLoose(breakpoints, _excluded$h);
5376
5421
  const sortedValues = sortBreakpointsValues(values);
5377
5422
  const keys = Object.keys(sortedValues);
5378
5423
  function up(key) {
@@ -6437,7 +6482,7 @@ function applyStyles(key, styles) {
6437
6482
  return {};
6438
6483
  }
6439
6484
 
6440
- const _excluded$f = ["breakpoints", "palette", "spacing", "shape"];
6485
+ const _excluded$g = ["breakpoints", "palette", "spacing", "shape"];
6441
6486
  function createTheme$2(options = {}, ...args) {
6442
6487
  const {
6443
6488
  breakpoints: breakpointsInput = {},
@@ -6445,7 +6490,7 @@ function createTheme$2(options = {}, ...args) {
6445
6490
  spacing: spacingInput,
6446
6491
  shape: shapeInput = {}
6447
6492
  } = options,
6448
- other = _objectWithoutPropertiesLoose(options, _excluded$f);
6493
+ other = _objectWithoutPropertiesLoose(options, _excluded$g);
6449
6494
  const breakpoints = createBreakpoints(breakpointsInput);
6450
6495
  const spacing = createSpacing(spacingInput);
6451
6496
  let muiTheme = deepmerge$1({
@@ -6491,7 +6536,7 @@ function useTheme$3(defaultTheme = systemDefaultTheme$1) {
6491
6536
  return useTheme$4(defaultTheme);
6492
6537
  }
6493
6538
 
6494
- const _excluded$e = ["sx"];
6539
+ const _excluded$f = ["sx"];
6495
6540
  const splitProps = props => {
6496
6541
  var _props$theme$unstable, _props$theme;
6497
6542
  const result = {
@@ -6512,7 +6557,7 @@ function extendSxProp(props) {
6512
6557
  const {
6513
6558
  sx: inSx
6514
6559
  } = props,
6515
- other = _objectWithoutPropertiesLoose(props, _excluded$e);
6560
+ other = _objectWithoutPropertiesLoose(props, _excluded$f);
6516
6561
  const {
6517
6562
  systemProps,
6518
6563
  otherProps
@@ -6947,11 +6992,11 @@ function useForkRef(...refs) {
6947
6992
 
6948
6993
  class Timeout {
6949
6994
  constructor() {
6950
- this.currentId = 0;
6995
+ this.currentId = null;
6951
6996
  this.clear = () => {
6952
- if (this.currentId !== 0) {
6997
+ if (this.currentId !== null) {
6953
6998
  clearTimeout(this.currentId);
6954
- this.currentId = 0;
6999
+ this.currentId = null;
6955
7000
  }
6956
7001
  };
6957
7002
  this.disposeEffect = () => {
@@ -6967,7 +7012,7 @@ class Timeout {
6967
7012
  start(delay, fn) {
6968
7013
  this.clear();
6969
7014
  this.currentId = setTimeout(() => {
6970
- this.currentId = 0;
7015
+ this.currentId = null;
6971
7016
  fn();
6972
7017
  }, delay);
6973
7018
  }
@@ -7190,6 +7235,18 @@ function ThemeProvider$2(props) {
7190
7235
  });
7191
7236
  }
7192
7237
 
7238
+ const _excluded$e = ["value"];
7239
+ const RtlContext = /*#__PURE__*/React.createContext();
7240
+ function RtlProvider(_ref) {
7241
+ let {
7242
+ value
7243
+ } = _ref,
7244
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$e);
7245
+ return /*#__PURE__*/jsxRuntimeExports.jsx(RtlContext.Provider, _extends$4({
7246
+ value: value != null ? value : true
7247
+ }, props));
7248
+ }
7249
+
7193
7250
  const EMPTY_THEME = {};
7194
7251
  function useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {
7195
7252
  return React.useMemo(() => {
@@ -7229,11 +7286,15 @@ function ThemeProvider$1(props) {
7229
7286
  const upperPrivateTheme = useTheme$2() || EMPTY_THEME;
7230
7287
  const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);
7231
7288
  const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);
7289
+ const rtlValue = engineTheme.direction === 'rtl';
7232
7290
  return /*#__PURE__*/jsxRuntimeExports.jsx(ThemeProvider$2, {
7233
7291
  theme: privateTheme,
7234
7292
  children: /*#__PURE__*/jsxRuntimeExports.jsx(ThemeContext$2.Provider, {
7235
7293
  value: engineTheme,
7236
- children: children
7294
+ children: /*#__PURE__*/jsxRuntimeExports.jsx(RtlProvider, {
7295
+ value: rtlValue,
7296
+ children: children
7297
+ })
7237
7298
  })
7238
7299
  });
7239
7300
  }
@@ -8693,7 +8754,7 @@ function _assertThisInitialized(self) {
8693
8754
  return self;
8694
8755
  }
8695
8756
 
8696
- const buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
8757
+ const buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorError', 'colorInfo', 'colorWarning', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'icon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);
8697
8758
  var buttonClasses$1 = buttonClasses;
8698
8759
 
8699
8760
  var base = {
@@ -9033,7 +9094,7 @@ function create$3(definition) {
9033
9094
  return cache[key];
9034
9095
  }
9035
9096
 
9036
- const NEBULA_VERSION_HASH = "03a3" ;
9097
+ const NEBULA_VERSION_HASH = "3232" ;
9037
9098
  ClassNameGenerator.configure(componentName => {
9038
9099
  return "njs-".concat(NEBULA_VERSION_HASH, "-").concat(componentName.replace('Mui', ''));
9039
9100
  });
@@ -9293,7 +9354,7 @@ function boot(_ref2) {
9293
9354
  const appRef = React__default.createRef();
9294
9355
  const element = document.createElement('div');
9295
9356
  element.style.display = 'none';
9296
- element.setAttribute('data-nebulajs-version', "4.12.0" );
9357
+ element.setAttribute('data-nebulajs-version', "4.14.0" );
9297
9358
  element.setAttribute('data-app-id', app.id);
9298
9359
  document.body.appendChild(element);
9299
9360
  if (context) {
@@ -10458,31 +10519,52 @@ const excludedOrAlternative = _ref => {
10458
10519
  } = _ref;
10459
10520
  return (isAlternative(cell) || isExcluded(cell)) && checkboxes;
10460
10521
  };
10461
- const getValueStateClasses = _ref2 => {
10522
+ function getSelectionStateClass(_ref2) {
10523
+ let {
10524
+ cell,
10525
+ showGray
10526
+ } = _ref2;
10527
+ let selectionStateClass;
10528
+ switch (cell.qState) {
10529
+ case 'XS':
10530
+ selectionStateClass = showGray ? rowColClasses.XS : rowColClasses.S;
10531
+ break;
10532
+ case 'S':
10533
+ case 'L':
10534
+ selectionStateClass = rowColClasses.S;
10535
+ break;
10536
+ case 'A':
10537
+ selectionStateClass = showGray ? rowColClasses.A : false;
10538
+ break;
10539
+ case 'X':
10540
+ case 'XL':
10541
+ selectionStateClass = showGray ? rowColClasses.X : false;
10542
+ break;
10543
+ default:
10544
+ selectionStateClass = false;
10545
+ }
10546
+ return selectionStateClass;
10547
+ }
10548
+ const getValueStateClasses = _ref3 => {
10462
10549
  let {
10463
10550
  column,
10464
10551
  histogram,
10465
- checkboxes,
10466
10552
  cell,
10467
10553
  showGray
10468
- } = _ref2;
10554
+ } = _ref3;
10555
+ if (!cell) {
10556
+ return [];
10557
+ }
10469
10558
  const clazzArr = [column ? rowColClasses.column : rowColClasses.row];
10470
10559
  if (!histogram) {
10471
10560
  clazzArr.push(rowColClasses.rowBorderBottom);
10472
10561
  }
10473
- if (!cell) {
10474
- return [];
10475
- }
10476
- if (!checkboxes) {
10477
- if (cell.qState === 'XS') {
10478
- clazzArr.push(showGray ? rowColClasses.XS : rowColClasses.S);
10479
- } else if (cell.qState === 'S' || cell.qState === 'L') {
10480
- clazzArr.push(rowColClasses.S);
10481
- } else if (showGray && isAlternative(cell)) {
10482
- clazzArr.push(rowColClasses.A);
10483
- } else if (showGray && isExcluded(cell)) {
10484
- clazzArr.push(rowColClasses.X);
10485
- }
10562
+ const selectionStateClass = getSelectionStateClass({
10563
+ cell,
10564
+ showGray
10565
+ });
10566
+ if (selectionStateClass) {
10567
+ clazzArr.push(selectionStateClass);
10486
10568
  }
10487
10569
  return clazzArr;
10488
10570
  };
@@ -10549,15 +10631,27 @@ const getMaxFreqWidth = _ref2 => {
10549
10631
  }
10550
10632
  return sizes.freqMaxWidth;
10551
10633
  };
10552
- const getSelectedStyle = _ref3 => {
10634
+ const getRowSelectionStyle = _ref3 => {
10553
10635
  let {
10554
10636
  theme,
10637
+ checkboxes,
10555
10638
  styles,
10556
- selectedState
10639
+ selectionState
10557
10640
  } = _ref3;
10641
+ if (checkboxes) {
10642
+ if (selectionState === 'selected') {
10643
+ return {
10644
+ ["& .".concat(rowColClasses.labelText)]: {
10645
+ // Override labels (value and frequency count) color when selected.
10646
+ color: styles.selections.selected
10647
+ }
10648
+ };
10649
+ }
10650
+ return {};
10651
+ }
10558
10652
  const selectionStyles = styles.selections;
10559
- const backgroundColor = selectionStyles[selectedState];
10560
- const contrastTextColor = selectionStyles["".concat(selectedState, "Contrast")];
10653
+ const backgroundColor = selectionStyles[selectionState];
10654
+ const contrastTextColor = selectionStyles["".concat(selectionState, "Contrast")];
10561
10655
  return {
10562
10656
  background: backgroundColor,
10563
10657
  color: contrastTextColor,
@@ -10603,16 +10697,29 @@ const RowColRoot = styled('div', {
10603
10697
  } = _ref4;
10604
10698
  const _styles$content = styles.content,
10605
10699
  contentFontStyles = _objectWithoutProperties(_styles$content, _excluded$6);
10606
- const selectStyle = getSelectedStyle({
10700
+ const rowSelectionStyle = getRowSelectionStyle({
10607
10701
  theme,
10608
10702
  styles,
10609
- selectedState: 'selected'
10703
+ checkboxes,
10704
+ selectionState: 'selected'
10610
10705
  });
10611
- const excludedSelectStyle = getSelectedStyle({
10706
+ const rowExcludedStyle = getRowSelectionStyle({
10612
10707
  theme,
10613
10708
  styles,
10614
- selectedState: 'excluded'
10709
+ checkboxes,
10710
+ selectionState: 'excluded'
10615
10711
  });
10712
+ const barDefaultFilledStyle = {
10713
+ height: '100%',
10714
+ transition: 'width 0.2s',
10715
+ border: "".concat(barBorderWidthPx, "px solid"),
10716
+ borderColor: '#D9D9D9',
10717
+ // overridden by selected color (classes.S),
10718
+ backgroundColor: '#FAFAFA'
10719
+ };
10720
+ const barSelectedFilledStyle = {
10721
+ opacity: '30%'
10722
+ };
10616
10723
  return {
10617
10724
  '&:focus': {
10618
10725
  boxShadow: "inset 0 0 0 2px ".concat(theme.palette.custom.focusBorder, " !important")
@@ -10694,26 +10801,33 @@ const RowColRoot = styled('div', {
10694
10801
  color: contentFontStyles.color
10695
10802
  },
10696
10803
  // Selection styles (S=Selected, XS=ExcludedSelected, A=Alternative, X=Excluded).
10697
- ["& .".concat(rowColClasses.S)]: _objectSpread2(_objectSpread2({}, selectStyle), {}, {
10804
+ ["& .".concat(rowColClasses.S)]: _objectSpread2(_objectSpread2({}, rowSelectionStyle), {}, {
10698
10805
  border: isGridMode ? 'none' : undefined
10699
10806
  }),
10700
- ["& .".concat(rowColClasses.XS)]: _objectSpread2(_objectSpread2({}, getSelectedStyle({
10807
+ ["& .".concat(rowColClasses.XS)]: _objectSpread2(_objectSpread2({}, getRowSelectionStyle({
10701
10808
  theme,
10702
10809
  styles,
10703
- selectedState: 'selectedExcluded'
10810
+ checkboxes,
10811
+ selectionState: 'selectedExcluded'
10704
10812
  })), {}, {
10705
10813
  border: isGridMode ? 'none' : undefined
10706
10814
  }),
10707
- ["& .".concat(rowColClasses.A)]: _objectSpread2(_objectSpread2({}, getSelectedStyle({
10815
+ ["& .".concat(rowColClasses.A)]: _objectSpread2(_objectSpread2({}, getRowSelectionStyle({
10708
10816
  theme,
10709
10817
  styles,
10710
- selectedState: 'alternative'
10818
+ checkboxes,
10819
+ selectionState: 'alternative'
10711
10820
  })), {}, {
10712
10821
  border: isGridMode ? 'none' : undefined
10713
10822
  }),
10714
- ["& .".concat(rowColClasses.X)]: _objectSpread2(_objectSpread2({}, excludedSelectStyle), {}, {
10823
+ ["& .".concat(rowColClasses.X)]: _objectSpread2(_objectSpread2({}, rowExcludedStyle), {}, {
10715
10824
  border: isGridMode ? 'none' : undefined
10716
10825
  }),
10826
+ ["& .".concat(rowColClasses.X, ", & .").concat(rowColClasses.XS)]: {
10827
+ // Override the selected color for bar-filled, when the value is selected and excluded.
10828
+ border: isGridMode ? 'none' : undefined,
10829
+ ["& .".concat(rowColClasses.barSelected, " .bar-filled")]: _objectSpread2({}, barDefaultFilledStyle)
10830
+ },
10717
10831
  ["& .".concat(rowColClasses.frequencyCount)]: _objectSpread2(_objectSpread2({
10718
10832
  zIndex: 3,
10719
10833
  justifyContent: 'flex-end'
@@ -10749,33 +10863,23 @@ const RowColRoot = styled('div', {
10749
10863
  width: "calc(100% - ".concat(barPadPx * 2, "px)"),
10750
10864
  display: 'flex',
10751
10865
  alignItems: 'center',
10752
- '& .bar-filled': {
10753
- border: "".concat(barBorderWidthPx, "px solid"),
10754
- borderColor: '#D9D9D9',
10755
- transition: 'width 0.2s',
10756
- backgroundColor: '#FAFAFA',
10757
- height: '100%'
10758
- }
10866
+ '& .bar-filled': _objectSpread2({}, barDefaultFilledStyle)
10759
10867
  },
10760
10868
  ["& .".concat(rowColClasses.barSelected)]: {
10761
- '& .bar-filled': {
10762
- opacity: '30%',
10763
- background: theme.palette.background.lighter
10764
- }
10869
+ '& .bar-filled': _objectSpread2({}, barSelectedFilledStyle)
10765
10870
  },
10766
10871
  ["& .".concat(rowColClasses.barWithCheckbox)]: {
10767
10872
  left: direction === 'rtl' ? barPadPx : barWithCheckboxLeftPadPx,
10768
10873
  width: "calc(100% - ".concat(barWithCheckboxLeftPadPx + barPadPx, "px)")
10769
10874
  },
10770
10875
  ["& .".concat(rowColClasses.barSelectedWithCheckbox)]: {
10771
- '& .bar-filled': {
10772
- opacity: '30%',
10773
- background: selectStyle.background || '#BFE5D0',
10774
- borderColor: selectStyle.background || '#BFE5D0'
10775
- }
10876
+ '& .bar-filled': _objectSpread2(_objectSpread2({}, barSelectedFilledStyle), {}, {
10877
+ backgroundColor: styles.selections.selected || '#BFE5D0',
10878
+ borderColor: styles.selections.selected
10879
+ })
10776
10880
  },
10777
10881
  ["& .".concat(rowColClasses.excludedTextWithCheckbox)]: {
10778
- color: '#828282',
10882
+ color: styles.content.color,
10779
10883
  fontStyle: 'italic'
10780
10884
  }
10781
10885
  };
@@ -11738,10 +11842,9 @@ function RowColumn(_ref) {
11738
11842
  const classArr = useMemo$1(() => getValueStateClasses({
11739
11843
  column,
11740
11844
  histogram,
11741
- checkboxes,
11742
11845
  cell,
11743
11846
  showGray
11744
- }), [cell === null || cell === void 0 ? void 0 : cell.qState, histogram, dense, checkboxes]);
11847
+ }), [cell === null || cell === void 0 ? void 0 : cell.qState, histogram, dense]);
11745
11848
  const preventContextMenu = useCallback(event => {
11746
11849
  event.preventDefault();
11747
11850
  }, [checkboxes]);
@@ -15385,6 +15488,9 @@ function ActionsToolbar(_ref3) {
15385
15488
  transformOrigin: popoverTransformOrigin,
15386
15489
  hideBackdrop: true,
15387
15490
  style: popoverStyle,
15491
+ onMouseDown: e => {
15492
+ e.stopPropagation(); // prevent click through, closing when it should not
15493
+ },
15388
15494
  slotProps: {
15389
15495
  paper: {
15390
15496
  id: 'njs-action-toolbar-popover',
@@ -15409,8 +15515,10 @@ const search = props => _objectSpread2(_objectSpread2({}, props), {}, {
15409
15515
  });
15410
15516
  var SearchIcon = (props => SvgIcon$1(search(props)));
15411
15517
 
15518
+ const MAX_SEARCH_LENGTH = 64000;
15412
15519
  const TREE_PATH = '/qListObjectDef';
15413
15520
  const WILDCARD = '**';
15521
+ const limitSearchLength = val => val === null || val === void 0 ? void 0 : val.substring(0, MAX_SEARCH_LENGTH);
15414
15522
  const StyledOutlinedInput = styled(OutlinedInput, {
15415
15523
  shouldForwardProp: p => !['styles', 'dense', 'isRtl'].includes(p)
15416
15524
  })(_ref => {
@@ -15519,11 +15627,12 @@ function ListBoxSearch(_ref2) {
15519
15627
  setStoreValue('inputText', value);
15520
15628
  }, [value]);
15521
15629
  const onChange = async e => {
15522
- setValue(e.target.value);
15523
- if (!e.target.value.length) {
15630
+ const searchValue = limitSearchLength(e.target.value);
15631
+ setValue(searchValue);
15632
+ if (!searchValue.length) {
15524
15633
  return abortSearch();
15525
15634
  }
15526
- return model.searchListObjectFor(TREE_PATH, e.target.value);
15635
+ return model.searchListObjectFor(TREE_PATH, searchValue);
15527
15636
  };
15528
15637
  const handleFocus = () => {
15529
15638
  if (wildCardSearch) {
@@ -15540,11 +15649,12 @@ function ListBoxSearch(_ref2) {
15540
15649
  };
15541
15650
  const performSearch = async () => {
15542
15651
  let response;
15543
- const success = await model.searchListObjectFor(TREE_PATH, value);
15652
+ const searchValue = limitSearchLength(value);
15653
+ const success = await model.searchListObjectFor(TREE_PATH, searchValue);
15544
15654
  if (selectionState.selectDisabled()) {
15545
15655
  return success;
15546
15656
  }
15547
- if (success && value.length && hasHits()) {
15657
+ if (success && searchValue.length && hasHits()) {
15548
15658
  response = model.acceptListObjectSearch(TREE_PATH, true);
15549
15659
  // eslint-disable-next-line no-param-reassign
15550
15660
  selections.selectionsMade = true;
@@ -17821,6 +17931,7 @@ function resolveTextStyle(textComp, target, theme, objectType) {
17821
17931
  const fontStyle = unfurlFontStyle(textProps.fontStyle, target);
17822
17932
  return {
17823
17933
  fontFamily: textProps.fontFamily || theme.getStyle("object.".concat(objectType), "title.".concat(target), 'fontFamily'),
17934
+ fontSize: textProps.fontSize || theme.getStyle("object.".concat(objectType), "title.".concat(target), 'fontSize'),
17824
17935
  color: textProps.color && textProps.color.color !== 'none' ? theme.getColorPickerColor(textProps.color, true) : theme.getStyle("object.".concat(objectType), target, 'color'),
17825
17936
  fontWeight: fontStyle.includes('bold') ? 'bold' : 'normal',
17826
17937
  fontStyle: fontStyle.includes('italic') ? 'italic' : 'normal',
@@ -19326,6 +19437,7 @@ class AutoSizer extends Component {
19326
19437
  defaultWidth,
19327
19438
  disableHeight = false,
19328
19439
  disableWidth = false,
19440
+ doNotBailOutOnEmptyChildren = false,
19329
19441
  nonce,
19330
19442
  onResize,
19331
19443
  style = {},
@@ -19366,6 +19478,9 @@ class AutoSizer extends Component {
19366
19478
  childParams.width = width;
19367
19479
  childParams.scaledWidth = scaledWidth;
19368
19480
  }
19481
+ if (doNotBailOutOnEmptyChildren) {
19482
+ bailoutOnChildren = false;
19483
+ }
19369
19484
  return createElement(tagName, {
19370
19485
  ref: this._setRef,
19371
19486
  style: {
@@ -19647,16 +19762,6 @@ function getContainerPadding(_ref) {
19647
19762
  return containerPadding;
19648
19763
  }
19649
19764
 
19650
- const drillDown = props => _objectSpread2(_objectSpread2({}, props), {}, {
19651
- shapes: [{
19652
- type: 'path',
19653
- attrs: {
19654
- d: 'M15.9993744,3 L15.9993744,5 L4.99937445,5 L4.99937445,3 L15.9993744,3 Z M8.99937445,7 L15.9993744,7 L15.9993744,9 L8.99937445,9 L8.99937445,7 Z M11.9993744,11 L15.9993744,11 L15.9993744,13 L11.9993744,13 L11.9993744,11 Z M2.2,11 L7,11 L7,9.00369263 C7,8.89323568 7.08954305,8.80369263 7.2,8.80369263 C7.2549016,8.80369263 7.30738916,8.82626165 7.34515712,8.86610844 L10.1852182,11.8624926 C10.2583124,11.93961 10.258346,12.0604218 10.1852948,12.13758 L7.34523376,15.1373102 C7.2692928,15.2175206 7.14270711,15.2209817 7.06249671,15.1450407 C7.02260076,15.1072683 7,15.0547472 7,14.9998069 L7,12.9043747 C4.79351111,12.9043747 2.8018683,12.9266213 1.02507156,12.9711145 L1.02507252,12.9711526 C0.472939773,12.9849787 0.014139487,12.5485949 0.000313396522,11.9964622 C0.000104473692,11.988119 -1.32268838e-12,11.9797736 -1.3231638e-12,11.9714278 L-1.83320026e-12,3 L2,3 L2,10.8 C2,10.9104569 2.08954305,11 2.2,11 Z'
19655
- }
19656
- }]
19657
- });
19658
- var DrillDownIcon = (props => SvgIcon$1(drillDown(props)));
19659
-
19660
19765
  function showToolbarDetached(_ref) {
19661
19766
  var _titleRef$current$cli, _titleRef$current, _titleRef$current2, _titleRef$current3;
19662
19767
  let {
@@ -19812,6 +19917,112 @@ function UnlockCoverButton(_ref4) {
19812
19917
  return component;
19813
19918
  }
19814
19919
 
19920
+ const cyclic = props => _objectSpread2(_objectSpread2({}, props), {}, {
19921
+ shapes: [{
19922
+ type: 'path',
19923
+ attrs: {
19924
+ d: 'M 6 2 h 10 V 1 H 6 Z m 5 5 h 5 V 6 h -5 Z m 5 5 h -5 v -1 h 5 Z M 5 10 h 1 v 2.663 a 3.5 3.5 0 1 0 -2.922 0.036 l -0.406 0.914 A 4.501 4.501 0 1 1 7.329 13 H 9 v 1 H 5 Z'
19925
+ }
19926
+ }]
19927
+ });
19928
+ var CyclicIcon = (props => SvgIcon$1(cyclic(props)));
19929
+
19930
+ const drillDown = props => _objectSpread2(_objectSpread2({}, props), {}, {
19931
+ shapes: [{
19932
+ type: 'path',
19933
+ attrs: {
19934
+ d: 'M7 4h9v1H7zm2 4h7v1H9zm2 4h5v1h-5zM1 4v3.526a3.5 3.5 0 0 0 3.5 3.5h2.31L5.22 9.402l.715-.7L8.7 11.527 5.935 14.35l-.714-.7 1.59-1.624H4.5a4.5 4.5 0 0 1-4.5-4.5V4z'
19935
+ }
19936
+ }]
19937
+ });
19938
+ var DrillDownIcon = (props => SvgIcon$1(drillDown(props)));
19939
+
19940
+ const reload = props => _objectSpread2(_objectSpread2({}, props), {}, {
19941
+ shapes: [{
19942
+ type: 'path',
19943
+ attrs: {
19944
+ d: 'M1 8a7 7 0 1 1 10 6.326V11h-1v5h5v-1h-3.124A8 8 0 1 0 8 16v-1a7 7 0 0 1-7-7Z'
19945
+ }
19946
+ }]
19947
+ });
19948
+ var ReloadIcon = (props => SvgIcon$1(reload(props)));
19949
+
19950
+ const dimensionTypes = {
19951
+ single: 'N',
19952
+ drillDown: 'H',
19953
+ cyclic: 'C'
19954
+ };
19955
+ const createDimensionIconData = (dimInfo, app) => {
19956
+ switch (dimInfo.qGrouping) {
19957
+ case dimensionTypes.drillDown:
19958
+ return {
19959
+ icon: DrillDownIcon,
19960
+ tooltip: 'Listbox.DrillDown',
19961
+ onClick: undefined
19962
+ };
19963
+ case dimensionTypes.cyclic:
19964
+ return {
19965
+ icon: app ? ReloadIcon : CyclicIcon,
19966
+ tooltip: 'Listbox.Cyclic',
19967
+ onClick: app ? () => {
19968
+ app.getDimension(dimInfo.qLibraryId).then(dimensionModel => {
19969
+ if (!dimensionModel.stepCycle) {
19970
+ // eslint-disable-next-line no-console
19971
+ console.log("engine api spec version doesn't have support for function stepCycle");
19972
+ return;
19973
+ }
19974
+ dimensionModel.stepCycle(1);
19975
+ }).catch(() => null);
19976
+ } : undefined
19977
+ };
19978
+ default:
19979
+ return undefined;
19980
+ }
19981
+ };
19982
+ var iconUtils = {
19983
+ createDimensionIconData
19984
+ };
19985
+
19986
+ const StyledButton = styled$3(Button)(() => ({
19987
+ borderRadius: 4,
19988
+ width: 24,
19989
+ height: 24,
19990
+ minWidth: 22,
19991
+ padding: 0
19992
+ }));
19993
+ function DimensionIcon(_ref) {
19994
+ let {
19995
+ iconData,
19996
+ translator,
19997
+ iconStyle
19998
+ } = _ref;
19999
+ if (!iconData) return undefined;
20000
+ const {
20001
+ icon,
20002
+ tooltip,
20003
+ onClick
20004
+ } = iconData;
20005
+ const Icon = icon;
20006
+ const title = translator.get(tooltip);
20007
+ const isButton = onClick;
20008
+ return isButton ? /*#__PURE__*/React__default.createElement(StyledButton, {
20009
+ variant: "outlined",
20010
+ onClick: onClick,
20011
+ tabIndex: -1,
20012
+ title: title,
20013
+ size: "large",
20014
+ disableRipple: true
20015
+ }, /*#__PURE__*/React__default.createElement(Icon, {
20016
+ style: iconStyle
20017
+ })) : /*#__PURE__*/React__default.createElement(Icon, {
20018
+ title: title,
20019
+ size: "large",
20020
+ style: _objectSpread2(_objectSpread2({}, iconStyle), {}, {
20021
+ padding: "".concat(ICON_PADDING, "px")
20022
+ })
20023
+ });
20024
+ }
20025
+
19815
20026
  // ms that needs to pass before the lock button can be toggled again
19816
20027
  const lockTimeFrameMs = 500;
19817
20028
  let lastTime = 0;
@@ -19846,7 +20057,7 @@ function getToggleLock(_ref) {
19846
20057
  };
19847
20058
  }
19848
20059
  function ListBoxHeader(_ref2) {
19849
- var _layout$qListObject, _layout$qListObject3;
20060
+ var _layout$qListObject, _layout$qListObject3, _layout$qListObject4;
19850
20061
  let {
19851
20062
  layout,
19852
20063
  translator,
@@ -19854,7 +20065,6 @@ function ListBoxHeader(_ref2) {
19854
20065
  isRtl,
19855
20066
  showLock,
19856
20067
  showSearchIcon,
19857
- isDrillDown,
19858
20068
  constraints,
19859
20069
  onShowSearch,
19860
20070
  classes,
@@ -19868,7 +20078,8 @@ function ListBoxHeader(_ref2) {
19868
20078
  isDirectQuery,
19869
20079
  selections,
19870
20080
  keyboard,
19871
- autoConfirm
20081
+ autoConfirm,
20082
+ app
19872
20083
  } = _ref2;
19873
20084
  const [isToolbarDetached, setIsToolbarDetached] = useState$1(showDetachedToolbarOnly);
19874
20085
  const [isLocked, setLocked] = useState$1(layout === null || layout === void 0 || (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 || (_layout$qListObject = _layout$qListObject.qDimensionInfo) === null || _layout$qListObject === void 0 ? void 0 : _layout$qListObject.qLocked);
@@ -19878,15 +20089,16 @@ function ListBoxHeader(_ref2) {
19878
20089
  setLocked(layout === null || layout === void 0 || (_layout$qListObject2 = layout.qListObject) === null || _layout$qListObject2 === void 0 || (_layout$qListObject2 = _layout$qListObject2.qDimensionInfo) === null || _layout$qListObject2 === void 0 ? void 0 : _layout$qListObject2.qLocked);
19879
20090
  }, [layout === null || layout === void 0 || (_layout$qListObject3 = layout.qListObject) === null || _layout$qListObject3 === void 0 || (_layout$qListObject3 = _layout$qListObject3.qDimensionInfo) === null || _layout$qListObject3 === void 0 ? void 0 : _layout$qListObject3.qLocked]);
19880
20091
  const titleRef = useRef(null);
20092
+ const iconData = iconUtils.createDimensionIconData(layout === null || layout === void 0 || (_layout$qListObject4 = layout.qListObject) === null || _layout$qListObject4 === void 0 ? void 0 : _layout$qListObject4.qDimensionInfo, app);
19881
20093
  const showUnlock = showLock && isLocked;
19882
20094
  const showLockIcon = !showLock && isLocked; // shows instead of the cover button when field/dim is locked.
19883
- const showLeftIcon = showSearchIcon || showLockIcon || isDrillDown; // the left-most icon outside of the actions/selections toolbar.
20095
+ const showLeftIcon = showSearchIcon || showLockIcon || iconData; // the left-most icon outside of the actions/selections toolbar.
19884
20096
 
19885
20097
  const paddingLeft = CELL_PADDING_LEFT - (showLeftIcon ? ICON_PADDING : 0);
19886
20098
  const paddingRight = isRtl ? CELL_PADDING_LEFT - (showLeftIcon ? ICON_PADDING : 0) : HEADER_PADDING_RIGHT;
19887
20099
 
19888
20100
  // Calculate explicit width for icons container. Search and lock cannot exist combined.
19889
- const iconsWidth = (showSearchIcon ? BUTTON_ICON_WIDTH : 0) + (showLockIcon ? BUTTON_ICON_WIDTH : 0) + (isDrillDown ? BUTTON_ICON_WIDTH : 0);
20101
+ const iconsWidth = (showSearchIcon ? BUTTON_ICON_WIDTH : 0) + (showLockIcon ? BUTTON_ICON_WIDTH : 0) + (iconData ? BUTTON_ICON_WIDTH : 0);
19890
20102
  const toggleLock = getToggleLock({
19891
20103
  isLocked,
19892
20104
  setLocked,
@@ -19985,12 +20197,10 @@ function ListBoxHeader(_ref2) {
19985
20197
  alignItems: "center",
19986
20198
  width: iconsWidth,
19987
20199
  className: "header-action-container"
19988
- }, lockedIconComp || showSearchIcon && searchIconComp, isDrillDown && /*#__PURE__*/React__default.createElement(DrillDownIcon, {
19989
- tabIndex: -1,
19990
- title: translator.get('Listbox.DrillDown'),
19991
- style: _objectSpread2(_objectSpread2({}, iconStyle), {}, {
19992
- padding: "".concat(ICON_PADDING, "px")
19993
- })
20200
+ }, lockedIconComp || showSearchIcon && searchIconComp, /*#__PURE__*/React__default.createElement(DimensionIcon, {
20201
+ iconData: iconData,
20202
+ iconStyle: iconStyle,
20203
+ translator: translator
19994
20204
  })), /*#__PURE__*/React__default.createElement(Grid, {
19995
20205
  item: true,
19996
20206
  xs: true,
@@ -20060,7 +20270,7 @@ const isModal = _ref2 => {
20060
20270
  return (_app$isInModalSelecti = (_app$isInModalSelecti2 = app.isInModalSelection) === null || _app$isInModalSelecti2 === void 0 ? void 0 : _app$isInModalSelecti2.call(app)) !== null && _app$isInModalSelecti !== void 0 ? _app$isInModalSelecti : appSelections.isInModal();
20061
20271
  };
20062
20272
  function ListBoxInline(_ref3) {
20063
- var _layout$qListObject, _layout$qListObject2, _layout$title, _layoutOptions$dense, _containerRef$current;
20273
+ var _layout$qListObject, _layout$title, _layoutOptions$dense, _containerRef$current;
20064
20274
  let {
20065
20275
  options,
20066
20276
  layout
@@ -20226,7 +20436,6 @@ function ListBoxInline(_ref3) {
20226
20436
  } = layout !== null && layout !== void 0 ? layout : {};
20227
20437
  const isLocked = layout === null || layout === void 0 || (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 || (_layout$qListObject = _layout$qListObject.qDimensionInfo) === null || _layout$qListObject === void 0 ? void 0 : _layout$qListObject.qLocked;
20228
20438
  const showSearchIcon = searchEnabled !== false && search === 'toggle' && !isLocked;
20229
- const isDrillDown = (layout === null || layout === void 0 || (_layout$qListObject2 = layout.qListObject) === null || _layout$qListObject2 === void 0 || (_layout$qListObject2 = _layout$qListObject2.qDimensionInfo) === null || _layout$qListObject2 === void 0 ? void 0 : _layout$qListObject2.qGrouping) === 'H';
20230
20439
  const canShowTitle = (layout === null || layout === void 0 || (_layout$title = layout.title) === null || _layout$title === void 0 ? void 0 : _layout$title.length) && (layout === null || layout === void 0 ? void 0 : layout.showTitle) !== false;
20231
20440
  const showDetachedToolbarOnly = toolbar && !canShowTitle && !isPopover;
20232
20441
  const showAttachedToolbar = toolbar && canShowTitle || isPopover;
@@ -20264,8 +20473,8 @@ function ListBoxInline(_ref3) {
20264
20473
  }
20265
20474
  const listBoxMinHeight = showAttachedToolbar ? DENSE_ROW_HEIGHT + SCROLL_BAR_WIDTH : 0;
20266
20475
  const listBoxHeader = /*#__PURE__*/React__default.createElement(ListBoxHeader, {
20476
+ app: app,
20267
20477
  showSearchIcon: showSearchIcon,
20268
- isDrillDown: isDrillDown,
20269
20478
  onShowSearch: handleShowSearch,
20270
20479
  isPopover: isPopover,
20271
20480
  showToolbar: showToolbar,
@@ -28962,7 +29171,10 @@ const DEFAULT_CONFIG = {
28962
29171
  themes: [],
28963
29172
  anything: {},
28964
29173
  flags: {
28965
- KPI_REACTCOLORPICKER: true
29174
+ KPI_REACTCOLORPICKER: true,
29175
+ IM_1869_HIDE_DIM_MEA_LINE: true,
29176
+ IM_1579_HIDE_DIM_MEA: true,
29177
+ CLIENT_IM_3365: true
28966
29178
  },
28967
29179
  snapshot: DEFAULT_SNAPSHOT_CONFIG
28968
29180
  };