@activecollab/components 2.0.209 → 2.0.211

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/cjs/components/Autocomplete/Autocomplete.js +216 -79
  2. package/dist/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  3. package/dist/cjs/components/ComboBox/ComboBox.js +4 -2
  4. package/dist/cjs/components/ComboBox/ComboBox.js.map +1 -1
  5. package/dist/cjs/components/Input/InputPhone.js +10 -6
  6. package/dist/cjs/components/Input/InputPhone.js.map +1 -1
  7. package/dist/cjs/components/Input/InputSelect.js +4 -2
  8. package/dist/cjs/components/Input/InputSelect.js.map +1 -1
  9. package/dist/cjs/components/Input/InputTime.js +4 -2
  10. package/dist/cjs/components/Input/InputTime.js.map +1 -1
  11. package/dist/cjs/components/Input/Styles.js +14 -3
  12. package/dist/cjs/components/Input/Styles.js.map +1 -1
  13. package/dist/cjs/components/Select/OptionGroup/OptionGroup.js +5 -16
  14. package/dist/cjs/components/Select/OptionGroup/OptionGroup.js.map +1 -1
  15. package/dist/cjs/components/Select/OptionGroup/Styles.js +1 -1
  16. package/dist/cjs/components/Select/OptionGroup/Styles.js.map +1 -1
  17. package/dist/cjs/components/Select/Select.js +4 -2
  18. package/dist/cjs/components/Select/Select.js.map +1 -1
  19. package/dist/cjs/hooks/useHighlightText.js +1 -0
  20. package/dist/cjs/hooks/useHighlightText.js.map +1 -1
  21. package/dist/esm/components/Autocomplete/Autocomplete.d.ts +6 -3
  22. package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -1
  23. package/dist/esm/components/Autocomplete/Autocomplete.js +189 -58
  24. package/dist/esm/components/Autocomplete/Autocomplete.js.map +1 -1
  25. package/dist/esm/components/ComboBox/ComboBox.d.ts.map +1 -1
  26. package/dist/esm/components/ComboBox/ComboBox.js +3 -1
  27. package/dist/esm/components/ComboBox/ComboBox.js.map +1 -1
  28. package/dist/esm/components/Input/InputPhone.d.ts.map +1 -1
  29. package/dist/esm/components/Input/InputPhone.js +11 -7
  30. package/dist/esm/components/Input/InputPhone.js.map +1 -1
  31. package/dist/esm/components/Input/InputSelect.d.ts +2 -0
  32. package/dist/esm/components/Input/InputSelect.d.ts.map +1 -1
  33. package/dist/esm/components/Input/InputSelect.js +4 -2
  34. package/dist/esm/components/Input/InputSelect.js.map +1 -1
  35. package/dist/esm/components/Input/InputTime.d.ts +1 -0
  36. package/dist/esm/components/Input/InputTime.d.ts.map +1 -1
  37. package/dist/esm/components/Input/InputTime.js +3 -1
  38. package/dist/esm/components/Input/InputTime.js.map +1 -1
  39. package/dist/esm/components/Input/Styles.d.ts +4 -1
  40. package/dist/esm/components/Input/Styles.d.ts.map +1 -1
  41. package/dist/esm/components/Input/Styles.js +13 -2
  42. package/dist/esm/components/Input/Styles.js.map +1 -1
  43. package/dist/esm/components/Select/OptionGroup/OptionGroup.d.ts.map +1 -1
  44. package/dist/esm/components/Select/OptionGroup/OptionGroup.js +5 -10
  45. package/dist/esm/components/Select/OptionGroup/OptionGroup.js.map +1 -1
  46. package/dist/esm/components/Select/OptionGroup/Styles.d.ts.map +1 -1
  47. package/dist/esm/components/Select/OptionGroup/Styles.js +1 -1
  48. package/dist/esm/components/Select/OptionGroup/Styles.js.map +1 -1
  49. package/dist/esm/components/Select/Select.d.ts +1 -0
  50. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  51. package/dist/esm/components/Select/Select.js +3 -1
  52. package/dist/esm/components/Select/Select.js.map +1 -1
  53. package/dist/esm/hooks/useHighlightText.d.ts.map +1 -1
  54. package/dist/esm/hooks/useHighlightText.js +1 -0
  55. package/dist/esm/hooks/useHighlightText.js.map +1 -1
  56. package/dist/index.js +264 -114
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.min.js +1 -1
  59. package/dist/index.min.js.map +1 -1
  60. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('classnames'), require('styled-components'), require('resize-observer-polyfill'), require('react-focus-lock'), require('react-remove-scroll'), require('react-dom'), require('@popperjs/core'), require('react-transition-group'), require('moment'), require('date-fns'), require('react-day-picker'), require('moment-timezone'), require('react-custom-scrollbars-2'), require('country-explorer'), require('compromise'), require('compromise-dates')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react', 'classnames', 'styled-components', 'resize-observer-polyfill', 'react-focus-lock', 'react-remove-scroll', 'react-dom', '@popperjs/core', 'react-transition-group', 'moment', 'date-fns', 'react-day-picker', 'moment-timezone', 'react-custom-scrollbars-2', 'country-explorer', 'compromise', 'compromise-dates'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.components = {}, global.React, global.classNames, global.styled, global.ResizeObserver, global.FocusLock, global.reactRemoveScroll, global.ReactDOM, global.PopperJS, global.reactTransitionGroup, global.moment, global.DateFns, global.DayPicker, global["moment-timezone"], global.reactCustomScrollbars, global.countryExplorer, global.compromise, global.compromiseDates));
