@nebula.js/stardust 3.1.2 → 3.1.3

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,11 +1,11 @@
1
1
  /*
2
- * @nebula.js/stardust v3.1.2
2
+ * @nebula.js/stardust v3.1.3
3
3
  * Copyright (c) 2023 QlikTech International AB
4
4
  * Released under the MIT license.
5
5
  */
6
6
 
7
7
  import * as React from 'react';
8
- import React__default, { useState as useState$1, useEffect as useEffect$1, useReducer, forwardRef, useMemo as useMemo$1, useImperativeHandle as useImperativeHandle$1, useCallback, useLayoutEffect as useLayoutEffect$1, PureComponent, createElement, useContext, useRef } from 'react';
8
+ import React__default, { useState as useState$1, useEffect as useEffect$1, useReducer, forwardRef, useMemo as useMemo$1, useImperativeHandle as useImperativeHandle$1, useCallback, useLayoutEffect as useLayoutEffect$1, PureComponent, useRef, createElement, useContext } from 'react';
9
9
  import ReactDOM from 'react-dom';
10
10
  import { CacheProvider, ThemeContext as ThemeContext$2 } from '@emotion/react';
11
11
  import { Checkbox, Radio, Grid, Typography, FormControlLabel, Tooltip, Paper, IconButton, Popover, MenuList, MenuItem, ListItemIcon, Divider, InputAdornment, OutlinedInput, Badge, List, ListItem, Button, Box, Icon, CircularProgress } from '@mui/material';
@@ -7940,7 +7940,7 @@ function create$3(definition) {
7940
7940
  return cache[key];
7941
7941
  }
7942
7942
 
7943
- const NEBULA_VERSION_HASH = "1f4e" ;
7943
+ const NEBULA_VERSION_HASH = "b117" ;
7944
7944
  ClassNameGenerator$1.configure(componentName => {
7945
7945
  return "njs-".concat(NEBULA_VERSION_HASH, "-").concat(componentName.replace('Mui', ''));
7946
7946
  });
