xv-webcomponents 1.17.1-staging.0 → 1.17.3-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/{xv-accordion-v2_45.cjs.entry.js → xv-accordion-v2_47.cjs.entry.js} +402 -67
  3. package/dist/cjs/xv-header-next.cjs.entry.js +1 -1
  4. package/dist/cjs/xv-mega-menu-next.cjs.entry.js +2 -2
  5. package/dist/cjs/xv-webcomponents.cjs.js +1 -1
  6. package/dist/collection/collection-manifest.json +2 -0
  7. package/dist/collection/components/xv-content-switcher/_vars.js +14 -0
  8. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.css +134 -0
  9. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.js +118 -0
  10. package/dist/collection/components/xv-content-switcher/xv-content-switcher.css +275 -0
  11. package/dist/collection/components/xv-content-switcher/xv-content-switcher.js +310 -0
  12. package/dist/collection/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.js +1 -1
  13. package/dist/collection/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.js +1 -1
  14. package/dist/collection/components/xv-data-table/xv-data-table-row/xv-data-table-row.js +2 -2
  15. package/dist/collection/components/xv-data-table/xv-data-table.js +1 -1
  16. package/dist/collection/components/xv-datepicker/xv-datepicker.css +4 -4
  17. package/dist/collection/components/xv-datepicker/xv-datepicker.js +2 -2
  18. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.js +1 -1
  19. package/dist/collection/components/xv-dropdown/xv-dropdown.css +23 -6
  20. package/dist/collection/components/xv-dropdown/xv-dropdown.js +205 -4
  21. package/dist/collection/components/xv-file-uploader/xv-file-uploader.js +1 -1
  22. package/dist/collection/components/xv-footer/xv-footer.js +1 -1
  23. package/dist/collection/components/xv-header/xv-header.js +1 -1
  24. package/dist/collection/components/xv-header-next/xv-header-next.js +1 -1
  25. package/dist/collection/components/xv-image-viewer/xv-image-viewer.js +1 -1
  26. package/dist/collection/components/xv-link/xv-link.js +1 -1
  27. package/dist/collection/components/xv-mega-menu/xv-mega-menu.js +2 -2
  28. package/dist/collection/components/xv-mega-menu-next/xv-mega-menu-next.js +2 -2
  29. package/dist/collection/components/xv-modal/xv-modal.js +1 -1
  30. package/dist/collection/components/xv-notification/xv-notification.js +1 -1
  31. package/dist/collection/components/xv-number-input/xv-number-input.css +6 -3
  32. package/dist/collection/components/xv-number-input/xv-number-input.js +2 -2
  33. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.js +1 -1
  34. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu.js +2 -2
  35. package/dist/collection/components/xv-pagination/xv-pagination.js +1 -1
  36. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.js +1 -1
  37. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js +1 -1
  38. package/dist/collection/components/xv-radio/xv-radio.css +2 -2
  39. package/dist/collection/components/xv-radio/xv-radio.js +2 -2
  40. package/dist/collection/components/xv-slider/xv-slider.css +2 -2
  41. package/dist/collection/components/xv-slider/xv-slider.js +1 -1
  42. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +1 -1
  43. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +1 -1
  44. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +1 -1
  45. package/dist/collection/components/xv-table/xv-table.js +1 -1
  46. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +1 -1
  47. package/dist/collection/components/xv-tag/xv-tag.js +1 -1
  48. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.css +2 -2
  49. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.js +2 -2
  50. package/dist/collection/components/xv-text-input/xv-text-input.css +1 -1
  51. package/dist/collection/components/xv-text-input/xv-text-input.js +2 -2
  52. package/dist/collection/components/xv-textarea/xv-textarea.css +2 -2
  53. package/dist/collection/components/xv-textarea/xv-textarea.js +2 -2
  54. package/dist/collection/components/xv-tile/xv-tile.js +2 -2
  55. package/dist/collection/components/xv-toggle/xv-toggle.js +1 -1
  56. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.js +1 -1
  57. package/dist/collection/components/xv-tooltip/xv-tooltip.js +2 -2
  58. package/dist/esm/loader.js +1 -1
  59. package/dist/esm/{xv-accordion-v2_45.entry.js → xv-accordion-v2_47.entry.js} +401 -68
  60. package/dist/esm/xv-header-next.entry.js +1 -1
  61. package/dist/esm/xv-mega-menu-next.entry.js +2 -2
  62. package/dist/esm/xv-webcomponents.js +1 -1
  63. package/dist/types/components/xv-content-switcher/_vars.d.ts +13 -0
  64. package/dist/types/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.d.ts +32 -0
  65. package/dist/types/components/xv-content-switcher/xv-content-switcher.d.ts +78 -0
  66. package/dist/types/components/xv-dropdown/xv-dropdown.d.ts +24 -1
  67. package/dist/types/components.d.ts +249 -0
  68. package/dist/xv-webcomponents/{p-1b5a4f4c.entry.js → p-1cb6cc34.entry.js} +1 -1
  69. package/dist/xv-webcomponents/p-422065b1.entry.js +8 -0
  70. package/dist/xv-webcomponents/{p-50f8cd72.entry.js → p-dc64e134.entry.js} +1 -1
  71. package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
  72. package/package.json +1 -1
  73. package/dist/xv-webcomponents/p-593183a5.entry.js +0 -8