5
- })(this, (function (exports, React, classNames, styled, ResizeObserver, FocusLock, reactRemoveScroll, ReactDOM, core, reactTransitionGroup, moment, dateFns, reactDayPicker, moment$1, reactCustomScrollbars2, countryExplorer, nlp, plg) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('classnames'), require('styled-components'), require('resize-observer-polyfill'), require('react-focus-lock'), require('react-remove-scroll'), require('react-dom'), require('@popperjs/core'), require('react-transition-group'), require('moment'), require('date-fns'), require('react-day-picker'), require('moment-timezone'), require('@tanstack/react-virtual'), require('country-explorer'), require('compromise'), require('compromise-dates')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'react', 'classnames', 'styled-components', 'resize-observer-polyfill', 'react-focus-lock', 'react-remove-scroll', 'react-dom', '@popperjs/core', 'react-transition-group', 'moment', 'date-fns', 'react-day-picker', 'moment-timezone', '@tanstack/react-virtual', 'country-explorer', 'compromise', 'compromise-dates'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.components = {}, global.React, global.classNames, global.styled, global.ResizeObserver, global.FocusLock, global.reactRemoveScroll, global.ReactDOM, global.PopperJS, global.reactTransitionGroup, global.moment, global.DateFns, global.DayPicker, global["moment-timezone"], global.reactVirtual, global.countryExplorer, global.compromise, global.compromiseDates));
5
+ })(this, (function (exports, React, classNames, styled, ResizeObserver, FocusLock, reactRemoveScroll, ReactDOM, core, reactTransitionGroup, moment, dateFns, reactDayPicker, moment$1, reactVirtual, countryExplorer, nlp, plg) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -14274,14 +14274,24 @@
14274
14274
  componentId: "sc-ce8kcp-6"
14275
14275
  })(["font-size:24px;margin-right:4px;"]);
14276
14276
  StyledFlagTriggerLabel.displayName = "StyledOptionFlag";
14277
- var StyledOptionName = styled__default["default"].span.withConfig({
14277
+ var StyledOptionName = styled__default["default"](Body2).withConfig({
14278
14278
  displayName: "Styles__StyledOptionName",
14279
14279
  componentId: "sc-ce8kcp-7"
14280
14280
  })(["overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"]);
14281
14281
  StyledOptionName.displayName = "StyledOptionName";
14282
+ var StyledOptionCode = styled__default["default"](Body2).withConfig({
14283
+ displayName: "Styles__StyledOptionCode",
14284
+ componentId: "sc-ce8kcp-8"
14285
+ })(["overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:auto;color:var(--color-theme-600);flex-shrink:0;"]);
14286
+ StyledOptionCode.displayName = "StyledOptionCode";
14287
+ var StyledOptionRowEnd = styled__default["default"].span.withConfig({
14288
+ displayName: "Styles__StyledOptionRowEnd",
14289
+ componentId: "sc-ce8kcp-9"
14290
+ })(["display:flex;align-items:center;gap:8px;"]);
14291
+ StyledOptionRowEnd.displayName = "StyledOptionRowEnd";
14282
14292
  var StyledOptionWrapper = styled__default["default"].span.withConfig({
14283
14293
  displayName: "Styles__StyledOptionWrapper",
14284
- componentId: "sc-ce8kcp-8"
14294
+ componentId: "sc-ce8kcp-10"
14285
14295
  })(["overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px;display:flex;justify-items:center;align-items:center;"]);
14286
14296
  StyledOptionWrapper.displayName = "StyledOptionWrapper";
14287
14297
 
@@ -14970,6 +14980,7 @@
14970
14980
  var matchCase = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
14971
14981
  var textComparator = text;
14972
14982
  var searchByComparator = searchBy;
14983
+ if (!text) return;
14973
14984
  if (!matchCase) {
14974
14985
  textComparator = text.toLowerCase();
14975
14986
  searchByComparator = searchBy.toLowerCase();
@@ -15019,7 +15030,7 @@
15019
15030
  var StyledOptionGroupLi = styled__default["default"].li.withConfig({
15020
15031
  displayName: "Styles__StyledOptionGroupLi",
15021
15032
  componentId: "sc-16v5afu-0"
15022
- })(["flex-direction:column;"]);
15033
+ })(["flex-direction:column;cursor:pointer;"]);
15023
15034
  var StyledOptionGroup = styled__default["default"].div.withConfig({
15024
15035
  displayName: "Styles__StyledOptionGroup",
15025
15036
  componentId: "sc-16v5afu-1"
@@ -15051,19 +15062,12 @@
15051
15062
  options = _ref.options,
15052
15063
  type = _ref.type,
15053
15064
  hover = _ref.hover,
15054
- filter = _ref.filter,
15055
15065
  checked = _ref.checked,
15056
15066
  onChange = _ref.onChange,
15057
15067
  setHover = _ref.setHover,
15058
- renderOptions = _ref.renderOptions,
15059
15068
  optionGroupClassName = _ref.optionGroupClassName,
15060
15069
  _ref$mixedOptions = _ref.mixedOptions,
15061
15070
  mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions;
15062
- var list = React.useMemo(function () {
15063
- return filter ? options.filter(function (v) {
15064
- return v.name.toLowerCase().includes(filter.trim().toLowerCase());
15065
- }) : options;
15066
- }, [filter, options]);
15067
15071
  React.useEffect(function () {
15068
15072
  if (hover === id && type !== "single") {
15069
15073
  var _document$getElementB;
@@ -15076,13 +15080,10 @@
15076
15080
  });
15077
15081
  }, [options, checked]);
15078
15082
  var handleHover = React.useCallback(function () {
15079
- if (options.some(function (option) {
15080
- return checked.includes(option.id);
15081
- })) return;
15082
15083
  if (setHover) {
15083
15084
  setHover(type === "single" ? undefined : id);
15084
15085
  }
15085
- }, [setHover, type, id, checked, options]);
15086
+ }, [setHover, type, id]);
15086
15087
  var allOptionValues = React.useMemo(function () {
15087
15088
  return options.map(function (option) {
15088
15089
  return option.id;
@@ -15097,6 +15098,7 @@
15097
15098
  }, [allOptionValues, checked, isAllOptionsChecked, mixedOptions, options]);
15098
15099
  var handleClick = React.useCallback(function (e) {
15099
15100
  e.stopPropagation();
15101
+ e.preventDefault();
15100
15102
  if (onChange) {
15101
15103
  if (isAllOptionsChecked) {
15102
15104
  onChange(checked.filter(function (i) {
@@ -15113,7 +15115,8 @@
15113
15115
  }, [allOptionValues, checked, isAllOptionsChecked, onChange]);
15114
15116
  return /*#__PURE__*/React__default["default"].createElement(StyledOptionGroupLi, {
15115
15117
  key: id,
15116
- className: classNames__default["default"]("c-option-group", optionGroupClassName)
15118
+ className: classNames__default["default"]("c-option-group", optionGroupClassName),
15119
+ onClick: handleClick
15117
15120
  }, /*#__PURE__*/React__default["default"].createElement(StyledOptionGroup, {
15118
15121
  key: id
15119
15122
  }, /*#__PURE__*/React__default["default"].createElement(StyledOptionGroupOption, {
@@ -15127,9 +15130,7 @@
15127
15130
  mixed: isMixed,
15128
15131
  onChange: handleClick,
15129
15132
  type: "checkbox"
15130
- }))), /*#__PURE__*/React__default["default"].createElement(List, null, list.map(function (item, index) {
15131
- return typeof renderOptions === "function" ? renderOptions(item, index) : item.name;
15132
- }))));
15133
+ })))));
15133
15134
  };