@@ -8459,7 +8459,7 @@ function boot(_ref2) {
8459
8459
  const appRef = React__default.createRef();
8460
8460
  const element = document.createElement('div');
8461
8461
  element.style.display = 'none';
8462
- element.setAttribute('data-nebulajs-version', "3.1.2" );
8462
+ element.setAttribute('data-nebulajs-version', "3.1.3" );
8463
8463
  element.setAttribute('data-app-id', app.id);
8464
8464
  document.body.appendChild(element);
8465
8465
  ReactDOM.render( /*#__PURE__*/React__default.createElement(NebulaApp, {
@@ -9417,7 +9417,9 @@ function getFieldKeyboardNavigation(_ref) {
9417
9417
  let {
9418
9418
  select,
9419
9419
  confirm,
9420
- cancel
9420
+ cancel,
9421
+ setScrollPosition,
9422
+ focusListItems
9421
9423
  } = _ref;
9422
9424
  const getElement = function (elm) {
9423
9425
  let next = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
@@ -9432,7 +9434,8 @@ function getFieldKeyboardNavigation(_ref) {
9432
9434
  let elementToFocus;
9433
9435
  const {
9434
9436
  keyCode,
9435
- shiftKey = false
9437
+ shiftKey = false,
9438
+ ctrlKey = false
9436
9439
  } = event.nativeEvent;
9437
9440
  switch (keyCode) {
9438
9441
  case KEYS.SHIFT:
@@ -9471,6 +9474,22 @@ function getFieldKeyboardNavigation(_ref) {
9471
9474
  cancel();
9472
9475
  return;
9473
9476
  // let it propagate to top-level
9477
+ case KEYS.HOME:
9478
+ focusListItems.setFirst(true);
9479
+ if (ctrlKey) {
9480
+ setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('overflowStart');
9481
+ break;
9482
+ }
9483
+ setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('start');
9484
+ break;
9485
+ case KEYS.END:
9486
+ focusListItems.setLast(true);
9487
+ if (ctrlKey) {
9488
+ setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('overflowEnd');
9489
+ break;
9490
+ }
9491
+ setScrollPosition === null || setScrollPosition === void 0 ? void 0 : setScrollPosition('end');
9492
+ break;
9474
9493
  default:
9475
9494
  return;
9476
9495
  // don't stop propagation since we want to outsource keydown to other handlers.
@@ -9748,15 +9767,26 @@ function RowColumn(_ref3) {
9748
9767
  showGray = true,
9749
9768
  columnCount = 1,
9750
9769
  rowCount = 1,
9751
- layoutOrder
9770
+ layoutOrder,
9771
+ dataOffset,
9772
+ focusListItems,
9773
+ listCount
9752
9774
  } = data;
9753
9775
  let cellIndex;
9754
9776
  let styles;
9777
+ const count = {
9778
+ max: null,
9779
+ currentIndex: null
9780
+ };
9755
9781
  if (typeof rowIndex === 'number' && typeof columnIndex === 'number') {
9756
9782
  if (layoutOrder === 'row') {
9757
9783
  cellIndex = rowIndex * columnCount + columnIndex;
9784
+ count.max = rowCount;
9785
+ count.currentIndex = rowIndex;
9758
9786
  } else {
9759
9787
  cellIndex = columnIndex * rowCount + rowIndex;
9788
+ count.max = columnCount;
9789
+ count.currentIndex = columnIndex;
9760
9790
  }
9761
9791
  const padding = 0;
9762
9792
  styles = _objectSpread2(_objectSpread2({}, style), {}, {
@@ -9766,9 +9796,27 @@ function RowColumn(_ref3) {
9766
9796
  });
9767
9797
  } else {
9768
9798
  cellIndex = index;
9799
+ count.max = listCount;
9800
+ count.currentIndex = index;
9769
9801
  styles = _objectSpread2({}, style);
9770
9802
  }
9771
- const handleKeyDownCallback = useCallback(getFieldKeyboardNavigation(actions), [actions]);
9803
+ cellIndex += dataOffset;
9804
+ const rowRef = useRef(null);
9805
+ useEffect$1(() => {
9806
+ if (rowRef.current !== null) {
9807
+ if (count.currentIndex === 0 && focusListItems.first) {
9808
+ rowRef.current.focus();
9809
+ focusListItems.setFirst(false);
9810
+ }
9811
+ if (count.currentIndex === count.max - 1 && focusListItems.last) {
9812
+ rowRef.current.focus();
9813
+ focusListItems.setLast(false);
9814
+ }
9815
+ }
9816
+ }, [rowRef.current]);
9817
+ const handleKeyDownCallback = useCallback(getFieldKeyboardNavigation(_objectSpread2(_objectSpread2({}, actions), {}, {
9818
+ focusListItems
9819
+ })), [actions]);
9772
9820
  const [isSelected, setSelected] = useState$1(false);
9773
9821
  const [cell, setCell] = useState$1();
9774
9822
  const [classArr, setClassArr] = useState$1([]);
@@ -9943,6 +9991,7 @@ function RowColumn(_ref3) {
9943
9991
  flexBasisProp: flexBasisVal,
9944
9992
  dense: dense
9945
9993
  }, /*#__PURE__*/React__default.createElement(Grid, {
9994
+ ref: rowRef,
9946
9995
  container: true,
9947
9996
  gap: 0,
9948
9997
  className: joinClassNames(['value', ...classArr]),
@@ -11522,11 +11571,18 @@ function getStyledComponents() {
11522
11571
  }
11523
11572
 
11524
11573
  const getIndex = (renderProps, isColumnLayout) => {
11525
- if (renderProps !== null && renderProps !== void 0 && renderProps.visibleRowStopIndex || renderProps.visibleColumnStopIndex) {
11574
+ if ((renderProps === null || renderProps === void 0 ? void 0 : renderProps.visibleRowStopIndex) !== undefined || renderProps.visibleColumnStopIndex !== undefined) {
11526
11575
  return isColumnLayout ? renderProps.visibleColumnStopIndex : renderProps.visibleRowStopIndex;
11527
11576
  }
11528
11577
  return renderProps.visibleStopIndex;
11529
11578
  };
11579
+ const getIsScrollTop = (renderProps, isColumnLayout) => {
11580
+ if ((renderProps === null || renderProps === void 0 ? void 0 : renderProps.visibleRowStartIndex) !== undefined || renderProps.visibleColumnStartIndex !== undefined) {
11581
+ return isColumnLayout ? renderProps.visibleColumnStartIndex === 0 : renderProps.visibleRowStartIndex === 0;
11582
+ }
11583
+ return renderProps.visibleStartIndex === 0;
11584
+ };
11585
+ const getIsEndOfData = (qCardinal, index, count, dataOffset) => qCardinal === index * count + dataOffset + count;
11530
11586
  function handleSetOverflowDisclaimer(_ref) {
11531
11587
  let {
11532
11588
  renderProps,
@@ -11534,14 +11590,18 @@ function handleSetOverflowDisclaimer(_ref) {
11534
11590
  maxCount,
11535
11591
  columnCount,
11536
11592
  rowCount,
11537
- overflowDisclaimer
11593
+ overflowDisclaimer,
11594
+ qCardinal,
11595
+ dataOffset
11538
11596
  } = _ref;
11539
11597
  const isColumnLayout = (layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.layoutOrder) === 'column' && layoutOptions.dataLayout !== 'singleColumn';
11540
11598
  const index = getIndex(renderProps, isColumnLayout);
11541
11599
  const stopIndex = isColumnLayout ? maxCount.column : maxCount.row;
11542
11600
  const count = isColumnLayout ? columnCount : rowCount;
11543
11601
  const overflowPossible = count >= stopIndex;
11544
- const show = overflowPossible && index >= stopIndex - 1 || overflowDisclaimer.state.show;
11602
+ const isEndOfData = getIsEndOfData(qCardinal, index, isColumnLayout ? rowCount : columnCount, dataOffset);
11603
+ const isTopOfOverflowData = !!dataOffset && getIsScrollTop(renderProps, isColumnLayout);
11604
+ const show = overflowPossible && !isEndOfData && index >= stopIndex - 1 || isTopOfOverflowData || overflowDisclaimer.state.show; // If its shown once, the user have to dismiss to hide it.
11545
11605
  overflowDisclaimer.set(show);
11546
11606
  }
11547
11607
 
@@ -11572,7 +11632,9 @@ function getListBoxComponents(_ref) {
11572
11632
  listLayout,
11573
11633
  sizes,
11574
11634
  listCount,
11575
- overflowDisclaimer
11635
+ overflowDisclaimer,
11636
+ setScrollPosition,
11637
+ focusListItems
11576
11638
  } = _ref;
11577
11639
  const {
11578
11640
  layoutOptions = {},
@@ -11615,12 +11677,15 @@ function getListBoxComponents(_ref) {
11615
11677
  actions: {
11616
11678
  select,
11617
11679
  confirm: () => selections === null || selections === void 0 ? void 0 : selections.confirm.call(selections),
11618
- cancel: () => selections === null || selections === void 0 ? void 0 : selections.cancel.call(selections)
11680
+ cancel: () => selections === null || selections === void 0 ? void 0 : selections.cancel.call(selections),
11681
+ setScrollPosition
11619
11682
  },
11620
11683
  frequencyMax,
11621
11684
  histogram,
11622
11685
  keyboard,
11623
- showGray
11686
+ showGray,
11687
+ dataOffset: local.current.dataOffset,
11688
+ focusListItems
11624
11689
  });
11625
11690
  const List = _ref2 => {
11626
11691
  let {
@@ -11637,9 +11702,12 @@ function getListBoxComponents(_ref) {
11637
11702
  width: width,
11638
11703
  itemCount: listCount,
11639
11704
  layout: listLayout,
11640
- itemData: _objectSpread2({}, commonItemData),
11705
+ itemData: _objectSpread2(_objectSpread2({}, commonItemData), {}, {
11706
+ listCount
11707
+ }),
11641
11708
  itemSize: itemSize,
11642
11709
  onItemsRendered: renderProps => {
11710
+ var _layout$qListObject, _layout$qListObject$q;
11643
11711
  if (scrollState) {
11644
11712
  scrollState.setScrollPos(renderProps.visibleStopIndex);
11645
11713
  }
@@ -11649,7 +11717,9 @@ function getListBoxComponents(_ref) {
11649
11717
  maxCount: sizes.maxCount,
11650
11718
  columnCount,
11651
11719
  rowCount,
11652
- overflowDisclaimer
11720
+ overflowDisclaimer,
11721
+ qCardinal: layout === null || layout === void 0 ? void 0 : (_layout$qListObject = layout.qListObject) === null || _layout$qListObject === void 0 ? void 0 : (_layout$qListObject$q = _layout$qListObject.qDimensionInfo) === null || _layout$qListObject$q === void 0 ? void 0 : _layout$qListObject$q.qCardinal,
11722
+ dataOffset: local.current.dataOffset
11653
11723
  });
11654
11724
  onItemsRendered(_objectSpread2({}, renderProps));
11655
11725
  },
@@ -11673,6 +11743,7 @@ function getListBoxComponents(_ref) {
11673
11743
  // eslint-disable-next-line no-param-reassign
11674
11744
  local.current.listRef = ref;
11675
11745
  const handleGridItemsRendered = renderProps => {
11746
+ var _layout$qListObject2, _layout$qListObject2$;
11676
11747
  const renderOptions = deriveRenderOptions({
11677
11748
  renderProps,
11678
11749
  scrollState,
@@ -11686,7 +11757,9 @@ function getListBoxComponents(_ref) {
11686
11757
  maxCount: sizes.maxCount,
11687
11758
  columnCount,
11688
11759
  rowCount,
11689
- overflowDisclaimer
11760
+ overflowDisclaimer,
11761
+ qCardinal: layout === null || layout === void 0 ? void 0 : (_layout$qListObject2 = layout.qListObject) === null || _layout$qListObject2 === void 0 ? void 0 : (_layout$qListObject2$ = _layout$qListObject2.qDimensionInfo) === null || _layout$qListObject2$ === void 0 ? void 0 : _layout$qListObject2$.qCardinal,
11762
+ dataOffset: local.current.dataOffset
11690
11763
  });
11691
11764
  onItemsRendered(renderOptions);
11692
11765
  };
@@ -11857,9 +11930,10 @@ function useItemsLoader(_ref) {
11857
11930
  const [pages, setPages] = useState$1([]);
11858
11931
  let [minimumBatchSize] = useState$1(0);
11859
11932
  const loadMoreItems = (startIndex, stopIndex) => {
11933
+ const offset = local.current.dataOffset;
11860
11934
  local.current.queue.push({
11861
- start: startIndex,
11862
- stop: stopIndex
11935
+ start: startIndex + offset,
11936
+ stop: stopIndex + offset
11863
11937
  });
11864
11938
  const isScrolling = loaderRef.current ?
11865
11939
  // eslint-disable-next-line no-underscore-dangle
@@ -12248,6 +12322,47 @@ function ListBoxFooter(_ref3) {
12248
12322
  }, /*#__PURE__*/React__default.createElement(SmallCloseIcon, null))));
12249
12323
  }
12250
12324
 
12325
+ const getOffset = (layout, listCount) => {
12326
+ const totalLength = layout.qListObject.qDimensionInfo.qCardinal;
12327
+ const offset = totalLength - listCount;
12328
+ return offset;
12329
+ };
12330
+ function getScrollIndex(_ref) {
12331
+ let {
12332
+ position,
12333
+ isRow,
12334
+ sizes,
12335
+ layout,
12336
+ offset
12337
+ } = _ref;
12338
+ let scrollIndex;
12339
+ let triggerRerender = false;
12340
+ let newOffset = offset !== null && offset !== void 0 ? offset : 0;
12341
+ switch (position) {
12342
+ case 'start':
12343
+ scrollIndex = 0;
12344
+ break;
12345
+ case 'end':
12346
+ scrollIndex = isRow ? sizes.rowCount : sizes.columnCount;
12347
+ break;
12348
+ case 'overflowStart':
12349
+ newOffset = 0;
12350
+ scrollIndex = 0;
12351
+ triggerRerender = true;
12352
+ break;
12353
+ case 'overflowEnd':
12354
+ newOffset = getOffset(layout, sizes.listCount);
12355
+ scrollIndex = layout.qListObject.qDimensionInfo.qCardinal;
12356
+ triggerRerender = true;
12357
+ break;
12358
+ }
12359
+ return {
12360
+ scrollIndex,
12361
+ offset: newOffset,
12362
+ triggerRerender
12363
+ };
12364
+ }
12365
+
12251
12366
  const _excluded$4 = ["isLoadingData"];
12252
12367
  const DEFAULT_MIN_BATCH_SIZE = 100;
12253
12368
  function ListBox(_ref) {
@@ -12280,7 +12395,8 @@ function ListBox(_ref) {
12280
12395
  const loaderRef = useRef(null);
12281
12396
  const local = useRef({
12282
12397
  queue: [],
12283
- validPages: false
12398
+ validPages: false,
12399
+ dataOffset: 0
12284
12400
  });
12285
12401
  const listData = useRef({
12286
12402
  pages: []
@@ -12338,6 +12454,23 @@ function ListBox(_ref) {
12338
12454
  doc: document,
12339
12455
  isSingleSelect
12340
12456
  });
12457
+ const {
12458
+ layoutOptions = {}
12459
+ } = layout || {};
12460
+ let isRow = true;
12461
+ if (layoutOptions.dataLayout) {
12462
+ isRow = layoutOptions.dataLayout === 'singleColumn' ? true : (layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.layoutOrder) === 'row';
12463
+ }
12464
+ const isGrid = (layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.dataLayout) === 'grid';
12465
+ const scrollToIndex = index => {
12466
+ const gridIndex = _objectSpread2({}, isRow ? {
12467
+ rowIndex: index
12468
+ } : {
12469
+ columnIndex: index
12470
+ });
12471
+ const scrollIndex = isGrid ? gridIndex : index;
12472
+ loaderRef.current._listRef.scrollToItem(scrollIndex);
12473
+ };
12341
12474
  const fetchData = () => {
12342
12475
  local.current.queue = [];
12343
12476
  local.current.validPages = false;
@@ -12347,7 +12480,8 @@ function ListBox(_ref) {
12347
12480
  if (layout && layout.qSelectionInfo.qInSelections) {
12348
12481
  return;
12349
12482
  }
12350
- loaderRef.current._listRef.scrollToItem(0);
12483
+ local.current.dataOffset = 0;
12484
+ scrollToIndex(0);
12351
12485
  }
12352
12486
  };
12353
12487
  if (update) {
@@ -12368,14 +12502,11 @@ function ListBox(_ref) {
12368
12502
  }, [loaderRef.current]);
12369
12503
  useEffect$1(() => {
12370
12504
  fetchData();
12371
- }, [layout]);
12505
+ }, [layout, local.current.dataOffset]);
12372
12506
  const textWidth = useTextWidth({
12373
12507
  text: getMeasureText(layout),
12374
12508
  font: '14px Source sans pro'
12375
12509
  });
12376
- const {
12377
- layoutOptions = {}
12378
- } = layout || {};
12379
12510
  let minimumBatchSize = DEFAULT_MIN_BATCH_SIZE;
12380
12511
  const isVertical = layoutOptions.dataLayout ? layoutOptions.dataLayout === 'singleColumn' : listLayout !== 'horizontal';
12381
12512
  const count = layout === null || layout === void 0 ? void 0 : (_layout$qListObject$q = layout.qListObject.qSize) === null || _layout$qListObject$q === void 0 ? void 0 : _layout$qListObject$q.qcy;
@@ -12399,9 +12530,41 @@ function ListBox(_ref) {
12399
12530
  listCount
12400
12531
  } = sizes;
12401
12532
  setStoreValue('listCount', listCount);
12533
+ const setScrollPosition = position => {
12534
+ const {
12535
+ scrollIndex,
12536
+ offset,
12537
+ triggerRerender
12538
+ } = getScrollIndex({
12539
+ position,
12540
+ isRow,
12541
+ sizes,
12542
+ layout,
12543
+ offset: local.current.dataOffset
12544
+ });
12545
+ local.current.dataOffset = offset;
12546
+ if (triggerRerender) {
12547
+ setPages(currentPages => [...currentPages]);
12548
+ }
12549
+ scrollToIndex(scrollIndex);
12550
+ };
12402
12551
  const {
12403
12552
  textAlign
12404
12553
  } = (layout === null || layout === void 0 ? void 0 : layout.qListObject.qDimensionInfo) || {};
12554
+ const [focusListItem, setFocusListItem] = useState$1({
12555
+ first: false,
12556
+ last: false
12557
+ });
12558
+ const getFocusState = () => ({
12559
+ first: focusListItem.first,
12560
+ setFirst: first => setFocusListItem(prevState => _objectSpread2(_objectSpread2({}, prevState), {}, {
12561
+ first
12562
+ })),
12563
+ last: focusListItem.last,
12564
+ setLast: last => setFocusListItem(prevState => _objectSpread2(_objectSpread2({}, prevState), {}, {
12565
+ last
12566
+ }))
12567
+ });
12405
12568
  const {
12406
12569
  List,
12407
12570
  Grid
@@ -12430,7 +12593,9 @@ function ListBox(_ref) {
12430
12593
  overflowDisclaimer: {
12431
12594
  state: overflowDisclaimer,
12432
12595
  set: showOverflowDisclaimer
12433
- }
12596
+ },
12597
+ setScrollPosition,
12598
+ focusListItems: getFocusState()
12434
12599
  });
12435
12600
  const {
12436
12601
  columnWidth,
@@ -13028,6 +13193,7 @@ const search = props => _objectSpread2(_objectSpread2({}, props), {}, {
13028
13193
  var SearchIcon = (props => SvgIcon$2(search(props)));
13029
13194
 
13030
13195
  const TREE_PATH = '/qListObjectDef';
13196
+ const WILDCARD = '**';
13031
13197
  const StyledInputAdornment = styled$1(InputAdornment)(_ref => {
13032
13198
  var _theme$listBox, _theme$listBox$conten;
13033
13199
  let {
@@ -13052,12 +13218,15 @@ function ListBoxSearch(_ref3) {
13052
13218
  model,
13053
13219
  keyboard,
13054
13220
  dense = false,
13055
- visible = true
13221
+ visible = true,
13222
+ wildCardSearch = true
13056
13223
  } = _ref3;
13057
13224
  const {
13058
13225
  translator
13059
13226
  } = useContext(InstanceContext);
13060
13227
  const [value, setValue] = useState$1('');
13228
+ const [wildcardOn, setWildcardOn] = useState$1(false);
13229
+ const inputRef = useRef();
13061
13230
  const theme = useTheme$1();
13062
13231
  const {
13063
13232
  getStoreValue
@@ -13084,6 +13253,13 @@ function ListBoxSearch(_ref3) {
13084
13253
  selections.removeListener && selections.removeListener('deactivated', abortSearch);
13085
13254
  };
13086
13255
  }, []);
13256
+ useEffect$1(() => {
13257
+ if (wildcardOn && inputRef.current) {
13258
+ const cursorPos = value.length - 1;
13259
+ inputRef.current.setSelectionRange(cursorPos, cursorPos); // place the cursor in the wildcard
13260
+ setWildcardOn(false);
13261
+ }
13262
+ }, [wildcardOn, inputRef.current]);
13087
13263
  const onChange = async e => {
13088
13264
  setValue(e.target.value);
13089
13265
  if (!e.target.value.length) {
@@ -13092,6 +13268,10 @@ function ListBoxSearch(_ref3) {
13092
13268
  return model.searchListObjectFor(TREE_PATH, e.target.value);
13093
13269
  };
13094
13270
  const handleFocus = () => {
13271
+ if (wildCardSearch) {
13272
+ setValue(WILDCARD);
13273
+ setWildcardOn(true);
13274
+ }
13095
13275
  if (!selections.isModal()) {
13096
13276
  selections.begin(['/qListObjectDef']);
13097
13277
  }
@@ -13155,6 +13335,7 @@ function ListBoxSearch(_ref3) {
13155
13335
  paddingBottom: '5px'
13156
13336
  }
13157
13337
  }],
13338
+ inputRef: inputRef,
13158
13339
  size: "small",
13159
13340
  fullWidth: true,
13160
13341
  placeholder: translator.get('Listbox.Search'),
@@ -14956,6 +15137,7 @@ function ListBoxInline(_ref3) {
14956
15137
  const searchHeight = dense ? 27 : 40;
14957
15138
  const extraheight = dense ? 39 : 49;
14958
15139
  const minHeight = 49 + (searchVisible ? searchHeight : 0) + extraheight;
15140
+ const wildCardSearch = layout === null || layout === void 0 ? void 0 : layout.wildCardSearch;
14959
15141
  const onShowSearch = () => {
14960
15142
  const newValue = !showSearch;
14961
15143
  setShowSearch(newValue);
@@ -15052,7 +15234,8 @@ function ListBoxInline(_ref3) {
15052
15234
  dense: dense,
15053
15235
  keyboard: keyboard,
15054
15236
  visible: searchVisible,
15055
- searchContainerRef: searchContainerRef
15237
+ searchContainerRef: searchContainerRef,
15238
+ wildCardSearch: wildCardSearch
15056
15239
  })), /*#__PURE__*/React__default.createElement(Grid, {
15057
15240
  item: true,
15058
15241
  xs: true
@@ -15397,6 +15580,9 @@ function ListBoxPopoverWrapper(_ref) {
15397
15580
  const [showState, setShowstate] = useState$1(!!options.show);
15398
15581
  const handleCloseShowState = () => {
15399
15582
  setShowstate(false);
15583
+ if (options.onPopoverClose) {
15584
+ options.onPopoverClose();
15585
+ }
15400
15586
  };
15401
15587
  return /*#__PURE__*/React__default.createElement(ListBoxPopover, {
15402
15588
  show: showState,
@@ -22397,6 +22583,23 @@ function nuked() {
22397
22583
  let selectionsApi = null;
22398
22584
  let selectionsComponentReference = null;
22399
22585
 
22586
+ /**
22587
+ * @ignore
22588
+ * @typedef { 'fieldPopoverClose' } EmbedEventTypes
22589
+ */
22590
+
22591
+ /**
22592
+ * Event listener function on instance
22593
+ *
22594
+ * @ignore
22595
+ * @method
22596
+ * @name Embed#on
22597
+ * @param {EmbedEventTypes} eventType event type that function needs to listen
22598
+ * @param {Function} callback a callback function to run when event emits
22599
+ * @example
22600
+ * api.on('someEvent', () => {...});
22601
+ */
22602
+
22400
22603
  /**
22401
22604
  * @class
22402
22605
  * @alias Embed
@@ -22631,7 +22834,10 @@ function nuked() {
22631
22834
  root.remove(api._popoverInstance);
22632
22835
  api._popoverInstance = null;
22633
22836
  }
22634
- const opts = getOptions(options);
22837
+ const onPopoverClose = () => api.emit('fieldPopoverClose');
22838
+ const opts = getOptions(_objectSpread2({
22839
+ onPopoverClose
22840
+ }, options));
22635
22841
  api._popoverInstance = React__default.createElement(ListBoxPopoverWrapper, {
22636
22842
  element: anchorElement,
22637
22843
  key: uid(),
@@ -22646,6 +22852,7 @@ function nuked() {
22646
22852
  };
22647
22853
  halo.public.nebbie = api;
22648
22854
  halo.types = types;
22855
+ eventmixin(api);
22649
22856
  return api;
22650
22857
  }
22651
22858