@@ -172,7 +172,7 @@ const XvHeaderNext = class {
172
172
  render() {
173
173
  var _a, _b, _c, _d, _e;
174
174
  const isXvBrand = (((_a = this.metaNav) === null || _a === void 0 ? void 0 : _a['WhitelabelName']) || 'Xv') === 'Xv';
175
- return (h("header", { key: '3e5b036c8a87c64dedc188182055745dab593bdf', class: "header" }, h("div", { key: 'da3c6359eef47a0a9a6e326ea71eca15a127f005', class: "header-wrapper" }, h("div", { key: 'c403912d3ab0807ae51b3b98ddfd857144209459', class: "xv-container" }, h("div", { key: 'a15d117e3f95a8d65a1022f6a7efc48b68664da7', class: "header-top" }, h("div", { key: '1c3a412f45e5957c74cb6e18f3cdba61aec07129', class: "header-top--left" }, h("xv-button-v2", { key: '83f5c11eb91bec0a233c56aa50443909b2c937a9', class: "menu-btn", variant: "ghost", onClick: this.toggleMobMenu }, h("i", { key: 'cefac234defe108c971f2d6950fde258094d9e1b', slot: "icon-left", class: { 'fa': true, 'fa-times': this.mobMenuOpen, 'fa-bars': !this.mobMenuOpen } })), this.metaNav && (h("a", { key: '7da1e1a5fd6338cd11ec416f1bbd4e63b419001a', href: `${window.location.origin}/` }, h("picture", { key: '4a05e52e3acd6e60eb84441bd196fe5ccda0f48d' }, h("source", { key: '58c46c947df12f09c3719fcff0e53681b288d42b', srcSet: ((_b = this.metaNav) === null || _b === void 0 ? void 0 : _b.LogoUrl) || 'https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo.svg', media: "(min-width: 990px)" }), h("img", { key: '29597424f11f7aeff11df8399761dafc540745cd', src: ((_c = this.metaNav) === null || _c === void 0 ? void 0 : _c.LogoSmallUrl) || 'https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo-small.svg', onError: this.logoFallback, loading: "lazy", alt: "Crossvertise" })))), this.orgUnit && (h("xv-link-v2", { key: '293c00d8bc5ec56be893f24032eb38b1aa71d0c2', class: "header-top--orgUnit", variant: "standalone", href: "/de-de/mycrossvertise" }, this.orgUnit))), h("ul", { key: 'abbbf1eda6880fded2a7f9362cab61f09d084120', class: "header-top--right" }, this._renderSearch(), this._renderImpersonationInfo(), !((_d = this.metaNav) === null || _d === void 0 ? void 0 : _d.IsManager) && isXvBrand && (h("li", { key: '96e78e8b53c0667bf19a59b610623ecb231b20a9' }, h("xv-link-v2", { key: 'ebc9492d475d42b6dfdad65b017eb6ad14c2626e', variant: "ghost", href: "https://www.crossvertise.com/ueber-uns/kontakt" }, h("xv-button-v2", { key: '5c0f1e18eb09c0420a80540630fe8c855a1ae349', variant: "ghost", size: SIZE_VAR.MD }, h("i", { key: 'c5f72c0ccb60c50085785f6b2fc38656bd62df71', class: "header-icon far fa-envelope" }), h("span", { key: '62b3d1743b2cb925188360c7125a98d31683a6ea', class: "header-label xv-body-02" }, "Kontakt"))))), this._renderNotifications(), this._renderAccount(), !((_e = this.metaNav) === null || _e === void 0 ? void 0 : _e.IsManager) && isXvBrand && (h("li", { key: '407612a5a8e118133b30481c60ff777dea602d4d' }, h("xv-link-v2", { key: '27ea69272c9ba12d2d8dfb988ec55e513033cb04', variant: "ghost", href: "https://help.crossvertise.com" }, h("xv-button-v2", { key: '62b2c0f02784b55f4c0652dc2283635d519032f8', variant: "ghost", size: SIZE_VAR.MD }, h("i", { key: 'dfd071527c857854c1d038dcff41650ad974faab', class: "header-icon far fa-question-circle" }), h("span", { key: '2f0d80df52e1830946514382afcdca565ed5ec92', class: "header-label xv-body-02" }, "Hilfe"))))), this._renderShoppingCart()))), h("div", { key: 'd0f8a3d2367749e7a0b08b0de1ffe37bb53da138', class: "header-wrapper--bg" }, h("div", { key: '4a10adea98aab6f67214a00b3da0a41d9b4b16e8', class: "xv-container" }, h("xv-mega-menu-next", { key: 'b92a784f3481c17dff2c577a939e9e9c04cfb302', open: this.mobMenuOpen, onOpenChange: this.closeMobMenu, menuData: this.menuData })))), h("xv-login-modal", { key: '80eb3aa35bda06095228ff789c60e6470c47aab2', visible: this.showLoginModal, onClose: () => this.showLoginModal = false })));
175
+ return (h("header", { key: '7d377e3b2ac6324c7371bcaf72b3f2089c2f30fd', class: "header" }, h("div", { key: 'fa3904a2640fd3c83755e08672ca5b66f19f87ee', class: "header-wrapper" }, h("div", { key: '9b57e62635aa0add1b0d885476c6381651c3da2a', class: "xv-container" }, h("div", { key: '48d6c42079ac532951754f932fe9a542b446c7fe', class: "header-top" }, h("div", { key: 'a44144dd311fed25c6e322228d22ebcb34125227', class: "header-top--left" }, h("xv-button-v2", { key: 'f2924c7863e72a4421b03de34725b4e17eaadd0c', class: "menu-btn", variant: "ghost", onClick: this.toggleMobMenu }, h("i", { key: '60a99967703e38681a593b47be5b244ca812d735', slot: "icon-left", class: { 'fa': true, 'fa-times': this.mobMenuOpen, 'fa-bars': !this.mobMenuOpen } })), this.metaNav && (h("a", { key: 'b14cfd121dbe0bb043ba153f196d93517ad1aee6', href: `${window.location.origin}/` }, h("picture", { key: '368b0923c562d164bd2a13f35186198694a7f823' }, h("source", { key: 'ed184c898b435ee78d104e3f7ff0608797442ad5', srcSet: ((_b = this.metaNav) === null || _b === void 0 ? void 0 : _b.LogoUrl) || 'https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo.svg', media: "(min-width: 990px)" }), h("img", { key: '02f4efe1190fd7eaa9666bcfa09575655fc300fe', src: ((_c = this.metaNav) === null || _c === void 0 ? void 0 : _c.LogoSmallUrl) || 'https://www.crossvertise.com/ResourcePackages/Bootstrap/assets/dist/images/logo-small.svg', onError: this.logoFallback, loading: "lazy", alt: "Crossvertise" })))), this.orgUnit && (h("xv-link-v2", { key: '6142c239875d1b38e6496348badce4f1d8929fa4', class: "header-top--orgUnit", variant: "standalone", href: "/de-de/mycrossvertise" }, this.orgUnit))), h("ul", { key: '4944e54fb6d0982df59e85113ce5c3634eb754b9', class: "header-top--right" }, this._renderSearch(), this._renderImpersonationInfo(), !((_d = this.metaNav) === null || _d === void 0 ? void 0 : _d.IsManager) && isXvBrand && (h("li", { key: 'c67444522b75b8b6ec375e1bc08b82508313266b' }, h("xv-link-v2", { key: '6e16c1050a6ff936dcecd62110a268ab882aa044', variant: "ghost", href: "https://www.crossvertise.com/ueber-uns/kontakt" }, h("xv-button-v2", { key: 'e3eabf0359e4b90f06caafeda72525c137f5b42e', variant: "ghost", size: SIZE_VAR.MD }, h("i", { key: 'b5fbb44bc2661d19bf59e6c41e6d018853f55293', class: "header-icon far fa-envelope" }), h("span", { key: 'e4947be47ae5e2a31ef54d74426f620d27b43810', class: "header-label xv-body-02" }, "Kontakt"))))), this._renderNotifications(), this._renderAccount(), !((_e = this.metaNav) === null || _e === void 0 ? void 0 : _e.IsManager) && isXvBrand && (h("li", { key: '5f4010c06c0dbd038aa4387f5fc7fac36e50ab19' }, h("xv-link-v2", { key: '09ad10e240aba834778e152fd061b6db767f2e57', variant: "ghost", href: "https://help.crossvertise.com" }, h("xv-button-v2", { key: '7f621f8c795377db2098a299f1c3476d6ad32ee3', variant: "ghost", size: SIZE_VAR.MD }, h("i", { key: '2233a5168c8ac5992376e27a9dc85c9aa829c8cc', class: "header-icon far fa-question-circle" }), h("span", { key: '7a37ffc7f4722b24f99cf9c67462b3491db142bc', class: "header-label xv-body-02" }, "Hilfe"))))), this._renderShoppingCart()))), h("div", { key: '0d64d68220df76c72d937311031879cd3292888e', class: "header-wrapper--bg" }, h("div", { key: '9937bc0ca9eba8b352bc5a5a512f4d009e5e752c', class: "xv-container" }, h("xv-mega-menu-next", { key: 'ac5f444429de7bd72caedf44dbc205a439299185', open: this.mobMenuOpen, onOpenChange: this.closeMobMenu, menuData: this.menuData })))), h("xv-login-modal", { key: '87c2405d6edc5d0b5721191e5055c906e78d55bf', visible: this.showLoginModal, onClose: () => this.showLoginModal = false })));
176
176
  }
177
177
  get el() { return getElement(this); }
178
178
  };
@@ -88,7 +88,7 @@ const XvMegaMenuNext = class {
88
88
  void this.fetchMenuData();
89
89
  }