15134
15135
  OptionGroup.displayName = "OptionGroup";
15135
15136
 
@@ -15165,9 +15166,11 @@
15165
15166
  autoHeightMax = _ref$autoHeightMax === void 0 ? 340 : _ref$autoHeightMax,
15166
15167
  clearInputOnSelect = _ref.clearInputOnSelect,
15167
15168
  _ref$mixedOptions = _ref.mixedOptions,
15168
- mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions;
15169
+ mixedOptions = _ref$mixedOptions === void 0 ? [] : _ref$mixedOptions,
15170
+ filterCriteria = _ref.filterCriteria,
15171
+ disableVirtualization = _ref.disableVirtualization;
15172
+ var listContainerRef = React.useRef(null);
15169
15173
  var itemRef = React.useRef(null);
15170
- var listRef = React.useRef(null);
15171
15174
  var selectedOptions = React.useMemo(function () {
15172
15175
  if (Array.isArray(selected)) {
15173
15176
  return selected;
@@ -15209,9 +15212,9 @@
15209
15212
  } else {
15210
15213
  return opts.sort(sortOptions);
15211
15214
  }
15212
-
15213
- // eslint-disable-next-line react-hooks/exhaustive-deps
15214
- }, []);
15215
+ },
15216
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15217
+ [mixedOptions, selectedOptions]);
15215
15218
  var sortList = React.useCallback(function (options) {
15216
15219
  var _options$;
15217
15220
  if (disabledInternalSort) {
@@ -15235,20 +15238,27 @@
15235
15238
  return handleSort(_sortedOptions);
15236
15239
  }
15237
15240
  }, [sortDirection, disabledInternalSort, handleSort]);
