@ukic/web-components 3.29.0 → 3.31.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 (117) hide show
  1. package/components/ic-accordion.js +53 -38
  2. package/components/ic-accordion.js.map +1 -1
  3. package/components/ic-button2.js +1 -1
  4. package/components/ic-button2.js.map +1 -1
  5. package/components/ic-link2.js +1 -1
  6. package/components/ic-link2.js.map +1 -1
  7. package/components/ic-menu-item2.js +1 -1
  8. package/components/ic-menu-item2.js.map +1 -1
  9. package/components/ic-menu2.js +276 -37
  10. package/components/ic-menu2.js.map +1 -1
  11. package/components/ic-navigation-button.js +8 -5
  12. package/components/ic-navigation-button.js.map +1 -1
  13. package/components/ic-navigation-group.js +9 -5
  14. package/components/ic-navigation-group.js.map +1 -1
  15. package/components/ic-radio-group.js +3 -3
  16. package/components/ic-radio-group.js.map +1 -1
  17. package/components/ic-side-navigation.js.map +1 -1
  18. package/components/ic-switch.js.map +1 -1
  19. package/dist/cjs/ic-accordion.cjs.entry.js +53 -38
  20. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-button_3.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +276 -37
  24. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-navigation-button.cjs.entry.js +8 -5
  30. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-navigation-group.cjs.entry.js +9 -5
  32. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-radio-group.cjs.entry.js +3 -3
  34. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-section-container.cjs.entry.js.map +1 -1
  36. package/dist/collection/components/ic-accordion/ic-accordion.js +53 -38
  37. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  38. package/dist/collection/components/ic-button/ic-button.css +6 -0
  39. package/dist/collection/components/ic-link/ic-link.css +4 -0
  40. package/dist/collection/components/ic-menu/ic-menu.css +14 -5
  41. package/dist/collection/components/ic-menu-item/ic-menu-item.css +13 -6
  42. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +8 -5
  43. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  44. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +9 -5
  45. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  46. package/dist/collection/components/ic-radio-group/ic-radio-group.js +3 -3
  47. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  48. package/dist/collection/utils/common-helpers.js +1 -1
  49. package/dist/collection/utils/common-helpers.js.map +1 -1
  50. package/dist/components/ic-accordion.js +53 -38
  51. package/dist/components/ic-accordion.js.map +1 -1
  52. package/dist/components/ic-button2.js +1 -1
  53. package/dist/components/ic-button2.js.map +1 -1
  54. package/dist/components/ic-hero.js.map +1 -1
  55. package/dist/components/ic-link2.js +1 -1
  56. package/dist/components/ic-link2.js.map +1 -1
  57. package/dist/components/ic-menu-item2.js +1 -1
  58. package/dist/components/ic-menu-item2.js.map +1 -1
  59. package/dist/components/ic-menu2.js +276 -37
  60. package/dist/components/ic-menu2.js.map +1 -1
  61. package/dist/components/ic-navigation-button.js +8 -5
  62. package/dist/components/ic-navigation-button.js.map +1 -1
  63. package/dist/components/ic-navigation-group.js +9 -5
  64. package/dist/components/ic-navigation-group.js.map +1 -1
  65. package/dist/components/ic-radio-group.js +3 -3
  66. package/dist/components/ic-radio-group.js.map +1 -1
  67. package/dist/components/ic-switch.js.map +1 -1
  68. package/dist/core/core.esm.js +1 -1
  69. package/dist/core/{p-9ced00a7.entry.js → p-41bbdc4c.entry.js} +2 -2
  70. package/dist/core/{p-9ced00a7.entry.js.map → p-41bbdc4c.entry.js.map} +1 -1
  71. package/dist/core/p-51fc7809.entry.js +2 -0
  72. package/dist/core/p-51fc7809.entry.js.map +1 -0
  73. package/dist/core/{p-e5266c19.entry.js → p-67048b2e.entry.js} +2 -2
  74. package/dist/core/{p-e5266c19.entry.js.map → p-67048b2e.entry.js.map} +1 -1
  75. package/dist/core/p-756b4cb3.entry.js +2 -0
  76. package/dist/core/p-756b4cb3.entry.js.map +1 -0
  77. package/dist/core/p-78e56db1.entry.js +2 -0
  78. package/dist/core/p-78e56db1.entry.js.map +1 -0
  79. package/dist/core/{p-1cfaa962.entry.js → p-95849ac2.entry.js} +2 -2
  80. package/dist/core/p-95849ac2.entry.js.map +1 -0
  81. package/dist/core/{p-fc4b7d2b.entry.js → p-9cf35c23.entry.js} +2 -2
  82. package/dist/core/p-9cf35c23.entry.js.map +1 -0
  83. package/dist/core/p-a8d98164.entry.js.map +1 -1
  84. package/dist/core/p-e5178830.entry.js +3 -0
  85. package/dist/core/p-e5178830.entry.js.map +1 -0
  86. package/dist/esm/ic-accordion.entry.js +53 -38
  87. package/dist/esm/ic-accordion.entry.js.map +1 -1
  88. package/dist/esm/ic-button_3.entry.js +1 -1
  89. package/dist/esm/ic-button_3.entry.js.map +1 -1
  90. package/dist/esm/ic-input-component-container_3.entry.js +276 -37
  91. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  92. package/dist/esm/ic-link.entry.js +1 -1
  93. package/dist/esm/ic-link.entry.js.map +1 -1
  94. package/dist/esm/ic-menu-item.entry.js +1 -1
  95. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  96. package/dist/esm/ic-navigation-button.entry.js +8 -5
  97. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  98. package/dist/esm/ic-navigation-group.entry.js +9 -5
  99. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  100. package/dist/esm/ic-radio-group.entry.js +3 -3
  101. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  102. package/dist/esm/ic-section-container.entry.js.map +1 -1
  103. package/dist/types/components/ic-accordion/ic-accordion.d.ts +2 -0
  104. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +1 -0
  105. package/hydrate/index.js +351 -90
  106. package/hydrate/index.mjs +351 -90
  107. package/package.json +4 -2
  108. package/dist/core/p-1cfaa962.entry.js.map +0 -1
  109. package/dist/core/p-305d9639.entry.js +0 -3
  110. package/dist/core/p-305d9639.entry.js.map +0 -1
  111. package/dist/core/p-98dee727.entry.js +0 -2
  112. package/dist/core/p-98dee727.entry.js.map +0 -1
  113. package/dist/core/p-be8bbed8.entry.js +0 -2
  114. package/dist/core/p-be8bbed8.entry.js.map +0 -1
  115. package/dist/core/p-c0b70c08.entry.js +0 -2
  116. package/dist/core/p-c0b70c08.entry.js.map +0 -1
  117. package/dist/core/p-fc4b7d2b.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["icLinkCss","IcLinkStyle0","Link","constructor","hostRef","this","inheritedAttributes","hostMutationObserver","download","monochrome","theme","hostMutationCallback","mutationList","forceComponentUpdate","forEach","attributeName","attribute","el","getAttribute","IC_INHERITED_ARIA","includes","forceUpdate","setDownloadAttribute","value","undefined","componentWillLoad","inheritAttributes","updateTheme","setAttribute","componentDidLoad","MutationObserver","observe","attributes","disconnectedCallback","_a","disconnect","brandChangeHandler","detail","mode","setFocus","_b","shadowRoot","querySelector","focus","getBrandFromContext","IcBrandForegroundEnum","Default","Light","Dark","hasRouterSlot","routerSlot","ariaLabel","textContent","render","href","hreflang","referrerpolicy","rel","target","h","Host","key","class","name","Object","assign","hrefLang","referrerPolicy","tabindex","part","innerHTML","OpenInNew"],"sources":["src/components/ic-link/ic-link.css?tag=ic-link&encapsulation=shadow","src/components/ic-link/ic-link.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host(.ic-link) .link,\n:host(.ic-link) ::slotted(a) {\n color: var(--ic-link-text);\n text-decoration: underline;\n font-weight: var(--ic-font-weight-bold);\n transition: var(--ic-easing-transition-fast);\n}\n\n:host(.ic-link) .link:visited,\n:host(.ic-link) ::slotted(a:visited),\n:host(.ic-link) .link:visited:hover,\n:host(.ic-link) ::slotted(a:visited:hover),\n:host(.ic-link) .link:visited:active,\n:host(.ic-link) ::slotted(a:visited:active),\n:host(.ic-link) .link:visited:focus,\n:host(.ic-link) ::slotted(a:visited:focus) {\n color: var(--ic-link-text-visited);\n}\n\n:host(.ic-link) .link:hover {\n color: var(--ic-link-text-hover);\n}\n\n:host(.ic-link) .link:active {\n color: var(--ic-link-text-pressed);\n}\n\n:host(.ic-link) .link:focus {\n color: var(--ic-link-text-focused);\n}\n\n:host(.ic-link-monochrome) .link:hover {\n color: var(--ic-link-text-hover-monochrome);\n}\n\n:host(.ic-link-monochrome) .link:active {\n color: var(--ic-link-text-pressed-monochrome);\n}\n\n:host(.ic-link-monochrome) .link:focus {\n color: var(--ic-link-text-focused-monochrome);\n}\n\n:host(.ic-link) .link:hover,\n:host(.ic-link) .link:focus,\n:host(.ic-link) ::slotted(a:hover),\n:host(.ic-link) ::slotted(a:focus) {\n outline: none;\n border-bottom: 0.25rem solid !important;\n margin-bottom: -0.25rem !important;\n text-decoration: none;\n}\n\n@supports (text-underline-offset: 10%) {\n :host(.ic-link) .link:hover,\n :host(.ic-link) .link:focus,\n :host(.ic-link) ::slotted(a:hover),\n :host(.ic-link) ::slotted(a:focus) {\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 10%;\n border-bottom: 0 !important;\n margin-bottom: 0 !important;\n }\n}\n\n:host(.ic-link) .link:active,\n:host(.ic-link) .link:focus:active,\n:host(.ic-link) .link:visited:active,\n:host(.ic-link) ::slotted(a:active),\n:host(.ic-link) ::slotted(a:focus:active),\n:host(.ic-link) ::slotted(a:visited:active) {\n text-decoration: none;\n}\n\n.ic-link-open-in-new-icon {\n vertical-align: middle;\n margin-left: var(--ic-space-xxs);\n}\n\n.ic-link-open-in-new-icon > svg {\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n fill: var(--ic-link-icon-launch);\n}\n\n.link:visited > .ic-link-open-in-new-icon > svg {\n fill: var(--ic-link-icon-launch-visited);\n}\n\n:host(.ic-link-monochrome) .link,\n:host(.ic-link-monochrome) ::slotted(a) {\n color: var(--ic-link-text-monochrome);\n}\n\n:host(.ic-link-monochrome) .link:visited,\n:host(.ic-link-monochrome) ::slotted(a:visited),\n:host(.ic-link-monochrome) .link:visited:hover,\n:host(.ic-link-monochrome) ::slotted(a:visited:hover),\n:host(.ic-link-monochrome) .link:visited:active,\n:host(.ic-link-monochrome) ::slotted(a:visited:active),\n:host(.ic-link-monochrome) .link:visited:focus,\n:host(.ic-link-monochrome) ::slotted(a:visited:focus) {\n color: var(--ic-link-text-visited-monochrome);\n}\n\n:host(.ic-link-monochrome) .link > .ic-link-open-in-new-icon > svg {\n fill: var(--ic-link-icon-launch-monochrome);\n}\n\n:host(.ic-link-monochrome) .link:visited > .ic-link-open-in-new-icon > svg {\n fill: var(--ic-link-icon-launch-visited-monochrome);\n}\n\n:host(.breadcrumb-link) .link {\n display: var(--breadcrumb-link-display);\n align-items: var(--breadcrumb-link-align-items);\n gap: var(--breadcrumb-link-gap);\n}\n\n:host(.breadcrumb-link) .link ::slotted(.back-icon) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n}\n\n:host(.breadcrumb-link.current-page) a,\n:host(.breadcrumb-link.current-page) ::slotted(a) {\n font-weight: normal;\n color: inherit;\n text-decoration: none;\n display: flex;\n align-items: center;\n}\n\n:host(.breadcrumb-link.current-page) .link,\n:host(.breadcrumb-link.current-page) ::slotted(a:focus) {\n outline: var(--ic-hc-focus-outline);\n text-decoration: none;\n}\n\n:host(.breadcrumb-link.current-page) .link:visited {\n color: var(--ic-color-text-primary);\n}\n\n/* Footer link */\n\n:host(.footer-link) ::slotted(a) {\n color: var(--ic-footer-link) !important;\n}\n\n:host(.footer-link) .ic-link-open-in-new-icon > svg {\n fill: var(--ic-footer-icon) !important;\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n :host(.ic-link) .ic-link-open-in-new-icon > svg {\n fill: currentcolor !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host(.ic-link) .link,\n :host(.ic-link) ::slotted(a) {\n transition: none;\n }\n}\n","import {\n Component,\n Element,\n Prop,\n h,\n Host,\n Listen,\n Method,\n forceUpdate,\n} from \"@stencil/core\";\n\nimport OpenInNew from \"../../assets/OpenInNew.svg\";\nimport { getBrandFromContext, inheritAttributes } from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcBrand,\n IcBrandForeground,\n IcBrandForegroundEnum,\n IcThemeMode,\n} from \"../../utils/types\";\n\n/**\n * @slot router-item - Handle routing by nesting your routes in this slot.\n */\n\n@Component({\n tag: \"ic-link\",\n styleUrl: \"ic-link.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Link {\n private inheritedAttributes: { [k: string]: string } = {};\n private routerSlot: HTMLElement | null;\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el: HTMLIcLinkElement;\n\n /**\n * If `true`, the user can save the linked URL instead of navigating to it. If the value is a string, it will be used as the filename for the download.\n */\n @Prop() download?: string | boolean = false;\n\n /**\n * The URL that the link points to.\n */\n @Prop() href?: string;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n\n /**\n * If `true`, the link will display as black in the light theme, and white in the dark theme.\n */\n @Prop({ mutable: true }) monochrome?: boolean = false;\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop({ mutable: true }) theme?: IcThemeMode = \"inherit\";\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, IC_INHERITED_ARIA);\n this.updateTheme();\n this.el.setAttribute(\"exportparts\", \"link\");\n }\n\n componentDidLoad(): void {\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n });\n }\n\n disconnectedCallback(): void {\n this.hostMutationObserver?.disconnect();\n }\n\n @Listen(\"brandChange\", { target: \"document\" })\n brandChangeHandler({ detail }: CustomEvent<IcBrand>): void {\n this.updateTheme(detail.mode);\n }\n\n /**\n * Sets focus on the link.\n */\n @Method()\n async setFocus(): Promise<void> {\n this.el.shadowRoot?.querySelector(\"a\")?.focus();\n }\n\n private updateTheme(mode: IcBrandForeground | null = null): void {\n const theme = getBrandFromContext(this.el, mode);\n\n if (theme !== IcBrandForegroundEnum.Default) {\n this.monochrome = true;\n this.theme =\n theme === IcBrandForegroundEnum.Light\n ? IcBrandForegroundEnum.Dark\n : IcBrandForegroundEnum.Light;\n }\n }\n\n private hasRouterSlot(): boolean {\n this.routerSlot = this.el.querySelector('[slot=\"router-item\"]');\n if (this.routerSlot) {\n this.routerSlot.ariaLabel = this.routerSlot.textContent;\n }\n return !!this.routerSlot;\n }\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(({ attributeName }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && IC_INHERITED_ARIA.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n }\n });\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private setDownloadAttribute = (\n value: string | boolean | undefined\n ): string | undefined => {\n if (typeof value === \"boolean\") {\n return value ? \"\" : undefined;\n } else {\n return value === \"true\" ? \"\" : value === \"false\" ? undefined : value;\n }\n };\n\n render() {\n const {\n download,\n href,\n hreflang,\n referrerpolicy,\n rel,\n target,\n monochrome,\n theme,\n } = this;\n\n return (\n <Host\n class={{\n [\"ic-link\"]: true,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-link-monochrome\"]: !!monochrome,\n }}\n >\n {this.hasRouterSlot() ? (\n <slot name=\"router-item\"></slot>\n ) : (\n <a\n class={{\n [\"link\"]: !!href,\n }}\n download={this.setDownloadAttribute(download)}\n href={href}\n hrefLang={hreflang}\n referrerPolicy={referrerpolicy}\n rel={rel}\n target={target}\n tabindex={href ? \"0\" : \"-1\"}\n {...this.inheritedAttributes}\n part=\"link\"\n >\n <slot />\n {target === \"_blank\" && (\n <span class=\"ic-link-open-in-new-icon\" innerHTML={OpenInNew} />\n )}\n </a>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"0LAAA,MAAMA,EAAY,qmMAClB,MAAAC,EAAeD,E,MC+BFE,EAAI,MAPjB,WAAAC,CAAAC,G,UAQUC,KAAAC,oBAA+C,GAE/CD,KAAAE,qBAAgD,KAOhDF,KAAAG,SAA8B,MAebH,KAAAI,WAAuB,MAoBvBJ,KAAAK,MAAsB,UAqDvCL,KAAAM,qBAAwBC,IAC9B,IAAIC,EAAuB,MAC3BD,EAAaE,SAAQ,EAAGC,oBACtB,GAAIA,EAAe,CACjB,MAAMC,EAAYX,KAAKY,GAAGC,aAAaH,GACvC,GAAIC,GAAaG,EAAkBC,SAASL,GAAgB,CAC1DV,KAAKC,oBAAoBS,GAAiBC,EAC1CH,EAAuB,I,MAI7B,GAAIA,EAAsB,CACxBQ,EAAYhB,K,GAIRA,KAAAiB,qBACNC,IAEA,UAAWA,IAAU,UAAW,CAC9B,OAAOA,EAAQ,GAAKC,S,KACf,CACL,OAAOD,IAAU,OAAS,GAAKA,IAAU,QAAUC,UAAYD,C,GAzEnE,iBAAAE,GACEpB,KAAKC,oBAAsBoB,EAAkBrB,KAAKY,GAAIE,GACtDd,KAAKsB,cACLtB,KAAKY,GAAGW,aAAa,cAAe,O,CAGtC,gBAAAC,GACExB,KAAKE,qBAAuB,IAAIuB,iBAAiBzB,KAAKM,sBACtDN,KAAKE,qBAAqBwB,QAAQ1B,KAAKY,GAAI,CACzCe,WAAY,M,CAIhB,oBAAAC,G,OACEC,EAAA7B,KAAKE,wBAAoB,MAAA2B,SAAA,SAAAA,EAAEC,Y,CAI7B,kBAAAC,EAAmBC,OAAEA,IACnBhC,KAAKsB,YAAYU,EAAOC,K,CAO1B,cAAMC,G,SACJC,GAAAN,EAAA7B,KAAKY,GAAGwB,cAAU,MAAAP,SAAA,SAAAA,EAAEQ,cAAc,QAAI,MAAAF,SAAA,SAAAA,EAAEG,O,CAGlC,WAAAhB,CAAYW,EAAiC,MACnD,MAAM5B,EAAQkC,EAAoBvC,KAAKY,GAAIqB,GAE3C,GAAI5B,IAAUmC,EAAsBC,QAAS,CAC3CzC,KAAKI,WAAa,KAClBJ,KAAKK,MACHA,IAAUmC,EAAsBE,MAC5BF,EAAsBG,KACtBH,EAAsBE,K,EAIxB,aAAAE,GACN5C,KAAK6C,WAAa7C,KAAKY,GAAGyB,cAAc,wBACxC,GAAIrC,KAAK6C,WAAY,CACnB7C,KAAK6C,WAAWC,UAAY9C,KAAK6C,WAAWE,W,CAE9C,QAAS/C,KAAK6C,U,CA8BhB,MAAAG,GACE,MAAM7C,SACJA,EAAQ8C,KACRA,EAAIC,SACJA,EAAQC,eACRA,EAAcC,IACdA,EAAGC,OACHA,EAAMjD,WACNA,EAAUC,MACVA,GACEL,KAEJ,OACEsD,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,CAAC,WAAY,KACb,CAAC,YAAYpD,KAAUA,IAAU,UACjC,CAAC,wBAAyBD,IAG3BJ,KAAK4C,gBACJU,EAAA,QAAMI,KAAK,gBAEXJ,EAAA,IAAAK,OAAAC,OAAA,CACEH,MAAO,CACL,CAAC,UAAWR,GAEd9C,SAAUH,KAAKiB,qBAAqBd,GACpC8C,KAAMA,EACNY,SAAUX,EACVY,eAAgBX,EAChBC,IAAKA,EACLC,OAAQA,EACRU,SAAUd,EAAO,IAAM,MACnBjD,KAAKC,oBAAmB,CAC5B+D,KAAK,SAELV,EAAA,aACCD,IAAW,UACVC,EAAA,QAAMG,MAAM,2BAA2BQ,UAAWC,K","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icAccordionCss","IcAccordionStyle0","accordionIds","EXPANDED_CONTENT_OPENED_CLASS","Accordion","constructor","hostRef","this","accordionId","CONTENT_VISIBILITY_PROPERTY","disabled","expanded","heading","message","size","theme","toggleExpanded","accordionClicked","emit","id","setAccordionAnimation","el","duration","property","delay","window","matchMedia","matches","style","transitionDuration","transitionProperty","transitionDelay","setExpandedContentStyle","ev","expandedContent","propertyName","clientHeight","classList","add","height","hideExpandedContent","setProperty","animateExpandedContent","expandedContentEl","elementHeight","scrollHeight","addEventListener","e","remove","watchDisabledHandler","removeDisabledFalse","handleExpandedWatch","setFocus","_a","accordionBtnHeading","focus","componentWillLoad","disconnectedCallback","removeEventListener","componentDidLoad","render","h","Host","key","class","ref","tabindex","onClick","isSlotUsed","name","variant","innerHTML","chevronIcon","role"],"sources":["src/components/ic-accordion/ic-accordion.css?tag=ic-accordion&encapsulation=shadow","src/components/ic-accordion/ic-accordion.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n border-bottom: var(--ic-space-1px) solid var(--ic-accordion-divider);\n}\n\n:host .expand-chevron {\n color: var(--ic-accordion-chevron);\n}\n\n:host(.ic-accordion-disabled) .expand-chevron {\n color: var(--ic-accordion-chevron-disabled);\n}\n\n.section-button.small {\n padding: var(--ic-space-xxs) var(--ic-space-xs);\n}\n\n.section-button.large {\n padding: var(--ic-space-sm) var(--ic-space-xs);\n}\n\n:host(:first-of-type) {\n border-top: var(--ic-space-1px) solid var(--ic-accordion-divider);\n}\n\n:focus {\n outline: none;\n}\n\n.section-button {\n background-color: transparent;\n display: flex;\n align-items: center;\n width: 100%;\n padding: var(--ic-space-xs);\n font-weight: var(--ic-font-weight-bold);\n border: none;\n}\n\n.section-header {\n --ic-typography-color: var(--ic-accordion-heading-text);\n\n color: var(--ic-accordion-heading-text);\n text-align: left;\n flex: 1 0;\n}\n\n:host(.ic-accordion-disabled) .section-header {\n --ic-typography-color: var(--ic-accordion-heading-text-disabled);\n\n color: var(--ic-accordion-heading-text-disabled);\n}\n\nbutton:hover {\n background-color: var(--ic-accordion-background-hover);\n cursor: pointer;\n}\n\nbutton:active {\n background-color: var(--ic-accordion-background-pressed);\n}\n\nbutton:focus {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n transition: var(--ic-transition-duration-fast);\n}\n\nbutton:disabled {\n pointer-events: none;\n}\n\n.icon-container {\n margin: 0 var(--ic-space-xs) 0 0;\n display: flex;\n align-items: center;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n color: var(--ic-accordion-icon);\n}\n\n:host(.ic-accordion-disabled) .icon-container {\n color: var(--ic-accordion-icon-disabled);\n}\n\n::slotted(svg) {\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n}\n\n.expand-chevron {\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n margin-left: calc(var(--ic-space-xl) + var(--ic-space-xs));\n transform: rotate(90deg);\n justify-self: end;\n}\n\n.content-expanded-chevron {\n transform: rotate(-90deg);\n}\n\n.expanded-content {\n --ic-typography-color: var(--ic-accordion-body-text);\n\n color: var(--ic-accordion-body-text);\n height: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n visibility: var(--ic-expanded-content-visibility, hidden);\n}\n\n.expanded-content-inner {\n padding: var(--ic-space-xs);\n}\n\n.expanded-content-opened {\n overflow: visible;\n}\n\n@media (forced-colors: active) {\n button:focus {\n border: var(--ic-border-hc) !important;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n button:focus {\n transition: none;\n }\n}\n","import {\n Component,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n Host,\n Watch,\n Method,\n} from \"@stencil/core\";\nimport { isSlotUsed, removeDisabledFalse } from \"../../utils/helpers\";\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\nimport { IcSizes, IcThemeMode } from \"../../utils/types\";\n\nlet accordionIds = 0;\nconst EXPANDED_CONTENT_OPENED_CLASS = \"expanded-content-opened\";\n\n/**\n * @slot heading - Content is placed as the accordion heading.\n * @slot icon - Content is placed to the left of the heading.\n */\n\n@Component({\n tag: \"ic-accordion\",\n styleUrl: \"ic-accordion.css\",\n shadow: true,\n})\nexport class Accordion {\n private accordionId = `ic-accordion-${accordionIds++}`;\n private expandedContentEl?: HTMLDivElement;\n private accordionBtnHeading?: HTMLButtonElement;\n private CONTENT_VISIBILITY_PROPERTY = \"--ic-expanded-content-visibility\";\n\n @Element() el: HTMLIcAccordionElement;\n\n /**\n * If `true`, the accordion will be disabled.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the accordion appears expanded.\n */\n @Prop({ mutable: true }) expanded?: boolean = false;\n\n /**\n * The section header outlining section content.\n */\n @Prop() heading?: string = \"\";\n\n /**\n * The main body message of the accordion.\n */\n @Prop() message?: string = \"\";\n\n /**\n * The size of the accordion.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * @internal Emitted when accordion is clicked.\n */\n @Event() accordionClicked: EventEmitter<{ id: string }>;\n\n // Every time expanded is set via toggleExpanded or accordionGroup, animate to open or close\n @Watch(\"expanded\")\n handleExpandedWatch(): void {\n this.animateExpandedContent();\n }\n\n /**\n * Sets focus on accordion heading.\n */\n @Method()\n async setFocus(): Promise<void> {\n this.accordionBtnHeading?.focus();\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n disconnectedCallback(): void {\n const expandedContentEl = this.expandedContentEl;\n if (expandedContentEl) {\n expandedContentEl.removeEventListener(\n \"transitionend\",\n (e) => this.setExpandedContentStyle(e, expandedContentEl),\n true\n );\n expandedContentEl.removeEventListener(\n \"transitionend\",\n (e) => this.hideExpandedContent(e, expandedContentEl),\n true\n );\n }\n }\n\n componentDidLoad(): void {\n // So accordion opens by default if expanded set to true\n if (this.expanded && this.expandedContentEl) {\n this.expandedContentEl.style.height = \"auto\";\n this.expandedContentEl.style.setProperty(\n this.CONTENT_VISIBILITY_PROPERTY,\n \"visible\"\n );\n this.expandedContentEl.classList.add(EXPANDED_CONTENT_OPENED_CLASS);\n }\n }\n\n private toggleExpanded = (): void => {\n this.expanded = !this.expanded;\n this.accordionClicked.emit({ id: this.accordionId });\n };\n\n // Set accordion animation\n private setAccordionAnimation = (\n el: HTMLElement,\n duration: string,\n property: string,\n delay: string\n ) => {\n if (!window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n el.style.transitionDuration = `${duration}ms`;\n el.style.transitionProperty = property;\n el.style.transitionDelay = delay;\n } else {\n el.style.transitionDuration = \"0ms\";\n el.style.transitionProperty = \"none\";\n el.style.transitionDelay = \"0ms\";\n }\n };\n\n private setExpandedContentStyle = (\n ev: TransitionEvent,\n expandedContent: HTMLDivElement\n ) => {\n if (ev.propertyName === \"height\" && expandedContent.clientHeight > 0) {\n expandedContent.classList.add(EXPANDED_CONTENT_OPENED_CLASS);\n expandedContent.style.height = \"auto\";\n }\n };\n\n private hideExpandedContent = (\n ev: TransitionEvent,\n expandedContent: HTMLDivElement\n ) => {\n if (ev.propertyName === \"height\" && expandedContent.clientHeight === 0) {\n expandedContent.style.setProperty(\n this.CONTENT_VISIBILITY_PROPERTY,\n \"hidden\"\n );\n }\n };\n\n private animateExpandedContent = () => {\n if (this.expandedContentEl) {\n const expandedContentEl = this.expandedContentEl;\n const elementHeight = expandedContentEl.scrollHeight;\n if (elementHeight > 0 && this.expanded) {\n expandedContentEl.style.setProperty(\n this.CONTENT_VISIBILITY_PROPERTY,\n \"visible\"\n );\n expandedContentEl.style.height = `${elementHeight}px`;\n this.setAccordionAnimation(\n expandedContentEl,\n \"300\",\n \"height\",\n \"ease-out\"\n );\n\n expandedContentEl.addEventListener(\n \"transitionend\",\n (e: TransitionEvent) => {\n this.setExpandedContentStyle(e, expandedContentEl);\n }\n );\n } else if (!this.expanded) {\n const expandedContentEl = this.expandedContentEl;\n expandedContentEl.style.height = `${expandedContentEl.scrollHeight}px`;\n if (expandedContentEl.scrollHeight > 0 && !this.expanded) {\n expandedContentEl.style.height = \"0\";\n this.setAccordionAnimation(\n expandedContentEl,\n \"300\",\n \"height\",\n \"ease-in\"\n );\n expandedContentEl.classList.remove(EXPANDED_CONTENT_OPENED_CLASS);\n }\n expandedContentEl.addEventListener(\"transitionend\", (e) => {\n this.hideExpandedContent(e, expandedContentEl);\n });\n }\n }\n };\n\n render() {\n const { size, disabled, expanded, theme } = this;\n return (\n <Host\n id={this.accordionId}\n class={{\n [\"ic-accordion-disabled\"]: !!disabled,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n aria-disabled={disabled ? \"true\" : \"false\"}\n >\n <button\n ref={(el) => (this.accordionBtnHeading = el)}\n id={`${this.accordionId}-button`}\n disabled={disabled}\n tabindex={disabled ? -1 : 0}\n class={{\n [`${size}`]: true,\n [\"section-button\"]: true,\n [\"section-button-open\"]: !!expanded && !disabled,\n }}\n aria-expanded={`${expanded}`}\n aria-controls=\"expanded-content-area\"\n onClick={this.toggleExpanded}\n >\n {isSlotUsed(this.el, \"icon\") && (\n <div class=\"icon-container\">\n <slot name=\"icon\" />\n </div>\n )}\n <ic-typography variant=\"subtitle-large\" class=\"section-header\">\n {isSlotUsed(this.el, \"heading\") ? (\n <slot name=\"heading\" />\n ) : (\n this.heading\n )}\n </ic-typography>\n <span\n class={{\n [\"expand-chevron\"]: true,\n [\"content-expanded-chevron\"]: !!expanded && !disabled,\n }}\n aria-hidden=\"true\"\n innerHTML={chevronIcon}\n />\n </button>\n <div\n class={{\n [\"expanded-content\"]: true,\n }}\n aria-labelledby={`${this.accordionId}-button`}\n role=\"region\"\n aria-hidden={`${!expanded}`}\n id=\"expanded-content-area\"\n ref={(el) => (this.expandedContentEl = el)}\n >\n <div class=\"expanded-content-inner\">\n {this.message ? (\n <ic-typography variant=\"body\">{this.message}</ic-typography>\n ) : (\n <slot />\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}