90
90
  render() {
91
- return (h(Host, { key: '965990cf42dca77d9c87ea5d9f1af1765bd51305' }, h("nav", { key: '1effa8fd4a5a36e29735b5b705e4de153e742942', class: { 'xv-menu': true, open: this.open } }, this.menuLoading && (h("div", { key: 'f2777eb6501f5de71be497e02148ea0e9a226e25', class: { 'xv-menu-loader': true, open: this.open } }, h("xv-loader-v2", { key: '10a1559021022dcdf669ee7b1e4ac8bd4e6d2dad' }))), h("ul", { key: '5f61b88c3813b76ae9d4d49ec7b589666486ea6b', class: { menu: true, open: this.open } }, this.menuItems.map((menuItem) => {
91
+ return (h(Host, { key: 'd73cfabbc7e69a974abd5c1c219544c2b9c5345e' }, h("nav", { key: '6d2f78e2be424e7aaa8c1f1ee03430a800c14dcc', class: { 'xv-menu': true, open: this.open } }, this.menuLoading && (h("div", { key: '0481d8317f0a0cd58a10114898ab1b60574bfced', class: { 'xv-menu-loader': true, open: this.open } }, h("xv-loader-v2", { key: 'f4104fbbf285165932c092423fe2eb431e6d7496' }))), h("ul", { key: 'e28819ff9c5bcebb32518831faf843085add3601', class: { menu: true, open: this.open } }, this.menuItems.map((menuItem) => {
92
92
  var _a, _b;
93
93
  return (h("li", { class: { 'menu-item': true, active: menuItem.id === ((_a = this.activeItem) === null || _a === void 0 ? void 0 : _a.id) } }, menuItem.route ? (h("xv-link-v2", { variant: "ghost", href: menuItem.route.route }, h("p", { class: "menu-item-label" }, (_b = menuItem.route) === null || _b === void 0 ? void 0 : _b.label))) : (h(Fragment, null, h("p", { class: "menu-item-label", onClick: () => this.setActiveItem(menuItem) }, menuItem === null || menuItem === void 0 ? void 0 : menuItem.label), h("ul", { class: "menu-item-groups" }, menuItem.groups.map((group) => {
94
94
  var _a;
@@ -98,7 +98,7 @@ const XvMegaMenuNext = class {
98
98
  } }, h("div", { class: "group-menus" }, h("ul", { class: { 'group-menus-categories': true, inline: group.layout === 'inline' } }, group.categories.map((category) => (h("li", { class: "category" }, h("p", { class: "category-label" }, category.label), h("ul", { class: "category-routes" }, category.routes.map((route) => (h("li", { class: "route" }, h("xv-link-v2", { size: "lg", variant: "ghost", href: route.route || '#' }, route.label), route.tag && (h("xv-tag-v2", { class: "route-tag", size: "sm", color: "#161616", bg: "#E0E0E0" }, route.tag)))))))))), h("ul", { class: "group-menus-actions" }, group.actions.map((action) => (h("li", { class: "action" }, action.type === 'link' && (h("xv-link-v2", { variant: "standalone", href: action === null || action === void 0 ? void 0 : action.url }, action.label, h("span", { class: "link-chevron", slot: "icon-right" }, "\u2192"))), action.type === 'button' &&
99
99
  h("xv-button-v2", { onClick: () => this.navActionClick(action), block: true, variant: "tertiary" }, action.label)))))), (group === null || group === void 0 ? void 0 : group.card) && (h("div", { class: "group-card" }, h("xv-card-v2", { media: this.applicationContext !== 'Komsa' ? group.card.image : undefined, variant: this.isMobile ? 'horizontal' : 'vertical' }, h("h5", { slot: "header", class: "group-card-title" }, group.card.title), h("p", { slot: "body", class: "group-card-desc" }, group.card.description), group.card.linkLabel && (h("xv-link-v2", { slot: "footer", variant: "standalone", href: group.card.linkUrl || '#' }, group.card.linkLabel, h("span", { class: "link-chevron", slot: "icon-right" }, "\u2192"))))))))));
100
100
  }))))));
101
- }), h("li", { key: '9ca18d5cdfb37a82e050751542b18eba7b98b158', class: "menu--right" }, h("slot", { key: 'a82d9e4fb0a0d2e482f97a51b66e0e974db2c6f5', name: "menu-right" })), this.open && (h("li", { key: '0d4ef64ba1f80209cc3a77c602a52e39e5cde885', class: "menu--backdrop", onClick: () => this.handleClose() }))))));
101
+ }), h("li", { key: 'fbdfe095e7fb1988754c9d2d705128cae8d233f8', class: "menu--right" }, h("slot", { key: '7de3bb434a940b67265b2b4e191f7a02a20f8404', name: "menu-right" })), this.open && (h("li", { key: 'a35128e640465fec15c990e46fc778602238d2a5', class: "menu--backdrop", onClick: () => this.handleClose() }))))));
102
102
  }
103
103
  get el() { return getElement(this); }