15238
- var sortedList = React.useMemo(function () {
15239
- return sortList(options);
15240
- }, [options, sortList]);
15241
- var _useState = React.useState({
15241
+ var _useState = React.useState(function () {
15242
+ return sortList(options);
15243
+ }),
15244
+ _useState2 = _slicedToArray(_useState, 2),
15245
+ sortedList = _useState2[0],
15246
+ setSortedList = _useState2[1];
15247
+ React.useEffect(function () {
15248
+ setSortedList(sortList(options));
15249
+ // eslint-disable-next-line react-hooks/exhaustive-deps
15250
+ }, [options]);
15251
+ var _useState3 = React.useState({
15242
15252
  item: undefined,
15243
15253
  by: undefined
15244
15254
  }),
15245
- _useState2 = _slicedToArray(_useState, 2),
15246
- hover = _useState2[0],
15247
- setHover = _useState2[1];
15248
- var _useState3 = React.useState(""),
15249
15255
  _useState4 = _slicedToArray(_useState3, 2),
15250
- filter = _useState4[0],
15251
- setFilter = _useState4[1];
15256
+ hover = _useState4[0],
15257
+ setHover = _useState4[1];
15258
+ var _useState5 = React.useState(""),
15259
+ _useState6 = _slicedToArray(_useState5, 2),
15260
+ filter = _useState6[0],
15261
+ setFilter = _useState6[1];
15252
15262
  var handleEmpty = React.useCallback(function (e) {
15253
15263
  if (e && e.button !== 0) {
15254
15264
  return;
@@ -15276,24 +15286,20 @@
15276
15286
  return option.name.toLowerCase() !== filter.trim().toLowerCase();
15277
15287
  }));
15278
15288
  }, [emptyValue, filter, options]);
15279
- var renderAddNew = React.useMemo(function () {
15280
- return /*#__PURE__*/React__default["default"].createElement(StyledAutocompleteNewItem, {
15281
- ref: hover.item === "addNew" ? itemRef : null,
15282
- key: "emptyValue",
15283
- hover: hover.item === "addNew",
15284
- onMouseDown: handleEmpty,
15285
- onMouseEnter: onAddNewMouseEnter
15286
- }, emptyValue);
15287
- }, [emptyValue, handleEmpty, hover, onAddNewMouseEnter]);
15288
15289
  var filterOptions = React.useCallback(function (options, filter) {
15289
15290
  var trimmedFilter = filter.trim();
15290
15291
  var isGrouped = options[0] && isOptionGroup(options[0]);
15292
+ var matchesFilter = function matchesFilter(option) {
15293
+ var nameMatch = option.name.toLowerCase().includes(trimmedFilter.toLowerCase());
15294
+ if (filterCriteria && trimmedFilter) {
15295
+ return nameMatch || filterCriteria(option, trimmedFilter);
15296
+ }
15297
+ return nameMatch;
15298
+ };
15291
15299
  if (isGrouped) {
15292
15300
  var hovered = false;
15293
15301
  return options.reduce(function (acc, groupedOption) {
15294
- var filteredOptions = groupedOption.options.filter(function (v) {
15295
- return v.name.toLowerCase().includes(trimmedFilter.toLowerCase());
15296
- });
15302
+ var filteredOptions = groupedOption.options.filter(matchesFilter);
15297
15303
  if (filteredOptions.length > 0) {
15298
15304
  if (!hovered && filter) {
15299
15305
  setHover({
@@ -15309,9 +15315,7 @@
15309
15315
  return [...acc];
15310
15316
  }, []);
15311
15317
  } else {
15312
- var filteredOptions = options.filter(function (v) {
15313
- return v.name.toLowerCase().includes(trimmedFilter.toLowerCase());
15314
- });
15318
+ var filteredOptions = options.filter(matchesFilter);
15315
15319
  if (filter && filteredOptions.length > 0) {
15316
15320
  setHover({
15317
15321
  item: filteredOptions[0].id,
@@ -15326,7 +15330,7 @@
15326
15330
  }
15327
15331
  return filteredOptions;
15328
15332
  }
15329
- }, [emptyValue]);
15333
+ }, [emptyValue, filterCriteria]);
15330
15334
  var list = React.useMemo(function () {
15331
15335
  return filterOptions(sortedList, filter);
15332
15336
  }, [filter, filterOptions, sortedList]);
@@ -15342,6 +15346,67 @@
15342
15346
  }, []);
15343
15347
  return filterOptions(options, filter);
15344
15348
  }, [filter, filterOptions, list]);
15349
+ var showNoResultCondition = React.useMemo(function () {
15350
+ return noResultText && !showAddNew && list.length < 1 && (defaultValue && filter || !defaultValue);
15351
+ }, [noResultText, showAddNew, list.length, defaultValue, filter]);
15352
+ var virtualItems = React.useMemo(function () {
15353
+ var items = [];
15354
+ if (showDefaultOption) {
15355
+ items.push({
15356
+ type: "default",
15357
+ id: "default"
15358
+ });
15359
+ }
15360
+ list.forEach(function (item, index) {
15361
+ if (isOptionGroup(item)) {
15362
+ items.push({
15363
+ type: "group",
15364
+ id: item.id,
15365
+ item
15366
+ });
15367
+ item.options.forEach(function (option) {
15368
+ items.push({
15369
+ type: "option",
15370
+ id: option.id,
15371
+ item: option,
15372
+ index
15373
+ });
15374
+ });
15375
+ } else {
15376
+ items.push({
15377
+ type: "option",
15378
+ id: item.id,
15379
+ item,
15380
+ index
15381
+ });
15382
+ }
15383
+ });
15384
+ if (showNoResultCondition) {
15385
+ items.push({
15386
+ type: "noResult",
15387
+ id: "noResult"
15388
+ });
15389
+ }
15390
+ if (showAddNew) {
15391
+ items.push({
15392
+ type: "addNew",
15393
+ id: "addNew"
15394
+ });
15395
+ }
15396
+ return items;
15397
+ }, [list, showDefaultOption, showNoResultCondition, showAddNew]);
15398
+ var shouldUseVirtualization = !disableVirtualization && virtualItems.length > 40;
15399
+ var rowVirtualizer = reactVirtual.useVirtualizer({
15400
+ count: virtualItems.length,
15401
+ getScrollElement: function getScrollElement() {
15402
+ return listContainerRef.current;
15403
+ },
15404
+ estimateSize: function estimateSize() {
15405
+ return 28;
15406
+ },
15407
+ overscan: 5,
15408
+ gap: 4
15409
+ });
15345
15410
  var handleInputChange = React.useCallback(function (e) {
15346
15411
  if (e.target && !(e.key === "ArrowDown") && !(e.key === "ArrowUp") && !(e.key === "Enter")) {
15347
15412
  setFilter(e.target.value);
@@ -15420,7 +15485,7 @@
15420
15485
  }
15421
15486
  return /*#__PURE__*/React__default["default"].createElement(Option, {
15422
15487
  name: item.name,
15423
- ref: itemRef,
15488
+ ref: hover.item === item.id ? itemRef : null,
15424
15489
  key: index,
15425
15490
  tooltip: item.tooltip,
15426
15491
  onMouseEnter: handleMouseEnter,
@@ -15446,23 +15511,18 @@
15446
15511
  by: "mouse"
15447
15512
  });
15448
15513
  }, []);
