bromcom-ui 3.0.0-alpha.4 → 3.0.0-alpha.5

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 (63) hide show
  1. package/dist/bromcom-ui/bromcom-ui.css +1 -1
  2. package/dist/bromcom-ui/bromcom-ui.esm.js +1 -1
  3. package/dist/bromcom-ui/p-01eaca9a.entry.js +5 -0
  4. package/dist/bromcom-ui/p-3ddd3c83.entry.js +5 -0
  5. package/dist/bromcom-ui/p-aa67918a.entry.js +5 -0
  6. package/dist/bromcom-ui/p-d5464577.entry.js +16 -0
  7. package/dist/cjs/bcm-accordion_69.cjs.entry.js +704 -31
  8. package/dist/cjs/bcm-file-upload.cjs.entry.js +578 -0
  9. package/dist/cjs/bcm-form-2.cjs.entry.js +1 -0
  10. package/dist/cjs/bcm-number-input.cjs.entry.js +8 -2
  11. package/dist/cjs/bromcom-ui.cjs.js +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/collection-manifest.json +1 -0
  14. package/dist/collection/components/atoms/button/button.js +1 -1
  15. package/dist/collection/components/atoms/button/types.js +7 -0
  16. package/dist/collection/components/molecules/dropdown/dropdown.js +36 -1
  17. package/dist/collection/components/molecules/linked/linked-focus-manager.js +86 -0
  18. package/dist/collection/components/molecules/linked/linked.js +43 -1
  19. package/dist/collection/components/molecules/number-input/number-input.js +8 -2
  20. package/dist/collection/components/molecules/number-input/react-input.js +1 -1
  21. package/dist/collection/components/molecules/upload/file-upload.component.js +1060 -0
  22. package/dist/collection/components/molecules/upload/file-upload.style.js +201 -0
  23. package/dist/collection/components/organism/form/form.js +1 -0
  24. package/dist/collection/components/organism/form-2/bcm-form-components.js +1 -0
  25. package/dist/collection/components/organism/list/list-focus-manager.js +344 -0
  26. package/dist/collection/components/organism/list/list-key-control.js +9 -4
  27. package/dist/collection/components/organism/list/list.css +8 -3
  28. package/dist/collection/components/organism/list/list.js +226 -26
  29. package/dist/collection/components/other_deprecated/old-tag/old-tag.js +1 -1
  30. package/dist/collection/components/other_deprecated/tag/tag.js +1 -1
  31. package/dist/collection/templates/list-item-template.js +2 -1
  32. package/dist/components/bcm-dropdown.js +35 -0
  33. package/dist/components/bcm-file-upload.d.ts +11 -0
  34. package/dist/components/bcm-file-upload.js +625 -0
  35. package/dist/components/bcm-form-2.js +1 -0
  36. package/dist/components/bcm-number-input.js +8 -2
  37. package/dist/components/button.js +7 -0
  38. package/dist/components/form.js +1 -0
  39. package/dist/components/index.d.ts +1 -0
  40. package/dist/components/index.js +1 -0
  41. package/dist/components/linked.js +105 -2
  42. package/dist/components/list.js +559 -31
  43. package/dist/esm/bcm-accordion_69.entry.js +704 -31
  44. package/dist/esm/bcm-file-upload.entry.js +574 -0
  45. package/dist/esm/bcm-form-2.entry.js +1 -0
  46. package/dist/esm/bcm-number-input.entry.js +8 -2
  47. package/dist/esm/bromcom-ui.js +1 -1
  48. package/dist/esm/loader.js +1 -1
  49. package/dist/types/components/atoms/button/types.d.ts +8 -1
  50. package/dist/types/components/molecules/dropdown/dropdown.d.ts +7 -0
  51. package/dist/types/components/molecules/linked/linked-focus-manager.d.ts +13 -0
  52. package/dist/types/components/molecules/linked/linked.d.ts +3 -0
  53. package/dist/types/components/molecules/number-input/number-input.d.ts +1 -0
  54. package/dist/types/components/molecules/upload/file-upload.component.d.ts +233 -0
  55. package/dist/types/components/molecules/upload/file-upload.style.d.ts +548 -0
  56. package/dist/types/components/organism/list/list-focus-manager.d.ts +53 -0
  57. package/dist/types/components/organism/list/list-key-control.d.ts +1 -0
  58. package/dist/types/components/organism/list/list.d.ts +18 -1
  59. package/dist/types/components.d.ts +417 -1
  60. package/package.json +1 -1
  61. package/dist/bromcom-ui/p-8e7274e4.entry.js +0 -5
  62. package/dist/bromcom-ui/p-9e0dd503.entry.js +0 -16
  63. package/dist/bromcom-ui/p-a320cde8.entry.js +0 -5
@@ -1309,6 +1309,12 @@ const variantOptions = {
1309
1309
  icon: 'far fa-download',
1310
1310
  iconPosition: 'prefix',
1311
1311
  },
1312
+ upload: {
1313
+ text: 'Upload',
1314
+ color: 'blue',
1315
+ icon: 'far fa-cloud-arrow-up',
1316
+ iconPosition: 'prefix',
1317
+ },
1312
1318
  };
1313
1319
  var VariantProps;
1314
1320
  (function (VariantProps) {
@@ -1335,6 +1341,7 @@ var VariantProps;
1335
1341
  VariantProps["update"] = "update";
1336
1342
  VariantProps["reset"] = "Reset";
1337
1343
  VariantProps["download"] = "download";
1344
+ VariantProps["upload"] = "upload";
1338
1345
  })(VariantProps || (VariantProps = {}));
1339
1346
 