104
104
  static get watchers() { return {
@@ -16,5 +16,5 @@ var patchBrowser = () => {
16
16
 
17
17
  patchBrowser().then(async (options) => {
18
18
  await globalScripts();
19
- return bootstrapLazy([["xv-accordion-v2_45",[[0,"xv-header",{"metaNav":[32],"orgUnit":[32],"baseUrl":[32],"loading":[32],"mobMenuOpen":[32],"suggestions":[32],"suggestionsLoading":[32],"notifications":[32],"showLoginModal":[32]},[[8,"xv:orgUnitChange","handleOrgUnitChange"],[8,"xv:metaNav-update","metaNavUpdate"]]],[257,"xv-dropdown-v2",{"search":[516],"disabled":[516],"multiple":[516],"required":[516],"loading":[516],"readonly":[516],"open":[1540],"error":[520],"label":[513],"helper":[513],"warning":[513],"placeholder":[513],"info":[1],"searchPlaceholder":[1,"search-placeholder"],"size":[1],"defaultValue":[8,"default-value"],"value":[1032],"variant":[1],"selected":[32],"selectedMap":[32],"searchQuery":[32]},[[0,"itemSelected","handleItemSelected"]],{"open":[{"openChangeHandle":0}],"multiple":[{"multipleChangeHandle":0}],"value":[{"valueChange":1}]}],[257,"xv-data-table-row",{"variant":[1],"name":[1025],"collapse":[1],"collapsable":[516],"checked":[1028],"partial":[1028],"hover":[1028],"group":[4],"header":[4],"footer":[4],"disabled":[4],"readonly":[4],"required":[4],"value":[8],"collapsed":[32],"reorderable":[32],"reorderHandleMode":[32],"close":[64]}],[65,"xv-datepicker",{"value":[1040],"variant":[1],"label":[1],"helper":[1],"error":[8],"warning":[8],"readonly":[4],"disabled":[4],"loading":[4],"block":[4],"size":[513],"min":[1],"max":[1],"month":[32],"days":[32],"open":[32],"localError":[32]},[[4,"click","handleClickOutside"]],{"open":[{"openChange":0}],"month":[{"getCalendarGrid":0}],"value":[{"handleValueChange":0}]}],[1,"xv-file-uploader",{"label":[1],"description":[1],"addText":[1,"add-text"],"variant":[1],"size":[1],"accept":[16],"buttonVariant":[1,"button-variant"],"maxFileSizeMB":[2,"max-file-size-mb"],"maxFiles":[2,"max-files"],"multiple":[4],"disabled":[516],"files":[1040],"loadingStates":[1040],"error":[1537],"errors":[1040],"dragActive":[32],"errorMessages":[32],"clearFiles":[64]}],[65,"xv-number-input-v2",{"label":[1],"placeholder":[513],"name":[513],"value":[1538],"helper":[1],"error":[8],"warning":[8],"step":[2],"max":[2],"min":[2],"readonly":[4],"disabled":[4],"loading":[4],"block":[516],"size":[513]}],[1,"xv-pagination",{"total":[2],"page":[1026],"size":[1],"block":[4],"variant":[1],"responsiveVariant":[16],"totalItems":[2,"total-items"],"itemsPerPage":[32],"currentVariant":[32]}],[257,"xv-table-v2-row",{"checked":[1540],"partial":[1540],"name":[1537],"value":[520],"hover":[1540],"readonly":[516],"required":[516],"disabled":[516],"header":[516],"variant":[1537]},null,{"checked":[{"checkedChangeHandle":0}]}],[65,"xv-textarea",{"value":[1025],"name":[1],"label":[1],"placeholder":[1],"helper":[1],"info":[1],"error":[8],"warning":[8],"disabled":[4],"readonly":[4],"block":[4],"counterHide":[4,"counter-hide"],"noResize":[4,"no-resize"],"loading":[4],"max":[2],"rows":[2],"size":[513]}],[257,"xv-data-table",{"size":[1],"block":[520],"loading":[4],"columnWidths":[16],"multiple":[516],"hover":[4],"reorderable":[516],"reorderHandle":[513,"reorder-handle"]},null,{"reorderable":[{"reorderableChanged":0}],"reorderHandle":[{"reorderHandleChanged":0}]}],[257,"xv-dropdown-v2-item",{"disabled":[4],"value":[1544],"selected":[1540],"multiple":[516],"size":[513]},[[0,"click","handleClick"]]],[1,"xv-image-viewer",{"src":[1],"fullscreenSrc":[1,"fullscreen-src"],"alt":[1],"placeholder":[1],"lazy":[4],"isFullscreen":[32],"loaded":[32],"fullscreenLoaded":[32]}],[257,"xv-tab-v2",{"label":[513],"disabled":[516],"loading":[516],"name":[8]}],[257,"xv-table-v2",{"size":[513],"hover":[516],"loading":[516],"colsSize":[16],"selected":[32],"selectedCount":[32]},[[0,"checkedChange","handleCheckedChange"]],{"colsSize":[{"setColsSizeTemplate":0}]}],[257,"xv-tabs-v2",{"active":[1544],"loading":[516],"variant":[1],"emptyMessage":[1,"empty-message"],"hideSingleTab":[4,"hide-single-tab"],"tabElements":[32],"showArrows":[32]},[[9,"resize","updateArrowVisibility"]]],[1,"xv-tag-combobox",{"options":[16],"label":[1],"size":[1],"placeholder":[1],"allowCreate":[4,"allow-create"],"maxSuggestions":[2,"max-suggestions"],"disabled":[4],"readonly":[4],"error":[8],"warning":[8],"value":[16],"normalizedOptions":[32],"selected":[32],"inputValue":[32],"open":[32],"filtered":[32],"highlighted":[32],"focusInput":[64],"clear":[64]},null,{"options":[{"watchOptions":0}],"value":[{"watchValue":0}]}],[257,"xv-accordion-v2",{"multiple":[4],"xvId":[1,"xv-id"],"value":[1025],"opened":[32],"toggleItem":[64]}],[257,"xv-accordion-v2-item",{"disabled":[4],"label":[1],"value":[1],"isOpen":[32]},[[16,"accordionChange","handleAccordionChange"]]],[260,"xv-breadcrumbs-v2"],[257,"xv-data-table-collapse",{"collapsed":[1540],"setCollapsed":[64]}],[0,"xv-footer",{"data":[32]},[[8,"xv:metaNav-update","handleLoadData"]]],[257,"xv-progress-indicator-v2",{"progress":[514],"variant":[1],"size":[1]},null,{"progress":[{"updateChildItems":0}]}],[257,"xv-progress-indicator-v2-item",{"status":[1]}],[324,"xv-radio-v2",{"name":[1],"value":[1],"label":[1],"checked":[1028],"indeterminate":[4],"block":[4],"disabled":[4],"required":[4],"reverse":[4],"readonly":[4],"error":[8],"warning":[520],"size":[1]},null,{"checked":[{"onCheckedChange":0}]}],[65,"xv-slider-v2",{"label":[1],"name":[1],"min":[2],"max":[2],"value":[1026],"step":[2],"disabled":[4],"readonly":[4],"notEditable":[4,"not-editable"]}],[257,"xv-table-v2-expand",{"open":[1540],"disabled":[516]}],[260,"xv-tile",{"variant":[513],"label":[1],"error":[4],"multiple":[4],"disabled":[4],"block":[4],"name":[1],"message":[513],"value":[1025],"checked":[1028],"readonly":[1028]},[[4,"tileChange","tileChangeHandle"],[0,"click","handleClick"]]],[321,"xv-toggle",{"label":[1],"value":[1],"name":[1],"checked":[1540],"disabled":[4],"readonly":[4],"size":[513],"block":[4]}],[257,"xv-mega-menu",{"open":[1540],"activeItem":[32],"activeGroup":[32],"menuItems":[32],"applicationContext":[32],"menuLoading":[32]},[[4,"click","handleClickOutside"]]],[257,"xv-data-table-cell",{"name":[1025],"sort":[1537],"multiline":[520],"width":[1],"align":[1],"tooltip":[1]},[[0,"click","handleSort"]]],[257,"xv-table-v2-cell",{"multiline":[516],"name":[1537],"align":[513],"sort":[1537]},[[0,"click","handleSort"]]],[2,"xv-login-modal",{"visible":[4],"urls":[32],"loading":[32],"errorMessage":[32]}],[257,"xv-overflow-menu-v2",{"open":[1540],"disabled":[516],"position":[1],"size":[1],"tooltip":[1]},[[0,"keydown","handleKeyDown"]],{"open":[{"openChangeHandle":0}]}],[257,"xv-overflow-menu-v2-item",{"disabled":[516],"value":[520],"variant":[513],"clickable":[4]},[[0,"click","handleClick"]]],[257,"xv-toggle-tip",{"open":[1540],"autoSize":[516,"auto-size"],"block":[4],"position":[1],"setPopover":[64]},[[4,"click","handleClickOutside"],[0,"keydown","handleKeyDown"]],{"open":[{"openChangeHandle":0}]}],[257,"xv-modal-v2",{"open":[1540],"permanent":[516],"size":[513],"overflow":[516],"loading":[4],"openModal":[64],"closeModal":[64]}],[257,"xv-notification-v2",{"variant":[513],"dismissible":[516]}],[65,"xv-text-input-v2",{"type":[1],"label":[1],"placeholder":[513],"name":[513],"value":[1025],"autocomplete":[1],"helper":[1],"error":[8],"warning":[8],"readonly":[4],"disabled":[4],"loading":[4],"block":[516],"size":[513],"isPasswordVisible":[32]}],[257,"xv-card-v2",{"variant":[1],"media":[1],"header":[1],"body":[1],"footer":[1]}],[257,"xv-link-v2",{"href":[1],"target":[1],"disabled":[4],"size":[1],"variant":[1]}],[321,"xv-checkbox-v2",{"checked":[1540],"indeterminate":[516],"disabled":[516],"name":[513],"value":[513],"readonly":[516],"required":[516],"partial":[516],"label":[1],"size":[513],"error":[520],"align":[513],"hasFocus":[32]},null,{"checked":[{"onCheckedChange":0}]}],[257,"xv-tag-v2",{"size":[1],"color":[1],"bg":[1],"disabled":[4],"closeable":[4]}],[260,"xv-tooltip-v2",{"message":[1],"position":[1],"block":[4],"dashed":[4]},[[1,"mouseenter","onMouseEnter"],[1,"mouseleave","onMouseLeave"]]],[321,"xv-button-v2",{"value":[1],"name":[1],"label":[513],"variant":[513],"size":[513],"disabled":[516],"loading":[516],"block":[516],"type":[513],"hasLeftIcon":[32],"hasRightIcon":[32],"hasContent":[32]}],[257,"xv-loader-v2",{"show":[4],"variant":[1],"size":[1]}]]],["xv-mega-menu-next",[[257,"xv-mega-menu-next",{"open":[1540],"menuData":[1,"menu-data"],"activeItem":[32],"activeGroup":[32],"menuItems":[32],"applicationContext":[32],"menuLoading":[32]},[[4,"click","handleClickOutside"]],{"menuData":[{"onMenuDataChange":0}]}]]],["xv-header-next",[[0,"xv-header-next",{"menuData":[1,"menu-data"],"metaNav":[32],"orgUnit":[32],"baseUrl":[32],"loading":[32],"mobMenuOpen":[32],"suggestions":[32],"suggestionsLoading":[32],"notifications":[32],"showLoginModal":[32]},[[8,"xv:orgUnitChange","handleOrgUnitChange"],[8,"xv:metaNav-update","metaNavUpdate"]]]]]], options);
19
+ return bootstrapLazy([["xv-accordion-v2_47",[[0,"xv-header",{"metaNav":[32],"orgUnit":[32],"baseUrl":[32],"loading":[32],"mobMenuOpen":[32],"suggestions":[32],"suggestionsLoading":[32],"notifications":[32],"showLoginModal":[32]},[[8,"xv:orgUnitChange","handleOrgUnitChange"],[8,"xv:metaNav-update","metaNavUpdate"]]],[257,"xv-dropdown-v2",{"search":[516],"disabled":[516],"multiple":[516],"required":[516],"loading":[516],"readonly":[516],"open":[1540],"error":[520],"label":[513],"helper":[513],"warning":[513],"placeholder":[513],"info":[1],"searchPlaceholder":[1,"search-placeholder"],"size":[1],"defaultValue":[8,"default-value"],"value":[1032],"variant":[1],"position":[1],"selected":[32],"selectedMap":[32],"resolvedPosition":[32]},[[0,"itemSelected","handleItemSelected"],[0,"keydown","handleKeyDown"]],{"open":[{"openChangeHandle":0}],"multiple":[{"multipleChangeHandle":0}],"value":[{"valueChange":1}]}],[257,"xv-data-table-row",{"variant":[1],"name":[1025],"collapse":[1],"collapsable":[516],"checked":[1028],"partial":[1028],"hover":[1028],"group":[4],"header":[4],"footer":[4],"disabled":[4],"readonly":[4],"required":[4],"value":[8],"collapsed":[32],"reorderable":[32],"reorderHandleMode":[32],"close":[64]}],[65,"xv-datepicker",{"value":[1040],"variant":[1],"label":[1],"helper":[1],"error":[8],"warning":[8],"readonly":[4],"disabled":[4],"loading":[4],"block":[4],"size":[513],"min":[1],"max":[1],"month":[32],"days":[32],"open":[32],"localError":[32]},[[4,"click","handleClickOutside"]],{"open":[{"openChange":0}],"month":[{"getCalendarGrid":0}],"value":[{"handleValueChange":0}]}],[1,"xv-file-uploader",{"label":[1],"description":[1],"addText":[1,"add-text"],"variant":[1],"size":[1],"accept":[16],"buttonVariant":[1,"button-variant"],"maxFileSizeMB":[2,"max-file-size-mb"],"maxFiles":[2,"max-files"],"multiple":[4],"disabled":[516],"files":[1040],"loadingStates":[1040],"error":[1537],"errors":[1040],"dragActive":[32],"errorMessages":[32],"clearFiles":[64]}],[65,"xv-number-input-v2",{"label":[1],"placeholder":[513],"name":[513],"value":[1538],"helper":[1],"error":[8],"warning":[8],"step":[2],"max":[2],"min":[2],"readonly":[4],"disabled":[4],"loading":[4],"block":[516],"size":[513]}],[1,"xv-pagination",{"total":[2],"page":[1026],"size":[1],"block":[4],"variant":[1],"responsiveVariant":[16],"totalItems":[2,"total-items"],"itemsPerPage":[32],"currentVariant":[32]}],[257,"xv-table-v2-row",{"checked":[1540],"partial":[1540],"name":[1537],"value":[520],"hover":[1540],"readonly":[516],"required":[516],"disabled":[516],"header":[516],"variant":[1537]},null,{"checked":[{"checkedChangeHandle":0}]}],[65,"xv-textarea",{"value":[1025],"name":[1],"label":[1],"placeholder":[1],"helper":[1],"info":[1],"error":[8],"warning":[8],"disabled":[4],"readonly":[4],"block":[4],"counterHide":[4,"counter-hide"],"noResize":[4,"no-resize"],"loading":[4],"max":[2],"rows":[2],"size":[513]}],[257,"xv-data-table",{"size":[1],"block":[520],"loading":[4],"columnWidths":[16],"multiple":[516],"hover":[4],"reorderable":[516],"reorderHandle":[513,"reorder-handle"]},null,{"reorderable":[{"reorderableChanged":0}],"reorderHandle":[{"reorderHandleChanged":0}]}],[257,"xv-dropdown-v2-item",{"disabled":[4],"value":[1544],"selected":[1540],"multiple":[516],"size":[513]},[[0,"click","handleClick"]]],[1,"xv-image-viewer",{"src":[1],"fullscreenSrc":[1,"fullscreen-src"],"alt":[1],"placeholder":[1],"lazy":[4],"isFullscreen":[32],"loaded":[32],"fullscreenLoaded":[32]}],[257,"xv-tab-v2",{"label":[513],"disabled":[516],"loading":[516],"name":[8]}],[257,"xv-table-v2",{"size":[513],"hover":[516],"loading":[516],"colsSize":[16],"selected":[32],"selectedCount":[32]},[[0,"checkedChange","handleCheckedChange"]],{"colsSize":[{"setColsSizeTemplate":0}]}],[257,"xv-tabs-v2",{"active":[1544],"loading":[516],"variant":[1],"emptyMessage":[1,"empty-message"],"hideSingleTab":[4,"hide-single-tab"],"tabElements":[32],"showArrows":[32]},[[9,"resize","updateArrowVisibility"]]],[1,"xv-tag-combobox",{"options":[16],"label":[1],"size":[1],"placeholder":[1],"allowCreate":[4,"allow-create"],"maxSuggestions":[2,"max-suggestions"],"disabled":[4],"readonly":[4],"error":[8],"warning":[8],"value":[16],"normalizedOptions":[32],"selected":[32],"inputValue":[32],"open":[32],"filtered":[32],"highlighted":[32],"focusInput":[64],"clear":[64]},null,{"options":[{"watchOptions":0}],"value":[{"watchValue":0}]}],[257,"xv-accordion-v2",{"multiple":[4],"xvId":[1,"xv-id"],"value":[1025],"opened":[32],"toggleItem":[64]}],[257,"xv-accordion-v2-item",{"disabled":[4],"label":[1],"value":[1],"isOpen":[32]},[[16,"accordionChange","handleAccordionChange"]]],[260,"xv-breadcrumbs-v2"],[257,"xv-content-switcher-item-v2",{"value":[520],"label":[513],"icon":[513],"disabled":[516]}],[257,"xv-content-switcher-v2",{"selected":[1544],"size":[513],"iconOnly":[516,"icon-only"],"disabled":[516],"block":[516],"controlled":[516],"items":[32]}],[257,"xv-data-table-collapse",{"collapsed":[1540],"setCollapsed":[64]}],[0,"xv-footer",{"data":[32]},[[8,"xv:metaNav-update","handleLoadData"]]],[257,"xv-progress-indicator-v2",{"progress":[514],"variant":[1],"size":[1]},null,{"progress":[{"updateChildItems":0}]}],[257,"xv-progress-indicator-v2-item",{"status":[1]}],[324,"xv-radio-v2",{"name":[1],"value":[1],"label":[1],"checked":[1028],"indeterminate":[4],"block":[4],"disabled":[4],"required":[4],"reverse":[4],"readonly":[4],"error":[8],"warning":[520],"size":[1]},null,{"checked":[{"onCheckedChange":0}]}],[65,"xv-slider-v2",{"label":[1],"name":[1],"min":[2],"max":[2],"value":[1026],"step":[2],"disabled":[4],"readonly":[4],"notEditable":[4,"not-editable"]}],[257,"xv-table-v2-expand",{"open":[1540],"disabled":[516]}],[260,"xv-tile",{"variant":[513],"label":[1],"error":[4],"multiple":[4],"disabled":[4],"block":[4],"name":[1],"message":[513],"value":[1025],"checked":[1028],"readonly":[1028]},[[4,"tileChange","tileChangeHandle"],[0,"click","handleClick"]]],[321,"xv-toggle",{"label":[1],"value":[1],"name":[1],"checked":[1540],"disabled":[4],"readonly":[4],"size":[513],"block":[4]}],[257,"xv-mega-menu",{"open":[1540],"activeItem":[32],"activeGroup":[32],"menuItems":[32],"applicationContext":[32],"menuLoading":[32]},[[4,"click","handleClickOutside"]]],[257,"xv-data-table-cell",{"name":[1025],"sort":[1537],"multiline":[520],"width":[1],"align":[1],"tooltip":[1]},[[0,"click","handleSort"]]],[257,"xv-table-v2-cell",{"multiline":[516],"name":[1537],"align":[513],"sort":[1537]},[[0,"click","handleSort"]]],[2,"xv-login-modal",{"visible":[4],"urls":[32],"loading":[32],"errorMessage":[32]}],[257,"xv-overflow-menu-v2",{"open":[1540],"disabled":[516],"position":[1],"size":[1],"tooltip":[1]},[[0,"keydown","handleKeyDown"]],{"open":[{"openChangeHandle":0}]}],[257,"xv-overflow-menu-v2-item",{"disabled":[516],"value":[520],"variant":[513],"clickable":[4]},[[0,"click","handleClick"]]],[257,"xv-toggle-tip",{"open":[1540],"autoSize":[516,"auto-size"],"block":[4],"position":[1],"setPopover":[64]},[[4,"click","handleClickOutside"],[0,"keydown","handleKeyDown"]],{"open":[{"openChangeHandle":0}]}],[257,"xv-modal-v2",{"open":[1540],"permanent":[516],"size":[513],"overflow":[516],"loading":[4],"openModal":[64],"closeModal":[64]}],[257,"xv-notification-v2",{"variant":[513],"dismissible":[516]}],[65,"xv-text-input-v2",{"type":[1],"label":[1],"placeholder":[513],"name":[513],"value":[1025],"autocomplete":[1],"helper":[1],"error":[8],"warning":[8],"readonly":[4],"disabled":[4],"loading":[4],"block":[516],"size":[513],"isPasswordVisible":[32]}],[257,"xv-card-v2",{"variant":[1],"media":[1],"header":[1],"body":[1],"footer":[1]}],[257,"xv-link-v2",{"href":[1],"target":[1],"disabled":[4],"size":[1],"variant":[1]}],[321,"xv-checkbox-v2",{"checked":[1540],"indeterminate":[516],"disabled":[516],"name":[513],"value":[513],"readonly":[516],"required":[516],"partial":[516],"label":[1],"size":[513],"error":[520],"align":[513],"hasFocus":[32]},null,{"checked":[{"onCheckedChange":0}]}],[257,"xv-tag-v2",{"size":[1],"color":[1],"bg":[1],"disabled":[4],"closeable":[4]}],[260,"xv-tooltip-v2",{"message":[1],"position":[1],"block":[4],"dashed":[4]},[[1,"mouseenter","onMouseEnter"],[1,"mouseleave","onMouseLeave"]]],[321,"xv-button-v2",{"value":[1],"name":[1],"label":[513],"variant":[513],"size":[513],"disabled":[516],"loading":[516],"block":[516],"type":[513],"hasLeftIcon":[32],"hasRightIcon":[32],"hasContent":[32]}],[257,"xv-loader-v2",{"show":[4],"variant":[1],"size":[1]}]]],["xv-mega-menu-next",[[257,"xv-mega-menu-next",{"open":[1540],"menuData":[1,"menu-data"],"activeItem":[32],"activeGroup":[32],"menuItems":[32],"applicationContext":[32],"menuLoading":[32]},[[4,"click","handleClickOutside"]],{"menuData":[{"onMenuDataChange":0}]}]]],["xv-header-next",[[0,"xv-header-next",{"menuData":[1,"menu-data"],"metaNav":[32],"orgUnit":[32],"baseUrl":[32],"loading":[32],"mobMenuOpen":[32],"suggestions":[32],"suggestionsLoading":[32],"notifications":[32],"showLoginModal":[32]},[[8,"xv:orgUnitChange","handleOrgUnitChange"],[8,"xv:metaNav-update","metaNavUpdate"]]]]]], options);
20
20
  });
@@ -0,0 +1,13 @@
1
+ export declare enum CONTENT_SWITCHER_TAGS {
2
+ SWITCHER = "xv-content-switcher-v2",
3
+ ITEM = "xv-content-switcher-item-v2"
4
+ }
5
+ /**
6
+ * Keys that move the selection inside the switcher (Carbon: automatic activation).
7
+ */
8
+ export declare const CONTENT_SWITCHER_NAV_KEYS: {
9
+ readonly NEXT: readonly ["ArrowRight", "ArrowDown"];
10
+ readonly PREV: readonly ["ArrowLeft", "ArrowUp"];
11
+ readonly FIRST: readonly ["Home"];
12
+ readonly LAST: readonly ["End"];
13
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * xv-content-switcher-item-v2
3
+ *
4
+ * A single segment of an `xv-content-switcher-v2`. The parent reads `label`,
5
+ * `icon`, `value` and `disabled` to render the button; any slotted children are
6
+ * treated as the panel content and shown only while this item is selected.
7
+ *
8
+ * NOTE: "shown" means CSS visibility only — slotted content is always mounted, never
9
+ * unmounted, so framework lifecycle hooks still run for non-selected items. See the
10
+ * `xv-content-switcher-v2` docs for when to render panels conditionally instead.
11
+ *
12
+ * @slot - Optional content shown (via CSS) when this item is selected.
13
+ */
14
+ export declare class XvContentSwitcherItem {
15
+ /**
16
+ * Unique value used to identify the item; falls back to its index when omitted.
17
+ */
18
+ value?: number | string;
19
+ /**
20
+ * Text shown on the button (and used as the accessible name in icon-only mode).
21
+ */
22
+ label?: string;
23
+ /**
24
+ * Icon class (e.g. Font Awesome `far fa-circle`) rendered before the label.
25
+ */
26
+ icon?: string;
27
+ /**
28
+ * Disable this single item.
29
+ */
30
+ disabled: boolean;
31
+ render(): any;
32
+ }
@@ -0,0 +1,78 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { SIZE_VAR_STR } from '../../types/enum';
3
+ /**
4
+ * xv-content-switcher-v2
5
+ *
6
+ * Carbon-style content switcher: a single-select segmented control that toggles
7
+ * between mutually exclusive sections of content.
8
+ * @see https://carbondesignsystem.com/components/content-switcher/usage/
9
+ *
10
+ * The buttons are derived from the `xv-content-switcher-item-v2` children, so the
11
+ * group can manage shared borders, dividers and rounded corners in one place.
12
+ * Each item may also hold slotted content that is shown only while it is selected.
13
+ *
14
+ * IMPORTANT — slotted panels are only HIDDEN (CSS `display: none`), never unmounted.
15
+ * Slotted content lives in the consumer's light DOM, so the framework instantiates
16
+ * it (and runs lifecycle hooks like Angular's `ngOnInit`, subscriptions, requests)
17
+ * regardless of which item is selected — the switcher cannot prevent that. Use this
18
+ * slotted convenience only for cheap, static markup. For panels with lifecycle or
19
+ * side effects, do NOT slot them: keep the switcher as a pure selection control and
20
+ * render the active panel yourself via a framework conditional (e.g. Angular `@if`
21
+ * on `selectedChange`), so only the selected panel is ever instantiated.
22
+ *
23
+ * @slot - One or more `xv-content-switcher-item-v2` elements.
24
+ */
25
+ export declare class XvContentSwitcher {
26
+ el: HTMLElement;
27
+ /**
28
+ * Currently selected item — matched against each item's `value` attribute,
29
+ * or its zero-based index when it has no `value`.
30
+ */
31
+ selected?: number | string;
32
+ /**
33
+ * Control size. Only `sm`, `md` and `lg` are supported (defaults to `md`).
34
+ */
35
+ size: SIZE_VAR_STR;
36
+ /**
37
+ * Render items as icon-only buttons (the item `label` is used as the accessible name).
38
+ */
39
+ iconOnly: boolean;
40
+ /**
41
+ * Disable the whole switcher.
42
+ */
43
+ disabled: boolean;
44
+ /**
45
+ * Stretch the switcher to the full width of its container.
46
+ */
47
+ block: boolean;
48
+ /**
49
+ * Controlled mode. When `true`, clicking/keyboard navigation does NOT change
50
+ * the selection on its own — it only emits `selectedChange` with the requested
51
+ * value. The consumer fully owns `selected` and decides whether to commit it
52
+ * (e.g. after an async confirmation), so a switch can be vetoed without flicker.
53
+ */
54
+ controlled: boolean;
55
+ /**
56
+ * Emitted whenever the selection changes (value, or index when the item has no value).
57
+ * In `controlled` mode this carries the *requested* value before any commit.
58
+ */
59
+ selectedChange: EventEmitter<number | string>;
60
+ /**
61
+ * Collected `xv-content-switcher-item-v2` children.
62
+ */
63
+ items: HTMLElement[];
64
+ componentWillLoad(): void;
65
+ componentDidRender(): void;
66
+ private collectItems;
67
+ private getItemKey;
68
+ private isItemDisabled;
69
+ private isSelected;
70
+ private isSelectionValid;
71
+ private select;
72
+ /** Reflect the `active` class on items so their slotted content shows/hides. */
73
+ private updateItemsState;
74
+ private handleKeyDown;
75
+ /** Find the next non-disabled item starting at `from`, walking by `step`. */
76
+ private findEnabled;
77
+ render(): any;
78
+ }
@@ -21,9 +21,19 @@ export declare class XvDropdown {
21
21
  defaultValue?: DropdownItemData['value'] | DropdownItemData['value'][];
22
22
  value?: DropdownItemData['value'] | DropdownItemData['value'][];
23
23
  variant?: 'ghost' | 'default';
24
+ position: 'auto' | 'right' | 'left';
24
25
  selected: DropdownItemData['text'][];
25
26
  selectedMap: Map<DropdownItemData['value'], DropdownItemData>;
26
- searchQuery: string;
27
+ /** Side the options panel is actually aligned to (computed when position === 'auto'). */
28
+ resolvedPosition: 'left' | 'right';
29
+ private optionsEl?;
30
+ private positionMeasured;
31
+ private readonly listboxId;
32
+ private optIdSeq;
33
+ private activeItem;
34
+ private pendingOpenInit;
35
+ private searchInputEl?;
36
+ private searchQuery;
27
37
  private searchTimeout;
28
38
  private dropdownItems;
29
39
  changeSelection: EventEmitter<DropdownItemData[]>;
@@ -38,11 +48,24 @@ export declare class XvDropdown {
38
48
  private handleClickOutside;
39
49
  private addListeners;
40
50
  private removeListeners;
51
+ handleKeyDown(ev: KeyboardEvent): void;
52
+ private getNavigableItems;
53
+ private moveActive;
54
+ private setActiveByEdge;
55
+ private setActiveItem;
41
56
  private clearHandle;
42
57
  private cacheItems;
43
58
  private handleSearchInput;
59
+ private resetSearch;
44
60
  render(): any;
45
61
  componentDidLoad(): void;
62
+ /** Side the panel is rendered on: explicit prop wins, otherwise the auto-measured side. */
63
+ private _appliedPosition;
64
+ /** Runs once per open, after the panel is in the DOM: highlight an option and place focus. */
65
+ private initOpenState;
66
+ componentDidRender(): void;
67
+ /** Inline edges of the nearest ancestor that clips overflow; falls back to the viewport. */
68
+ private _clipBounds;
46
69
  disconnectedCallback(): void;
47
70
  private _renderIcon;
48
71
  }
@@ -162,6 +162,82 @@ export namespace Components {
162
162
  */
163
163
  "value": string;
164
164
  }
165
+ /**
166
+ * xv-content-switcher-item-v2
167
+ * A single segment of an `xv-content-switcher-v2`. The parent reads `label`,
168
+ * `icon`, `value` and `disabled` to render the button; any slotted children are
169
+ * treated as the panel content and shown only while this item is selected.
170
+ * NOTE: "shown" means CSS visibility only — slotted content is always mounted, never
171
+ * unmounted, so framework lifecycle hooks still run for non-selected items. See the
172
+ * `xv-content-switcher-v2` docs for when to render panels conditionally instead.
173
+ */
174
+ interface XvContentSwitcherItemV2 {
175
+ /**
176
+ * Disable this single item.
177
+ * @default false
178
+ */
179
+ "disabled": boolean;
180
+ /**
181
+ * Icon class (e.g. Font Awesome `far fa-circle`) rendered before the label.
182
+ */
183
+ "icon"?: string;
184
+ /**
185
+ * Text shown on the button (and used as the accessible name in icon-only mode).
186
+ */
187
+ "label"?: string;
188
+ /**
189
+ * Unique value used to identify the item; falls back to its index when omitted.
190
+ */
191
+ "value"?: number | string;
192
+ }
193
+ /**
194
+ * xv-content-switcher-v2
195
+ * Carbon-style content switcher: a single-select segmented control that toggles
196
+ * between mutually exclusive sections of content.
197
+ * @see https://carbondesignsystem.com/components/content-switcher/usage/
198
+ * The buttons are derived from the `xv-content-switcher-item-v2` children, so the
199
+ * group can manage shared borders, dividers and rounded corners in one place.
200
+ * Each item may also hold slotted content that is shown only while it is selected.
201
+ * IMPORTANT — slotted panels are only HIDDEN (CSS `display: none`), never unmounted.
202
+ * Slotted content lives in the consumer's light DOM, so the framework instantiates
203
+ * it (and runs lifecycle hooks like Angular's `ngOnInit`, subscriptions, requests)
204
+ * regardless of which item is selected — the switcher cannot prevent that. Use this
205
+ * slotted convenience only for cheap, static markup. For panels with lifecycle or
206
+ * side effects, do NOT slot them: keep the switcher as a pure selection control and
207
+ * render the active panel yourself via a framework conditional (e.g. Angular `@if`
208
+ * on `selectedChange`), so only the selected panel is ever instantiated.
209
+ */
210
+ interface XvContentSwitcherV2 {
211
+ /**
212
+ * Stretch the switcher to the full width of its container.
213
+ * @default false
214
+ */
215
+ "block": boolean;
216
+ /**
217
+ * Controlled mode. When `true`, clicking/keyboard navigation does NOT change the selection on its own — it only emits `selectedChange` with the requested value. The consumer fully owns `selected` and decides whether to commit it (e.g. after an async confirmation), so a switch can be vetoed without flicker.
218
+ * @default false
219
+ */
220
+ "controlled": boolean;
221
+ /**
222
+ * Disable the whole switcher.
223
+ * @default false
224
+ */
225
+ "disabled": boolean;
226
+ /**
227
+ * Render items as icon-only buttons (the item `label` is used as the accessible name).
228
+ * @default false
229
+ */
230
+ "iconOnly": boolean;
231
+ /**
232
+ * Currently selected item — matched against each item's `value` attribute, or its zero-based index when it has no `value`.
233
+ */
234
+ "selected"?: number | string;
235
+ /**
236
+ * Control size. Only `sm`, `md` and `lg` are supported (defaults to `md`).
237
+ * @default SIZE_VAR.MD
238
+ */
239
+ "size": SIZE_VAR_STR;
240
+ }
165
241
  interface XvDataTable {
166
242
  "block"?: boolean | "";
167
243
  /**
@@ -299,6 +375,10 @@ export namespace Components {
299
375
  "multiple"?: boolean;
300
376
  "open"?: boolean;
301
377
  "placeholder"?: string;
378
+ /**
379
+ * @default 'auto'
380
+ */
381
+ "position": 'auto' | 'right' | 'left';
302
382
  "readonly"?: boolean;
303
383
  "required"?: boolean;
304
384
  "search"?: boolean;
@@ -1012,6 +1092,10 @@ export interface XvCheckboxV2CustomEvent<T> extends CustomEvent<T> {
1012
1092
  detail: T;
1013
1093
  target: HTMLXvCheckboxV2Element;
1014
1094
  }
1095
+ export interface XvContentSwitcherV2CustomEvent<T> extends CustomEvent<T> {
1096
+ detail: T;
1097
+ target: HTMLXvContentSwitcherV2Element;
1098
+ }
1015
1099
  export interface XvDataTableCustomEvent<T> extends CustomEvent<T> {
1016
1100
  detail: T;
1017
1101
  target: HTMLXvDataTableElement;
@@ -1205,6 +1289,55 @@ declare global {
1205
1289
  prototype: HTMLXvCheckboxV2Element;
1206
1290
  new (): HTMLXvCheckboxV2Element;
1207
1291
  };
1292
+ /**
1293
+ * xv-content-switcher-item-v2
1294
+ * A single segment of an `xv-content-switcher-v2`. The parent reads `label`,
1295
+ * `icon`, `value` and `disabled` to render the button; any slotted children are
1296
+ * treated as the panel content and shown only while this item is selected.
1297
+ * NOTE: "shown" means CSS visibility only — slotted content is always mounted, never
1298
+ * unmounted, so framework lifecycle hooks still run for non-selected items. See the
1299
+ * `xv-content-switcher-v2` docs for when to render panels conditionally instead.
1300
+ */
1301
+ interface HTMLXvContentSwitcherItemV2Element extends Components.XvContentSwitcherItemV2, HTMLStencilElement {
1302
+ }
1303
+ var HTMLXvContentSwitcherItemV2Element: {
1304
+ prototype: HTMLXvContentSwitcherItemV2Element;
1305
+ new (): HTMLXvContentSwitcherItemV2Element;
1306
+ };
1307
+ interface HTMLXvContentSwitcherV2ElementEventMap {
1308
+ "selectedChange": number | string;
1309
+ }
1310
+ /**
1311
+ * xv-content-switcher-v2
1312
+ * Carbon-style content switcher: a single-select segmented control that toggles
1313
+ * between mutually exclusive sections of content.
1314
+ * @see https://carbondesignsystem.com/components/content-switcher/usage/
1315
+ * The buttons are derived from the `xv-content-switcher-item-v2` children, so the
1316
+ * group can manage shared borders, dividers and rounded corners in one place.
1317
+ * Each item may also hold slotted content that is shown only while it is selected.
1318
+ * IMPORTANT — slotted panels are only HIDDEN (CSS `display: none`), never unmounted.
1319
+ * Slotted content lives in the consumer's light DOM, so the framework instantiates
1320
+ * it (and runs lifecycle hooks like Angular's `ngOnInit`, subscriptions, requests)
1321
+ * regardless of which item is selected — the switcher cannot prevent that. Use this
1322
+ * slotted convenience only for cheap, static markup. For panels with lifecycle or
1323
+ * side effects, do NOT slot them: keep the switcher as a pure selection control and
1324
+ * render the active panel yourself via a framework conditional (e.g. Angular `@if`
1325
+ * on `selectedChange`), so only the selected panel is ever instantiated.
1326
+ */
1327
+ interface HTMLXvContentSwitcherV2Element extends Components.XvContentSwitcherV2, HTMLStencilElement {
1328
+ addEventListener<K extends keyof HTMLXvContentSwitcherV2ElementEventMap>(type: K, listener: (this: HTMLXvContentSwitcherV2Element, ev: XvContentSwitcherV2CustomEvent<HTMLXvContentSwitcherV2ElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1329
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1330
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1331
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1332
+ removeEventListener<K extends keyof HTMLXvContentSwitcherV2ElementEventMap>(type: K, listener: (this: HTMLXvContentSwitcherV2Element, ev: XvContentSwitcherV2CustomEvent<HTMLXvContentSwitcherV2ElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1333
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1334
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1335
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1336
+ }
1337
+ var HTMLXvContentSwitcherV2Element: {
1338
+ prototype: HTMLXvContentSwitcherV2Element;
1339
+ new (): HTMLXvContentSwitcherV2Element;
1340
+ };
1208
1341
  interface HTMLXvDataTableElementEventMap {
1209
1342
  "reorderChange": XvDataTableReorder;
1210
1343
  }
@@ -1824,6 +1957,8 @@ declare global {
1824
1957
  "xv-button-v2": HTMLXvButtonV2Element;
1825
1958
  "xv-card-v2": HTMLXvCardV2Element;
1826
1959
  "xv-checkbox-v2": HTMLXvCheckboxV2Element;
1960
+ "xv-content-switcher-item-v2": HTMLXvContentSwitcherItemV2Element;
1961
+ "xv-content-switcher-v2": HTMLXvContentSwitcherV2Element;
1827
1962
  "xv-data-table": HTMLXvDataTableElement;
1828
1963
  "xv-data-table-cell": HTMLXvDataTableCellElement;
1829
1964
  "xv-data-table-collapse": HTMLXvDataTableCollapseElement;
@@ -2015,6 +2150,86 @@ declare namespace LocalJSX {
2015
2150
  */
2016
2151
  "value"?: string;
2017
2152
  }
2153
+ /**
2154
+ * xv-content-switcher-item-v2
2155
+ * A single segment of an `xv-content-switcher-v2`. The parent reads `label`,
2156
+ * `icon`, `value` and `disabled` to render the button; any slotted children are
2157
+ * treated as the panel content and shown only while this item is selected.
2158
+ * NOTE: "shown" means CSS visibility only — slotted content is always mounted, never
2159
+ * unmounted, so framework lifecycle hooks still run for non-selected items. See the
2160
+ * `xv-content-switcher-v2` docs for when to render panels conditionally instead.
2161
+ */
2162
+ interface XvContentSwitcherItemV2 {
2163
+ /**
2164
+ * Disable this single item.
2165
+ * @default false
2166
+ */
2167
+ "disabled"?: boolean;
2168
+ /**
2169
+ * Icon class (e.g. Font Awesome `far fa-circle`) rendered before the label.
2170
+ */
2171
+ "icon"?: string;
2172
+ /**
2173
+ * Text shown on the button (and used as the accessible name in icon-only mode).
2174
+ */
2175
+ "label"?: string;
2176
+ /**
2177
+ * Unique value used to identify the item; falls back to its index when omitted.
2178
+ */
2179
+ "value"?: number | string;
2180
+ }
2181
+ /**
2182
+ * xv-content-switcher-v2
2183
+ * Carbon-style content switcher: a single-select segmented control that toggles
2184
+ * between mutually exclusive sections of content.
2185
+ * @see https://carbondesignsystem.com/components/content-switcher/usage/
2186
+ * The buttons are derived from the `xv-content-switcher-item-v2` children, so the
2187
+ * group can manage shared borders, dividers and rounded corners in one place.
2188
+ * Each item may also hold slotted content that is shown only while it is selected.
2189
+ * IMPORTANT — slotted panels are only HIDDEN (CSS `display: none`), never unmounted.
2190
+ * Slotted content lives in the consumer's light DOM, so the framework instantiates
2191
+ * it (and runs lifecycle hooks like Angular's `ngOnInit`, subscriptions, requests)
2192
+ * regardless of which item is selected — the switcher cannot prevent that. Use this
2193
+ * slotted convenience only for cheap, static markup. For panels with lifecycle or
2194
+ * side effects, do NOT slot them: keep the switcher as a pure selection control and
2195
+ * render the active panel yourself via a framework conditional (e.g. Angular `@if`
2196
+ * on `selectedChange`), so only the selected panel is ever instantiated.
2197
+ */
2198
+ interface XvContentSwitcherV2 {
2199
+ /**
2200
+ * Stretch the switcher to the full width of its container.
2201
+ * @default false
2202
+ */
2203
+ "block"?: boolean;
2204
+ /**
2205
+ * Controlled mode. When `true`, clicking/keyboard navigation does NOT change the selection on its own — it only emits `selectedChange` with the requested value. The consumer fully owns `selected` and decides whether to commit it (e.g. after an async confirmation), so a switch can be vetoed without flicker.
2206
+ * @default false
2207
+ */
2208
+ "controlled"?: boolean;
2209
+ /**
2210
+ * Disable the whole switcher.
2211
+ * @default false
2212
+ */
2213
+ "disabled"?: boolean;
2214
+ /**
2215
+ * Render items as icon-only buttons (the item `label` is used as the accessible name).
2216
+ * @default false
2217
+ */
2218
+ "iconOnly"?: boolean;
2219
+ /**
2220
+ * Emitted whenever the selection changes (value, or index when the item has no value). In `controlled` mode this carries the *requested* value before any commit.
2221
+ */
2222
+ "onSelectedChange"?: (event: XvContentSwitcherV2CustomEvent<number | string>) => void;
2223
+ /**
2224
+ * Currently selected item — matched against each item's `value` attribute, or its zero-based index when it has no `value`.
2225
+ */
2226
+ "selected"?: number | string;
2227
+ /**
2228
+ * Control size. Only `sm`, `md` and `lg` are supported (defaults to `md`).
2229
+ * @default SIZE_VAR.MD
2230
+ */
2231
+ "size"?: SIZE_VAR_STR;
2232
+ }
2018
2233
  interface XvDataTable {
2019
2234
  "block"?: boolean | "";
2020
2235
  /**
@@ -2158,6 +2373,10 @@ declare namespace LocalJSX {
2158
2373
  "onOpenChange"?: (event: XvDropdownV2CustomEvent<boolean>) => void;
2159
2374
  "open"?: boolean;
2160
2375
  "placeholder"?: string;
2376
+ /**
2377
+ * @default 'auto'
2378
+ */
2379
+ "position"?: 'auto' | 'right' | 'left';
2161
2380
  "readonly"?: boolean;
2162
2381
  "required"?: boolean;
2163
2382
  "search"?: boolean;
@@ -2889,6 +3108,8 @@ declare namespace LocalJSX {
2889
3108
  "xv-button-v2": XvButtonV2;
2890
3109
  "xv-card-v2": XvCardV2;
2891
3110
  "xv-checkbox-v2": XvCheckboxV2;
3111
+ "xv-content-switcher-item-v2": XvContentSwitcherItemV2;
3112
+ "xv-content-switcher-v2": XvContentSwitcherV2;
2892
3113
  "xv-data-table": XvDataTable;
2893
3114
  "xv-data-table-cell": XvDataTableCell;
2894
3115
  "xv-data-table-collapse": XvDataTableCollapse;
@@ -2942,6 +3163,34 @@ declare module "@stencil/core" {
2942
3163
  "xv-button-v2": LocalJSX.XvButtonV2 & JSXBase.HTMLAttributes<HTMLXvButtonV2Element>;
2943
3164
  "xv-card-v2": LocalJSX.XvCardV2 & JSXBase.HTMLAttributes<HTMLXvCardV2Element>;
2944
3165
  "xv-checkbox-v2": LocalJSX.XvCheckboxV2 & JSXBase.HTMLAttributes<HTMLXvCheckboxV2Element>;
3166
+ /**
3167
+ * xv-content-switcher-item-v2
3168
+ * A single segment of an `xv-content-switcher-v2`. The parent reads `label`,
3169
+ * `icon`, `value` and `disabled` to render the button; any slotted children are
3170
+ * treated as the panel content and shown only while this item is selected.
3171
+ * NOTE: "shown" means CSS visibility only — slotted content is always mounted, never
3172
+ * unmounted, so framework lifecycle hooks still run for non-selected items. See the
3173
+ * `xv-content-switcher-v2` docs for when to render panels conditionally instead.
3174
+ */
3175
+ "xv-content-switcher-item-v2": LocalJSX.XvContentSwitcherItemV2 & JSXBase.HTMLAttributes<HTMLXvContentSwitcherItemV2Element>;
3176
+ /**
3177
+ * xv-content-switcher-v2
3178
+ * Carbon-style content switcher: a single-select segmented control that toggles
3179
+ * between mutually exclusive sections of content.
3180
+ * @see https://carbondesignsystem.com/components/content-switcher/usage/
3181
+ * The buttons are derived from the `xv-content-switcher-item-v2` children, so the
3182
+ * group can manage shared borders, dividers and rounded corners in one place.
3183
+ * Each item may also hold slotted content that is shown only while it is selected.
3184
+ * IMPORTANT — slotted panels are only HIDDEN (CSS `display: none`), never unmounted.
3185
+ * Slotted content lives in the consumer's light DOM, so the framework instantiates
3186
+ * it (and runs lifecycle hooks like Angular's `ngOnInit`, subscriptions, requests)
3187
+ * regardless of which item is selected — the switcher cannot prevent that. Use this
3188
+ * slotted convenience only for cheap, static markup. For panels with lifecycle or
3189
+ * side effects, do NOT slot them: keep the switcher as a pure selection control and
3190
+ * render the active panel yourself via a framework conditional (e.g. Angular `@if`
3191
+ * on `selectedChange`), so only the selected panel is ever instantiated.
3192
+ */
3193
+ "xv-content-switcher-v2": LocalJSX.XvContentSwitcherV2 & JSXBase.HTMLAttributes<HTMLXvContentSwitcherV2Element>;
2945
3194
  "xv-data-table": LocalJSX.XvDataTable & JSXBase.HTMLAttributes<HTMLXvDataTableElement>;
2946
3195
  "xv-data-table-cell": LocalJSX.XvDataTableCell & JSXBase.HTMLAttributes<HTMLXvDataTableCellElement>;
2947
3196
  "xv-data-table-collapse": LocalJSX.XvDataTableCollapse & JSXBase.HTMLAttributes<HTMLXvDataTableCollapseElement>;