15449
- var handleScroll = React.useCallback(function (list, itemOffset) {
15450
- if (list.getClientHeight() + list.getScrollTop() < itemOffset + 40) {
15451
- return list.scrollTop(itemOffset - list.getClientHeight() + 30);
15452
- }
15453
- if (list.getScrollTop() > itemOffset) {
15454
- return list.scrollTop(itemOffset);
15455
- }
15456
- }, []);
15457
15514
  React.useEffect(function () {
15458
15515
  if (hover.by === "keyboard" && hover.item !== undefined) {
15459
- var item = itemRef.current;
15460
- var _list = listRef.current;
15461
- if (itemRef && item && _list) {
15462
- handleScroll(_list, item.offsetTop);
15516
+ var index = virtualItems.findIndex(function (item) {
15517
+ return item.id === hover.item;
15518
+ });
15519
+ if (index !== -1) {
15520
+ rowVirtualizer.scrollToIndex(index, {
15521
+ align: "center"
15522
+ });
15463
15523
  }
15464
15524
  }
15465
- }, [handleScroll, hover]);
15525
+ }, [hover, rowVirtualizer, virtualItems]);
15466
15526
  var handleOnKeyDown = React.useCallback(function (e) {
15467
15527
  if (e.key === "Enter") {
15468
15528
  e.preventDefault();
@@ -15505,48 +15565,126 @@
15505
15565
  return selectedOptions[0] === null || selectedOptions.length === flatOptions.length;
15506
15566
  }
15507
15567
  }, [flatOptions.length, preselectDefaultValue, selectedOptions]);