1340
1347
  const { state: state$4 } = createStore({
@@ -2435,10 +2442,11 @@ const ListItemTemplate = ({ item, treeview, highlight, checkboxes, size, selecte
2435
2442
  item.open = item.isSearching;
2436
2443
  openGroup(item.id);
2437
2444
  };
2438
- return (index$1.h("div", { id: item.id, hidden: item.hidden, "on-focus": e => !unClickable && !disabled && focusItem(e), tabIndex: unClickable || disabled ? -1 : 0, class: index$2.classnames('bcm-list__item',
2445
+ return (index$1.h("div", { id: item.id, hidden: item.hidden, "data-has-children": isHaveChildren ? "true" : "false", "data-open": item.isSearching || item.open ? "true" : "false", "data-parent-id": item.parentId || "", "on-focus": e => !unClickable && !disabled && focusItem(e), tabIndex: unClickable || disabled ? -1 : 0, class: index$2.classnames('bcm-list__item',
2439
2446
  // size === 'large' ? 'size-3' : 'size-2',
2440
2447
  'bcm-list__item-' + size, {
2441
2448
  'bcm-list__item--group': !treeview && item.type == 'group',
2449
+ 'bcm-list__item--open': item.isSearching || item.open,
2442
2450
  'bcm-list__item--readonly': readonly,
2443
2451
  }) },
2444
2452
  index$1.h("div", { class: index$2.classnames('bcm-list__item-content', !checkboxes && item.selected && 'selected', { disabled, readonly }) },
@@ -24904,6 +24912,41 @@ const BcmDropdown = class {
24904
24912
  item.setActive(id);
24905
24913
  });
24906
24914
  }
24915
+ componentWillLoad() {
24916
+ this.checkContent();
24917
+ }
24918
+ componentDidLoad() {
24919
+ this.observeContent();
24920
+ }
24921
+ disconnectedCallback() {
24922
+ var _a;
24923
+ (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
24924
+ }
24925
+ observeContent() {
24926
+ this.observer = new MutationObserver(() => {
24927
+ this.manualSlotContent();
24928
+ });
24929
+ this.observer.observe(this.el, { childList: true });
24930
+ }
24931
+ manualSlotContent() {
24932
+ const contentNodes = this.el.querySelectorAll(':scope > [slot="content"], :scope > bcm-content, :scope > bcm-items');
24933
+ if (contentNodes.length > 0) {
24934
+ const menu = document.getElementById(this.menuId);
24935
+ if (menu) {
24936
+ contentNodes.forEach(node => {
24937
+ if (!menu.contains(node)) {
24938
+ menu.appendChild(node);
24939
+ }
24940
+ });
24941
+ if (menu === null || menu === void 0 ? void 0 : menu.updateLayout) {
24942
+ menu === null || menu === void 0 ? void 0 : menu.updateLayout();
24943
+ }
24944
+ }
24945
+ }
24946
+ }
24947
+ checkContent() {
24948
+ this.manualSlotContent();
24949
+ }
24907
24950
  async getActive() {
24908
24951
  return this.activeItem;
24909
24952
  }
@@ -25136,6 +25179,7 @@ const BcmForm = class {
25136
25179
  CHECKBOX: 'checkbox',
25137
25180
  RADIO_GROUP: 'radio-group',
25138
25181
  CHECKBOX_GROUP: 'checkbox-group',
25182
+ FILE_UPLOAD: 'file-upload',
25139
25183
  RANGE: 'range',
25140
25184
  // sadece value fırlatıyor
25141
25185
  FORM: 'form',
@@ -26098,10 +26142,94 @@ const BcmLink = class {
26098
26142
  };
26099
26143
  BcmLink.style = linkCss;
26100
26144
 
26145
+ class LinkedFocusManager {
26146
+ constructor() {
26147
+ this.focusableSelector = [
26148
+ "a[href]",
26149
+ "area[href]",
26150
+ "button:not([disabled])",
26151
+ "input:not([disabled]):not([type='hidden'])",
26152
+ "select:not([disabled])",
26153
+ "textarea:not([disabled])",
26154
+ "iframe",
26155
+ "object",
26156
+ "embed",
26157
+ "[contenteditable='true']",
26158
+ "[tabindex]:not([tabindex='-1'])",
26159
+ ].join(",");
26160
+ }
26161
+ getFocusableElements(linkedElement) {
26162
+ return Array.from(linkedElement.querySelectorAll(this.focusableSelector)).filter(item => {
26163
+ const style = window.getComputedStyle(item);
26164
+ return style.display !== "none" && style.visibility !== "hidden";
26165
+ });
26166
+ }
26167
+ handleKeyboardNavigation(params) {
26168
+ const { event, isOpen, canKeyboardOpen, linkedElement, targetElement, openLinked, hideLinked } = params;
26169
+ const keyCode = event.keyCode || event.which;
26170
+ const isSpaceKey = event.key === " " || event.key === "Spacebar" || keyCode === 32;
26171
+ const isEnterKey = event.key === "Enter" || keyCode === 13;
26172
+ const activeElement = document.activeElement;
26173
+ const isTargetFocused = activeElement === targetElement;
26174
+ const isFocusInsideTarget = !!(activeElement && targetElement.contains(activeElement));
26175
+ const isFocusInsideLinked = !!activeElement && linkedElement.contains(activeElement);
26176
+ const isTriggerFocused = isTargetFocused || isFocusInsideTarget;
26177
+ if (!isOpen && canKeyboardOpen && isTriggerFocused) {
26178
+ if (isSpaceKey || isEnterKey) {
26179
+ event.preventDefault();
26180
+ event.stopPropagation();
26181
+ event.stopImmediatePropagation();
26182
+ openLinked();
26183
+ return;
26184
+ }
26185
+ }
26186
+ if (!isOpen)
26187
+ return;
26188
+ if (event.key === "Escape") {
26189
+ if (isTriggerFocused || isFocusInsideLinked) {
26190
+ event.preventDefault();
26191
+ hideLinked();
26192
+ targetElement.focus();
26193
+ }
26194
+ return;
26195
+ }
26196
+ if (event.key !== "Tab")
26197
+ return;
26198
+ const focusableElements = this.getFocusableElements(linkedElement);
26199
+ const firstFocusableElement = focusableElements[0];
26200
+ const lastFocusableElement = focusableElements[focusableElements.length - 1];
26201
+ if (!event.shiftKey && isTargetFocused) {
26202
+ event.preventDefault();
26203
+ if (firstFocusableElement) {
26204
+ firstFocusableElement.focus();
26205
+ }
26206
+ else {
26207
+ linkedElement.focus();
26208
+ }
26209
+ return;
26210
+ }
26211
+ if (event.shiftKey && isFocusInsideLinked && firstFocusableElement && activeElement === firstFocusableElement) {
26212
+ event.preventDefault();
26213
+ targetElement.focus();
26214
+ return;
26215
+ }
26216
+ if (!event.shiftKey && isFocusInsideLinked && lastFocusableElement && activeElement === lastFocusableElement) {
26217
+ event.preventDefault();
26218
+ firstFocusableElement.focus();
26219
+ return;
26220
+ }
26221
+ if (focusableElements.length === 0 && isFocusInsideLinked) {
26222
+ event.preventDefault();
26223
+ targetElement.focus();
26224
+ }
26225
+ }
26226
+ }
26227
+
26101
26228
  const BcmLinked = class {
26102
26229
  constructor(hostRef) {
26103
26230
  index$1.registerInstance(this, hostRef);
26104
26231
  this.bcmOpen = index$1.createEvent(this, "bcm-open", 7);
26232
+ this.focusManager = new LinkedFocusManager();
26105
26233
  this._id = generate.Generate.UID();
26106
26234
  this.placement = bcm.Bcm.Placement["bottom-start"];
26107
26235
  this.trigger = bcm.Bcm.TriggerType.click;
@@ -26239,6 +26367,9 @@ const BcmLinked = class {
26239
26367
  }
26240
26368
  return this.isOpen;
26241
26369
  }
26370
+ async updateLayout() {
26371
+ this.calculatePosition();
26372
+ }
26242
26373
  async toggle(wait = true) {
26243
26374
  return this.isOpen ? await this.hide(wait) : await this.show(wait);
26244
26375
  }
@@ -26286,9 +26417,24 @@ const BcmLinked = class {
26286
26417
  this.isMouseOverLink = false;
26287
26418
  this.show();
26288
26419
  }
26420
+ keyboardNavigation(e) {
26421
+ const target = this.target();
26422
+ if (!target)
26423
+ return;
26424
+ const canKeyboardOpen = this.trigger !== bcm.Bcm.TriggerType.hover && this.trigger !== bcm.Bcm.TriggerType.custom;
26425
+ this.focusManager.handleKeyboardNavigation({
26426
+ event: e,
26427
+ isOpen: this.isOpen,
26428
+ canKeyboardOpen,
26429
+ linkedElement: this.el,
26430
+ targetElement: target,
26431
+ openLinked: () => this.show(false),
26432
+ hideLinked: () => this.hide(false),
26433
+ });
26434
+ }
26289
26435
  render() {
26290
26436
  const openStyle = this.isOpen ? { visibility: "visible", opacity: "1" } : { visibility: "hidden", opacity: "0" };
26291
- return (index$1.h(index$1.Host, { class: "tw-invisible tw-absolute tw-left-0 tw-top-0 tw-z-tooltip tw-block tw-overscroll-contain tw-scroll-smooth tw-rounded tw-bg-white tw-opacity-0 tw-shadow tw-transition-opacity tw-duration-100", style: Object.assign(Object.assign({}, openStyle), { overflow: "auto" }) }, index$1.h("slot", null)));
26437
+ return (index$1.h(index$1.Host, { class: "tw-invisible tw-absolute tw-left-0 tw-top-0 tw-z-tooltip tw-block tw-overscroll-contain tw-scroll-smooth tw-rounded tw-bg-white tw-opacity-0 tw-shadow tw-transition-opacity tw-duration-100", tabindex: "-1", style: Object.assign(Object.assign({}, openStyle), { overflow: "auto" }) }, index$1.h("slot", null)));
26292
26438
  }
26293
26439
  get el() { return index$1.getElement(this); }
26294
26440
  static get watchers() { return {
@@ -26791,6 +26937,347 @@ const listState = {
26791
26937
  removeState: removeState$1,
26792
26938
  };
26793
26939
 
26940
+ class ListFocusManager {
26941
+ constructor() {
26942
+ this.focusableSelector = [
26943
+ "a[href]",
26944
+ "area[href]",
26945
+ "button:not([disabled])",
26946
+ "input:not([disabled]):not([type='hidden'])",
26947
+ "select:not([disabled])",
26948
+ "textarea:not([disabled])",
26949
+ "[contenteditable='true']",
26950
+ "[tabindex]:not([tabindex='-1'])",
26951
+ ].join(",");
26952
+ }
26953
+ getFocusableElements(container) {
26954
+ return Array.from(container.querySelectorAll(this.focusableSelector)).filter(item => this.isVisible(item));
26955
+ }
26956
+ getFirstFocusableElement(container) {
26957
+ if (!container)
26958
+ return null;
26959
+ if (this.canReceiveProgrammaticFocus(container))
26960
+ return container;
26961
+ return this.getFocusableElements(container)[0] || null;
26962
+ }
26963
+ getListItems(listElement) {
26964
+ if (!listElement)
26965
+ return [];
26966
+ return Array.from(listElement.querySelectorAll(".bcm-list__item")).filter(item => this.canReceiveProgrammaticFocus(item));
26967
+ }
26968
+ getItemById(listElement, itemId) {
26969
+ return this.getListItems(listElement).find(item => item.id === itemId) || null;
26970
+ }
26971
+ getCurrentListItem(listElement, activeElement) {
26972
+ if (!listElement)
26973
+ return null;
26974
+ const activeItem = activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest(".bcm-list__item");
26975
+ if (activeItem && this.isInsideElement(listElement, activeItem) && this.canReceiveProgrammaticFocus(activeItem)) {
26976
+ return activeItem;
26977
+ }
26978
+ const focusedItem = listElement.querySelector(".bcm-list__item.focused");
26979
+ return this.canReceiveProgrammaticFocus(focusedItem) ? focusedItem : null;
26980
+ }
26981
+ getPreferredListFocusElement(listElement, direction = "first") {
26982
+ var _a;
26983
+ if (!listElement)
26984
+ return null;
26985
+ const focusedItem = listElement.querySelector(".bcm-list__item.focused");
26986
+ if (focusedItem && this.canReceiveProgrammaticFocus(focusedItem))
26987
+ return focusedItem;
26988
+ const selectedItem = (_a = listElement.querySelector(".bcm-list__item .selected")) === null || _a === void 0 ? void 0 : _a.closest(".bcm-list__item");
26989
+ if (selectedItem && this.canReceiveProgrammaticFocus(selectedItem))
26990
+ return selectedItem;
26991
+ const listItems = this.getListItems(listElement);
26992
+ if (listItems.length > 0) {
26993
+ return direction === "last" ? listItems[listItems.length - 1] : listItems[0];
26994
+ }
26995
+ const focusableElements = this.getFocusableElements(listElement);
26996
+ return direction === "last" ? focusableElements[focusableElements.length - 1] || null : focusableElements[0] || null;
26997
+ }
26998
+ isElementNaturallyFocusable(element) {
26999
+ const nodeName = element.tagName;
27000
+ if (nodeName === "A")
27001
+ return element.hasAttribute("href");
27002
+ return ["BUTTON", "INPUT", "SELECT", "TEXTAREA"].includes(nodeName);
27003
+ }
27004
+ isEditableElement(element) {
27005
+ if (!element)
27006
+ return false;
27007
+ const nodeName = element.tagName;
27008
+ return nodeName === "INPUT" || nodeName === "TEXTAREA" || nodeName === "SELECT" || element.isContentEditable;
27009
+ }
27010
+ isVisible(element) {
27011
+ if (!element.isConnected)
27012
+ return false;
27013
+ const style = window.getComputedStyle(element);
27014
+ return style.display !== "none" && style.visibility !== "hidden";
27015
+ }
27016
+ isInsideElement(parent, child) {
27017
+ return !!(parent && child && (parent === child || parent.contains(child)));
27018
+ }
27019
+ canReceiveProgrammaticFocus(element) {
27020
+ if (!element || !this.isVisible(element))
27021
+ return false;
27022
+ const tabIndexAttr = element.getAttribute("tabindex");
27023
+ if (tabIndexAttr != null) {
27024
+ return Number(tabIndexAttr) >= 0;
27025
+ }
27026
+ return this.isElementNaturallyFocusable(element);
27027
+ }
27028
+ getInteractionContext(params) {
27029
+ const { hostElement, targetElement, listElement, openTriggerElement } = params;
27030
+ const activeElement = document.activeElement;
27031
+ const isFocusInsideTarget = this.isInsideElement(targetElement, activeElement);
27032
+ const isFocusInsideOpenTrigger = this.isInsideElement(openTriggerElement || null, activeElement);
27033
+ const isFocusInsideHost = this.isInsideElement(hostElement, activeElement);
27034
+ const isFocusInsideList = this.isInsideElement(listElement, activeElement);
27035
+ const isTriggerFocused = isFocusInsideHost || isFocusInsideTarget || isFocusInsideOpenTrigger;
27036
+ return {
27037
+ activeElement,
27038
+ isFocusInsideHost,
27039
+ isFocusInsideList,
27040
+ isFocusInsideOpenTrigger,
27041
+ isFocusInsideTarget,
27042
+ isTriggerFocused,
27043
+ };
27044
+ }
27045
+ isInsideSearch(activeElement) {
27046
+ return !!(activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest(".bcm-list__container-search"));
27047
+ }
27048
+ focusElement(element) {
27049
+ var _a;
27050
+ if (!element || !this.canReceiveProgrammaticFocus(element))
27051
+ return false;
27052
+ element.focus();
27053
+ (_a = element.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(element, { block: "nearest" });
27054
+ return this.isInsideElement(element, document.activeElement);
27055
+ }
27056
+ focusListElement(listElement, preferItem = false, direction = "first") {
27057
+ const focusTarget = preferItem ? this.getPreferredListFocusElement(listElement, direction) : this.getFirstFocusableElement(listElement);
27058
+ return this.focusElement(focusTarget);
27059
+ }
27060
+ focusListItemByOffset(listElement, activeElement, offset) {
27061
+ const items = this.getListItems(listElement);
27062
+ if (items.length === 0)
27063
+ return false;
27064
+ const currentItem = this.getCurrentListItem(listElement, activeElement);
27065
+ const currentIndex = currentItem ? items.indexOf(currentItem) : -1;
27066
+ const nextIndex = currentIndex === -1 ? (offset > 0 ? 0 : items.length - 1) : (currentIndex + offset + items.length) % items.length;
27067
+ return this.focusElement(items[nextIndex]);
27068
+ }
27069
+ focusListItemWhenReady(listElement, itemId, remainingAttempts = 6) {
27070
+ if (this.focusElement(this.getItemById(listElement, itemId)))
27071
+ return true;
27072
+ if (remainingAttempts <= 0)
27073
+ return false;
27074
+ requestAnimationFrame(() => {
27075
+ this.focusListItemWhenReady(listElement, itemId, remainingAttempts - 1);
27076
+ });
27077
+ return true;
27078
+ }
27079
+ focusListElementWhenReady(listElement, preferItem = false, direction = "first", remainingAttempts = 6) {
27080
+ if (this.focusListElement(listElement, preferItem, direction))
27081
+ return true;
27082
+ if (remainingAttempts <= 0)
27083
+ return false;
27084
+ requestAnimationFrame(() => {
27085
+ this.focusListElementWhenReady(listElement, preferItem, direction, remainingAttempts - 1);
27086
+ });
27087
+ return true;
27088
+ }
27089
+ getParentListItem(item) {
27090
+ if (!item)
27091
+ return null;
27092
+ const parentId = item.getAttribute("data-parent-id");
27093
+ if (!parentId)
27094
+ return null;
27095
+ return this.getItemById(item.closest(".bcm-list__container"), parentId);
27096
+ }
27097
+ getFirstChildListItem(item) {
27098
+ return (item === null || item === void 0 ? void 0 : item.querySelector(":scope > .bcm-list__item-childs > .bcm-list__item")) || null;
27099
+ }
27100
+ hasTreeChildren(item) {
27101
+ return (item === null || item === void 0 ? void 0 : item.getAttribute("data-has-children")) === "true";
27102
+ }
27103
+ isTreeItemOpen(item) {
27104
+ return (item === null || item === void 0 ? void 0 : item.getAttribute("data-open")) === "true";
27105
+ }
27106
+ isInsideAnyElement(elements, child) {
27107
+ return elements.some(element => this.isInsideElement(element || null, child));
27108
+ }
27109
+ focusAdjacentOutside(params) {
27110
+ const { hostElement, targetElement, listElement, openTriggerElement, direction } = params;
27111
+ const relatedElements = [hostElement, targetElement, listElement, openTriggerElement];
27112
+ const focusableElements = this.getFocusableElements(document.body).filter(item => !this.isInsideAnyElement(relatedElements, item));
27113
+ const documentFocusableElements = this.getFocusableElements(document.body);
27114
+ const relatedIndexes = documentFocusableElements
27115
+ .map((item, index) => (this.isInsideAnyElement(relatedElements, item) ? index : -1))
27116
+ .filter(index => index >= 0);
27117
+ if (relatedIndexes.length === 0 || focusableElements.length === 0)
27118
+ return false;
27119
+ const anchorIndex = direction === "next" ? Math.max(...relatedIndexes) : Math.min(...relatedIndexes);
27120
+ const focusTarget = direction === "next"
27121
+ ? documentFocusableElements.slice(anchorIndex + 1).find(item => focusableElements.includes(item))
27122
+ : documentFocusableElements
27123
+ .slice(0, anchorIndex)
27124
+ .reverse()
27125
+ .find(item => focusableElements.includes(item));
27126
+ return this.focusElement(focusTarget || null);
27127
+ }
27128
+ restoreTriggerFocus(params) {
27129
+ const { hostElement, targetElement, autocompleteInput, openTriggerElement, preferOpenTrigger } = params;
27130
+ const primaryTarget = preferOpenTrigger ? openTriggerElement : autocompleteInput || targetElement;
27131
+ const secondaryTarget = preferOpenTrigger ? autocompleteInput || targetElement : openTriggerElement;
27132
+ const focusTarget = this.getFirstFocusableElement(primaryTarget || null) || this.getFirstFocusableElement(secondaryTarget || null) || this.getFirstFocusableElement(hostElement);
27133
+ focusTarget === null || focusTarget === void 0 ? void 0 : focusTarget.focus();
27134
+ }
27135
+ handleKeyDown(params) {
27136
+ const { disabled, isOpen, isOverlayType } = params;
27137
+ if (disabled || !isOverlayType)
27138
+ return false;
27139
+ return isOpen ? this.handleOpenOverlayKeyDown(params) : this.handleClosedOverlayKeyDown(params);
27140
+ }
27141
+ handleClosedOverlayKeyDown(params) {
27142
+ const { event, hostElement, targetElement, listElement, openList, openTriggerElement } = params;
27143
+ const keyCode = event.keyCode || event.which;
27144
+ const isSpaceKey = event.key === " " || event.key === "Spacebar" || keyCode === 32;
27145
+ const isArrowDownKey = event.key === "ArrowDown" || keyCode === 40;
27146
+ const isArrowUpKey = event.key === "ArrowUp" || keyCode === 38;
27147
+ const context = this.getInteractionContext({ hostElement, targetElement, listElement, openTriggerElement });
27148
+ if (!context.isTriggerFocused)
27149
+ return false;
27150
+ if (this.isEditableElement(context.activeElement) && !isArrowDownKey && !isArrowUpKey)
27151
+ return false;
27152
+ if (!isSpaceKey && !isArrowDownKey && !isArrowUpKey)
27153
+ return false;
27154
+ event.preventDefault();
27155
+ event.stopPropagation();
27156
+ event.stopImmediatePropagation();
27157
+ openList();
27158
+ if (isArrowDownKey || isArrowUpKey) {
27159
+ this.focusListElementWhenReady(listElement, true, isArrowUpKey ? "last" : "first");
27160
+ }
27161
+ return true;
27162
+ }
27163
+ handleOpenOverlayKeyDown(params) {
27164
+ const { event, hostElement, targetElement, listElement, closeList, selectFocusedItem, openGroup, treeview, checkboxes, autocompleteInput, openTriggerElement } = params;
27165
+ const keyCode = event.keyCode || event.which;
27166
+ const isSpaceKey = event.key === " " || event.key === "Spacebar" || keyCode === 32;
27167
+ const isEnterKey = event.key === "Enter" || keyCode === 13;
27168
+ const isEscapeKey = event.key === "Escape" || keyCode === 27;
27169
+ const isTabKey = event.key === "Tab" || keyCode === 9;
27170
+ const isArrowDownKey = event.key === "ArrowDown" || keyCode === 40;
27171
+ const isArrowUpKey = event.key === "ArrowUp" || keyCode === 38;
27172
+ const isArrowRightKey = event.key === "ArrowRight" || keyCode === 39;
27173
+ const isArrowLeftKey = event.key === "ArrowLeft" || keyCode === 37;
27174
+ const context = this.getInteractionContext({ hostElement, targetElement, listElement, openTriggerElement });
27175
+ const currentItem = this.getCurrentListItem(listElement, context.activeElement);
27176
+ const isInsideSearch = this.isInsideSearch(context.activeElement);
27177
+ if (isEscapeKey && (context.isTriggerFocused || context.isFocusInsideList || context.isFocusInsideHost)) {
27178
+ event.preventDefault();
27179
+ event.stopPropagation();
27180
+ event.stopImmediatePropagation();
27181
+ closeList();
27182
+ this.restoreTriggerFocus({ hostElement, targetElement, autocompleteInput, openTriggerElement, preferOpenTrigger: true });
27183
+ return true;
27184
+ }
27185
+ if (isSpaceKey && checkboxes && currentItem && !isInsideSearch) {
27186
+ event.preventDefault();
27187
+ event.stopPropagation();
27188
+ event.stopImmediatePropagation();
27189
+ selectFocusedItem(currentItem.id);
27190
+ return true;
27191
+ }
27192
+ if (isSpaceKey && currentItem && !checkboxes && !isInsideSearch) {
27193
+ event.preventDefault();
27194
+ event.stopPropagation();
27195
+ event.stopImmediatePropagation();
27196
+ return true;
27197
+ }
27198
+ if (isSpaceKey && context.isTriggerFocused && !this.isEditableElement(context.activeElement)) {
27199
+ event.preventDefault();
27200
+ event.stopPropagation();
27201
+ event.stopImmediatePropagation();
27202
+ closeList();
27203
+ this.restoreTriggerFocus({ hostElement, targetElement, autocompleteInput, openTriggerElement, preferOpenTrigger: true });
27204
+ return true;
27205
+ }
27206
+ if ((isArrowDownKey || isArrowUpKey) && listElement && (context.isFocusInsideList || context.isTriggerFocused)) {
27207
+ event.preventDefault();
27208
+ event.stopPropagation();
27209
+ event.stopImmediatePropagation();
27210
+ if (context.isFocusInsideList && !isInsideSearch) {
27211
+ return this.focusListItemByOffset(listElement, context.activeElement, isArrowUpKey ? -1 : 1);
27212
+ }
27213
+ return this.focusListElementWhenReady(listElement, true, isArrowUpKey ? "last" : "first");
27214
+ }
27215
+ if (treeview && (isArrowRightKey || isArrowLeftKey) && currentItem && !isInsideSearch) {
27216
+ event.preventDefault();
27217
+ event.stopPropagation();
27218
+ event.stopImmediatePropagation();
27219
+ if (isArrowRightKey) {
27220
+ if (this.hasTreeChildren(currentItem) && !this.isTreeItemOpen(currentItem)) {
27221
+ openGroup(currentItem.id);
27222
+ return this.focusListItemWhenReady(listElement, currentItem.id);
27223
+ }
27224
+ return this.focusElement(this.getFirstChildListItem(currentItem));
27225
+ }
27226
+ if (this.hasTreeChildren(currentItem) && this.isTreeItemOpen(currentItem)) {
27227
+ openGroup(currentItem.id);
27228
+ return this.focusListItemWhenReady(listElement, currentItem.id);
27229
+ }
27230
+ return this.focusElement(this.getParentListItem(currentItem));
27231
+ }
27232
+ if (isEnterKey && context.isFocusInsideOpenTrigger && !this.isEditableElement(context.activeElement) && listElement) {
27233
+ event.preventDefault();
27234
+ event.stopPropagation();
27235
+ event.stopImmediatePropagation();
27236
+ return this.focusListElementWhenReady(listElement, true, "first");
27237
+ }
27238
+ if (isEnterKey && listElement && context.isFocusInsideList && !isInsideSearch) {
27239
+ const focusedItem = currentItem || listElement.querySelector(".bcm-list__item.focused");
27240
+ if (focusedItem === null || focusedItem === void 0 ? void 0 : focusedItem.id) {
27241
+ event.preventDefault();
27242
+ event.stopPropagation();
27243
+ event.stopImmediatePropagation();
27244
+ selectFocusedItem(focusedItem.id);
27245
+ return true;
27246
+ }
27247
+ }
27248
+ if (!isTabKey || !listElement)
27249
+ return false;
27250
+ const focusableElements = this.getFocusableElements(listElement);
27251
+ const firstFocusableElement = focusableElements[0];
27252
+ const lastFocusableElement = focusableElements[focusableElements.length - 1];
27253
+ if (!event.shiftKey && context.isTriggerFocused) {
27254
+ event.preventDefault();
27255
+ return this.focusListElementWhenReady(listElement);
27256
+ }
27257
+ if (event.shiftKey && context.isFocusInsideList && firstFocusableElement && context.activeElement === firstFocusableElement) {
27258
+ event.preventDefault();
27259
+ closeList();
27260
+ this.restoreTriggerFocus({ hostElement, targetElement, autocompleteInput, openTriggerElement, preferOpenTrigger: true });
27261
+ return true;
27262
+ }
27263
+ if (!event.shiftKey && context.isFocusInsideList && lastFocusableElement && context.activeElement === lastFocusableElement) {
27264
+ event.preventDefault();
27265
+ closeList();
27266
+ requestAnimationFrame(() => {
27267
+ this.focusAdjacentOutside({ hostElement, targetElement, listElement, openTriggerElement, direction: "next" });
27268
+ });
27269
+ return true;
27270
+ }
27271
+ if (context.isFocusInsideList && focusableElements.length === 0) {
27272
+ event.preventDefault();
27273
+ closeList();
27274
+ this.restoreTriggerFocus({ hostElement, targetElement, autocompleteInput, openTriggerElement, preferOpenTrigger: true });
27275
+ return true;
27276
+ }
27277
+ return false;
27278
+ }
27279
+ }
27280
+
26794
27281
  class KeyControl {
26795
27282
  constructor(keyCode, element, elementName, childElementName) {
26796
27283
  this.elementName = '';
@@ -26973,13 +27460,18 @@ class ListKeyControl extends KeyControl {
26973
27460
  }
26974
27461
  }
26975
27462
  }
26976
- keyEnterControl() { }
26977
- keySpaceControl() {
27463
+ keyEnterControl() {
27464
+ const focused = this.getFocusedElement();
27465
+ if (!(focused === null || focused === void 0 ? void 0 : focused.id))
27466
+ return;
26978
27467
  if (this.isCheckBoxes) {
26979
- const { id } = this.getFocusedElement();
26980
- this.checkedItem(id);
27468
+ this.checkedItem(focused.id);
27469
+ }
27470
+ else {
27471
+ this.selectedItem(focused.id);
26981
27472
  }
26982
27473
  }
27474
+ keySpaceControl() { }
26983
27475
  keyDown() {
26984
27476
  switch (this.getKeyCode()) {
26985
27477
  case bcm.Bcm$1.KeyCode.up:
@@ -27005,7 +27497,7 @@ class ListKeyControl extends KeyControl {
27005
27497
  keyUp() { }
27006
27498
  }
27007
27499
 
27008
- const listCss = "@import url(\"https://fonts.googleapis.com/css?family=Roboto:400,500\");@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@200;400;500;600&display=swap\"); @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@200;400;500;600&display=swap\"); .size-1{font-size:12px;line-height:20px}.size-2{font-size:14px;line-height:22px}.size-3{font-size:16px;line-height:24px}.size-4{font-size:20px;line-height:28px}.size-5{font-size:24px;line-height:32px}.size-6{font-size:30px;line-height:38px}.size-7{font-size:38px;line-height:46px}.size-8{font-size:46px;line-height:54px}.size-9{font-size:56px;line-height:64px}.weight-regular{font-weight:400}.weight-semibold{font-weight:500}.input-size-large{height:40px}.input-size-medium{height:32px}.input-size-small{height:24px}.resize-none textarea{resize:none}.resize-vertical textarea{resize:vertical}.resize-auto textarea{height:auto;resize:none}.textarea-size-large{padding:4px 0 0 4px;min-height:40px}.textarea-size-large .bcm-input-element{min-height:calc((40px - 8px) + 2px)}.textarea-size-large .input-clear-button{height:calc( 40px - 16px );top:8px;padding:0;margin-right:8px}.textarea-size-medium{padding:4px 0 0 4px;min-height:32px}.textarea-size-medium .bcm-input-element{min-height:calc((32px - 8px) + 2px)}.textarea-size-medium .input-clear-button{height:calc( 32px - 16px );top:8px;padding:0;margin-right:8px}.textarea-size-small{padding:0px 0 0 4px;min-height:24px}.textarea-size-small .bcm-input-element{min-height:calc((24px - 8px) + 2px)}.textarea-size-small .input-clear-button{height:calc( 24px - 16px );top:8px;padding:0;margin-right:8px}.bcm-input[no-margin]{margin:0}.bcm-textarea[no-margin]{margin:0}.bcm-switch[no-margin]{margin:0}.bcm-checkbox[no-margin]{margin:0}.bcm-radio-group[no-margin]{margin:0}.bcm-checkbox-group[no-margin]{margin:0}.bcm-range[no-margin]{margin:0}.bcm-form[no-margin]{margin:0}.bcm-form-group[no-margin]{margin:0}.bcm-list[no-margin]{margin:0}.bcm-colorpicker[no-margin]{margin:0}.bcm-date-picker[no-margin]{margin:0}.bcm-time-picker[no-margin]{margin:0}.bcm-datetime-picker[no-margin]{margin:0}.bcm-select[no-margin]{margin:0}.bcm-listbox[no-margin]{margin:0}*{box-sizing:border-box}*{box-sizing:border-box}.bcm-checkbox{outline:none;border:none;--bcm-checkbox-primary-color-default:var(--bcm-ui-color-background-primary-default);--bcm-checkbox-secondary-color-default:var(--bcm-ui-color-background-base-default);--bcm-checkbox-primary-color-hover:var(--bcm-ui-color-background-primary-hover);--bcm-checkbox-secondary-color-hover:var(--bcm-ui-color-background-default-default);--bcm-checkbox-primary-color-focus-visible:var(--bcm-ui-color-background-primary-active);--bcm-checkbox-secondary-color-focus-visible:var(--bcm-ui-color-background-default-active);--bcm-checkbox-primary-color-active:var(--bcm-ui-color-background-primary-active);--bcm-checkbox-secondary-color-active:var(--bcm-ui-color-background-default-active);--bcm-checkbox-primary-color-disabled:var(--bcm-new-ds-color-slate-300);--bcm-checkbox-secondary-color-disabled:var(--bcm-new-ds-color-slate-200);display:inline-flex;width:fit-content;flex-direction:column;margin-bottom:8px}.bcm-checkbox:focus,.bcm-checkbox:hover,.bcm-checkbox:active{outline:none;border:none}.bcm-checkbox *{box-sizing:border-box}.bcm-checkbox input[type=radio],.bcm-checkbox input[type=checkbox]{-webkit-appearance:none;appearance:none;background-color:#fff;margin:0;display:none}.bcm-checkbox__input{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;flex-wrap:nowrap;padding-top:4px}.bcm-checkbox.hidden{display:none}.bcm-checkbox :hover{cursor:pointer}.bcm-checkbox[disabled] :hover,.bcm-checkbox.disabled :hover{cursor:not-allowed}.bcm-checkbox .slot{font-family:\"Inter\", sans-serif;font-size:14px;line-height:calc(14px + 8px);font-weight:400;font-weight:500;color:var(--bcm-ui-color-text-default)}.bcm-checkbox .slot:not(:empty){margin-left:8px;margin-right:8px}.bcm-checkbox-size-small .slot{font-size:var(--bcm-ui-font-size-4);line-height:var(--bcm-ui-line-height-4);margin-top:-2.5px}.bcm-checkbox-size-small .bcm-checkbox__input{min-height:24px}.bcm-checkbox-size-small .bcm-checkbox__label-icon{width:14px;height:14px;min-width:14px;font-size:calc(10px - 2px)}.bcm-checkbox-size-medium .slot{font-size:var(--bcm-ui-font-size-5);line-height:var(--bcm-ui-line-height-4);margin-top:-1.5px}.bcm-checkbox-size-medium .bcm-checkbox__input{min-height:32px}.bcm-checkbox-size-medium .bcm-checkbox__label-icon{width:16px;height:16px;min-width:16px;font-size:10px}.bcm-checkbox-size-large .slot{font-size:var(--bcm-ui-font-size-6);line-height:var(--bcm-ui-line-height-6);margin-top:-1.5px}.bcm-checkbox-size-large .bcm-checkbox__input{min-height:40px}.bcm-checkbox-size-large .bcm-checkbox__label-icon{width:18px;height:18px;min-width:18px;font-size:12px}.bcm-checkbox__label{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;flex-wrap:nowrap}.bcm-checkbox__label-icon{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-wrap:nowrap;border-width:1px;border-style:solid;border-radius:2px}.bcm-checkbox__label-icon-indeterminate{position:relative}.bcm-checkbox__label-icon-indeterminate:after{content:\"\";display:block;position:absolute;width:70%;height:1.5px;background:var(--bcm-new-ds-color-white)}.bcm-checkbox__label-icon.bcm-radio__icon{width:16px;height:16px;box-sizing:border-box;border-radius:100px}.bcm-checkbox__label-icon.bcm-radio__icon .bcm-radio__icon-inner{width:10px;height:10px;border-radius:100px;background-color:var(--bcm-new-ds-color-white)}.bcm-checkbox .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-default);color:var(--bcm-checkbox-secondary-color-default);border-color:var(--bcm-new-ds-color-slate-300)}.bcm-checkbox .bcm-checkbox__label-icon-checked,.bcm-checkbox .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-default);border-color:var(--bcm-checkbox-primary-color-default)}.bcm-checkbox .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-default);background-color:var(--bcm-checkbox-secondary-color-default)}.bcm-checkbox .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-default)}.bcm-checkbox .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-default)}.bcm-checkbox:hover .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-hover);color:var(--bcm-checkbox-secondary-color-hover);border-color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-checked,.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-hover);border-color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-hover);background-color:var(--bcm-checkbox-secondary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-focus-visible);color:var(--bcm-checkbox-secondary-color-focus-visible);border-color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-checked,.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-focus-visible);border-color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-focus-visible);background-color:var(--bcm-checkbox-secondary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:active .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-active);color:var(--bcm-checkbox-secondary-color-active);border-color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-checked,.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-active);border-color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-active);background-color:var(--bcm-checkbox-secondary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon,.bcm-checkbox.disabled .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-disabled);color:var(--bcm-checkbox-secondary-color-disabled);border-color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-checked,.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate,.bcm-checkbox.disabled .bcm-checkbox__label-icon-checked,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-disabled);border-color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon,.bcm-checkbox.disabled .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-disabled);background-color:var(--bcm-checkbox-secondary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox.disabled .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[no-margin] .bcm-checkbox__input{margin:0;min-height:0;padding:0}.bcm-list{font-family:\"Inter\", sans-serif;font-size:14px;line-height:calc(14px + 8px);font-weight:400;--width:256px;--height:256px;--max-height:inherit;--min-height:inherit;min-width:90px;display:flex;flex-direction:column;margin:0 0 8px 0}.bcm-list__listbox .bcm-list__container{height:var(--height);max-height:var(--max-height);min-height:var(--min-height)}.bcm-list.full-width{width:100%}.bcm-list__size-small .bcm-list__input{height:24px;font-size:var(--bcm-ui-font-size-4);line-height:var(--bcm-ui-line-height-4)}.bcm-list__size-small .bcm-list__input .bcm-tag__content.dismissable{font-size:10px;line-height:calc(10px + 8px)}.bcm-list__size-medium .bcm-list__input{height:32px;font-size:var(--bcm-ui-font-size-5);line-height:var(--bcm-ui-line-height-5)}.bcm-list__size-medium .bcm-list__input .bcm-tag__content.dismissable{font-size:12px;line-height:calc(12px + 8px)}.bcm-list__size-large .bcm-list__input{height:40px;font-size:var(--bcm-ui-font-size-6);line-height:var(--bcm-ui-line-height-6)}.bcm-list__size-large .bcm-list__input .bcm-tag__content.dismissable{font-size:14px;line-height:calc(14px + 8px)}.bcm-list:hover{outline:none}.bcm-list:hover .bcm-list__input{border-color:var(--bcm-new-ds-color-blue-500);background-color:var(--bcm-new-ds-color-slate-50)}.bcm-list:focus-visible{outline:none}.bcm-list:focus-visible .bcm-list__input{border-color:var(--bcm-new-ds-color-blue-600);background-color:var(--bcm-new-ds-color-white)}.bcm-list:active{outline:none}.bcm-list:active .bcm-list__input{border-color:var(--bcm-new-ds-color-blue-600);box-shadow:0 1px 3px 0 rgba(17, 24, 38, 0.1)}.bcm-list__container{--width:256px;--height:256px;width:var(--width);height:var(--height);background-color:var(--bcm-ui-color-background-base-default);border:1px solid var(--bcm-ui-color-border-default);border-radius:var(--bcm-ui-border-radius-default);box-sizing:border-box;padding-top:8px;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;gap:4px}.bcm-list__container main{padding:0 8px;flex:1;overflow:auto;display:flex;flex-direction:column}.bcm-list__container-search{margin:0 8px}.bcm-list__container-search:after{margin:4px 0}.bcm-list__container-no-data{flex:1;display:flex;justify-content:stretch;align-items:stretch;padding-bottom:4px}.bcm-list__container.error{border-color:var(--bcm-color-red-6)}.bcm-list__container.full-width{width:100%}.bcm-list__container.bcm-list__type-linked-component,.bcm-list__container.bcm-list__type-select,.bcm-list__container.bcm-list__type-autocomplete{display:none;opacity:0;visibility:hidden;position:absolute;top:0;left:0;height:0;width:0;transform:translateY(10%);z-index:10800}.bcm-list__container.bcm-list__type-linked-component.is-open,.bcm-list__container.bcm-list__type-select.is-open,.bcm-list__container.bcm-list__type-autocomplete.is-open{transition:transform 50ms;display:flex}.bcm-list__container.bcm-list__type-linked-component.is-open-animation,.bcm-list__container.bcm-list__type-select.is-open-animation,.bcm-list__container.bcm-list__type-autocomplete.is-open-animation{opacity:1;transform:translateY(0);visibility:visible}.bcm-list__container.bcm-list__type-linked-component{margin-top:2px}.bcm-list__label{display:contents}.bcm-list__label>div{display:contents}.bcm-list__input{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;color:var(--bcm-ui-color-text-default);background-color:var(--bcm-ui-color-background-base-default);border:1px solid var(--bcm-ui-color-border-default);border-radius:var(--bcm-ui-border-radius-default);user-select:none;cursor:pointer;padding:0 8px;height:32px;overflow:hidden;position:relative;transition:background-color 100ms, border-color 100ms}.bcm-list__input-spinner{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:var(--bcm-color-grey-1);opacity:0;visibility:hidden;transition:opacity 0.2s ease-in-out;z-index:-1}.bcm-list__input-spinner.is-open{opacity:1;visibility:visible;z-index:1}.bcm-list__input-container{flex:1;display:block;overflow:hidden}.bcm-list__input-container.value-empty{color:#6B7280}.bcm-list__input-container.type-single,.bcm-list__input-container.value-empty{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bcm-list__input-placeholder{color:var(--bcm-ui-color-text-placeholder)}.bcm-list__input-tag-container{height:100%;width:100%;display:flex;align-items:center;justify-content:flex-start;flex-wrap:nowrap;grid-gap:2px;line-height:1}.bcm-list__input-buttons{display:flex;align-items:center;justify-content:flex-end;grid-gap:4px}.bcm-list__input-buttons-button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0 4px 0 4px;font-size:16px;color:var(--bcm-ui-color-text-default)}.bcm-list__input-buttons-button.caret-is{transform:rotate(360deg);transition:transform 0.2s ease-in-out}.bcm-list__input-buttons-button.caret-is-open{transform:rotate(180deg)}.bcm-list__input-buttons:not(.disabled) .bcm-list__input-buttons-button:hover{cursor:pointer;color:var(--bcm-new-ds-color-slate-600)}.bcm-list__input-autocomplete{position:relative;padding-right:0}.bcm-list__input-autocomplete .bcm-list-input-selected-text{background-color:#ffffff;display:flex;align-items:center;justify-content:flex-start;width:calc(100% - 24px);height:100%;padding:0 calc(8px + 4px);position:absolute;top:0;left:0}.bcm-list__input-autocomplete .bcm-list__input-container{height:100%;display:flex;flex-direction:row}.bcm-list__input-autocomplete .bcm-list__input-container .bcm-list__input-tag-container{width:auto}.bcm-list__input-autocomplete .bcm-input,.bcm-list__input-autocomplete .bcm-list__autocomplete{height:100%;min-width:70px;width:100%}.bcm-list__input-autocomplete .bcm-input__container,.bcm-list__input-autocomplete .bcm-list__autocomplete__container{height:100%;border:none;padding:0;width:100%}.bcm-list__input-autocomplete .bcm-input__container:not(.disabled).focused,.bcm-list__input-autocomplete .bcm-input__container:not(.disabled):hover,.bcm-list__input-autocomplete .bcm-list__autocomplete__container:not(.disabled).focused,.bcm-list__input-autocomplete .bcm-list__autocomplete__container:not(.disabled):hover{border:none;box-shadow:none}.bcm-list__autocomplete{width:100%;position:relative}.bcm-list.full-width .bcm-list__container,.bcm-list.full-width .bcm-list__input{width:100%}.bcm-list.error .bcm-list__input{border-color:var(--bcm-color-red-6)}.bcm-list.disabled .bcm-list__container,.bcm-list.disabled .bcm-list__input{color:var(--bcm-ui-color-text-disabled);background-color:var(--bcm-ui-color-background-disabled-default);cursor:not-allowed}.bcm-list.disabled .bcm-tag__content.dismissable .close-button{cursor:default}.bcm-list:not(.disabled) .bcm-list__input .bcm-tag__content.checked .close-button bcm-icon{color:var(--bcm-new-ds-color-slate-100)}.bcm-list:not(.disabled) .bcm-list__input .bcm-tag__content.checked .close-button:hover bcm-icon{color:var(--bcm-new-ds-color-slate-200)}.bcm-list:not(.disabled) .bcm-list__input:hover{border-color:var(--bcm-ui-color-border-primary)}.bcm-list:not(.disabled) .bcm-list__input:hover .bcm-tag__content.dismissable:not(.checked){background-color:var(--bcm-new-ds-color-slate-200);border-color:var(--bcm-new-ds-color-slate-200)}.bcm-list:not(.disabled) .bcm-list__input:focus-visible{border-color:var(--bcm-ui-color-border-primary);box-shadow:0 1px 3px 0 rgba(17, 24, 38, 0.1)}.bcm-list:not(.disabled) .bcm-list__input:active{border-color:var(--bcm-ui-color-border-primary)}.bcm-list__item{padding:2px 0}.bcm-list__item.disabled{user-select:none}.bcm-list__item:focus{outline:none}.bcm-list__item:focus-visible>.bcm-list__item-content{background-color:var(--bcm-new-ds-color-slate-300)}.bcm-list__item:focus-visible>.bcm-list__item-content:not(.disabled){color:var(--bcm-new-ds-color-slate-600)}.bcm-list__item-content{display:flex;flex-direction:row;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;cursor:pointer;border-radius:4px;padding:0;padding-left:4px;color:var(--bcm-ui-color-text-default);transition:background-color 0.2s ease}.bcm-list__item-content.disabled{color:var(--bcm-ui-color-text-disabled);background-color:var(--bcm-ui-color-background-disabled-default);user-select:none;cursor:not-allowed}.bcm-list__item-content.readonly{color:var(--bcm-new-ds-color-slate-500);background-color:var(--bcm-new-ds-color-slate-100);cursor:default}.bcm-list__item-content.readonly .bcm-list__item-content-collapse-icon{color:var(--bcm-new-ds-color-slate-700);cursor:pointer}.bcm-list__item-content.selected{color:var(--bcm-ui-color-text-primary);background-color:var(--bcm-ui-color-background-stated-primary-default)}.bcm-list__item-content.selected:hover:not(.disabled):not(.readonly){color:var(--bcm-ui-color-text-primary);background-color:var(--bcm-ui-color-background-stated-primary-hover)}.bcm-list__item-content:hover:not(.disabled):not(.readonly){background-color:var(--bcm-ui-color-background-base-hover)}.bcm-list__item-content:active:not(.disabled):not(.readonly){color:var(--bcm-new-ds-color-slate-600);background-color:var(--bcm-ui-color-background-base-active)}.bcm-list__item-content-collapse-icon{width:16px;padding:0 8px;display:flex;align-items:center;justify-content:center;font-size:16px}.bcm-list__item-content-collapse-icon.child{cursor:pointer}.bcm-list__item-content-text{user-select:none;padding:8px;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:flex-start}.bcm-list__item-content-text.treeview{padding:8px 0}.bcm-list__item-content-text-checkbox{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-wrap:nowrap;margin-right:8px}.bcm-list__item-content-text-checkbox .bcm-checkbox{margin:0}.bcm-list__item-content-text-inner{width:100%}.bcm-list__item-content-text mark{padding:0;margin:0;font-size:inherit;color:var(--bcm-color-grey-8);background-color:var(--bcm-color-yellow-4)}.bcm-list__item-childs{padding-left:16px}.bcm-list__item-small{padding:2px 0 2px 8px;font-size:10px;line-height:calc(10px + 8px)}.bcm-list__item-small .bcm-list__item-content-text{padding:3px 4px}.bcm-list__item-medium{font-size:12px;line-height:calc(12px + 8px)}.bcm-list__item-medium .bcm-list__item-content-text{padding:6px 4px}.bcm-list__item-large{font-size:14px;line-height:calc(14px + 8px)}.bcm-list__item-large .bcm-list__item-content-text{padding:9px 4px}.bcm-list__item--group{border-radius:4px}.bcm-list__item--group:focus>.bcm-list__item-content:not(.disabled){background-color:var(--bcm-new-ds-color-slate-50);color:var(--bcm-new-ds-color-slate-600)}.bcm-list__item--group>.bcm-list__item-content{background-color:var(--bcm-new-ds-color-slate-50);color:var(--bcm-new-ds-color-slate-600);border-radius:4px 4px 0 0;cursor:default;font-size:14px;line-height:calc(14px + 8px);font-weight:500;position:sticky;top:0}.bcm-list__item--group>.bcm-list__item-content>.bcm-list__item-content-text{padding:4px 8px 4px 16px}.bcm-list__item--group>.bcm-list__item-content:hover,.bcm-list__item--group>.bcm-list__item-content:focus{color:var(--bcm-new-ds-color-slate-800);background-color:var(--bcm-new-ds-color-slate-50)}.bcm-list__item--group>.bcm-list__item-content-unclickable:hover{color:var(--bcm-new-ds-color-slate-700);background-color:var(--bcm-new-ds-color-slate-50)}.bcm-list__item--group>.bcm-list__item-childs{background-color:var(--bcm-new-ds-color-slate-50);color:var(--bcm-new-ds-color-slate-600);padding-bottom:8px;border-radius:0 0 4px 4px;padding-left:8px}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content{background-color:var(--bcm-new-ds-color-white);color:var(--bcm-new-ds-color-slate-600)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content:hover{background-color:var(--bcm-new-ds-color-slate-100)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content:active{background-color:var(--bcm-new-ds-color-slate-200)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content:focus-visible{background-color:var(--bcm-new-ds-color-slate-300)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content.selected{background-color:var(--bcm-new-ds-color-blue-500);color:var(--bcm-new-ds-color-white)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content.selected:hover{background-color:var(--bcm-new-ds-color-blue-600)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content.selected:active{background-color:var(--bcm-new-ds-color-blue-700)}.bcm-list__linked{display:none}.bcm-list .bcm-tag--other .value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bcm-info-footer{text-align:right;padding:4px 8px;background-color:var(--bcm-new-ds-color-slate-100);color:var(--bcm-new-ds-color-slate-600);border-radius:0 0 4px 4px}";
27500
+ const listCss = "@import url(\"https://fonts.googleapis.com/css?family=Roboto:400,500\");@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@200;400;500;600&display=swap\"); @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@200;400;500;600&display=swap\"); .size-1{font-size:12px;line-height:20px}.size-2{font-size:14px;line-height:22px}.size-3{font-size:16px;line-height:24px}.size-4{font-size:20px;line-height:28px}.size-5{font-size:24px;line-height:32px}.size-6{font-size:30px;line-height:38px}.size-7{font-size:38px;line-height:46px}.size-8{font-size:46px;line-height:54px}.size-9{font-size:56px;line-height:64px}.weight-regular{font-weight:400}.weight-semibold{font-weight:500}.input-size-large{height:40px}.input-size-medium{height:32px}.input-size-small{height:24px}.resize-none textarea{resize:none}.resize-vertical textarea{resize:vertical}.resize-auto textarea{height:auto;resize:none}.textarea-size-large{padding:4px 0 0 4px;min-height:40px}.textarea-size-large .bcm-input-element{min-height:calc((40px - 8px) + 2px)}.textarea-size-large .input-clear-button{height:calc( 40px - 16px );top:8px;padding:0;margin-right:8px}.textarea-size-medium{padding:4px 0 0 4px;min-height:32px}.textarea-size-medium .bcm-input-element{min-height:calc((32px - 8px) + 2px)}.textarea-size-medium .input-clear-button{height:calc( 32px - 16px );top:8px;padding:0;margin-right:8px}.textarea-size-small{padding:0px 0 0 4px;min-height:24px}.textarea-size-small .bcm-input-element{min-height:calc((24px - 8px) + 2px)}.textarea-size-small .input-clear-button{height:calc( 24px - 16px );top:8px;padding:0;margin-right:8px}.bcm-input[no-margin]{margin:0}.bcm-textarea[no-margin]{margin:0}.bcm-switch[no-margin]{margin:0}.bcm-checkbox[no-margin]{margin:0}.bcm-radio-group[no-margin]{margin:0}.bcm-checkbox-group[no-margin]{margin:0}.bcm-range[no-margin]{margin:0}.bcm-form[no-margin]{margin:0}.bcm-form-group[no-margin]{margin:0}.bcm-list[no-margin]{margin:0}.bcm-colorpicker[no-margin]{margin:0}.bcm-date-picker[no-margin]{margin:0}.bcm-time-picker[no-margin]{margin:0}.bcm-datetime-picker[no-margin]{margin:0}.bcm-select[no-margin]{margin:0}.bcm-listbox[no-margin]{margin:0}*{box-sizing:border-box}*{box-sizing:border-box}.bcm-checkbox{outline:none;border:none;--bcm-checkbox-primary-color-default:var(--bcm-ui-color-background-primary-default);--bcm-checkbox-secondary-color-default:var(--bcm-ui-color-background-base-default);--bcm-checkbox-primary-color-hover:var(--bcm-ui-color-background-primary-hover);--bcm-checkbox-secondary-color-hover:var(--bcm-ui-color-background-default-default);--bcm-checkbox-primary-color-focus-visible:var(--bcm-ui-color-background-primary-active);--bcm-checkbox-secondary-color-focus-visible:var(--bcm-ui-color-background-default-active);--bcm-checkbox-primary-color-active:var(--bcm-ui-color-background-primary-active);--bcm-checkbox-secondary-color-active:var(--bcm-ui-color-background-default-active);--bcm-checkbox-primary-color-disabled:var(--bcm-new-ds-color-slate-300);--bcm-checkbox-secondary-color-disabled:var(--bcm-new-ds-color-slate-200);display:inline-flex;width:fit-content;flex-direction:column;margin-bottom:8px}.bcm-checkbox:focus,.bcm-checkbox:hover,.bcm-checkbox:active{outline:none;border:none}.bcm-checkbox *{box-sizing:border-box}.bcm-checkbox input[type=radio],.bcm-checkbox input[type=checkbox]{-webkit-appearance:none;appearance:none;background-color:#fff;margin:0;display:none}.bcm-checkbox__input{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;flex-wrap:nowrap;padding-top:4px}.bcm-checkbox.hidden{display:none}.bcm-checkbox :hover{cursor:pointer}.bcm-checkbox[disabled] :hover,.bcm-checkbox.disabled :hover{cursor:not-allowed}.bcm-checkbox .slot{font-family:\"Inter\", sans-serif;font-size:14px;line-height:calc(14px + 8px);font-weight:400;font-weight:500;color:var(--bcm-ui-color-text-default)}.bcm-checkbox .slot:not(:empty){margin-left:8px;margin-right:8px}.bcm-checkbox-size-small .slot{font-size:var(--bcm-ui-font-size-4);line-height:var(--bcm-ui-line-height-4);margin-top:-2.5px}.bcm-checkbox-size-small .bcm-checkbox__input{min-height:24px}.bcm-checkbox-size-small .bcm-checkbox__label-icon{width:14px;height:14px;min-width:14px;font-size:calc(10px - 2px)}.bcm-checkbox-size-medium .slot{font-size:var(--bcm-ui-font-size-5);line-height:var(--bcm-ui-line-height-4);margin-top:-1.5px}.bcm-checkbox-size-medium .bcm-checkbox__input{min-height:32px}.bcm-checkbox-size-medium .bcm-checkbox__label-icon{width:16px;height:16px;min-width:16px;font-size:10px}.bcm-checkbox-size-large .slot{font-size:var(--bcm-ui-font-size-6);line-height:var(--bcm-ui-line-height-6);margin-top:-1.5px}.bcm-checkbox-size-large .bcm-checkbox__input{min-height:40px}.bcm-checkbox-size-large .bcm-checkbox__label-icon{width:18px;height:18px;min-width:18px;font-size:12px}.bcm-checkbox__label{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;flex-wrap:nowrap}.bcm-checkbox__label-icon{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-wrap:nowrap;border-width:1px;border-style:solid;border-radius:2px}.bcm-checkbox__label-icon-indeterminate{position:relative}.bcm-checkbox__label-icon-indeterminate:after{content:\"\";display:block;position:absolute;width:70%;height:1.5px;background:var(--bcm-new-ds-color-white)}.bcm-checkbox__label-icon.bcm-radio__icon{width:16px;height:16px;box-sizing:border-box;border-radius:100px}.bcm-checkbox__label-icon.bcm-radio__icon .bcm-radio__icon-inner{width:10px;height:10px;border-radius:100px;background-color:var(--bcm-new-ds-color-white)}.bcm-checkbox .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-default);color:var(--bcm-checkbox-secondary-color-default);border-color:var(--bcm-new-ds-color-slate-300)}.bcm-checkbox .bcm-checkbox__label-icon-checked,.bcm-checkbox .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-default);border-color:var(--bcm-checkbox-primary-color-default)}.bcm-checkbox .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-default);background-color:var(--bcm-checkbox-secondary-color-default)}.bcm-checkbox .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-default)}.bcm-checkbox .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-default)}.bcm-checkbox:hover .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-hover);color:var(--bcm-checkbox-secondary-color-hover);border-color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-checked,.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-hover);border-color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-hover);background-color:var(--bcm-checkbox-secondary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:hover .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-hover)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-focus-visible);color:var(--bcm-checkbox-secondary-color-focus-visible);border-color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-checked,.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-focus-visible);border-color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-focus-visible);background-color:var(--bcm-checkbox-secondary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:focus-visible .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-focus-visible)}.bcm-checkbox:active .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-active);color:var(--bcm-checkbox-secondary-color-active);border-color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-checked,.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-active);border-color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-active);background-color:var(--bcm-checkbox-secondary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox:active .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-active)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon,.bcm-checkbox.disabled .bcm-checkbox__label-icon{background:var(--bcm-checkbox-secondary-color-disabled);color:var(--bcm-checkbox-secondary-color-disabled);border-color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-checked,.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate,.bcm-checkbox.disabled .bcm-checkbox__label-icon-checked,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-new-ds-color-white);background-color:var(--bcm-checkbox-primary-color-disabled);border-color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon,.bcm-checkbox.disabled .bcm-checkbox__label-icon-checked.bcm-radio__icon,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon{border-color:var(--bcm-checkbox-primary-color-disabled);background-color:var(--bcm-checkbox-secondary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox.disabled .bcm-checkbox__label-icon-checked.bcm-radio__icon .bcm-radio__icon-inner,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate.bcm-radio__icon .bcm-radio__icon-inner{background-color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[disabled] .bcm-checkbox__label-icon-indeterminate,.bcm-checkbox.disabled .bcm-checkbox__label-icon-indeterminate{color:var(--bcm-checkbox-primary-color-disabled)}.bcm-checkbox[no-margin] .bcm-checkbox__input{margin:0;min-height:0;padding:0}.bcm-list{font-family:\"Inter\", sans-serif;font-size:14px;line-height:calc(14px + 8px);font-weight:400;--width:256px;--height:256px;--max-height:inherit;--min-height:inherit;min-width:90px;display:flex;flex-direction:column;margin:0 0 8px 0}.bcm-list__listbox .bcm-list__container{height:var(--height);max-height:var(--max-height);min-height:var(--min-height)}.bcm-list.full-width{width:100%}.bcm-list__size-small .bcm-list__input{height:24px;font-size:var(--bcm-ui-font-size-4);line-height:var(--bcm-ui-line-height-4)}.bcm-list__size-small .bcm-list__input .bcm-tag__content.dismissable{font-size:10px;line-height:calc(10px + 8px)}.bcm-list__size-medium .bcm-list__input{height:32px;font-size:var(--bcm-ui-font-size-5);line-height:var(--bcm-ui-line-height-5)}.bcm-list__size-medium .bcm-list__input .bcm-tag__content.dismissable{font-size:12px;line-height:calc(12px + 8px)}.bcm-list__size-large .bcm-list__input{height:40px;font-size:var(--bcm-ui-font-size-6);line-height:var(--bcm-ui-line-height-6)}.bcm-list__size-large .bcm-list__input .bcm-tag__content.dismissable{font-size:14px;line-height:calc(14px + 8px)}.bcm-list:hover{outline:none}.bcm-list:hover .bcm-list__input{border-color:var(--bcm-new-ds-color-blue-500);background-color:var(--bcm-new-ds-color-slate-50)}.bcm-list:focus-visible{outline:none}.bcm-list:focus-visible .bcm-list__input{border-color:var(--bcm-new-ds-color-blue-600);background-color:var(--bcm-new-ds-color-white)}.bcm-list:active{outline:none}.bcm-list:active .bcm-list__input{border-color:var(--bcm-new-ds-color-blue-600);box-shadow:0 1px 3px 0 rgba(17, 24, 38, 0.1)}.bcm-list__container{--width:256px;--height:256px;width:var(--width);height:var(--height);background-color:var(--bcm-ui-color-background-base-default);border:1px solid var(--bcm-ui-color-border-default);border-radius:var(--bcm-ui-border-radius-default);box-sizing:border-box;padding-top:8px;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;gap:4px}.bcm-list__container main{padding:0 8px;flex:1;overflow:auto;display:flex;flex-direction:column}.bcm-list__container-search{margin:0 8px}.bcm-list__container-search:after{margin:4px 0}.bcm-list__container-no-data{flex:1;display:flex;justify-content:stretch;align-items:stretch;padding-bottom:4px}.bcm-list__container.error{border-color:var(--bcm-color-red-6)}.bcm-list__container.full-width{width:100%}.bcm-list__container.bcm-list__type-linked-component,.bcm-list__container.bcm-list__type-select,.bcm-list__container.bcm-list__type-autocomplete{display:none;opacity:0;visibility:hidden;position:absolute;top:0;left:0;height:0;width:0;z-index:10800}.bcm-list__container.bcm-list__type-linked-component.is-open,.bcm-list__container.bcm-list__type-select.is-open,.bcm-list__container.bcm-list__type-autocomplete.is-open{display:flex}.bcm-list__container.bcm-list__type-linked-component.is-open-animation,.bcm-list__container.bcm-list__type-select.is-open-animation,.bcm-list__container.bcm-list__type-autocomplete.is-open-animation{opacity:1;visibility:visible}.bcm-list__container.bcm-list__type-linked-component{margin-top:2px}.bcm-list__label{display:contents}.bcm-list__label>div{display:contents}.bcm-list__input{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;color:var(--bcm-ui-color-text-default);background-color:var(--bcm-ui-color-background-base-default);border:1px solid var(--bcm-ui-color-border-default);border-radius:var(--bcm-ui-border-radius-default);user-select:none;cursor:pointer;padding:0 8px;height:32px;overflow:hidden;position:relative;transition:background-color 100ms, border-color 100ms}.bcm-list__input-spinner{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:var(--bcm-color-grey-1);opacity:0;visibility:hidden;transition:opacity 0.2s ease-in-out;z-index:-1}.bcm-list__input-spinner.is-open{opacity:1;visibility:visible;z-index:1}.bcm-list__input-container{flex:1;display:block;overflow:hidden}.bcm-list__input-container.value-empty{color:#6B7280}.bcm-list__input-container.type-single,.bcm-list__input-container.value-empty{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bcm-list__input-placeholder{color:var(--bcm-ui-color-text-placeholder)}.bcm-list__input-tag-container{height:100%;width:100%;display:flex;align-items:center;justify-content:flex-start;flex-wrap:nowrap;grid-gap:2px;line-height:1}.bcm-list__input-buttons{display:flex;align-items:center;justify-content:flex-end;grid-gap:4px}.bcm-list__input-buttons-button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0 4px 0 4px;font-size:16px;color:var(--bcm-ui-color-text-default)}.bcm-list__input-buttons-button.caret-is{transform:rotate(360deg);transition:transform 0.2s ease-in-out}.bcm-list__input-buttons-button.caret-is-open{transform:rotate(180deg)}.bcm-list__input-buttons:not(.disabled) .bcm-list__input-buttons-button:hover{cursor:pointer;color:var(--bcm-new-ds-color-slate-600)}.bcm-list__input-autocomplete{position:relative;padding-right:0}.bcm-list__input-autocomplete .bcm-list-input-selected-text{background-color:#ffffff;display:flex;align-items:center;justify-content:flex-start;width:calc(100% - 24px);height:100%;padding:0 calc(8px + 4px);position:absolute;top:0;left:0}.bcm-list__input-autocomplete .bcm-list__input-container{height:100%;display:flex;flex-direction:row}.bcm-list__input-autocomplete .bcm-list__input-container .bcm-list__input-tag-container{width:auto}.bcm-list__input-autocomplete .bcm-input,.bcm-list__input-autocomplete .bcm-list__autocomplete{height:100%;min-width:70px;width:100%}.bcm-list__input-autocomplete .bcm-input__container,.bcm-list__input-autocomplete .bcm-list__autocomplete__container{height:100%;border:none;padding:0;width:100%}.bcm-list__input-autocomplete .bcm-input__container:not(.disabled).focused,.bcm-list__input-autocomplete .bcm-input__container:not(.disabled):hover,.bcm-list__input-autocomplete .bcm-list__autocomplete__container:not(.disabled).focused,.bcm-list__input-autocomplete .bcm-list__autocomplete__container:not(.disabled):hover{border:none;box-shadow:none}.bcm-list__autocomplete{width:100%;position:relative}.bcm-list.full-width .bcm-list__container,.bcm-list.full-width .bcm-list__input{width:100%}.bcm-list.error .bcm-list__input{border-color:var(--bcm-color-red-6)}.bcm-list.disabled .bcm-list__container,.bcm-list.disabled .bcm-list__input{color:var(--bcm-ui-color-text-disabled);background-color:var(--bcm-ui-color-background-disabled-default);cursor:not-allowed}.bcm-list.disabled .bcm-tag__content.dismissable .close-button{cursor:default}.bcm-list:not(.disabled) .bcm-list__input .bcm-tag__content.checked .close-button bcm-icon{color:var(--bcm-new-ds-color-slate-100)}.bcm-list:not(.disabled) .bcm-list__input .bcm-tag__content.checked .close-button:hover bcm-icon{color:var(--bcm-new-ds-color-slate-200)}.bcm-list:not(.disabled) .bcm-list__input:hover{border-color:var(--bcm-ui-color-border-primary)}.bcm-list:not(.disabled) .bcm-list__input:hover .bcm-tag__content.dismissable:not(.checked){background-color:var(--bcm-new-ds-color-slate-200);border-color:var(--bcm-new-ds-color-slate-200)}.bcm-list:not(.disabled) .bcm-list__input:focus-visible{border-color:var(--bcm-ui-color-border-primary);box-shadow:0 1px 3px 0 rgba(17, 24, 38, 0.1)}.bcm-list:not(.disabled) .bcm-list__input:active{border-color:var(--bcm-ui-color-border-primary)}.bcm-list__item{padding:2px 0}.bcm-list__item.disabled{user-select:none}.bcm-list__item:focus{outline:none}.bcm-list__item:focus-visible>.bcm-list__item-content{background-color:var(--bcm-new-ds-color-slate-300)}.bcm-list__item:focus-visible>.bcm-list__item-content:not(.disabled){color:var(--bcm-new-ds-color-slate-600)}.bcm-list__item-content{display:flex;flex-direction:row;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;cursor:pointer;border-radius:4px;padding:0;padding-left:4px;color:var(--bcm-ui-color-text-default);transition:background-color 0.2s ease}.bcm-list__item-content.disabled{color:var(--bcm-ui-color-text-disabled);background-color:var(--bcm-ui-color-background-disabled-default);user-select:none;cursor:not-allowed}.bcm-list__item-content.readonly{color:var(--bcm-new-ds-color-slate-500);background-color:var(--bcm-new-ds-color-slate-100);cursor:default}.bcm-list__item-content.readonly .bcm-list__item-content-collapse-icon{color:var(--bcm-new-ds-color-slate-700);cursor:pointer}.bcm-list__item-content.selected{color:var(--bcm-ui-color-text-primary);background-color:var(--bcm-ui-color-background-stated-primary-default)}.bcm-list__item-content.selected:hover:not(.disabled):not(.readonly){color:var(--bcm-ui-color-text-primary);background-color:var(--bcm-ui-color-background-stated-primary-hover)}.bcm-list__item-content:hover:not(.disabled):not(.readonly){background-color:var(--bcm-ui-color-background-base-hover)}.bcm-list__item-content:active:not(.disabled):not(.readonly){color:var(--bcm-new-ds-color-slate-600);background-color:var(--bcm-ui-color-background-base-active)}.bcm-list__item-content-collapse-icon{width:16px;padding:0 8px;display:flex;align-items:center;justify-content:center;font-size:16px}.bcm-list__item-content-collapse-icon.child{cursor:pointer}.bcm-list__item-content-text{user-select:none;padding:8px;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:flex-start}.bcm-list__item-content-text.treeview{padding:8px 0}.bcm-list__item-content-text-checkbox{display:flex;flex-direction:row;align-items:center;justify-content:center;flex-wrap:nowrap;margin-right:8px}.bcm-list__item-content-text-checkbox .bcm-checkbox{margin:0}.bcm-list__item-content-text-inner{width:100%}.bcm-list__item-content-text mark{padding:0;margin:0;font-size:inherit;color:var(--bcm-color-grey-8);background-color:var(--bcm-color-yellow-4)}.bcm-list__item-childs{padding-left:16px}.bcm-list__item-small{padding:2px 0 2px 8px;font-size:10px;line-height:calc(10px + 8px)}.bcm-list__item-small .bcm-list__item-content-text{padding:3px 4px}.bcm-list__item-medium{font-size:12px;line-height:calc(12px + 8px)}.bcm-list__item-medium .bcm-list__item-content-text{padding:6px 4px}.bcm-list__item-large{font-size:14px;line-height:calc(14px + 8px)}.bcm-list__item-large .bcm-list__item-content-text{padding:9px 4px}.bcm-list__item--group{border-radius:4px}.bcm-list__item--group:focus>.bcm-list__item-content:not(.disabled){background-color:var(--bcm-new-ds-color-slate-50);color:var(--bcm-new-ds-color-slate-600)}.bcm-list__item--group>.bcm-list__item-content{background-color:var(--bcm-new-ds-color-slate-50);color:var(--bcm-new-ds-color-slate-600);border-radius:4px 4px 0 0;cursor:default;font-size:14px;line-height:calc(14px + 8px);font-weight:500;position:sticky;top:0}.bcm-list__item--group>.bcm-list__item-content>.bcm-list__item-content-text{padding:4px 8px 4px 16px}.bcm-list__item--group>.bcm-list__item-content:hover,.bcm-list__item--group>.bcm-list__item-content:focus{color:var(--bcm-new-ds-color-slate-800);background-color:var(--bcm-new-ds-color-slate-50)}.bcm-list__item--group>.bcm-list__item-content-unclickable:hover{color:var(--bcm-new-ds-color-slate-700);background-color:var(--bcm-new-ds-color-slate-50)}.bcm-list__item--group>.bcm-list__item-childs{background-color:var(--bcm-new-ds-color-slate-50);color:var(--bcm-new-ds-color-slate-600);padding-bottom:8px;border-radius:0 0 4px 4px;padding-left:8px}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content{background-color:var(--bcm-new-ds-color-white);color:var(--bcm-new-ds-color-slate-600)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content:hover{background-color:var(--bcm-new-ds-color-slate-100)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content:active{background-color:var(--bcm-new-ds-color-slate-200)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content:focus-visible{background-color:var(--bcm-new-ds-color-slate-300)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content.selected{background-color:var(--bcm-new-ds-color-blue-500);color:var(--bcm-new-ds-color-white)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content.selected:hover{background-color:var(--bcm-new-ds-color-blue-600)}.bcm-list__item--group>.bcm-list__item-childs .bcm-list__item-content.selected:active{background-color:var(--bcm-new-ds-color-blue-700)}.bcm-list__linked{display:none}.bcm-list .bcm-tag--other .value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 768px), (pointer: coarse){.bcm-list__container-search .bcm-input__container,.bcm-list__autocomplete .bcm-input__container{font-size:16px}.bcm-list__container-search .bcm-input-element,.bcm-list__autocomplete .bcm-input-element{font-size:16px}}.bcm-info-footer{text-align:right;padding:4px 8px;background-color:var(--bcm-new-ds-color-slate-100);color:var(--bcm-new-ds-color-slate-600);border-radius:0 0 4px 4px}";
27009
27501
 
27010
27502
  var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
27011
27503
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -27027,8 +27519,18 @@ const BcmList = class {
27027
27519
  this.close = index$1.createEvent(this, "bcm-close", 3);
27028
27520
  this.listClose = index$1.createEvent(this, "bcm-list-close", 7);
27029
27521
  this.listOpen = index$1.createEvent(this, "bcm-list-open", 7);
27522
+ var _a, _b;
27030
27523
  this.debounce = null;
27524
+ this.focusManager = new ListFocusManager();
27525
+ this.openTriggerElement = null;
27526
+ this.suppressScrollCloseUntil = 0;
27031
27527
  this.debounceHandler = generate.Generate.debounceInput(() => this.listenResize(), 300, false);
27528
+ this.handleVisualViewportChange = () => {
27529
+ if (!this.isOpen)
27530
+ return;
27531
+ this.preventScrollClose(400);
27532
+ this.calculateLocation();
27533
+ };
27032
27534
  this._id = generate.Generate.UID();
27033
27535
  this.tempId = generate.Generate.UID();
27034
27536
  this.type = bcm.Bcm.ListType.listbox;
@@ -27110,6 +27612,8 @@ const BcmList = class {
27110
27612
  window.addEventListener("scroll", this.handleWheel.bind(this), true);
27111
27613
  window.addEventListener("wheel", this.handleWheel.bind(this), true);
27112
27614
  window.addEventListener("resize", this.handleResize.bind(this), true);
27615
+ (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.addEventListener("resize", this.handleVisualViewportChange, true);
27616
+ (_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.addEventListener("scroll", this.handleVisualViewportChange, true);
27113
27617
  }
27114
27618
  connectedCallback() {
27115
27619
  if (this.height != "256px") {
@@ -27160,7 +27664,10 @@ const BcmList = class {
27160
27664
  // }
27161
27665
  }
27162
27666
  disconnectedCallback() {
27667
+ var _a, _b;
27163
27668
  this.isOpen = false;
27669
+ (_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.removeEventListener("resize", this.handleVisualViewportChange, true);
27670
+ (_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.removeEventListener("scroll", this.handleVisualViewportChange, true);
27164
27671
  if (this.stopDeepClean)
27165
27672
  return;
27166
27673
  listState.removeState(this._id);
@@ -27219,8 +27726,10 @@ const BcmList = class {
27219
27726
  }
27220
27727
  async handleOpen() {
27221
27728
  const isAutoSelected = this.autoFocusSelected && this.type == "select" && !this.checkboxes && this.value;
27729
+ const isMobile = this.isMobileViewport();
27222
27730
  if (this.isOpen) {
27223
27731
  this.detectClone();
27732
+ await this.prepareMobileViewportForOpen();
27224
27733
  if (this.type == "select" || this.type == "autocomplete" || this.linkedComponent) {
27225
27734
  const list = this.el.querySelector(`#bcm-list-${this._id}`);
27226
27735
  if (list) {
@@ -27231,7 +27740,9 @@ const BcmList = class {
27231
27740
  this.open.emit();
27232
27741
  this.calculateLocation();
27233
27742
  this.onSelectSearch();
27234
- await utils.delay(50);
27743
+ if (!isMobile) {
27744
+ await utils.delay(50);
27745
+ }
27235
27746
  this.isOpenAnimation = true;
27236
27747
  if (isAutoSelected) {
27237
27748
  this.focusSelectedElement();
@@ -27289,11 +27800,41 @@ const BcmList = class {
27289
27800
  this.calculateLocation();
27290
27801
  }
27291
27802
  }
27803
+ else if (this.shouldKeepOpenWhileInteracting(list)) {
27804
+ if (this.type == "select" || this.type == "autocomplete" || this.linkedComponent) {
27805
+ this.calculateLocation();
27806
+ }
27807
+ }
27292
27808
  else {
27293
27809
  this.hide();
27294
27810
  }
27295
27811
  }
27296
27812
  }
27813
+ handleTouchStart(event) {
27814
+ if (!this.isOpen)
27815
+ return;
27816
+ const list = document.querySelector(`#bcm-list-${this._id}`);
27817
+ const isInside = generate.Generate.findEventPath(event, this.el) || (list && generate.Generate.findEventPath(event, list));
27818
+ if (isInside) {
27819
+ this.preventScrollClose(1000);
27820
+ }
27821
+ else if (this.type == "select" || this.type == "autocomplete" || this.linkedComponent) {
27822
+ this.isOpen = false;
27823
+ }
27824
+ }
27825
+ handleFocusIn(event) {
27826
+ if (!this.isOpen)
27827
+ return;
27828
+ const list = document.querySelector(`#bcm-list-${this._id}`);
27829
+ const isInside = generate.Generate.findEventPath(event, this.el) || (list && generate.Generate.findEventPath(event, list));
27830
+ if (isInside) {
27831
+ this.preventScrollClose(1000);
27832
+ this.calculateLocation();
27833
+ }
27834
+ else if (this.isOverlayType()) {
27835
+ this.isOpen = false;
27836
+ }
27837
+ }
27297
27838
  clearAutocomplete() {
27298
27839
  if (this.type == "autocomplete") {
27299
27840
  const autocompleteInput = this.getAutoCompleteInput();
@@ -27389,8 +27930,8 @@ const BcmList = class {
27389
27930
  var _a, _b, _c, _d, _e, _f;
27390
27931
  if (((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.id) === `bcm-list-${this._id}-search` || ((_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.id) === `bcm-list-input-tag-container-${this._id}-autocomplete-input`) {
27391
27932
  this.searchGetParents = generate.snq(() => { var _a; return (_a = event.detail) === null || _a === void 0 ? void 0 : _a.parentIndex; }, null);
27392
- this.searchResultLimit = 10;
27393
27933
  this.searchFound = ((_c = event.detail) === null || _c === void 0 ? void 0 : _c.matching) != null ? (_d = event.detail) === null || _d === void 0 ? void 0 : _d.matching.length : null;
27934
+ this.searchResultLimit = this.getInitialSearchResultLimit();
27394
27935
  this.returnFilterData = listState.filterData(this._id, (_e = event.detail) === null || _e === void 0 ? void 0 : _e.nestedResult);
27395
27936
  if (this.searchFound > 0 && this.highlight) {
27396
27937
  this.highlightText = (_f = event.detail) === null || _f === void 0 ? void 0 : _f.value;
@@ -27416,13 +27957,51 @@ const BcmList = class {
27416
27957
  //keyboard navigation
27417
27958
  handleKeyDown(ev) {
27418
27959
  const keycode = ev.keyCode || ev.which;
27419
- if (keycode === bcm.Bcm.KeyCode.escape) {
27420
- if (this.isOpen) {
27960
+ const handled = this.focusManager.handleKeyDown({
27961
+ event: ev,
27962
+ disabled: this.disabled,
27963
+ isOpen: this.isOpen,
27964
+ isOverlayType: this.isOverlayType(),
27965
+ hostElement: this.el,
27966
+ targetElement: this.getTargetElement(),
27967
+ listElement: document.getElementById(`bcm-list-${this._id}`),
27968
+ openList: () => {
27969
+ this.rememberOpenTrigger();
27970
+ this.isOpen = true;
27971
+ },
27972
+ closeList: () => {
27421
27973
  this.isOpen = false;
27422
- ev.preventDefault();
27423
- ev.stopPropagation();
27424
- ev.stopImmediatePropagation();
27425
- }
27974
+ },
27975
+ selectFocusedItem: (itemId) => {
27976
+ if (this.checkboxes) {
27977
+ this.checkedItem(itemId);
27978
+ }
27979
+ else {
27980
+ this.selectedItem(itemId);
27981
+ }
27982
+ },
27983
+ openGroup: (itemId) => {
27984
+ this.openGroup(itemId);
27985
+ },
27986
+ treeview: this.treeview,
27987
+ checkboxes: this.checkboxes,
27988
+ autocompleteInput: this.type == "autocomplete" ? this.getAutoCompleteInput() : null,
27989
+ openTriggerElement: this.openTriggerElement,
27990
+ });
27991
+ if (handled)
27992
+ return;
27993
+ if ((ev.key === "Escape" || keycode === bcm.Bcm.KeyCode.escape) && this.isOpen) {
27994
+ this.isOpen = false;
27995
+ ev.preventDefault();
27996
+ ev.stopPropagation();
27997
+ ev.stopImmediatePropagation();
27998
+ this.focusManager.restoreTriggerFocus({
27999
+ hostElement: this.el,
28000
+ targetElement: this.getTargetElement(),
28001
+ autocompleteInput: this.type == "autocomplete" ? this.getAutoCompleteInput() : null,
28002
+ openTriggerElement: this.openTriggerElement,
28003
+ preferOpenTrigger: true,
28004
+ });
27426
28005
  }
27427
28006
  if (this.keyControl) {
27428
28007
  const keyboard = new ListKeyControl(keycode, this.el, this.treeview, this.checkboxes);
@@ -27432,6 +28011,9 @@ const BcmList = class {
27432
28011
  keyboard.checkedItem = checkedItemId => {
27433
28012
  this.checkedItem(checkedItemId);
27434
28013
  };
28014
+ keyboard.selectedItem = itemId => {
28015
+ this.selectedItem(itemId);
28016
+ };
27435
28017
  keyboard.keyDown();
27436
28018
  }
27437
28019
  }
@@ -27541,7 +28123,8 @@ const BcmList = class {
27541
28123
  });
27542
28124
  }
27543
28125
  }
27544
- async show() {
28126
+ async show(openTriggerElement) {
28127
+ this.rememberOpenTrigger(openTriggerElement);
27545
28128
  this.isOpen = true;
27546
28129
  return Promise.resolve();
27547
28130
  }
@@ -27578,11 +28161,50 @@ const BcmList = class {
27578
28161
  async onSelectSearch() {
27579
28162
  const searchInput = document.getElementById(`bcm-list-${this._id}-search`);
27580
28163
  if (searchInput) {
28164
+ this.preventScrollClose(1000);
27581
28165
  await utils.delay(100);
27582
28166
  searchInput.onBcmFocus();
27583
28167
  searchInput.onBcmSelect();
27584
28168
  }
27585
28169
  }
28170
+ preventScrollClose(duration = 500) {
28171
+ this.suppressScrollCloseUntil = Date.now() + duration;
28172
+ }
28173
+ isMobileViewport() {
28174
+ return window.matchMedia("(max-width: 768px), (pointer: coarse)").matches;
28175
+ }
28176
+ async prepareMobileViewportForOpen() {
28177
+ var _a;
28178
+ if (!this.isMobileViewport() || !(this.type == "select" || this.type == "autocomplete" || this.linkedComponent)) {
28179
+ return;
28180
+ }
28181
+ const targetElementId = this.linkedComponent ? this.linkedComponent : `bcm-list-input-${this._id}`;
28182
+ const targetElement = document.getElementById(targetElementId);
28183
+ if (!targetElement)
28184
+ return;
28185
+ const viewportHeight = ((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) || window.innerHeight;
28186
+ const rect = targetElement.getBoundingClientRect();
28187
+ const minimumSpaceBelow = Math.min(320, viewportHeight * 0.45);
28188
+ const shouldReposition = rect.top > viewportHeight * 0.35 || viewportHeight - rect.bottom < minimumSpaceBelow;
28189
+ if (shouldReposition) {
28190
+ this.preventScrollClose(1200);
28191
+ const desiredTop = Math.max(110, Math.min(180, viewportHeight * 0.24));
28192
+ const delta = rect.top - desiredTop;
28193
+ window.scrollBy({
28194
+ top: delta,
28195
+ left: 0,
28196
+ behavior: "auto",
28197
+ });
28198
+ await utils.delay(50);
28199
+ this.calculateLocation();
28200
+ }
28201
+ }
28202
+ shouldKeepOpenWhileInteracting(list) {
28203
+ var _a;
28204
+ const activeElement = document.activeElement;
28205
+ const focusedInside = !!(activeElement && (((_a = this.el) === null || _a === void 0 ? void 0 : _a.contains(activeElement)) || (list === null || list === void 0 ? void 0 : list.contains(activeElement))));
28206
+ return focusedInside || Date.now() < this.suppressScrollCloseUntil;
28207
+ }
27586
28208
  async filterOtherList(ids) {
27587
28209
  const checklist = (await this.getCheckedList()).nestedResult;
27588
28210
  const filter = generate.Generate.convertIdsToNestedData(ids, checklist);
@@ -27645,8 +28267,30 @@ const BcmList = class {
27645
28267
  }
27646
28268
  return generate.snq(() => listState.getData(this._id), []);
27647
28269
  }
28270
+ hasNestedItems(items = []) {
28271
+ return items.some((item) => { var _a; return (item === null || item === void 0 ? void 0 : item.type) === "group" || ((_a = item === null || item === void 0 ? void 0 : item.items) === null || _a === void 0 ? void 0 : _a.length) > 0; });
28272
+ }
28273
+ getVisibleSearchItems() {
28274
+ const visibledItems = this.returnFilterData["visibledItems"];
28275
+ if (this.searchFound == null || !Array.isArray(visibledItems)) {
28276
+ return null;
28277
+ }
28278
+ return visibledItems;
28279
+ }
28280
+ getInitialSearchResultLimit() {
28281
+ if (this.searchFound === 0) {
28282
+ return 0;
28283
+ }
28284
+ const initialLimit = Math.max(10, this.limit);
28285
+ return this.searchFound == null ? initialLimit : Math.min(initialLimit, this.searchFound);
28286
+ }
27648
28287
  getLimitedItems(ids) {
27649
- return generate.snq(() => listState.getDataPagination(this._id, this.searchResultLimit || this.limit, ids), []);
28288
+ const visibleSearchItems = this.getVisibleSearchItems();
28289
+ const limit = this.searchResultLimit || this.limit;
28290
+ if (visibleSearchItems && !this.hasNestedItems(this.getItems())) {
28291
+ return visibleSearchItems.slice(0, limit);
28292
+ }
28293
+ return generate.snq(() => listState.getDataPagination(this._id, limit, ids), []);
27650
28294
  }
27651
28295
  openGroup(parentId) {
27652
28296
  listState.openGroup(this._id, parentId);
@@ -27674,7 +28318,15 @@ const BcmList = class {
27674
28318
  this.value = listState.selectedItem(this._id, itemId) ? listState.selectedItem(this._id, itemId)[0] : null;
27675
28319
  this.inputText = generate.Generate.domParser((_a = this.value) === null || _a === void 0 ? void 0 : _a.text) || null;
27676
28320
  this.isOpen = false;
27677
- this.markForCheck();
28321
+ await this.markForCheck();
28322
+ if (this.isOverlayType()) {
28323
+ await utils.delay(10);
28324
+ this.focusManager.restoreTriggerFocus({
28325
+ hostElement: this.el,
28326
+ targetElement: this.getTargetElement(),
28327
+ autocompleteInput: this.type == "autocomplete" ? this.getAutoCompleteInput() : null,
28328
+ });
28329
+ }
27678
28330
  if (this.type == "autocomplete" && this.value) {
27679
28331
  // await delay(100)
27680
28332
  // this.resetCaption()
@@ -27712,15 +28364,36 @@ const BcmList = class {
27712
28364
  getAutoCompleteInput() {
27713
28365
  return document.getElementById(`bcm-list-input-tag-container-${this._id}-autocomplete-input`);
27714
28366
  }
28367
+ rememberOpenTrigger(openTriggerElement) {
28368
+ const activeElement = openTriggerElement || document.activeElement;
28369
+ this.openTriggerElement = this.isValidOpenTrigger(activeElement) ? activeElement : null;
28370
+ }
28371
+ isValidOpenTrigger(element) {
28372
+ return !!(element && element.isConnected && element !== document.body && element !== document.documentElement);
28373
+ }
28374
+ isOverlayType() {
28375
+ return this.type == "select" || this.type == "autocomplete" || !!this.linkedComponent;
28376
+ }
28377
+ getTargetElement() {
28378
+ const targetElementId = this.linkedComponent ? this.linkedComponent : `bcm-list-input-${this._id}`;
28379
+ return document.getElementById(targetElementId);
28380
+ }
27715
28381
  /** @description Fixes the issue where the list appears empty during fast scrolling. */
27716
28382
  dataScrollEvent(event) {
27717
28383
  var _a, _b;
27718
28384
  const itemHeight = this.size === 'small' ? 28 : this.size === 'large' ? 48 : 36;
27719
28385
  const currentScrollBottom = ((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.scrollTop) + ((_b = event === null || event === void 0 ? void 0 : event.target) === null || _b === void 0 ? void 0 : _b.clientHeight);
27720
28386
  const requiredItems = Math.ceil(currentScrollBottom / itemHeight) + 20;
27721
- if (requiredItems > this.limit) {
27722
- this.limit = requiredItems;
27723
- this.searchResultLimit = requiredItems;
28387
+ const isSearchActive = this.searchFound != null && !this.isSelectedOther;
28388
+ const currentLimit = isSearchActive ? this.searchResultLimit || 0 : this.limit;
28389
+ if (requiredItems > currentLimit) {
28390
+ if (isSearchActive) {
28391
+ this.searchResultLimit = Math.min(requiredItems, this.searchFound);
28392
+ }
28393
+ else {
28394
+ this.limit = requiredItems;
28395
+ this.searchResultLimit = requiredItems;
28396
+ }
27724
28397
  }
27725
28398
  }
27726
28399
  async calculateLocation() {
@@ -27793,20 +28466,20 @@ const BcmList = class {
27793
28466
  }
27794
28467
  /** @description Focus selected element * BUG 282262 */
27795
28468
  focusSelectedElement() {
27796
- var _a;
28469
+ var _a, _b;
27797
28470
  const listElement = document.querySelector(`#bcm-list-${this._id}`);
27798
28471
  if (!listElement)
27799
28472
  return;
27800
- const selectedId = (_a = this.value) === null || _a === void 0 ? void 0 : _a.id;
28473
+ const selectedId = Array.isArray(this.value) ? (_a = this.value[0]) === null || _a === void 0 ? void 0 : _a.id : (_b = this.value) === null || _b === void 0 ? void 0 : _b.id;
27801
28474
  if (selectedId) {
27802
- const targetItem = listElement.querySelector(`[id*="${selectedId}"]`);
27803
- if (targetItem) {
27804
- targetItem.scrollIntoView({
27805
- block: 'center',
27806
- inline: 'nearest',
27807
- behavior: 'auto'
27808
- });
27809
- targetItem.focus();
28475
+ const targetItem = (listElement.querySelector(`[id="${selectedId}"]`) || listElement.querySelector(`[id*="${selectedId}"]`));
28476
+ const scrollContainer = listElement.querySelector(".scrolling");
28477
+ if (targetItem && scrollContainer) {
28478
+ const containerRect = scrollContainer.getBoundingClientRect();
28479
+ const itemRect = targetItem.getBoundingClientRect();
28480
+ const relativeOffsetTop = itemRect.top - containerRect.top + scrollContainer.scrollTop;
28481
+ scrollContainer.scrollTop = relativeOffsetTop - (containerRect.height / 2) + (itemRect.height / 2);
28482
+ targetItem.focus({ preventScroll: true });
27810
28483
  const items = listElement.querySelectorAll(".bcm-list__item");
27811
28484
  items.forEach(i => i.classList.remove("focused"));
27812
28485
  targetItem.classList.add("focused");