15508
- var showNoResult = React.useMemo(function () {
15509
- return noResultText && !showAddNew && list.length < 1 && (defaultValue && filter || !defaultValue);
15510
- }, [noResultText, showAddNew, list.length, defaultValue, filter]);
15511
- var renderNoResult = React.useMemo(function () {
15512
- return /*#__PURE__*/React__default["default"].createElement(_StyledStyledOption, null, noResultText);
15513
- }, [noResultText]);
15568
+ var renderVirtualItem = React.useCallback(function (virtualItem, index) {
15569
+ switch (virtualItem.type) {
15570
+ case "default":
15571
+ return /*#__PURE__*/React__default["default"].createElement(Option, {
15572
+ name: String(defaultValue),
15573
+ ref: hover.item === null ? itemRef : null,
15574
+ hover: hover.item === null,
15575
+ onMouseEnter: handleMouseEnter,
15576
+ onClick: function onClick(e) {
15577
+ e.preventDefault();
15578
+ toggleSelected(null);
15579
+ },
15580
+ renderOption: renderOption({
15581
+ name: defaultValue,
15582
+ id: null
15583
+ }, {
15584
+ checked: isDefaultOptionSelected(),
15585
+ hover: hover.item === null,
15586
+ onChange: function onChange() {
15587
+ return null;
15588
+ }
15589
+ })
15590
+ });
15591
+ case "group":
15592
+ if (!virtualItem.item || !isOptionGroup(virtualItem.item)) return null;
15593
+ return /*#__PURE__*/React__default["default"].createElement(OptionGroup, {
15594
+ checked: selectedOptions,
15595
+ name: virtualItem.item.name,
15596
+ tooltip: virtualItem.item.tooltip,
15597
+ key: virtualItem.item.id,
15598
+ setHover: handleHoverCallback,
15599
+ id: virtualItem.item.id,
15600
+ hover: hover.item,
15601
+ options: virtualItem.item.options,
15602
+ renderOptions: handleRenderOption,
15603
+ type: type,
15604
+ onChange: handleChange,
15605
+ filter: filter,
15606
+ mixedOptions: mixedOptions
15607
+ });
15608
+ case "option":
15609
+ if (!virtualItem.item || isOptionGroup(virtualItem.item)) return null;
15610
+ return /*#__PURE__*/React__default["default"].createElement(Option, {
15611
+ name: virtualItem.item.name,
15612
+ ref: hover.item === virtualItem.id ? itemRef : null,
15613
+ key: index,
15614
+ tooltip: virtualItem.item.tooltip,
15615
+ onMouseEnter: function onMouseEnter() {
15616
+ return handleMouseEnter(virtualItem.id);
15617
+ },
15618
+ onClick: handleClick,
15619
+ id: virtualItem.id,
15620
+ hover: virtualItem.id === hover.item,
15621
+ className: optionClassName,
15622
+ renderOption: renderOption(_objectSpread2(_objectSpread2({}, virtualItem.item), {}, {
15623
+ name: highlightText(virtualItem.item.name, filter)
15624
+ }), {
15625
+ id: "option_".concat(virtualItem.id),
15626
+ checked: selectedOptions && selectedOptions.includes(virtualItem.id),
15627
+ hover: hover.item === virtualItem.id,
15628
+ onChange: function onChange() {
15629
+ return null;
15630
+ }
15631
+ })
15632
+ });
15633
+ case "noResult":
15634
+ return /*#__PURE__*/React__default["default"].createElement(_StyledStyledOption, null, noResultText);
15635
+ case "addNew":
15636
+ return /*#__PURE__*/React__default["default"].createElement(StyledAutocompleteNewItem, {
15637
+ ref: hover.item === "addNew" ? itemRef : null,
15638
+ key: "emptyValue",
15639
+ hover: hover.item === "addNew",
15640
+ onMouseDown: handleEmpty,
15641
+ onMouseEnter: onAddNewMouseEnter
15642
+ }, emptyValue);
15643
+ default:
15644
+ return null;
15645
+ }
15646
+ }, [defaultValue, hover.item, handleMouseEnter, renderOption, isDefaultOptionSelected, selectedOptions, handleHoverCallback, handleRenderOption, type, handleChange, filter, mixedOptions, handleClick, optionClassName, noResultText, handleEmpty, onAddNewMouseEnter, emptyValue, toggleSelected]);
15514
15647
  return /*#__PURE__*/React__default["default"].createElement(StyledAutocompleteScrollShadow, {
15515
15648
  className: AutocompleteClassName,
15516
15649
  $isHidden: !defaultValue && !emptyValue && !noResultText && list.length < 1
15517
15650
  }, function (_ref2) {
15518
- var onScroll = _ref2.onScroll;
15651
+ var _onScroll = _ref2.onScroll;
15519
15652
  return /*#__PURE__*/React__default["default"].createElement(StyledAutocompleteBody, {
15520
15653
  key: "body",
15521
15654
  onMouseLeave: handleOnMouseLeave
15522
- }, /*#__PURE__*/React__default["default"].createElement(reactCustomScrollbars2.Scrollbars, {
15523
- ref: listRef,
15524
- key: "scrollBar",
15525
- autoHeight: true,
15526
- autoHeightMax: autoHeightMax,
15527
- onScroll: onScroll
15528
- }, defaultValue && !filter && /*#__PURE__*/React__default["default"].createElement(Option, {
15529
- name: defaultValue,
15530
- ref: itemRef,
15531
- hover: hover.item === null,
15532
- onMouseEnter: handleMouseEnter,
15533
- onClick: function onClick(e) {
15534
- e.preventDefault();
15535
- toggleSelected(null);
15655
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
15656
+ ref: listContainerRef,
15657
+ style: {
15658
+ height: "".concat(Math.min(rowVirtualizer.getTotalSize() + 12, autoHeightMax), "px"),
15659
+ overflow: "auto"
15536
15660
  },
15537
- renderOption: renderOption({
15538
- name: defaultValue,
15539
- id: null
15540
- }, {
15541
- checked: isDefaultOptionSelected(),
15542
- hover: hover.item === null,
15543
- onChange: function onChange() {
15544
- return null;
15661
+ onScroll: function onScroll(e) {
15662
+ if (_onScroll) _onScroll(e);
15663
+ }
15664
+ }, /*#__PURE__*/React__default["default"].createElement("div", {
15665
+ style: {
15666
+ height: "".concat(rowVirtualizer.getTotalSize(), "px"),
15667
+ width: "100%",
15668
+ position: "relative"
15669
+ }
15670
+ }, shouldUseVirtualization ? rowVirtualizer.getVirtualItems().map(function (virtualRow) {
15671
+ var item = virtualItems[virtualRow.index];
15672
+ return /*#__PURE__*/React__default["default"].createElement("div", {
15673
+ key: virtualRow.index,
15674
+ "data-index": virtualRow.index,
15675
+ style: {
15676
+ position: "absolute",
15677
+ top: 0,
15678
+ left: 0,
15679
+ width: "100%",
15680
+ transform: "translateY(".concat(virtualRow.start, "px)")
15545
15681
  }
15546
- })
15547
- }), list.map(function (item, index) {
15548
- return handleRenderOption(item, index);
15549
- }), showNoResult && renderNoResult, showAddNew && renderAddNew));
15682
+ }, renderVirtualItem(item, virtualRow.index));
15683
+ }) : virtualItems.map(function (item, index) {
15684
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
15685
+ key: index
15686
+ }, renderVirtualItem(item, index));
15687
+ }))));
15550
15688
  });
15551
15689
  };
15552
15690
  Autocomplete.displayName = "Autocomplete";
@@ -15555,7 +15693,7 @@
15555
15693
  componentId: "sc-9x4q7e-0"
15556
15694
  })(["cursor:auto"]);
15557
15695
 
15558
- var _excluded$M = ["type", "mode", "target", "options", "selected", "mixed", "position", "onChange", "placeholder", "emptyAction", "disableSearch", "forceCloseMenu", "selectClassName", "keepSameOptionsOrder", "onSelectOpen", "onSelectClose", "renderOption", "handleDefaultOptionChange", "preselectDefaultValue", "startAdornment", "endAdornment", "focusInput"];
15696
+ var _excluded$M = ["type", "mode", "target", "options", "selected", "mixed", "position", "onChange", "placeholder", "emptyAction", "disableSearch", "forceCloseMenu", "selectClassName", "keepSameOptionsOrder", "onSelectOpen", "onSelectClose", "renderOption", "handleDefaultOptionChange", "preselectDefaultValue", "startAdornment", "endAdornment", "focusInput", "disableVirtualization"];
15559
15697
  var Select = function Select(_ref) {
15560
15698
  var _ref$type = _ref.type,
15561
15699
  type = _ref$type === void 0 ? "single" : _ref$type,
@@ -15593,6 +15731,7 @@
15593
15731
  endAdornment = _ref.endAdornment,
15594
15732
  _ref$focusInput = _ref.focusInput,
15595
15733
  focusInput = _ref$focusInput === void 0 ? false : _ref$focusInput,
15734
+ disableVirtualization = _ref.disableVirtualization,
15596
15735
  prop = _objectWithoutProperties(_ref, _excluded$M);
15597
15736
  if (disableSearch && (startAdornment || endAdornment)) {
15598
15737
  console.warn("Adornments are not visible when search bar is hidden");
@@ -15760,7 +15899,8 @@
15760
15899
  handleDefaultOptionChange: handleDefaultOptionChangeCallback,
15761
15900
  type: type,
15762
15901
  preselectDefaultValue: preselectDefaultValue,
15763
- keepSameOptionsOrder: keepSameOptionsOrder
15902
+ keepSameOptionsOrder: keepSameOptionsOrder,
15903
+ disableVirtualization: disableVirtualization
15764
15904
  }))));
15765
15905
  };
15766
15906
  Select.displayName = "Select";
@@ -16529,7 +16669,8 @@
16529
16669
  _ref$keepSameOptionsO = _ref.keepSameOptionsOrder,
16530
16670
  keepSameOptionsOrder = _ref$keepSameOptionsO === void 0 ? true : _ref$keepSameOptionsO,
16531
16671
  selectedLabel = _ref.selectedLabel,
16532
- renderOption = _ref.renderOption;
16672
+ renderOption = _ref.renderOption,
16673
+ filterCriteria = _ref.filterCriteria;
16533
16674
  return /*#__PURE__*/React__default["default"].createElement(Select, {
16534
16675
  onChange: onChange,
16535
16676
  forceCloseMenu: true,
@@ -16546,7 +16687,8 @@
16546
16687
  disabledInternalSort: disabledInternalSort,
16547
16688
  keepSameOptionsOrder: keepSameOptionsOrder,
16548
16689
  selected: selected,
16549
- renderOption: renderOption
16690
+ renderOption: renderOption,
16691
+ filterCriteria: filterCriteria
16550
16692
  });
16551
16693
  };
16552
16694
  var _StyledStyledButton = styled__default["default"](StyledButton).withConfig({
@@ -16700,10 +16842,10 @@
16700
16842
 
16701
16843
  var _excluded$F = ["size", "disabled", "value", "onChange", "defaultCountry"];
16702
16844
  var renderOption$2 = function renderOption(option, data) {
16703
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(StyledOptionWrapper, null, /*#__PURE__*/React__default["default"].createElement(StyledOptionFlag, null, countryExplorer.getCountryFlag(option.id)), /*#__PURE__*/React__default["default"].createElement(StyledOptionName, null, option.name)), /*#__PURE__*/React__default["default"].createElement(RadioButton, {
16845
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(StyledOptionWrapper, null, /*#__PURE__*/React__default["default"].createElement(StyledOptionFlag, null, countryExplorer.getCountryFlag(option.id)), /*#__PURE__*/React__default["default"].createElement(StyledOptionName, null, option.name)), /*#__PURE__*/React__default["default"].createElement(StyledOptionRowEnd, null, /*#__PURE__*/React__default["default"].createElement(StyledOptionCode, null, option.additionalInfo), /*#__PURE__*/React__default["default"].createElement(RadioButton, {
16704
16846
  checked: data.checked,
16705
16847
  onChange: data.onChange
16706
- }));
16848
+ })));
16707
16849
  };
16708
16850
  var InputPhone = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16709
16851
  var _ref$size = _ref.size,
@@ -16728,7 +16870,8 @@
16728
16870
  var options = countryExplorer.countriesArraySortedByName.map(function (country) {
16729
16871
  return {
16730
16872
  id: country.countryCode,
16731
- name: "+".concat(country.callingCode, " ").concat(country.name)
16873
+ name: country.name,
16874
+ additionalInfo: "+".concat(country.callingCode)
16732
16875
  };
16733
16876
  });
16734
16877
  var separatePrefixFromValue = function separatePrefixFromValue(fullValue) {
@@ -16741,12 +16884,11 @@
16741
16884
  var code = digits.slice(0, i);
16742
16885
  if (countryExplorer.callingCodeToCountryCodeMap[code]) {
16743
16886
  newPrefix = countryExplorer.callingCodeToCountryCodeMap[code];
16744
- newValue = fullValue.slice(prefixLength + countryExplorer.getCountryCallingCode(newPrefix).length);
16887
+ var dialCode = countryExplorer.getCountryCallingCode(newPrefix);
16888
+ newValue = fullValue.slice(prefixLength + dialCode.length);
16745
16889
  break;
16746
16890
  }
16747
16891
  }
16748
- } else if (fullValue.startsWith(prefix)) {
16749
- newValue = fullValue.slice(prefix.length);
16750
16892
  }
16751
16893
  return {
16752
16894
  newPrefix,
@@ -16817,6 +16959,10 @@
16817
16959
  onChange: handleSelectChange,
16818
16960
  options: options,
16819
16961
  selected: prefix,
16962
+ filterCriteria: function filterCriteria(option, filter) {
16963
+ var _option$additionalInf;
16964
+ return !!(option !== null && option !== void 0 && (_option$additionalInf = option.additionalInfo) !== null && _option$additionalInf !== void 0 && _option$additionalInf.toLowerCase().includes(filter));
16965
+ },
16820
16966
  selectedLabel: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(StyledFlagTriggerLabel, {
16821
16967
  $size: size
16822
16968
  }, countryExplorer.getCountryFlag(prefix)), "+", countryExplorer.getCountryCallingCode(prefix)),
@@ -17027,7 +17173,7 @@
17027
17173
  });
17028
17174
  Chip.displayName = "Chip";
17029
17175
 
17030
- var _excluded$C = ["options", "selected", "loading", "loadingText", "onChange", "onInputChange", "placeholder", "handleEmptyAction", "disabled", "size", "invalid", "type", "renderChip", "forceCloseMenu", "renderOption", "limitChips", "hiddenNumberText", "inPortal", "inputWrapperClassName", "scrollWrapper", "onClose", "onClear", "onDeselect", "defaultValue", "open", "onOpen", "triggerMode", "noResultText", "emptyValue"];
17176
+ var _excluded$C = ["options", "selected", "loading", "loadingText", "onChange", "onInputChange", "placeholder", "handleEmptyAction", "disabled", "size", "invalid", "type", "renderChip", "forceCloseMenu", "renderOption", "limitChips", "hiddenNumberText", "inPortal", "inputWrapperClassName", "scrollWrapper", "onClose", "onClear", "onDeselect", "defaultValue", "open", "onOpen", "triggerMode", "noResultText", "emptyValue", "disableVirtualization"];
17031
17177
  var sizeMap = {
17032
17178
  small: 18,
17033
17179
  regular: 24,
@@ -17075,6 +17221,7 @@
17075
17221
  triggerMode = _ref.triggerMode,
17076
17222
  noResultText = _ref.noResultText,
17077
17223
  emptyValue = _ref.emptyValue,
17224
+ disableVirtualization = _ref.disableVirtualization,
17078
17225
  prop = _objectWithoutProperties(_ref, _excluded$C);
17079
17226
  var selectedName = React.useMemo(function () {
17080
17227
  var value = "";
@@ -17458,7 +17605,8 @@
17458
17605
  options: options,
17459
17606
  type: type,
17460
17607
  defaultValue: defaultValue,
17461
- handleEmptyAction: emptyAction
17608
+ handleEmptyAction: emptyAction,
17609
+ disableVirtualization: disableVirtualization
17462
17610
  })))))) : null);
17463
17611
  };
17464
17612
  ComboBox.displayName = "ComboBox";
@@ -17493,7 +17641,7 @@
17493
17641
  componentId: "sc-uvsz9l-4"
17494
17642
  })(["display:flex;justify-content:center;"]);
17495
17643
 
17496
- var _excluded$B = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid"];
17644
+ var _excluded$B = ["mode", "selected", "min", "max", "onChange", "step", "size", "className", "placeholder", "triggerMode", "disabled", "invalid", "disableVirtualization"];
17497
17645
  nlp__default["default"].plugin(plg__default["default"]);
17498
17646
  var StyledInputTimeWrapper = styled__default["default"].div.withConfig({
17499
17647
  displayName: "InputTime__StyledInputTimeWrapper",
@@ -17521,6 +17669,7 @@
17521
17669
  triggerMode = _ref.triggerMode,
17522
17670
  disabled = _ref.disabled,
17523
17671
  invalid = _ref.invalid,
17672
+ disableVirtualization = _ref.disableVirtualization,
17524
17673
  rest = _objectWithoutProperties(_ref, _excluded$B);
17525
17674
  var _useState = React.useState(false),
17526
17675
  _useState2 = _slicedToArray(_useState, 2),
@@ -17612,7 +17761,8 @@
17612
17761
  onOpen: handleOpen,
17613
17762
  triggerMode: triggerMode,
17614
17763
  disabled: disabled,
17615
- invalid: invalid
17764
+ invalid: invalid,
17765
+ disableVirtualization: disableVirtualization
17616
17766
  })));
17617
17767
  };
17618
17768