@itcenteratunihelsinki/huds-lib 0.8.61 → 0.8.62

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 (34) hide show
  1. package/components/hy-menu-main-group2.js +20 -27
  2. package/components/hy-menu-main-group2.js.map +1 -1
  3. package/components/menu-language.js +4 -3
  4. package/components/menu-language.js.map +1 -1
  5. package/components/site-search.js +14 -78
  6. package/components/site-search.js.map +1 -1
  7. package/dist/cjs/huds-lib.cjs.js +1 -1
  8. package/dist/cjs/hy-breadcrumbs_15.cjs.entry.js +17 -80
  9. package/dist/cjs/hy-breadcrumbs_15.cjs.entry.js.map +1 -1
  10. package/dist/cjs/hy-menu-main-group.cjs.entry.js +19 -26
  11. package/dist/cjs/hy-menu-main-group.cjs.entry.js.map +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/collection/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.js +24 -31
  14. package/dist/collection/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.js.map +1 -1
  15. package/dist/collection/components/hy-navigation/menu-language/menu-language.js +4 -3
  16. package/dist/collection/components/hy-navigation/menu-language/menu-language.js.map +1 -1
  17. package/dist/collection/components/hy-site-header/site-search/site-search.css +13 -2
  18. package/dist/collection/components/hy-site-header/site-search/site-search.js +36 -82
  19. package/dist/collection/components/hy-site-header/site-search/site-search.js.map +1 -1
  20. package/dist/esm/huds-lib.js +1 -1
  21. package/dist/esm/hy-breadcrumbs_15.entry.js +17 -80
  22. package/dist/esm/hy-breadcrumbs_15.entry.js.map +1 -1
  23. package/dist/esm/hy-menu-main-group.entry.js +19 -26
  24. package/dist/esm/hy-menu-main-group.entry.js.map +1 -1
  25. package/dist/esm/loader.js +1 -1
  26. package/dist/huds-lib/huds-lib.esm.js +1 -1
  27. package/dist/huds-lib/huds-lib.esm.js.map +1 -1
  28. package/dist/huds-lib/hy-breadcrumbs_15.entry.js +1 -1
  29. package/dist/huds-lib/hy-breadcrumbs_15.entry.js.map +1 -1
  30. package/dist/huds-lib/hy-menu-main-group.entry.js +1 -1
  31. package/dist/huds-lib/hy-menu-main-group.entry.js.map +1 -1
  32. package/dist/types/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.d.ts +2 -5
  33. package/dist/types/components/hy-site-header/site-search/site-search.d.ts +1 -6
  34. package/package.json +2 -2
@@ -27,13 +27,19 @@ const HyMenuMainGroup = class {
27
27
  this.donate = undefined;
28
28
  this.isMenuOpen = false;
29
29
  }
30
+ async componentWillLoad() {
31
+ this._dataMainMenu = await globalScript.jsonParserWorker(this.dataMainMenu);
32
+ }
30
33
  handleComponentClick(event) {
31
- event.stopPropagation();
32
- this.emitEvent();
33
34
  this.isMenuOpen = !this.isMenuOpen;
35
+ this.emitEvent();
34
36
  if (this.isMenuOpen) {
35
37
  this.adjustMainMenuPosition(event.target);
36
38
  }
39
+ if (!this.isMenuOpen) {
40
+ this.showBackdropShadow('close');
41
+ }
42
+ event.stopPropagation();
37
43
  }
38
44
  handleComponentKeyDown(event) {
39
45
  event.stopPropagation();
@@ -51,11 +57,20 @@ const HyMenuMainGroup = class {
51
57
  }
52
58
  }
53
59
  }
60
+ // Handle events that should close the menu.
61
+ handleOutsideMenuClick(event) {
62
+ if (this.isMenuOpen) {
63
+ this.isMenuOpen = false;
64
+ this.handleTopMenuClose(event);
65
+ }
66
+ event.stopPropagation();
67
+ }
54
68
  emitEvent() {
55
69
  // Close other panels if they are open (lang menu, search, main menu, ..).
56
70
  this.universityMainMenuToggled.emit();
57
71
  this.mobileMenuTopToggle.emit();
58
72
  }
73
+ // TODO: Cleanup this. Find cleaner way to do positioning.
59
74
  adjustMainMenuPosition(target) {
60
75
  let hyTopHeader = this.el.closest(".hy-site-header__content-top");
61
76
  if (hyTopHeader && !hyTopHeader.hasAttribute("is-mobile")) {
@@ -72,6 +87,7 @@ const HyMenuMainGroup = class {
72
87
  this.showBackdropShadow("open", headerHeight);
73
88
  }
74
89
  }
90
+ // TODO: Handle backdrop with CSS.
75
91
  showBackdropShadow(state = "close", top = 0) {
76
92
  let hyHeader = this.el.closest(".hy-site-header");
77
93
  let hyBackdropDiv = hyHeader.children[0];
@@ -89,35 +105,12 @@ const HyMenuMainGroup = class {
89
105
  }
90
106
  }
91
107
  }
92
- async componentWillLoad() {
93
- this._dataMainMenu = await globalScript.jsonParserWorker(this.dataMainMenu);
94
- }
95
108
  handleTopMenuClose(event) {
96
109
  this.isMenuOpen = false;
97
110
  this.mobileMenuTopToggle.emit();
98
- this.showBackdropShadow();
111
+ this.showBackdropShadow('close');
99
112
  event.stopPropagation();
100
113
  }
101
- // Close the University main menu if user clicks anywhere outside the component.
102
- handleOutsideMenuClick(event) {
103
- if (this.isMenuOpen) {
104
- this.isMenuOpen = false;
105
- this.handleTopMenuClose(event);
106
- }
107
- event.stopPropagation();
108
- }
109
- // CLose the University main menu if user opens the desktop menu panel.
110
- desktopMenuToggled() {
111
- this.isMenuOpen = false;
112
- }
113
- // CLose the University main menu if user opens the search panel
114
- searchPanelToggled() {
115
- this.isMenuOpen = false;
116
- }
117
- // CLose the University main menu if user opens the language menu panel.
118
- languageMenuToggled() {
119
- this.isMenuOpen = false;
120
- }
121
114
  render() {
122
115
  const white = "var(--grayscale-white)";
123
116
  const logoSizeGroup = this.isMobile ? utils.SiteLogoSize.small : utils.SiteLogoSize.small;
@@ -1 +1 @@
1
- {"file":"hy-menu-main-group.entry.cjs.js","mappings":"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","names":["jsonParserWorker","SiteLogoSize","ColorVariant","h","Host"],"sources":["./src/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.scss?tag=hy-menu-main-group&encapsulation=shadow","./src/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host(.menu--main-group) {\n align-items: center;\n display: flex;\n flex-flow: row;\n margin-left: 28px;\n\n @include breakpoint($extrawide) {\n margin-right: auto;\n }\n}\n\n.menu--main-group__toggle {\n @include font-size(14px, 16px);\n @include font-weight($semibold);\n align-items: center;\n background: var(--grayscale-black);\n border: 0 none;\n color: var(--grayscale-white);\n display: flex;\n flex-flow: row;\n font-family: var(--main-font-family);\n letter-spacing: -0.44px;\n margin: 0 -4px;\n padding: 0;\n position: relative;\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n cursor: pointer;\n\n span {\n color: var(--grayscale-medium);\n }\n\n svg {\n fill: var(--grayscale-medium);\n }\n }\n\n .toggle__caret {\n svg {\n @include breakpoint($wide) {\n height: 15.27px;\n width: 3px;\n }\n @include breakpoint($extrawide) {\n height: 14px;\n width: 3px;\n }\n }\n }\n\n span {\n @include breakpoint($wide) {\n margin-left: 17px;\n }\n }\n\n &.is-open {\n &:after {\n border-bottom: 3px solid white;\n bottom: -10px;\n content: \" \";\n position: absolute;\n width: 100%;\n }\n\n .toggle__close {\n @include breakpoint($wide) {\n height: 15px;\n width: 15px;\n\n svg {\n height: 15px;\n width: 15px;\n }\n }\n }\n\n span {\n @include breakpoint($wide) {\n margin-left: 10px;\n }\n }\n }\n}\n\n.menu--main-group__dropdown {\n display: none;\n visibility: hidden;\n\n &.is-open {\n background-color: var(--grayscale-black);\n border-radius: 0 0 5px 5px;\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2);\n color: var(--grayscale-white);\n display: flex;\n font-family: var(--main-font-family);\n left: 0;\n margin: 0;\n padding: 6px 0 20px;\n position: absolute;\n top: 0;\n visibility: visible;\n width: 100%;\n z-index: 511;\n\n .list {\n display: flex;\n flex-flow: column;\n justify-items: center;\n padding-top: 14px;\n position: relative;\n }\n\n .panel-toggle {\n background-color: transparent;\n border: none;\n position: absolute;\n right: 0;\n top: 0;\n\n @include breakpoint($wide) {\n padding: 26px 32px;\n }\n\n &__label {\n @include font-size(16px, 20px);\n @include font-weight($bold);\n color: var(--grayscale-white);\n display: flex;\n font-family: var(--main-font-family);\n letter-spacing: -0.5px;\n text-transform: uppercase;\n\n &__title {\n padding-right: 12px;\n }\n\n &:hover {\n cursor: pointer;\n span {\n color: var(--grayscale-medium);\n }\n svg {\n fill: var(--grayscale-medium);\n }\n }\n }\n }\n\n .menu-main-link {\n @include font-size(16px, 20px);\n align-items: center;\n display: flex;\n font-family: var(--main-font-family);\n flex-direction: row;\n margin-bottom: 20px;\n text-decoration: none;\n\n @include breakpoint($extrawide) {\n @include font-size(14px, 18px);\n }\n\n &:hover {\n span {\n color: var(--grayscale-medium);\n }\n svg {\n fill: var(--grayscale-medium);\n }\n }\n }\n .menu--main-group__label {\n color: var(--grayscale-white);\n margin-left: 12px;\n }\n }\n}\n\n:host(.menu--main-group--mobile) {\n align-items: center;\n display: flex;\n flex-flow: row;\n position: relative;\n}\n\n.menu--main-group__mobile-toggle {\n border: none;\n background: transparent;\n padding: 15px 12px;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.menu--main-group__dropdown__top {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: 23px;\n}\n\n.menu--main-group__dropdown__close {\n border: none;\n background-color: transparent;\n padding: 0;\n margin: 0;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.menu--main-group__logo-container .hy-site-logo__label.group {\n max-width: 250px;\n}\n\n.menu--main-group__dropdown__items {\n display: flex;\n flex-direction: column;\n\n .menu-main-link {\n @include font-size(15px, 20px);\n\n background-color: var(--grayscale-dark-text);\n color: var(--grayscale-white);\n font-family: var(--main-font-family);\n letter-spacing: -0.5px;\n margin-bottom: 8px;\n padding: 14px 20px;\n text-decoration: none;\n width: 100%;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n.menu--main-group__dropdown__donate {\n display: flex;\n flex-direction: row;\n justify-content: center;\n background-color: var(--grayscale-dark-text);\n position: fixed;\n bottom: 0;\n margin-left: -20px;\n width: 100%;\n\n .hy-link__donate.group {\n @include font-size(16px, 16px);\n @include font-weight($semibold);\n\n display: flex;\n color: var(--grayscale-white);\n font-family: var(--main-font-family);\n margin: 20px auto 16px auto;\n text-decoration: none;\n\n .hy-link__donate__label {\n margin-left: 6px;\n }\n }\n}\n\n.menu--main-group__dropdown--mobile {\n -webkit-box-direction: normal;\n -webkit-box-orient: vertical;\n background-color: var(--grayscale-black);\n bottom: 0px;\n display: flex;\n flex-direction: column;\n justify-items: space-between;\n max-width: 400px;\n overflow: hidden;\n padding: 0px;\n place-items: stretch;\n position: fixed;\n right: 0px;\n top: 0px;\n transform: translateX(100%);\n transition: all 0.3s ease 0s;\n visibility: hidden;\n width: 0px;\n\n &.is-open {\n padding: 50px 20px 20px;\n transform: translateX(0px);\n transition: transform 0.3s cubic-bezier(0, 0, 0.3, 1);\n visibility: visible;\n width: 90%;\n z-index: 101;\n\n &::after {\n opacity: 1;\n visibility: visible;\n }\n }\n}\n","export interface MainMenu {\n label: string;\n url: string;\n menuLinkId: string;\n}\n\nexport interface DonateLink {\n url: string;\n label: string;\n}\n\nimport {Component, Host, h, Element, Prop, State, Listen, Event, EventEmitter} from \"@stencil/core\";\nimport {ColorVariant, SiteLogoSize} from \"../../../utils/utils\";\nimport {jsonParserWorker} from \"../../../global/globalScript\";\n\nlet keys = {\n enter: \"Enter\",\n};\n\n@Component({\n tag: \"hy-menu-main-group\",\n styleUrl: \"hy-menu-main-group.scss\",\n shadow: true,\n})\nexport class HyMenuMainGroup {\n @Element() el: HTMLElement;\n @Prop() menuLabel: string = \"University main menu\";\n @Prop() menuLabelClose: string = \"Close\";\n @Prop() dataMainMenu: MainMenu[] | string;\n @Prop() isMobile: boolean = false;\n @Prop() logoUrl?: string;\n @Prop() logoLabel?: string;\n @Prop() siteLabel?: string;\n @Prop() siteUrl?: string;\n @Prop() donate: DonateLink[];\n @State() isMenuOpen: boolean = false;\n\n @Event() universityMainMenuToggled: EventEmitter;\n @Event() mobileMenuTopToggle: EventEmitter;\n\n private _dataMainMenu: MainMenu[];\n\n @Listen(\"click\", {capture: true})\n handleComponentClick(event) {\n event.stopPropagation();\n this.emitEvent();\n\n this.isMenuOpen = !this.isMenuOpen;\n if (this.isMenuOpen) {\n this.adjustMainMenuPosition(event.target);\n }\n }\n\n @Listen(\"keydown\")\n handleComponentKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n const key = event.code;\n let target = event.target as HTMLButtonElement;\n\n if (key === \"Escape\" && this.isMenuOpen) {\n this.isMenuOpen = false;\n this.emitEvent();\n }\n\n if (target && [keys.enter].includes(key)) {\n this.isMenuOpen = !this.isMenuOpen;\n\n if (this.isMenuOpen) {\n this.emitEvent();\n this.adjustMainMenuPosition(target);\n }\n }\n }\n\n emitEvent() {\n // Close other panels if they are open (lang menu, search, main menu, ..).\n this.universityMainMenuToggled.emit();\n this.mobileMenuTopToggle.emit();\n }\n\n adjustMainMenuPosition(target) {\n let hyTopHeader = this.el.closest(\".hy-site-header__content-top\") as HTMLElement;\n\n if (hyTopHeader && !hyTopHeader.hasAttribute(\"is-mobile\")) {\n let mainMenuToggle = target.shadowRoot.querySelector(\".menu--main-group__toggle\") as HTMLElement;\n let mainMenuDropdown = target.shadowRoot.querySelector(\".menu--main-group__dropdown\") as HTMLElement;\n let mainMenuList = target.shadowRoot.querySelector(\".list\") as HTMLElement;\n if (mainMenuDropdown && mainMenuList && mainMenuToggle) {\n let rectHeader = hyTopHeader.getBoundingClientRect();\n let rectMenuToggle = mainMenuToggle.getBoundingClientRect();\n mainMenuDropdown.style.top = `${rectHeader.height}px`;\n\n mainMenuList.style.left = `${rectMenuToggle.left}px`;\n }\n let headerHeight = hyTopHeader.offsetHeight + 270;\n\n this.showBackdropShadow(\"open\", headerHeight);\n }\n }\n\n showBackdropShadow(state = \"close\", top = 0) {\n let hyHeader = this.el.closest(\".hy-site-header\") as HTMLElement;\n let hyBackdropDiv = hyHeader.children[0] as HTMLElement;\n\n if (hyBackdropDiv) {\n if (state === \"open\") {\n let me = window.outerHeight - top;\n hyBackdropDiv.style.height = `${me}px`;\n hyBackdropDiv.style.top = `${top}px`;\n hyBackdropDiv.style.position = \"absolute\";\n hyBackdropDiv.classList.add(\"is-active\");\n } else {\n hyBackdropDiv.removeAttribute(\"style\");\n hyBackdropDiv.classList.remove(\"is-active\");\n }\n }\n }\n\n async componentWillLoad() {\n this._dataMainMenu = await jsonParserWorker(this.dataMainMenu);\n }\n\n handleTopMenuClose(event) {\n this.isMenuOpen = false;\n this.mobileMenuTopToggle.emit();\n this.showBackdropShadow();\n event.stopPropagation();\n }\n\n // Close the University main menu if user clicks anywhere outside the component.\n @Listen(\"click\", {target: \"window\"})\n @Listen(\"headerScrollDown\", {target: \"window\"})\n @Listen(\"headerScrollUp\", {target: \"window\"})\n handleOutsideMenuClick(event) {\n if (this.isMenuOpen) {\n this.isMenuOpen = false;\n this.handleTopMenuClose(event);\n }\n event.stopPropagation();\n }\n\n // CLose the University main menu if user opens the desktop menu panel.\n @Listen(\"menuDesktopToggled\", {target: \"document\"})\n desktopMenuToggled() {\n this.isMenuOpen = false;\n }\n\n // CLose the University main menu if user opens the search panel\n @Listen(\"searchPanelToggled\", {target: \"document\"})\n searchPanelToggled() {\n this.isMenuOpen = false;\n }\n\n // CLose the University main menu if user opens the language menu panel.\n @Listen(\"menuLanguageToggled\", {target: \"document\"})\n languageMenuToggled() {\n this.isMenuOpen = false;\n }\n\n render() {\n const white = \"var(--grayscale-white)\";\n const logoSizeGroup = this.isMobile ? SiteLogoSize.small : SiteLogoSize.small;\n const logoColorGroup = ColorVariant.white;\n\n return this.isMobile ? (\n <Host\n class={{\n \"menu--main-group--mobile\": true,\n \"menu--main-group--mobile__is-open\": this.isMenuOpen,\n }}\n >\n <button\n aria-label={this.menuLabel}\n class={{\n \"menu--main-group__mobile-toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <hy-icon icon={\"hy-icon-slim-hamburger-menu\"} size={20} fill={white} />\n </button>\n <nav\n role=\"navigation\"\n aria-hidden={this.isMenuOpen ? \"false\" : \"true\"}\n class={{\n \"menu--main-group__dropdown--mobile\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"menu--main-group__dropdown__top\">\n <div class={\"menu--main-group__logo-container\"} id={\"menu-logo\"}>\n <hy-site-logo\n is-group={true}\n size={logoSizeGroup}\n color={logoColorGroup}\n url={this.siteUrl}\n label={this.siteLabel}\n />\n </div>\n <button\n aria-label={`Close ${this.menuLabel}`}\n class=\"menu--main-group__dropdown__close\"\n onClick={(e) => this.handleTopMenuClose(e)}\n >\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={white} />\n </button>\n </div>\n <div class=\"menu--main-group__dropdown__items\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <div class=\"menu--main-group__dropdown__donate\">\n {this.donate &&\n this.donate.map((i) => {\n return (\n <a class={\"menu--secondary__item hy-link__donate group\"} href={i.url}>\n <hy-icon icon={\"hy-icon-heart-support\"} size={14} fill={logoColorGroup} />\n <span class={\"hy-link__donate__label group\"}>{i.label}</span>\n </a>\n );\n })}\n </div>\n </nav>\n </Host>\n ) : (\n <Host\n class={{\n \"menu--main-group\": true,\n \"menu--main-group__is-open\": this.isMenuOpen,\n }}\n >\n <button\n class={{\n \"menu--main-group__toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n aria-expanded={this.isMenuOpen ? \"true\" : \"false\"}\n aria-haspopup=\"menu\"\n //aria-label={this.isMenuOpen ? this._labels['close'] : this._labels['open']}\n >\n {this.isMenuOpen ? (\n <hy-icon class={\"toggle__close\"} icon={\"hy-icon-remove\"} size={8} fill={white} />\n ) : (\n <hy-icon class={\"toggle__caret\"} icon={\"hy-icon-slim-hamburger-menu\"} size={8} fill={white} />\n )}\n <span>{this.menuLabel}</span>\n </button>\n <div\n class={{\n \"menu--main-group__dropdown\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"list\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class=\"heading-icon\">\n <hy-icon icon={\"hy-icon-caret-right\"} size={10} fill={white} />\n </span>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <button\n onClick={(e) => this.handleComponentClick(e)}\n class={{\n \"panel-toggle\": true,\n }}\n aria-label=\"Close menu\"\n >\n <span class=\"panel-toggle__label\">\n <span class=\"panel-toggle__label__title\">{this.menuLabelClose}</span>\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={ColorVariant.white} />\n </span>\n </button>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"hy-menu-main-group.entry.cjs.js","mappings":"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","names":["jsonParserWorker","SiteLogoSize","ColorVariant","h","Host"],"sources":["./src/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.scss?tag=hy-menu-main-group&encapsulation=shadow","./src/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host(.menu--main-group) {\n align-items: center;\n display: flex;\n flex-flow: row;\n margin-left: 28px;\n\n @include breakpoint($extrawide) {\n margin-right: auto;\n }\n}\n\n.menu--main-group__toggle {\n @include font-size(14px, 16px);\n @include font-weight($semibold);\n align-items: center;\n background: var(--grayscale-black);\n border: 0 none;\n color: var(--grayscale-white);\n display: flex;\n flex-flow: row;\n font-family: var(--main-font-family);\n letter-spacing: -0.44px;\n margin: 0 -4px;\n padding: 0;\n position: relative;\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n cursor: pointer;\n\n span {\n color: var(--grayscale-medium);\n }\n\n svg {\n fill: var(--grayscale-medium);\n }\n }\n\n .toggle__caret {\n svg {\n @include breakpoint($wide) {\n height: 15.27px;\n width: 3px;\n }\n @include breakpoint($extrawide) {\n height: 14px;\n width: 3px;\n }\n }\n }\n\n span {\n @include breakpoint($wide) {\n margin-left: 17px;\n }\n }\n\n &.is-open {\n &:after {\n border-bottom: 3px solid white;\n bottom: -10px;\n content: \" \";\n position: absolute;\n width: 100%;\n }\n\n .toggle__close {\n @include breakpoint($wide) {\n height: 15px;\n width: 15px;\n\n svg {\n height: 15px;\n width: 15px;\n }\n }\n }\n\n span {\n @include breakpoint($wide) {\n margin-left: 10px;\n }\n }\n }\n}\n\n.menu--main-group__dropdown {\n display: none;\n visibility: hidden;\n\n &.is-open {\n background-color: var(--grayscale-black);\n border-radius: 0 0 5px 5px;\n box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2);\n color: var(--grayscale-white);\n display: flex;\n font-family: var(--main-font-family);\n left: 0;\n margin: 0;\n padding: 6px 0 20px;\n position: absolute;\n top: 0;\n visibility: visible;\n width: 100%;\n z-index: 511;\n\n .list {\n display: flex;\n flex-flow: column;\n justify-items: center;\n padding-top: 14px;\n position: relative;\n }\n\n .panel-toggle {\n background-color: transparent;\n border: none;\n position: absolute;\n right: 0;\n top: 0;\n\n @include breakpoint($wide) {\n padding: 26px 32px;\n }\n\n &__label {\n @include font-size(16px, 20px);\n @include font-weight($bold);\n color: var(--grayscale-white);\n display: flex;\n font-family: var(--main-font-family);\n letter-spacing: -0.5px;\n text-transform: uppercase;\n\n &__title {\n padding-right: 12px;\n }\n\n &:hover {\n cursor: pointer;\n span {\n color: var(--grayscale-medium);\n }\n svg {\n fill: var(--grayscale-medium);\n }\n }\n }\n }\n\n .menu-main-link {\n @include font-size(16px, 20px);\n align-items: center;\n display: flex;\n font-family: var(--main-font-family);\n flex-direction: row;\n margin-bottom: 20px;\n text-decoration: none;\n\n @include breakpoint($extrawide) {\n @include font-size(14px, 18px);\n }\n\n &:hover {\n span {\n color: var(--grayscale-medium);\n }\n svg {\n fill: var(--grayscale-medium);\n }\n }\n }\n .menu--main-group__label {\n color: var(--grayscale-white);\n margin-left: 12px;\n }\n }\n}\n\n:host(.menu--main-group--mobile) {\n align-items: center;\n display: flex;\n flex-flow: row;\n position: relative;\n}\n\n.menu--main-group__mobile-toggle {\n border: none;\n background: transparent;\n padding: 15px 12px;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.menu--main-group__dropdown__top {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: 23px;\n}\n\n.menu--main-group__dropdown__close {\n border: none;\n background-color: transparent;\n padding: 0;\n margin: 0;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.menu--main-group__logo-container .hy-site-logo__label.group {\n max-width: 250px;\n}\n\n.menu--main-group__dropdown__items {\n display: flex;\n flex-direction: column;\n\n .menu-main-link {\n @include font-size(15px, 20px);\n\n background-color: var(--grayscale-dark-text);\n color: var(--grayscale-white);\n font-family: var(--main-font-family);\n letter-spacing: -0.5px;\n margin-bottom: 8px;\n padding: 14px 20px;\n text-decoration: none;\n width: 100%;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n.menu--main-group__dropdown__donate {\n display: flex;\n flex-direction: row;\n justify-content: center;\n background-color: var(--grayscale-dark-text);\n position: fixed;\n bottom: 0;\n margin-left: -20px;\n width: 100%;\n\n .hy-link__donate.group {\n @include font-size(16px, 16px);\n @include font-weight($semibold);\n\n display: flex;\n color: var(--grayscale-white);\n font-family: var(--main-font-family);\n margin: 20px auto 16px auto;\n text-decoration: none;\n\n .hy-link__donate__label {\n margin-left: 6px;\n }\n }\n}\n\n.menu--main-group__dropdown--mobile {\n -webkit-box-direction: normal;\n -webkit-box-orient: vertical;\n background-color: var(--grayscale-black);\n bottom: 0px;\n display: flex;\n flex-direction: column;\n justify-items: space-between;\n max-width: 400px;\n overflow: hidden;\n padding: 0px;\n place-items: stretch;\n position: fixed;\n right: 0px;\n top: 0px;\n transform: translateX(100%);\n transition: all 0.3s ease 0s;\n visibility: hidden;\n width: 0px;\n\n &.is-open {\n padding: 50px 20px 20px;\n transform: translateX(0px);\n transition: transform 0.3s cubic-bezier(0, 0, 0.3, 1);\n visibility: visible;\n width: 90%;\n z-index: 101;\n\n &::after {\n opacity: 1;\n visibility: visible;\n }\n }\n}\n","export interface MainMenu {\n label: string;\n url: string;\n menuLinkId: string;\n}\n\nexport interface DonateLink {\n url: string;\n label: string;\n}\n\nimport {Component, Host, h, Element, Prop, State, Listen, Event, EventEmitter} from \"@stencil/core\";\nimport {ColorVariant, SiteLogoSize} from \"../../../utils/utils\";\nimport {jsonParserWorker} from \"../../../global/globalScript\";\n\nlet keys = {\n enter: \"Enter\",\n};\n\n@Component({\n tag: \"hy-menu-main-group\",\n styleUrl: \"hy-menu-main-group.scss\",\n shadow: true,\n})\nexport class HyMenuMainGroup {\n @Element() el: HTMLElement;\n @Prop() menuLabel: string = \"University main menu\";\n @Prop() menuLabelClose: string = \"Close\";\n @Prop() dataMainMenu: MainMenu[] | string;\n @Prop() isMobile: boolean = false;\n @Prop() logoUrl?: string;\n @Prop() logoLabel?: string;\n @Prop() siteLabel?: string;\n @Prop() siteUrl?: string;\n @Prop() donate: DonateLink[];\n @State() isMenuOpen: boolean = false;\n\n @Event() universityMainMenuToggled: EventEmitter;\n @Event() mobileMenuTopToggle: EventEmitter;\n\n private _dataMainMenu: MainMenu[];\n\n async componentWillLoad() {\n this._dataMainMenu = await jsonParserWorker(this.dataMainMenu);\n }\n\n\n @Listen(\"click\", {capture: true})\n handleComponentClick(event) {\n this.isMenuOpen = !this.isMenuOpen;\n \n this.emitEvent();\n if (this.isMenuOpen) {\n this.adjustMainMenuPosition(event.target);\n }\n if (!this.isMenuOpen) {\n this.showBackdropShadow('close');\n }\n event.stopPropagation();\n }\n\n @Listen(\"keydown\")\n handleComponentKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n const key = event.code;\n let target = event.target as HTMLButtonElement;\n\n if (key === \"Escape\" && this.isMenuOpen) {\n this.isMenuOpen = false;\n this.emitEvent();\n }\n\n if (target && [keys.enter].includes(key)) {\n this.isMenuOpen = !this.isMenuOpen;\n\n if (this.isMenuOpen) {\n this.emitEvent();\n this.adjustMainMenuPosition(target);\n }\n }\n }\n\n // Handle events that should close the menu.\n @Listen(\"click\", {target: \"window\"})\n @Listen(\"headerScrollDown\", {target: \"window\"})\n @Listen(\"headerScrollUp\", {target: \"window\"})\n @Listen(\"menuLanguageToggled\", {target: \"document\"})\n @Listen(\"searchPanelToggled\", {target: \"document\"})\n @Listen(\"menuDesktopToggled\", {target: \"document\"})\n handleOutsideMenuClick(event) {\n if (this.isMenuOpen) {\n this.isMenuOpen = false;\n this.handleTopMenuClose(event);\n }\n event.stopPropagation();\n }\n\n emitEvent() {\n // Close other panels if they are open (lang menu, search, main menu, ..).\n this.universityMainMenuToggled.emit();\n this.mobileMenuTopToggle.emit();\n }\n\n // TODO: Cleanup this. Find cleaner way to do positioning.\n adjustMainMenuPosition(target) {\n let hyTopHeader = this.el.closest(\".hy-site-header__content-top\") as HTMLElement;\n\n if (hyTopHeader && !hyTopHeader.hasAttribute(\"is-mobile\")) {\n let mainMenuToggle = target.shadowRoot.querySelector(\".menu--main-group__toggle\") as HTMLElement;\n let mainMenuDropdown = target.shadowRoot.querySelector(\".menu--main-group__dropdown\") as HTMLElement;\n let mainMenuList = target.shadowRoot.querySelector(\".list\") as HTMLElement;\n if (mainMenuDropdown && mainMenuList && mainMenuToggle) {\n let rectHeader = hyTopHeader.getBoundingClientRect();\n let rectMenuToggle = mainMenuToggle.getBoundingClientRect();\n mainMenuDropdown.style.top = `${rectHeader.height}px`;\n\n mainMenuList.style.left = `${rectMenuToggle.left}px`;\n }\n let headerHeight = hyTopHeader.offsetHeight + 270;\n\n this.showBackdropShadow(\"open\", headerHeight);\n }\n }\n\n // TODO: Handle backdrop with CSS.\n showBackdropShadow(state = \"close\", top = 0) {\n let hyHeader = this.el.closest(\".hy-site-header\") as HTMLElement;\n let hyBackdropDiv = hyHeader.children[0] as HTMLElement;\n\n if (hyBackdropDiv) {\n if (state === \"open\") {\n let me = window.outerHeight - top;\n hyBackdropDiv.style.height = `${me}px`;\n hyBackdropDiv.style.top = `${top}px`;\n hyBackdropDiv.style.position = \"absolute\";\n hyBackdropDiv.classList.add(\"is-active\");\n } else {\n hyBackdropDiv.removeAttribute(\"style\");\n hyBackdropDiv.classList.remove(\"is-active\");\n }\n }\n }\n\n\n\n handleTopMenuClose(event) {\n this.isMenuOpen = false;\n this.mobileMenuTopToggle.emit();\n this.showBackdropShadow('close');\n event.stopPropagation();\n }\n\n\n render() {\n const white = \"var(--grayscale-white)\";\n const logoSizeGroup = this.isMobile ? SiteLogoSize.small : SiteLogoSize.small;\n const logoColorGroup = ColorVariant.white;\n\n return this.isMobile ? (\n <Host\n class={{\n \"menu--main-group--mobile\": true,\n \"menu--main-group--mobile__is-open\": this.isMenuOpen,\n }}\n >\n <button\n aria-label={this.menuLabel}\n class={{\n \"menu--main-group__mobile-toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <hy-icon icon={\"hy-icon-slim-hamburger-menu\"} size={20} fill={white} />\n </button>\n <nav\n role=\"navigation\"\n aria-hidden={this.isMenuOpen ? \"false\" : \"true\"}\n class={{\n \"menu--main-group__dropdown--mobile\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"menu--main-group__dropdown__top\">\n <div class={\"menu--main-group__logo-container\"} id={\"menu-logo\"}>\n <hy-site-logo\n is-group={true}\n size={logoSizeGroup}\n color={logoColorGroup}\n url={this.siteUrl}\n label={this.siteLabel}\n />\n </div>\n <button\n aria-label={`Close ${this.menuLabel}`}\n class=\"menu--main-group__dropdown__close\"\n onClick={(e) => this.handleTopMenuClose(e)}\n >\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={white} />\n </button>\n </div>\n <div class=\"menu--main-group__dropdown__items\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <div class=\"menu--main-group__dropdown__donate\">\n {this.donate &&\n this.donate.map((i) => {\n return (\n <a class={\"menu--secondary__item hy-link__donate group\"} href={i.url}>\n <hy-icon icon={\"hy-icon-heart-support\"} size={14} fill={logoColorGroup} />\n <span class={\"hy-link__donate__label group\"}>{i.label}</span>\n </a>\n );\n })}\n </div>\n </nav>\n </Host>\n ) : (\n <Host\n class={{\n \"menu--main-group\": true,\n \"menu--main-group__is-open\": this.isMenuOpen,\n }}\n >\n <button\n class={{\n \"menu--main-group__toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n aria-expanded={this.isMenuOpen ? \"true\" : \"false\"}\n aria-haspopup=\"menu\"\n //aria-label={this.isMenuOpen ? this._labels['close'] : this._labels['open']}\n >\n {this.isMenuOpen ? (\n <hy-icon class={\"toggle__close\"} icon={\"hy-icon-remove\"} size={8} fill={white} />\n ) : (\n <hy-icon class={\"toggle__caret\"} icon={\"hy-icon-slim-hamburger-menu\"} size={8} fill={white} />\n )}\n <span>{this.menuLabel}</span>\n </button>\n <div\n class={{\n \"menu--main-group__dropdown\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"list\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class=\"heading-icon\">\n <hy-icon icon={\"hy-icon-caret-right\"} size={10} fill={white} />\n </span>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <button\n onClick={(e) => this.handleComponentClick(e)}\n class={{\n \"panel-toggle\": true,\n }}\n aria-label=\"Close menu\"\n >\n <span class=\"panel-toggle__label\">\n <span class=\"panel-toggle__label__title\">{this.menuLabelClose}</span>\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={ColorVariant.white} />\n </span>\n </button>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -15,7 +15,7 @@ const patchEsm = () => {
15
15
  const defineCustomElements = (win, options) => {
16
16
  if (typeof window === 'undefined') return Promise.resolve();
17
17
  return patchEsm().then(() => {
18
- return index.bootstrapLazy(JSON.parse("[[\"hy-main.cjs\",[[4,\"hy-main\",{\"hasSidebar\":[4,\"has-sidebar\"]}]]],[\"hy-person-profile-listing.cjs\",[[0,\"hy-person-profile-listing\",{\"items\":[16],\"col\":[1],\"inline\":[4],\"withoutIcons\":[4,\"without-icons\"],\"textSpacingTight\":[4,\"text-spacing-tight\"],\"isResearch\":[4,\"is-research\"]}]]],[\"hy-box.cjs\",[[4,\"hy-box\",{\"headerstyle\":[1],\"p\":[1],\"pl\":[1],\"pr\":[1],\"pb\":[1],\"pt\":[1],\"m\":[1],\"ml\":[1],\"mr\":[1],\"mb\":[1],\"mt\":[1],\"justify\":[1],\"align\":[1],\"h\":[2],\"bg\":[1],\"width\":[1],\"direction\":[1]}]]],[\"hy-icon.cjs\",[[0,\"hy-icon\",{\"icon\":[1],\"fill\":[1],\"size\":[2]}]]],[\"hy-person-profile.cjs\",[[0,\"hy-person-profile\",{\"personDataJson\":[1,\"person-data-json\"],\"showFullAboutText\":[1,\"show-full-about-text\"],\"hideFullAboutText\":[1,\"hide-full-about-text\"],\"organizationItemsLabelText\":[1,\"organization-items-label-text\"],\"peopleFinderReturnLink\":[1,\"people-finder-return-link\"],\"peopleFinderReturnLabel\":[1,\"people-finder-return-label\"],\"isFullAboutTextHidden\":[32],\"viewportSize\":[32]}]]],[\"hy-introduction.cjs\",[[0,\"hy-introduction\",{\"variant\":[1],\"reversed\":[4],\"limitContentWidth\":[4,\"limit-content-width\"],\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"urlTitle\":[1,\"url-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"isExternal\":[4,\"is-external\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-banner.cjs\",[[0,\"hy-banner\",{\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"urlTitle\":[1,\"url-title\"],\"headerstyle\":[1],\"isExternal\":[4,\"is-external\"]}]]],[\"hy-opening-hours_2.cjs\",[[4,\"hy-opening-hours\",{\"blockTitle\":[1,\"block-title\"],\"language\":[1],\"venueType\":[1,\"venue-type\"],\"blockId\":[1,\"block-id\"],\"nextLabel\":[1,\"next-label\"],\"prevLabel\":[1,\"prev-label\"],\"listLabel\":[1,\"list-label\"],\"buildingLabel\":[1,\"building-label\"],\"customerServiceLabel\":[1,\"customer-service-label\"],\"date\":[1],\"dateTitle\":[1,\"date-title\"],\"dateType\":[1,\"date-type\"],\"multiple\":[4],\"customLinkTitle\":[1,\"custom-link-title\"],\"customLink\":[1,\"custom-link\"],\"exceptional\":[4]}],[0,\"hy-opening-hours-content\",{\"multiple\":[4],\"selfServiceLabel\":[1,\"self-service-label\"],\"venueType\":[1,\"venue-type\"],\"dataItems\":[1,\"data-items\"]}]]],[\"hy-adjacent-image-text.cjs\",[[0,\"hy-adjacent-image-text\",{\"headerstyle\":[1],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"mainUrl\":[1,\"main-url\"],\"mainUrlTitle\":[1,\"main-url-title\"],\"mainUrlAriaLabel\":[1,\"main-url-aria-label\"],\"mainUrlIsExternal\":[4,\"main-url-is-external\"],\"mainUrl2\":[1,\"main-url-2\"],\"mainUrlTitle2\":[1,\"main-url-title-2\"],\"mainUrlAriaLabel2\":[1,\"main-url-aria-label-2\"],\"mainUrlIsExternal2\":[4,\"main-url-is-external-2\"],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-hero.cjs\",[[0,\"hy-hero\",{\"heroType\":[1,\"hero-type\"],\"heroGroupType\":[1,\"hero-group-type\"],\"colorVariant\":[1,\"color-variant\"],\"sizeVariant\":[1,\"size-variant\"],\"image\":[1],\"imageHeight\":[2,\"image-height\"],\"imageWidth\":[2,\"image-width\"],\"imageAltText\":[1,\"image-alt-text\"],\"disableLazy\":[4,\"disable-lazy\"],\"hasShortcuts\":[4,\"has-shortcuts\"],\"heading\":[1],\"description\":[1],\"url\":[1],\"urlTitle\":[1,\"url-title\"],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-shortcuts.cjs\",[[0,\"hy-shortcuts\",{\"dataItems\":[1,\"data-items\"],\"listHeading\":[1,\"list-heading\"],\"headerstyle\":[1]}]]],[\"hy-video.cjs\",[[4,\"hy-video\",{\"videoTitle\":[1,\"video-title\"],\"videoDescription\":[1,\"video-description\"],\"contextLabel\":[1,\"context-label\"],\"contextLabelVisible\":[4,\"context-label-visible\"],\"previewImageUrl\":[1,\"preview-image-url\"],\"linkToVideo\":[1,\"link-to-video\"],\"playButtonLabel\":[1,\"play-button-label\"],\"playButtonVisible\":[4,\"play-button-visible\"],\"seriesLabel\":[1,\"series-label\"],\"seriesCount\":[1,\"series-count\"],\"views\":[1],\"viewsLabel\":[1,\"views-label\"],\"duration\":[1],\"durationLabel\":[1,\"duration-label\"],\"dateAdded\":[1,\"date-added\"],\"dateAddedLabel\":[1,\"date-added-label\"],\"horizontal\":[4],\"disableLazy\":[4,\"disable-lazy\"],\"headerstyle\":[1],\"showMoreLabel\":[1,\"show-more-label\"],\"showLessLabel\":[1,\"show-less-label\"],\"simplePlayButton\":[4,\"simple-play-button\"],\"styleList\":[4,\"style-list\"],\"descCollapsed\":[32]}]]],[\"hy-events.cjs\",[[4,\"hy-events\",{\"styleGrid\":[4,\"style-grid\"],\"showMore\":[4,\"show-more\"],\"viewAllUrl\":[1,\"view-all-url\"],\"viewAllLabel\":[1,\"view-all-label\"],\"scrollLeftLabel\":[1,\"scroll-left-label\"],\"scrollRightLabel\":[1,\"scroll-right-label\"],\"scrollable\":[32]}]]],[\"hy-hero-carousel.cjs\",[[0,\"hy-hero-carousel\",{\"itemCount\":[2,\"item-count\"],\"ariaLabelNext\":[1,\"aria-label-next\"],\"ariaLabelPrev\":[1,\"aria-label-prev\"],\"ariaLabelFirstSlide\":[1,\"aria-label-first-slide\"],\"ariaLabelLastSlide\":[1,\"aria-label-last-slide\"],\"ariaLabelBulletMessage\":[1,\"aria-label-bullet-message\"],\"data\":[1]}]]],[\"hy-link-list.cjs\",[[0,\"hy-link-list\",{\"headerstyle\":[1],\"dataItems\":[1,\"data-items\"],\"listHeading\":[1,\"list-heading\"],\"variation\":[1],\"headingVariant\":[1,\"heading-variant\"]}]]],[\"hy-prominent-image.cjs\",[[1,\"hy-prominent-image\",{\"textTitle\":[1,\"text-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-user-login-form.cjs\",[[4,\"hy-user-login-form\",{\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"]}]]],[\"hy-pager_2.cjs\",[[1,\"hy-pager-item\",{\"variant\":[1],\"itemLabel\":[1,\"item-label\"],\"itemUrl\":[1,\"item-url\"],\"scAriaLabel\":[1,\"sc-aria-label\"]}],[1,\"hy-pager\"]]],[\"hy-anchor-link-list.cjs\",[[0,\"hy-anchor-link-list\",{\"listTitle\":[1,\"list-title\"],\"openLabel\":[1,\"open-label\"],\"closeLabel\":[1,\"close-label\"],\"anchorItems\":[1,\"anchor-items\"],\"isOpen\":[32]},[[0,\"handleLinkClick\",\"handleLinkClick\"]]]]],[\"hy-checkbox.cjs\",[[0,\"hy-checkbox\",{\"checkboxId\":[8,\"checkbox-id\"],\"checkboxValue\":[8,\"checkbox-value\"],\"checkboxLabel\":[1,\"checkbox-label\"],\"checkboxChecked\":[4,\"checkbox-checked\"],\"variant\":[1]}]]],[\"hy-collaboration.cjs\",[[0,\"hy-collaboration\",{\"textDescription\":[1,\"text-description\"],\"linkUrl\":[1,\"link-url\"],\"linkTitle\":[1,\"link-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAltText\":[1,\"image-alt-text\"]}]]],[\"hy-crisis-banner.cjs\",[[0,\"hy-crisis-banner\",{\"bannerTitle\":[1,\"banner-title\"],\"bannerDescription\":[1,\"banner-description\"],\"linkTitle\":[1,\"link-title\"],\"linkUrl\":[1,\"link-url\"]}]]],[\"hy-event-item.cjs\",[[0,\"hy-event-item\",{\"eventTitle\":[1,\"event-title\"],\"eventDescription\":[1,\"event-description\"],\"dateShort\":[1,\"date-short\"],\"dateLong\":[1,\"date-long\"],\"location\":[1],\"type\":[1],\"url\":[1],\"styleGrid\":[4,\"style-grid\"],\"readMoreLabel\":[1,\"read-more-label\"],\"isLong\":[32]}]]],[\"hy-list-item.cjs\",[[0,\"hy-list-item\",{\"variant\":[1],\"itemType\":[1,\"item-type\"],\"itemTitle\":[1,\"item-title\"],\"itemDescription\":[8,\"item-description\"],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"scLabel\":[1,\"sc-label\"],\"itemImageUrl\":[1,\"item-image-url\"],\"itemImageAlt\":[1,\"item-image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"relatedLinksBlockTitle\":[1,\"related-links-block-title\"],\"relatedLinks\":[1,\"related-links\"],\"imageLabel\":[1,\"image-label\"],\"outGoingUrlLabel\":[1,\"out-going-url-label\"],\"additionalInfo\":[1,\"additional-info\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"],\"truncateDescription\":[4,\"truncate-description\"],\"truncateLimit\":[2,\"truncate-limit\"],\"isExpandedRelatedContent\":[32],\"_imageMinHeight\":[32],\"_imageMinWidth\":[32]},[[0,\"keydown\",\"handleKeyDown\"],[0,\"click\",\"handleClick\"]]]]],[\"hy-person-card.cjs\",[[0,\"hy-person-card\",{\"variant\":[1],\"categoryTitle\":[1,\"category-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"firstName\":[1,\"first-name\"],\"lastName\":[1,\"last-name\"],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"scLabel\":[1,\"sc-label\"],\"positionTitle\":[1,\"position-title\"],\"department\":[1],\"field\":[1],\"email\":[1],\"phone\":[1],\"aboutInfo\":[1,\"about-info\"],\"researchNetworks\":[1,\"research-networks\"],\"studyProgramme\":[1,\"study-programme\"],\"aboutInfoLabel\":[1,\"about-info-label\"],\"researchNetworksLabel\":[1,\"research-networks-label\"],\"studyProgrammeLabel\":[1,\"study-programme-label\"],\"isMobile\":[32]}]]],[\"hy-quote.cjs\",[[1,\"hy-quote\",{\"quoteSignature\":[1,\"quote-signature\"],\"headerstyle\":[1]}]]],[\"hy-table-container.cjs\",[[4,\"hy-table-container\"]]],[\"hy-twitter-feed.cjs\",[[0,\"hy-twitter-feed\",{\"headingVariant\":[1,\"heading-variant\"],\"paragraphTitle\":[1,\"paragraph-title\"],\"twitterFeedKeyword\":[1,\"twitter-feed-keyword\"],\"tweetType\":[1,\"tweet-type\"],\"tweets\":[1]}]]],[\"hy-logo-grid_2.cjs\",[[4,\"hy-logo-grid\",{\"headingVariant\":[1,\"heading-variant\"],\"logoGridTitle\":[1,\"logo-grid-title\"]}],[0,\"hy-logo-grid-item\",{\"link\":[1],\"image\":[1]}]]],[\"hy-badge.cjs\",[[1,\"hy-badge\",{\"variant\":[1]}]]],[\"hy-link.cjs\",[[0,\"hy-link\",{\"variant\":[1],\"linkContent\":[1,\"link-content\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"]}]]],[\"hy-row.cjs\",[[4,\"hy-row\",{\"justify\":[1],\"align\":[1],\"margin\":[2]}]]],[\"hy-section-container.cjs\",[[4,\"hy-section-container\"]]],[\"hy-tiny-text.cjs\",[[1,\"hy-tiny-text\"]]],[\"hy-two-columns.cjs\",[[4,\"hy-two-columns\",{\"reversed\":[4]}]]],[\"hy-large-process-flow_2.cjs\",[[1,\"hy-large-process-flow\",{\"headerstyle\":[1],\"dataItems\":[1,\"data-items\"]}],[1,\"hy-large-process-flow-phase\",{\"dataItems\":[1,\"data-items\"]}]]],[\"hy-process_2.cjs\",[[1,\"hy-process\",{\"headerstyle\":[1],\"numberTerm\":[1,\"number-term\"],\"dataItems\":[1,\"data-items\"]}],[1,\"hy-process-flow-box\",{\"variant\":[1],\"boxNumber\":[1,\"box-number\"],\"boxTitle\":[1,\"box-title\"],\"boxDescription\":[1,\"box-description\"],\"intermediateStepTitle\":[1,\"intermediate-step-title\"],\"stepState\":[1,\"step-state\"],\"numberTerm\":[1,\"number-term\"]}]]],[\"hy-key-figure_2.cjs\",[[0,\"hy-key-figure-group\",{\"dataItems\":[1,\"data-items\"],\"headerstyle\":[1]}],[1,\"hy-key-figure\",{\"variant\":[1],\"heading\":[1],\"description\":[1]}]]],[\"hy-menu-main-group.cjs\",[[1,\"hy-menu-main-group\",{\"menuLabel\":[1,\"menu-label\"],\"menuLabelClose\":[1,\"menu-label-close\"],\"dataMainMenu\":[1,\"data-main-menu\"],\"isMobile\":[4,\"is-mobile\"],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"siteLabel\":[1,\"site-label\"],\"siteUrl\":[1,\"site-url\"],\"donate\":[16],\"isMenuOpen\":[32]},[[2,\"click\",\"handleComponentClick\"],[0,\"keydown\",\"handleComponentKeyDown\"],[8,\"click\",\"handleOutsideMenuClick\"],[8,\"headerScrollDown\",\"handleOutsideMenuClick\"],[8,\"headerScrollUp\",\"handleOutsideMenuClick\"],[4,\"menuDesktopToggled\",\"desktopMenuToggled\"],[4,\"searchPanelToggled\",\"searchPanelToggled\"],[4,\"menuLanguageToggled\",\"languageMenuToggled\"]]]]],[\"hy-image.cjs\",[[0,\"hy-image\",{\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"fetchPriority\":[1,\"fetch-priority\"],\"caption\":[1],\"aspectRatioWidth\":[2,\"aspect-ratio-width\"],\"aspectRatioHeight\":[2,\"aspect-ratio-height\"],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-paragraph-text.cjs\",[[36,\"hy-paragraph-text\",{\"variant\":[1],\"placement\":[1],\"headerstyle\":[1]}]]],[\"hy-tag.cjs\",[[1,\"hy-tag\"]]],[\"hy-content-list_2.cjs\",[[0,\"hy-content-list\",{\"linkLabel\":[1,\"link-label\"],\"noResultLabel\":[1,\"no-result-label\"],\"creditsLabel\":[1,\"credits-label\"],\"cancelledLabel\":[1,\"cancelled-label\"],\"dataItems\":[1,\"data-items\"],\"headerstyle\":[1],\"courseStateVariant\":[1,\"course-state-variant\"],\"courseRealisations\":[32]}],[0,\"hy-content-list-item\",{\"variant\":[1],\"stateVariant\":[1,\"state-variant\"],\"courseCode\":[1,\"course-code\"],\"courseName\":[1,\"course-name\"],\"isCancelled\":[4,\"is-cancelled\"],\"cancelledLabel\":[1,\"cancelled-label\"],\"courseCredits\":[1,\"course-credits\"],\"courseTags\":[1,\"course-tags\"],\"courseStartDate\":[1,\"course-start-date\"],\"courseEndDate\":[1,\"course-end-date\"],\"formattedTimeRange\":[1,\"formatted-time-range\"],\"courseStudyFormat\":[1,\"course-study-format\"],\"courseOrganisation\":[1,\"course-organisation\"],\"courseEnrollmentLink\":[1,\"course-enrollment-link\"],\"courseTeachingLanguage\":[1,\"course-teaching-language\"],\"courseLinkLabel\":[1,\"course-link-label\"]},[[0,\"keydown\",\"handleKeyDown\"]]]]],[\"hy-link-box_2.cjs\",[[0,\"hy-link-box-list\",{\"headerstyle\":[1],\"variant\":[1],\"readMoreLabel\":[1,\"read-more-label\"],\"dataItems\":[1,\"data-items\"]}],[0,\"hy-link-box\",{\"variant\":[1],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"useSlot\":[4,\"use-slot\"],\"showLogo\":[4,\"show-logo\"],\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"scLabel\":[1,\"sc-label\"],\"readMoreLabel\":[1,\"read-more-label\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-general-list_2.cjs\",[[0,\"hy-general-list\",{\"type\":[1],\"blank\":[4],\"dataItems\":[1,\"data-items\"],\"truncateDescription\":[4,\"truncate-description\"],\"truncateLimit\":[2,\"truncate-limit\"],\"hasSidebar\":[32]}],[0,\"hy-general-list-item\",{\"hasSidebar\":[4,\"has-sidebar\"],\"description\":[1],\"imageAlt\":[1,\"image-alt\"],\"imageUrl\":[1,\"image-url\"],\"disableLazy\":[4,\"disable-lazy\"],\"itemTitle\":[1,\"item-title\"],\"label\":[1],\"subLabel\":[1,\"sub-label\"],\"date\":[1],\"tag\":[1],\"type\":[1],\"url\":[1],\"listStyle\":[1,\"list-style\"],\"target\":[4]}]]],[\"hy-key-highlight_2.cjs\",[[1,\"hy-key-highlight-group\",{\"variant\":[1],\"dataItems\":[1,\"data-items\"],\"headerstyle\":[1]}],[1,\"hy-key-highlight\",{\"variant\":[1],\"heading\":[1],\"description\":[1]}]]],[\"hy-dropdown_3.cjs\",[[0,\"hy-dropdown\",{\"single\":[4],\"dropdownLabel\":[1,\"dropdown-label\"],\"dropdownId\":[1,\"dropdown-id\"],\"dropdownOptions\":[1,\"dropdown-options\"],\"defaultLabel\":[1,\"default-label\"],\"defaultOption\":[1032,\"default-option\"],\"isPanelOpen\":[32],\"isChecked\":[32],\"currentSingle\":[32]},[[8,\"click\",\"handleClick\"],[2,\"click\",\"handleSingleClick\"]]],[0,\"hy-dropdown-panel-item\",{\"isLast\":[4,\"is-last\"],\"dropdownItemId\":[8,\"dropdown-item-id\"],\"dropdownItemValue\":[8,\"dropdown-item-value\"],\"dropdownItemLabel\":[1,\"dropdown-item-label\"]}],[4,\"hy-dropdown-panel\",{\"isHidden\":[4,\"is-hidden\"]}]]],[\"hy-tabs_2.cjs\",[[4,\"hy-tabs\",{\"tabId\":[1,\"tab-id\"],\"tabListLabel\":[1,\"tab-list-label\"],\"headerstyle\":[1],\"focusTimeoutCleared\":[32],\"tabButtonTitles\":[32],\"tabPanelsState\":[32],\"tabButtons\":[32],\"tabList\":[32]},[[0,\"click\",\"clickEventListener\"],[0,\"keydown\",\"keydownEventListener\"],[0,\"keydown\",\"keyupEventListener\"],[0,\"focus\",\"focusEventHandler\"]]],[4,\"hy-tabs-item\",{\"tabTitle\":[1,\"tab-title\"]}]]],[\"hy-filter-group_6.cjs\",[[0,\"hy-filter-visibility-tool\",{\"filterVisibilityToolType\":[1,\"filter-visibility-tool-type\"]}],[0,\"hy-filter-group\",{\"filterGroupLabel\":[1,\"filter-group-label\"],\"filterGroupFilters\":[1,\"filter-group-filters\"]}],[0,\"hy-filter-list-type\",{\"filterLabel\":[1,\"filter-label\"],\"filterValue\":[1,\"filter-value\"]}],[4,\"hy-filter-group-item\",{\"filterGroupItemId\":[8,\"filter-group-item-id\"],\"filterGroupItemLabel\":[1,\"filter-group-item-label\"]}],[0,\"hy-filter-visibility-tool-reset\"],[0,\"hy-filter-visibility-tool-toggle\"]]],[\"hy-accordion-container_2.cjs\",[[4,\"hy-accordion-container\",{\"accordionid\":[1]}],[4,\"hy-accordion-item\",{\"accordiontitle\":[1],\"variant\":[1],\"headerstyle\":[1],\"showOpen\":[4,\"show-open\"],\"ready\":[32]},[[8,\"hashchange\",\"onHashChange\"],[0,\"keydown\",\"handleKeyDown\"],[0,\"click\",\"handleClick\"]]]]],[\"hy-cta-button.cjs\",[[4,\"hy-cta-button\",{\"variant\":[1],\"linkContent\":[1,\"link-content\"],\"typeButton\":[4,\"type-button\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"],\"headerstyle\":[1]}]]],[\"hy-cta-link.cjs\",[[0,\"hy-cta-link\",{\"variant\":[1],\"linkContent\":[1,\"link-content\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"]}]]],[\"hy-breadcrumbs_15.cjs\",[[0,\"hy-footer-info\",{\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"linkText\":[1,\"link-text\"],\"linkUrl\":[1,\"link-url\"],\"linkIsExternal\":[4,\"link-is-external\"],\"linkScLabel\":[1,\"link-sc-label\"],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"groupLogoUrl\":[1,\"group-logo-url\"],\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"dataFooterInfoLinks\":[1,\"data-footer-info-links\"],\"luomusFooterContent\":[1,\"luomus-footer-content\"],\"isMobile\":[32]}],[4,\"hy-site-header\",{\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"isBetaGroup\":[4,\"is-beta-group\"],\"researchGroupLabel\":[1,\"research-group-label\"],\"groupType\":[1,\"group-type\"],\"groupLogoUrl\":[1,\"group-logo-url\"],\"dataMenuLanguage\":[1,\"data-menu-language\"],\"dataMenuDonate\":[1,\"data-menu-donate\"],\"dataSiteHeaderLabels\":[1,\"data-site-header-labels\"],\"dataSiteSearchLabels\":[1,\"data-site-search-labels\"],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"siteLabel\":[1,\"site-label\"],\"siteUrl\":[1,\"site-url\"],\"showSearchLabel\":[4,\"show-search-label\"],\"noSearch\":[4,\"no-search\"],\"menuLabel\":[1,\"menu-label\"],\"menuLabelOpen\":[1,\"menu-label-open\"],\"menuLabelClose\":[1,\"menu-label-close\"],\"menuType\":[513,\"menu-type\"],\"dataMainMenuLinks\":[1,\"data-main-menu-links\"],\"dataSearchTools\":[1,\"data-search-tools\"],\"isMobile\":[32],\"isMenuOpen\":[32],\"isDesktopMenuOpen\":[32],\"isDesktopMenuDropdown\":[32],\"isTopMenuOpen\":[32],\"isBottomVisible\":[32],\"isTopVisible\":[32],\"lastScrollTop\":[32],\"delta\":[32],\"navbarHeight\":[32]},[[0,\"mobileMenuToggle\",\"mobileMenuToggle\"],[0,\"mobileMenuTopToggle\",\"mobileMenuTopToggle\"],[8,\"menuToggled\",\"mainMenuToggled\"],[9,\"scroll\",\"handleScroll\"]]],[4,\"hy-footer-base\",{\"color\":[1],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"size\":[2],\"someLabel\":[1,\"some-label\"],\"copyrightText\":[1,\"copyright-text\"],\"dataFooterBaseLinks\":[1,\"data-footer-base-links\"],\"dataFooterBaseSome\":[1,\"data-footer-base-some\"]}],[0,\"hy-breadcrumbs\",{\"dataItems\":[1,\"data-items\"],\"variant\":[1],\"headerstyle\":[1],\"menuOpen\":[32]}],[0,\"hy-footer-action\",{\"updatedText\":[1,\"updated-text\"],\"upButtonLabel\":[1,\"up-button-label\"]},[[2,\"scrollTop\",\"scrollTop\"]]],[4,\"hy-footer\"],[4,\"hy-ingress\",{\"headerstyle\":[1]}],[1,\"hy-site-search\",{\"color\":[1],\"isAlternative\":[4,\"is-alternative\"],\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"isBetaGroup\":[4,\"is-beta-group\"],\"searchLanguage\":[1,\"search-language\"],\"labels\":[1],\"searchLabels\":[1,\"search-labels\"],\"searchTools\":[1,\"search-tools\"],\"showLabel\":[4,\"show-label\"],\"size\":[2],\"dataSearchSpecialTools\":[1,\"data-search-special-tools\"],\"isSearchPanelOpen\":[32]},[[4,\"menuDesktopToggled\",\"desktopMenuToggled\"],[4,\"menuMobileToggled\",\"mobileMenuToggled\"],[4,\"menuLanguageToggled\",\"menuLanguageToggled\"],[4,\"universityMainMenuToggled\",\"universityMainMenuPanelToggled\"],[8,\"click\",\"handleWindowClick\"]]],[1,\"hy-menu-language\",{\"dataMenuLanguage\":[1,\"data-menu-language\"],\"isGroup\":[4,\"is-group\"],\"labels\":[1],\"isMenuOpen\":[32]},[[8,\"click\",\"handleOutsideMenuClick\"],[4,\"menuDesktopToggled\",\"desktopMenuToggled\"],[4,\"searchPanelToggled\",\"searchPanelToggled\"],[4,\"universityMainMenuToggled\",\"universityMainMenuPanelToggled\"],[0,\"focus\",\"handleComponentFocus\"],[0,\"click\",\"handleComponentClick\"]]],[0,\"hy-footer-link-item\",{\"label\":[1],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"mainLink\":[4,\"main-link\"],\"items\":[16],\"color\":[1],\"isMobile\":[4,\"is-mobile\"],\"variant\":[1],\"isLuomusGroup\":[4,\"is-luomus-group\"]}],[0,\"hy-search-field\",{\"label\":[1],\"isLabelBold\":[4,\"is-label-bold\"],\"labelLarge\":[4,\"label-large\"],\"isLuomusSearch\":[4,\"is-luomus-search\"],\"placeholder\":[1],\"isLabelHidden\":[4,\"is-label-hidden\"],\"inputId\":[1,\"input-id\"],\"prefillParameter\":[1,\"prefill-parameter\"],\"isInputValueEmpty\":[32]}],[4,\"hy-main-content-wrapper\"],[1,\"hy-menu-language-item\",{\"abbr\":[1],\"isActive\":[4,\"is-active\"],\"isDisabled\":[4,\"is-disabled\"],\"label\":[1],\"langCode\":[1,\"lang-code\"],\"url\":[1]}],[0,\"hy-site-logo\",{\"type\":[1],\"color\":[1],\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"label\":[1],\"size\":[2],\"url\":[1]}],[36,\"hy-heading\",{\"heading\":[1],\"isSearch\":[4,\"is-search\"],\"section\":[1],\"negative\":[4],\"headerstyle\":[1],\"hyphenatedText\":[513,\"hyphenated-text\"],\"hasChildren\":[32]}]]]]"), options);
18
+ return index.bootstrapLazy(JSON.parse("[[\"hy-main.cjs\",[[4,\"hy-main\",{\"hasSidebar\":[4,\"has-sidebar\"]}]]],[\"hy-person-profile-listing.cjs\",[[0,\"hy-person-profile-listing\",{\"items\":[16],\"col\":[1],\"inline\":[4],\"withoutIcons\":[4,\"without-icons\"],\"textSpacingTight\":[4,\"text-spacing-tight\"],\"isResearch\":[4,\"is-research\"]}]]],[\"hy-box.cjs\",[[4,\"hy-box\",{\"headerstyle\":[1],\"p\":[1],\"pl\":[1],\"pr\":[1],\"pb\":[1],\"pt\":[1],\"m\":[1],\"ml\":[1],\"mr\":[1],\"mb\":[1],\"mt\":[1],\"justify\":[1],\"align\":[1],\"h\":[2],\"bg\":[1],\"width\":[1],\"direction\":[1]}]]],[\"hy-icon.cjs\",[[0,\"hy-icon\",{\"icon\":[1],\"fill\":[1],\"size\":[2]}]]],[\"hy-person-profile.cjs\",[[0,\"hy-person-profile\",{\"personDataJson\":[1,\"person-data-json\"],\"showFullAboutText\":[1,\"show-full-about-text\"],\"hideFullAboutText\":[1,\"hide-full-about-text\"],\"organizationItemsLabelText\":[1,\"organization-items-label-text\"],\"peopleFinderReturnLink\":[1,\"people-finder-return-link\"],\"peopleFinderReturnLabel\":[1,\"people-finder-return-label\"],\"isFullAboutTextHidden\":[32],\"viewportSize\":[32]}]]],[\"hy-introduction.cjs\",[[0,\"hy-introduction\",{\"variant\":[1],\"reversed\":[4],\"limitContentWidth\":[4,\"limit-content-width\"],\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"urlTitle\":[1,\"url-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"isExternal\":[4,\"is-external\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-banner.cjs\",[[0,\"hy-banner\",{\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"urlTitle\":[1,\"url-title\"],\"headerstyle\":[1],\"isExternal\":[4,\"is-external\"]}]]],[\"hy-opening-hours_2.cjs\",[[4,\"hy-opening-hours\",{\"blockTitle\":[1,\"block-title\"],\"language\":[1],\"venueType\":[1,\"venue-type\"],\"blockId\":[1,\"block-id\"],\"nextLabel\":[1,\"next-label\"],\"prevLabel\":[1,\"prev-label\"],\"listLabel\":[1,\"list-label\"],\"buildingLabel\":[1,\"building-label\"],\"customerServiceLabel\":[1,\"customer-service-label\"],\"date\":[1],\"dateTitle\":[1,\"date-title\"],\"dateType\":[1,\"date-type\"],\"multiple\":[4],\"customLinkTitle\":[1,\"custom-link-title\"],\"customLink\":[1,\"custom-link\"],\"exceptional\":[4]}],[0,\"hy-opening-hours-content\",{\"multiple\":[4],\"selfServiceLabel\":[1,\"self-service-label\"],\"venueType\":[1,\"venue-type\"],\"dataItems\":[1,\"data-items\"]}]]],[\"hy-adjacent-image-text.cjs\",[[0,\"hy-adjacent-image-text\",{\"headerstyle\":[1],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"mainUrl\":[1,\"main-url\"],\"mainUrlTitle\":[1,\"main-url-title\"],\"mainUrlAriaLabel\":[1,\"main-url-aria-label\"],\"mainUrlIsExternal\":[4,\"main-url-is-external\"],\"mainUrl2\":[1,\"main-url-2\"],\"mainUrlTitle2\":[1,\"main-url-title-2\"],\"mainUrlAriaLabel2\":[1,\"main-url-aria-label-2\"],\"mainUrlIsExternal2\":[4,\"main-url-is-external-2\"],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-hero.cjs\",[[0,\"hy-hero\",{\"heroType\":[1,\"hero-type\"],\"heroGroupType\":[1,\"hero-group-type\"],\"colorVariant\":[1,\"color-variant\"],\"sizeVariant\":[1,\"size-variant\"],\"image\":[1],\"imageHeight\":[2,\"image-height\"],\"imageWidth\":[2,\"image-width\"],\"imageAltText\":[1,\"image-alt-text\"],\"disableLazy\":[4,\"disable-lazy\"],\"hasShortcuts\":[4,\"has-shortcuts\"],\"heading\":[1],\"description\":[1],\"url\":[1],\"urlTitle\":[1,\"url-title\"],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-shortcuts.cjs\",[[0,\"hy-shortcuts\",{\"dataItems\":[1,\"data-items\"],\"listHeading\":[1,\"list-heading\"],\"headerstyle\":[1]}]]],[\"hy-video.cjs\",[[4,\"hy-video\",{\"videoTitle\":[1,\"video-title\"],\"videoDescription\":[1,\"video-description\"],\"contextLabel\":[1,\"context-label\"],\"contextLabelVisible\":[4,\"context-label-visible\"],\"previewImageUrl\":[1,\"preview-image-url\"],\"linkToVideo\":[1,\"link-to-video\"],\"playButtonLabel\":[1,\"play-button-label\"],\"playButtonVisible\":[4,\"play-button-visible\"],\"seriesLabel\":[1,\"series-label\"],\"seriesCount\":[1,\"series-count\"],\"views\":[1],\"viewsLabel\":[1,\"views-label\"],\"duration\":[1],\"durationLabel\":[1,\"duration-label\"],\"dateAdded\":[1,\"date-added\"],\"dateAddedLabel\":[1,\"date-added-label\"],\"horizontal\":[4],\"disableLazy\":[4,\"disable-lazy\"],\"headerstyle\":[1],\"showMoreLabel\":[1,\"show-more-label\"],\"showLessLabel\":[1,\"show-less-label\"],\"simplePlayButton\":[4,\"simple-play-button\"],\"styleList\":[4,\"style-list\"],\"descCollapsed\":[32]}]]],[\"hy-events.cjs\",[[4,\"hy-events\",{\"styleGrid\":[4,\"style-grid\"],\"showMore\":[4,\"show-more\"],\"viewAllUrl\":[1,\"view-all-url\"],\"viewAllLabel\":[1,\"view-all-label\"],\"scrollLeftLabel\":[1,\"scroll-left-label\"],\"scrollRightLabel\":[1,\"scroll-right-label\"],\"scrollable\":[32]}]]],[\"hy-hero-carousel.cjs\",[[0,\"hy-hero-carousel\",{\"itemCount\":[2,\"item-count\"],\"ariaLabelNext\":[1,\"aria-label-next\"],\"ariaLabelPrev\":[1,\"aria-label-prev\"],\"ariaLabelFirstSlide\":[1,\"aria-label-first-slide\"],\"ariaLabelLastSlide\":[1,\"aria-label-last-slide\"],\"ariaLabelBulletMessage\":[1,\"aria-label-bullet-message\"],\"data\":[1]}]]],[\"hy-link-list.cjs\",[[0,\"hy-link-list\",{\"headerstyle\":[1],\"dataItems\":[1,\"data-items\"],\"listHeading\":[1,\"list-heading\"],\"variation\":[1],\"headingVariant\":[1,\"heading-variant\"]}]]],[\"hy-prominent-image.cjs\",[[1,\"hy-prominent-image\",{\"textTitle\":[1,\"text-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-user-login-form.cjs\",[[4,\"hy-user-login-form\",{\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"]}]]],[\"hy-pager_2.cjs\",[[1,\"hy-pager-item\",{\"variant\":[1],\"itemLabel\":[1,\"item-label\"],\"itemUrl\":[1,\"item-url\"],\"scAriaLabel\":[1,\"sc-aria-label\"]}],[1,\"hy-pager\"]]],[\"hy-anchor-link-list.cjs\",[[0,\"hy-anchor-link-list\",{\"listTitle\":[1,\"list-title\"],\"openLabel\":[1,\"open-label\"],\"closeLabel\":[1,\"close-label\"],\"anchorItems\":[1,\"anchor-items\"],\"isOpen\":[32]},[[0,\"handleLinkClick\",\"handleLinkClick\"]]]]],[\"hy-checkbox.cjs\",[[0,\"hy-checkbox\",{\"checkboxId\":[8,\"checkbox-id\"],\"checkboxValue\":[8,\"checkbox-value\"],\"checkboxLabel\":[1,\"checkbox-label\"],\"checkboxChecked\":[4,\"checkbox-checked\"],\"variant\":[1]}]]],[\"hy-collaboration.cjs\",[[0,\"hy-collaboration\",{\"textDescription\":[1,\"text-description\"],\"linkUrl\":[1,\"link-url\"],\"linkTitle\":[1,\"link-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAltText\":[1,\"image-alt-text\"]}]]],[\"hy-crisis-banner.cjs\",[[0,\"hy-crisis-banner\",{\"bannerTitle\":[1,\"banner-title\"],\"bannerDescription\":[1,\"banner-description\"],\"linkTitle\":[1,\"link-title\"],\"linkUrl\":[1,\"link-url\"]}]]],[\"hy-event-item.cjs\",[[0,\"hy-event-item\",{\"eventTitle\":[1,\"event-title\"],\"eventDescription\":[1,\"event-description\"],\"dateShort\":[1,\"date-short\"],\"dateLong\":[1,\"date-long\"],\"location\":[1],\"type\":[1],\"url\":[1],\"styleGrid\":[4,\"style-grid\"],\"readMoreLabel\":[1,\"read-more-label\"],\"isLong\":[32]}]]],[\"hy-list-item.cjs\",[[0,\"hy-list-item\",{\"variant\":[1],\"itemType\":[1,\"item-type\"],\"itemTitle\":[1,\"item-title\"],\"itemDescription\":[8,\"item-description\"],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"scLabel\":[1,\"sc-label\"],\"itemImageUrl\":[1,\"item-image-url\"],\"itemImageAlt\":[1,\"item-image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"relatedLinksBlockTitle\":[1,\"related-links-block-title\"],\"relatedLinks\":[1,\"related-links\"],\"imageLabel\":[1,\"image-label\"],\"outGoingUrlLabel\":[1,\"out-going-url-label\"],\"additionalInfo\":[1,\"additional-info\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"],\"truncateDescription\":[4,\"truncate-description\"],\"truncateLimit\":[2,\"truncate-limit\"],\"isExpandedRelatedContent\":[32],\"_imageMinHeight\":[32],\"_imageMinWidth\":[32]},[[0,\"keydown\",\"handleKeyDown\"],[0,\"click\",\"handleClick\"]]]]],[\"hy-person-card.cjs\",[[0,\"hy-person-card\",{\"variant\":[1],\"categoryTitle\":[1,\"category-title\"],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"firstName\":[1,\"first-name\"],\"lastName\":[1,\"last-name\"],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"scLabel\":[1,\"sc-label\"],\"positionTitle\":[1,\"position-title\"],\"department\":[1],\"field\":[1],\"email\":[1],\"phone\":[1],\"aboutInfo\":[1,\"about-info\"],\"researchNetworks\":[1,\"research-networks\"],\"studyProgramme\":[1,\"study-programme\"],\"aboutInfoLabel\":[1,\"about-info-label\"],\"researchNetworksLabel\":[1,\"research-networks-label\"],\"studyProgrammeLabel\":[1,\"study-programme-label\"],\"isMobile\":[32]}]]],[\"hy-quote.cjs\",[[1,\"hy-quote\",{\"quoteSignature\":[1,\"quote-signature\"],\"headerstyle\":[1]}]]],[\"hy-table-container.cjs\",[[4,\"hy-table-container\"]]],[\"hy-twitter-feed.cjs\",[[0,\"hy-twitter-feed\",{\"headingVariant\":[1,\"heading-variant\"],\"paragraphTitle\":[1,\"paragraph-title\"],\"twitterFeedKeyword\":[1,\"twitter-feed-keyword\"],\"tweetType\":[1,\"tweet-type\"],\"tweets\":[1]}]]],[\"hy-logo-grid_2.cjs\",[[4,\"hy-logo-grid\",{\"headingVariant\":[1,\"heading-variant\"],\"logoGridTitle\":[1,\"logo-grid-title\"]}],[0,\"hy-logo-grid-item\",{\"link\":[1],\"image\":[1]}]]],[\"hy-badge.cjs\",[[1,\"hy-badge\",{\"variant\":[1]}]]],[\"hy-link.cjs\",[[0,\"hy-link\",{\"variant\":[1],\"linkContent\":[1,\"link-content\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"]}]]],[\"hy-row.cjs\",[[4,\"hy-row\",{\"justify\":[1],\"align\":[1],\"margin\":[2]}]]],[\"hy-section-container.cjs\",[[4,\"hy-section-container\"]]],[\"hy-tiny-text.cjs\",[[1,\"hy-tiny-text\"]]],[\"hy-two-columns.cjs\",[[4,\"hy-two-columns\",{\"reversed\":[4]}]]],[\"hy-large-process-flow_2.cjs\",[[1,\"hy-large-process-flow\",{\"headerstyle\":[1],\"dataItems\":[1,\"data-items\"]}],[1,\"hy-large-process-flow-phase\",{\"dataItems\":[1,\"data-items\"]}]]],[\"hy-process_2.cjs\",[[1,\"hy-process\",{\"headerstyle\":[1],\"numberTerm\":[1,\"number-term\"],\"dataItems\":[1,\"data-items\"]}],[1,\"hy-process-flow-box\",{\"variant\":[1],\"boxNumber\":[1,\"box-number\"],\"boxTitle\":[1,\"box-title\"],\"boxDescription\":[1,\"box-description\"],\"intermediateStepTitle\":[1,\"intermediate-step-title\"],\"stepState\":[1,\"step-state\"],\"numberTerm\":[1,\"number-term\"]}]]],[\"hy-key-figure_2.cjs\",[[0,\"hy-key-figure-group\",{\"dataItems\":[1,\"data-items\"],\"headerstyle\":[1]}],[1,\"hy-key-figure\",{\"variant\":[1],\"heading\":[1],\"description\":[1]}]]],[\"hy-menu-main-group.cjs\",[[1,\"hy-menu-main-group\",{\"menuLabel\":[1,\"menu-label\"],\"menuLabelClose\":[1,\"menu-label-close\"],\"dataMainMenu\":[1,\"data-main-menu\"],\"isMobile\":[4,\"is-mobile\"],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"siteLabel\":[1,\"site-label\"],\"siteUrl\":[1,\"site-url\"],\"donate\":[16],\"isMenuOpen\":[32]},[[2,\"click\",\"handleComponentClick\"],[0,\"keydown\",\"handleComponentKeyDown\"],[8,\"click\",\"handleOutsideMenuClick\"],[8,\"headerScrollDown\",\"handleOutsideMenuClick\"],[8,\"headerScrollUp\",\"handleOutsideMenuClick\"],[4,\"menuLanguageToggled\",\"handleOutsideMenuClick\"],[4,\"searchPanelToggled\",\"handleOutsideMenuClick\"],[4,\"menuDesktopToggled\",\"handleOutsideMenuClick\"]]]]],[\"hy-image.cjs\",[[0,\"hy-image\",{\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"fetchPriority\":[1,\"fetch-priority\"],\"caption\":[1],\"aspectRatioWidth\":[2,\"aspect-ratio-width\"],\"aspectRatioHeight\":[2,\"aspect-ratio-height\"],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-paragraph-text.cjs\",[[36,\"hy-paragraph-text\",{\"variant\":[1],\"placement\":[1],\"headerstyle\":[1]}]]],[\"hy-tag.cjs\",[[1,\"hy-tag\"]]],[\"hy-content-list_2.cjs\",[[0,\"hy-content-list\",{\"linkLabel\":[1,\"link-label\"],\"noResultLabel\":[1,\"no-result-label\"],\"creditsLabel\":[1,\"credits-label\"],\"cancelledLabel\":[1,\"cancelled-label\"],\"dataItems\":[1,\"data-items\"],\"headerstyle\":[1],\"courseStateVariant\":[1,\"course-state-variant\"],\"courseRealisations\":[32]}],[0,\"hy-content-list-item\",{\"variant\":[1],\"stateVariant\":[1,\"state-variant\"],\"courseCode\":[1,\"course-code\"],\"courseName\":[1,\"course-name\"],\"isCancelled\":[4,\"is-cancelled\"],\"cancelledLabel\":[1,\"cancelled-label\"],\"courseCredits\":[1,\"course-credits\"],\"courseTags\":[1,\"course-tags\"],\"courseStartDate\":[1,\"course-start-date\"],\"courseEndDate\":[1,\"course-end-date\"],\"formattedTimeRange\":[1,\"formatted-time-range\"],\"courseStudyFormat\":[1,\"course-study-format\"],\"courseOrganisation\":[1,\"course-organisation\"],\"courseEnrollmentLink\":[1,\"course-enrollment-link\"],\"courseTeachingLanguage\":[1,\"course-teaching-language\"],\"courseLinkLabel\":[1,\"course-link-label\"]},[[0,\"keydown\",\"handleKeyDown\"]]]]],[\"hy-link-box_2.cjs\",[[0,\"hy-link-box-list\",{\"headerstyle\":[1],\"variant\":[1],\"readMoreLabel\":[1,\"read-more-label\"],\"dataItems\":[1,\"data-items\"]}],[0,\"hy-link-box\",{\"variant\":[1],\"imageUrl\":[1,\"image-url\"],\"imageAlt\":[1,\"image-alt\"],\"disableLazy\":[4,\"disable-lazy\"],\"useSlot\":[4,\"use-slot\"],\"showLogo\":[4,\"show-logo\"],\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"scLabel\":[1,\"sc-label\"],\"readMoreLabel\":[1,\"read-more-label\"],\"headerstyle\":[1],\"sourceSet\":[1,\"source-set\"]}]]],[\"hy-general-list_2.cjs\",[[0,\"hy-general-list\",{\"type\":[1],\"blank\":[4],\"dataItems\":[1,\"data-items\"],\"truncateDescription\":[4,\"truncate-description\"],\"truncateLimit\":[2,\"truncate-limit\"],\"hasSidebar\":[32]}],[0,\"hy-general-list-item\",{\"hasSidebar\":[4,\"has-sidebar\"],\"description\":[1],\"imageAlt\":[1,\"image-alt\"],\"imageUrl\":[1,\"image-url\"],\"disableLazy\":[4,\"disable-lazy\"],\"itemTitle\":[1,\"item-title\"],\"label\":[1],\"subLabel\":[1,\"sub-label\"],\"date\":[1],\"tag\":[1],\"type\":[1],\"url\":[1],\"listStyle\":[1,\"list-style\"],\"target\":[4]}]]],[\"hy-key-highlight_2.cjs\",[[1,\"hy-key-highlight-group\",{\"variant\":[1],\"dataItems\":[1,\"data-items\"],\"headerstyle\":[1]}],[1,\"hy-key-highlight\",{\"variant\":[1],\"heading\":[1],\"description\":[1]}]]],[\"hy-dropdown_3.cjs\",[[0,\"hy-dropdown\",{\"single\":[4],\"dropdownLabel\":[1,\"dropdown-label\"],\"dropdownId\":[1,\"dropdown-id\"],\"dropdownOptions\":[1,\"dropdown-options\"],\"defaultLabel\":[1,\"default-label\"],\"defaultOption\":[1032,\"default-option\"],\"isPanelOpen\":[32],\"isChecked\":[32],\"currentSingle\":[32]},[[8,\"click\",\"handleClick\"],[2,\"click\",\"handleSingleClick\"]]],[0,\"hy-dropdown-panel-item\",{\"isLast\":[4,\"is-last\"],\"dropdownItemId\":[8,\"dropdown-item-id\"],\"dropdownItemValue\":[8,\"dropdown-item-value\"],\"dropdownItemLabel\":[1,\"dropdown-item-label\"]}],[4,\"hy-dropdown-panel\",{\"isHidden\":[4,\"is-hidden\"]}]]],[\"hy-tabs_2.cjs\",[[4,\"hy-tabs\",{\"tabId\":[1,\"tab-id\"],\"tabListLabel\":[1,\"tab-list-label\"],\"headerstyle\":[1],\"focusTimeoutCleared\":[32],\"tabButtonTitles\":[32],\"tabPanelsState\":[32],\"tabButtons\":[32],\"tabList\":[32]},[[0,\"click\",\"clickEventListener\"],[0,\"keydown\",\"keydownEventListener\"],[0,\"keydown\",\"keyupEventListener\"],[0,\"focus\",\"focusEventHandler\"]]],[4,\"hy-tabs-item\",{\"tabTitle\":[1,\"tab-title\"]}]]],[\"hy-filter-group_6.cjs\",[[0,\"hy-filter-visibility-tool\",{\"filterVisibilityToolType\":[1,\"filter-visibility-tool-type\"]}],[0,\"hy-filter-group\",{\"filterGroupLabel\":[1,\"filter-group-label\"],\"filterGroupFilters\":[1,\"filter-group-filters\"]}],[0,\"hy-filter-list-type\",{\"filterLabel\":[1,\"filter-label\"],\"filterValue\":[1,\"filter-value\"]}],[4,\"hy-filter-group-item\",{\"filterGroupItemId\":[8,\"filter-group-item-id\"],\"filterGroupItemLabel\":[1,\"filter-group-item-label\"]}],[0,\"hy-filter-visibility-tool-reset\"],[0,\"hy-filter-visibility-tool-toggle\"]]],[\"hy-accordion-container_2.cjs\",[[4,\"hy-accordion-container\",{\"accordionid\":[1]}],[4,\"hy-accordion-item\",{\"accordiontitle\":[1],\"variant\":[1],\"headerstyle\":[1],\"showOpen\":[4,\"show-open\"],\"ready\":[32]},[[8,\"hashchange\",\"onHashChange\"],[0,\"keydown\",\"handleKeyDown\"],[0,\"click\",\"handleClick\"]]]]],[\"hy-cta-button.cjs\",[[4,\"hy-cta-button\",{\"variant\":[1],\"linkContent\":[1,\"link-content\"],\"typeButton\":[4,\"type-button\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"],\"headerstyle\":[1]}]]],[\"hy-cta-link.cjs\",[[0,\"hy-cta-link\",{\"variant\":[1],\"linkContent\":[1,\"link-content\"],\"url\":[1],\"scLabel\":[1,\"sc-label\"],\"isExternal\":[4,\"is-external\"]}]]],[\"hy-breadcrumbs_15.cjs\",[[0,\"hy-footer-info\",{\"textTitle\":[1,\"text-title\"],\"textDescription\":[1,\"text-description\"],\"linkText\":[1,\"link-text\"],\"linkUrl\":[1,\"link-url\"],\"linkIsExternal\":[4,\"link-is-external\"],\"linkScLabel\":[1,\"link-sc-label\"],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"groupLogoUrl\":[1,\"group-logo-url\"],\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"dataFooterInfoLinks\":[1,\"data-footer-info-links\"],\"luomusFooterContent\":[1,\"luomus-footer-content\"],\"isMobile\":[32]}],[4,\"hy-site-header\",{\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"isBetaGroup\":[4,\"is-beta-group\"],\"researchGroupLabel\":[1,\"research-group-label\"],\"groupType\":[1,\"group-type\"],\"groupLogoUrl\":[1,\"group-logo-url\"],\"dataMenuLanguage\":[1,\"data-menu-language\"],\"dataMenuDonate\":[1,\"data-menu-donate\"],\"dataSiteHeaderLabels\":[1,\"data-site-header-labels\"],\"dataSiteSearchLabels\":[1,\"data-site-search-labels\"],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"siteLabel\":[1,\"site-label\"],\"siteUrl\":[1,\"site-url\"],\"showSearchLabel\":[4,\"show-search-label\"],\"noSearch\":[4,\"no-search\"],\"menuLabel\":[1,\"menu-label\"],\"menuLabelOpen\":[1,\"menu-label-open\"],\"menuLabelClose\":[1,\"menu-label-close\"],\"menuType\":[513,\"menu-type\"],\"dataMainMenuLinks\":[1,\"data-main-menu-links\"],\"dataSearchTools\":[1,\"data-search-tools\"],\"isMobile\":[32],\"isMenuOpen\":[32],\"isDesktopMenuOpen\":[32],\"isDesktopMenuDropdown\":[32],\"isTopMenuOpen\":[32],\"isBottomVisible\":[32],\"isTopVisible\":[32],\"lastScrollTop\":[32],\"delta\":[32],\"navbarHeight\":[32]},[[0,\"mobileMenuToggle\",\"mobileMenuToggle\"],[0,\"mobileMenuTopToggle\",\"mobileMenuTopToggle\"],[8,\"menuToggled\",\"mainMenuToggled\"],[9,\"scroll\",\"handleScroll\"]]],[4,\"hy-footer-base\",{\"color\":[1],\"logoUrl\":[1,\"logo-url\"],\"logoLabel\":[1,\"logo-label\"],\"size\":[2],\"someLabel\":[1,\"some-label\"],\"copyrightText\":[1,\"copyright-text\"],\"dataFooterBaseLinks\":[1,\"data-footer-base-links\"],\"dataFooterBaseSome\":[1,\"data-footer-base-some\"]}],[0,\"hy-breadcrumbs\",{\"dataItems\":[1,\"data-items\"],\"variant\":[1],\"headerstyle\":[1],\"menuOpen\":[32]}],[0,\"hy-footer-action\",{\"updatedText\":[1,\"updated-text\"],\"upButtonLabel\":[1,\"up-button-label\"]},[[2,\"scrollTop\",\"scrollTop\"]]],[4,\"hy-footer\"],[4,\"hy-ingress\",{\"headerstyle\":[1]}],[1,\"hy-site-search\",{\"color\":[1],\"isAlternative\":[4,\"is-alternative\"],\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"isBetaGroup\":[4,\"is-beta-group\"],\"searchLanguage\":[1,\"search-language\"],\"labels\":[1],\"searchLabels\":[1,\"search-labels\"],\"searchTools\":[1,\"search-tools\"],\"showLabel\":[4,\"show-label\"],\"size\":[2],\"dataSearchSpecialTools\":[1,\"data-search-special-tools\"],\"isSearchPanelOpen\":[32]},[[4,\"menuMobileToggled\",\"closePanelWhenOtherDropdownsTriggered\"],[4,\"menuDesktopToggled\",\"closePanelWhenOtherDropdownsTriggered\"],[4,\"menuLanguageToggled\",\"closePanelWhenOtherDropdownsTriggered\"],[4,\"universityMainMenuToggled\",\"closePanelWhenOtherDropdownsTriggered\"],[8,\"menuToggled\",\"closePanelWhenOtherDropdownsTriggered\"],[4,\"headerScrollUp\",\"closePanelWhenOtherDropdownsTriggered\"],[4,\"headerScrollDown\",\"closePanelWhenOtherDropdownsTriggered\"],[8,\"click\",\"handleWindowClick\"]]],[1,\"hy-menu-language\",{\"dataMenuLanguage\":[1,\"data-menu-language\"],\"isGroup\":[4,\"is-group\"],\"labels\":[1],\"isMenuOpen\":[32]},[[8,\"click\",\"handleOutsideMenuClick\"],[4,\"menuDesktopToggled\",\"desktopMenuToggled\"],[4,\"searchPanelToggled\",\"searchPanelToggled\"],[4,\"universityMainMenuToggled\",\"universityMainMenuPanelToggled\"],[0,\"focus\",\"handleComponentFocus\"],[0,\"click\",\"handleComponentClick\"]]],[0,\"hy-footer-link-item\",{\"label\":[1],\"url\":[1],\"isExternal\":[4,\"is-external\"],\"mainLink\":[4,\"main-link\"],\"items\":[16],\"color\":[1],\"isMobile\":[4,\"is-mobile\"],\"variant\":[1],\"isLuomusGroup\":[4,\"is-luomus-group\"]}],[0,\"hy-search-field\",{\"label\":[1],\"isLabelBold\":[4,\"is-label-bold\"],\"labelLarge\":[4,\"label-large\"],\"isLuomusSearch\":[4,\"is-luomus-search\"],\"placeholder\":[1],\"isLabelHidden\":[4,\"is-label-hidden\"],\"inputId\":[1,\"input-id\"],\"prefillParameter\":[1,\"prefill-parameter\"],\"isInputValueEmpty\":[32]}],[4,\"hy-main-content-wrapper\"],[1,\"hy-menu-language-item\",{\"abbr\":[1],\"isActive\":[4,\"is-active\"],\"isDisabled\":[4,\"is-disabled\"],\"label\":[1],\"langCode\":[1,\"lang-code\"],\"url\":[1]}],[0,\"hy-site-logo\",{\"type\":[1],\"color\":[1],\"isGroup\":[4,\"is-group\"],\"isLuomusGroup\":[4,\"is-luomus-group\"],\"label\":[1],\"size\":[2],\"url\":[1]}],[36,\"hy-heading\",{\"heading\":[1],\"isSearch\":[4,\"is-search\"],\"section\":[1],\"negative\":[4],\"headerstyle\":[1],\"hyphenatedText\":[513,\"hyphenated-text\"],\"hasChildren\":[32]}]]]]"), options);
19
19
  });
20
20
  };
21
21
 
@@ -17,13 +17,19 @@ export class HyMenuMainGroup {
17
17
  this.donate = undefined;
18
18
  this.isMenuOpen = false;
19
19
  }
20
+ async componentWillLoad() {
21
+ this._dataMainMenu = await jsonParserWorker(this.dataMainMenu);
22
+ }
20
23
  handleComponentClick(event) {
21
- event.stopPropagation();
22
- this.emitEvent();
23
24
  this.isMenuOpen = !this.isMenuOpen;
25
+ this.emitEvent();
24
26
  if (this.isMenuOpen) {
25
27
  this.adjustMainMenuPosition(event.target);
26
28
  }
29
+ if (!this.isMenuOpen) {
30
+ this.showBackdropShadow('close');
31
+ }
32
+ event.stopPropagation();
27
33
  }
28
34
  handleComponentKeyDown(event) {
29
35
  event.stopPropagation();
@@ -41,11 +47,20 @@ export class HyMenuMainGroup {
41
47
  }
42
48
  }
43
49
  }
50
+ // Handle events that should close the menu.
51
+ handleOutsideMenuClick(event) {
52
+ if (this.isMenuOpen) {
53
+ this.isMenuOpen = false;
54
+ this.handleTopMenuClose(event);
55
+ }
56
+ event.stopPropagation();
57
+ }
44
58
  emitEvent() {
45
59
  // Close other panels if they are open (lang menu, search, main menu, ..).
46
60
  this.universityMainMenuToggled.emit();
47
61
  this.mobileMenuTopToggle.emit();
48
62
  }
63
+ // TODO: Cleanup this. Find cleaner way to do positioning.
49
64
  adjustMainMenuPosition(target) {
50
65
  let hyTopHeader = this.el.closest(".hy-site-header__content-top");
51
66
  if (hyTopHeader && !hyTopHeader.hasAttribute("is-mobile")) {
@@ -62,6 +77,7 @@ export class HyMenuMainGroup {
62
77
  this.showBackdropShadow("open", headerHeight);
63
78
  }
64
79
  }
80
+ // TODO: Handle backdrop with CSS.
65
81
  showBackdropShadow(state = "close", top = 0) {
66
82
  let hyHeader = this.el.closest(".hy-site-header");
67
83
  let hyBackdropDiv = hyHeader.children[0];
@@ -79,35 +95,12 @@ export class HyMenuMainGroup {
79
95
  }
80
96
  }
81
97
  }
82
- async componentWillLoad() {
83
- this._dataMainMenu = await jsonParserWorker(this.dataMainMenu);
84
- }
85
98
  handleTopMenuClose(event) {
86
99
  this.isMenuOpen = false;
87
100
  this.mobileMenuTopToggle.emit();
88
- this.showBackdropShadow();
89
- event.stopPropagation();
90
- }
91
- // Close the University main menu if user clicks anywhere outside the component.
92
- handleOutsideMenuClick(event) {
93
- if (this.isMenuOpen) {
94
- this.isMenuOpen = false;
95
- this.handleTopMenuClose(event);
96
- }
101
+ this.showBackdropShadow('close');
97
102
  event.stopPropagation();
98
103
  }
99
- // CLose the University main menu if user opens the desktop menu panel.
100
- desktopMenuToggled() {
101
- this.isMenuOpen = false;
102
- }
103
- // CLose the University main menu if user opens the search panel
104
- searchPanelToggled() {
105
- this.isMenuOpen = false;
106
- }
107
- // CLose the University main menu if user opens the language menu panel.
108
- languageMenuToggled() {
109
- this.isMenuOpen = false;
110
- }
111
104
  render() {
112
105
  const white = "var(--grayscale-white)";
113
106
  const logoSizeGroup = this.isMobile ? SiteLogoSize.small : SiteLogoSize.small;
@@ -392,20 +385,20 @@ export class HyMenuMainGroup {
392
385
  "capture": false,
393
386
  "passive": false
394
387
  }, {
395
- "name": "menuDesktopToggled",
396
- "method": "desktopMenuToggled",
388
+ "name": "menuLanguageToggled",
389
+ "method": "handleOutsideMenuClick",
397
390
  "target": "document",
398
391
  "capture": false,
399
392
  "passive": false
400
393
  }, {
401
394
  "name": "searchPanelToggled",
402
- "method": "searchPanelToggled",
395
+ "method": "handleOutsideMenuClick",
403
396
  "target": "document",
404
397
  "capture": false,
405
398
  "passive": false
406
399
  }, {
407
- "name": "menuLanguageToggled",
408
- "method": "languageMenuToggled",
400
+ "name": "menuDesktopToggled",
401
+ "method": "handleOutsideMenuClick",
409
402
  "target": "document",
410
403
  "capture": false,
411
404
  "passive": false
@@ -1 +1 @@
1
- {"version":3,"file":"hy-menu-main-group.js","sourceRoot":"","sources":["../../../../src/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.tsx"],"names":[],"mappings":"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","sourcesContent":["export interface MainMenu {\n label: string;\n url: string;\n menuLinkId: string;\n}\n\nexport interface DonateLink {\n url: string;\n label: string;\n}\n\nimport {Component, Host, h, Element, Prop, State, Listen, Event, EventEmitter} from \"@stencil/core\";\nimport {ColorVariant, SiteLogoSize} from \"../../../utils/utils\";\nimport {jsonParserWorker} from \"../../../global/globalScript\";\n\nlet keys = {\n enter: \"Enter\",\n};\n\n@Component({\n tag: \"hy-menu-main-group\",\n styleUrl: \"hy-menu-main-group.scss\",\n shadow: true,\n})\nexport class HyMenuMainGroup {\n @Element() el: HTMLElement;\n @Prop() menuLabel: string = \"University main menu\";\n @Prop() menuLabelClose: string = \"Close\";\n @Prop() dataMainMenu: MainMenu[] | string;\n @Prop() isMobile: boolean = false;\n @Prop() logoUrl?: string;\n @Prop() logoLabel?: string;\n @Prop() siteLabel?: string;\n @Prop() siteUrl?: string;\n @Prop() donate: DonateLink[];\n @State() isMenuOpen: boolean = false;\n\n @Event() universityMainMenuToggled: EventEmitter;\n @Event() mobileMenuTopToggle: EventEmitter;\n\n private _dataMainMenu: MainMenu[];\n\n @Listen(\"click\", {capture: true})\n handleComponentClick(event) {\n event.stopPropagation();\n this.emitEvent();\n\n this.isMenuOpen = !this.isMenuOpen;\n if (this.isMenuOpen) {\n this.adjustMainMenuPosition(event.target);\n }\n }\n\n @Listen(\"keydown\")\n handleComponentKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n const key = event.code;\n let target = event.target as HTMLButtonElement;\n\n if (key === \"Escape\" && this.isMenuOpen) {\n this.isMenuOpen = false;\n this.emitEvent();\n }\n\n if (target && [keys.enter].includes(key)) {\n this.isMenuOpen = !this.isMenuOpen;\n\n if (this.isMenuOpen) {\n this.emitEvent();\n this.adjustMainMenuPosition(target);\n }\n }\n }\n\n emitEvent() {\n // Close other panels if they are open (lang menu, search, main menu, ..).\n this.universityMainMenuToggled.emit();\n this.mobileMenuTopToggle.emit();\n }\n\n adjustMainMenuPosition(target) {\n let hyTopHeader = this.el.closest(\".hy-site-header__content-top\") as HTMLElement;\n\n if (hyTopHeader && !hyTopHeader.hasAttribute(\"is-mobile\")) {\n let mainMenuToggle = target.shadowRoot.querySelector(\".menu--main-group__toggle\") as HTMLElement;\n let mainMenuDropdown = target.shadowRoot.querySelector(\".menu--main-group__dropdown\") as HTMLElement;\n let mainMenuList = target.shadowRoot.querySelector(\".list\") as HTMLElement;\n if (mainMenuDropdown && mainMenuList && mainMenuToggle) {\n let rectHeader = hyTopHeader.getBoundingClientRect();\n let rectMenuToggle = mainMenuToggle.getBoundingClientRect();\n mainMenuDropdown.style.top = `${rectHeader.height}px`;\n\n mainMenuList.style.left = `${rectMenuToggle.left}px`;\n }\n let headerHeight = hyTopHeader.offsetHeight + 270;\n\n this.showBackdropShadow(\"open\", headerHeight);\n }\n }\n\n showBackdropShadow(state = \"close\", top = 0) {\n let hyHeader = this.el.closest(\".hy-site-header\") as HTMLElement;\n let hyBackdropDiv = hyHeader.children[0] as HTMLElement;\n\n if (hyBackdropDiv) {\n if (state === \"open\") {\n let me = window.outerHeight - top;\n hyBackdropDiv.style.height = `${me}px`;\n hyBackdropDiv.style.top = `${top}px`;\n hyBackdropDiv.style.position = \"absolute\";\n hyBackdropDiv.classList.add(\"is-active\");\n } else {\n hyBackdropDiv.removeAttribute(\"style\");\n hyBackdropDiv.classList.remove(\"is-active\");\n }\n }\n }\n\n async componentWillLoad() {\n this._dataMainMenu = await jsonParserWorker(this.dataMainMenu);\n }\n\n handleTopMenuClose(event) {\n this.isMenuOpen = false;\n this.mobileMenuTopToggle.emit();\n this.showBackdropShadow();\n event.stopPropagation();\n }\n\n // Close the University main menu if user clicks anywhere outside the component.\n @Listen(\"click\", {target: \"window\"})\n @Listen(\"headerScrollDown\", {target: \"window\"})\n @Listen(\"headerScrollUp\", {target: \"window\"})\n handleOutsideMenuClick(event) {\n if (this.isMenuOpen) {\n this.isMenuOpen = false;\n this.handleTopMenuClose(event);\n }\n event.stopPropagation();\n }\n\n // CLose the University main menu if user opens the desktop menu panel.\n @Listen(\"menuDesktopToggled\", {target: \"document\"})\n desktopMenuToggled() {\n this.isMenuOpen = false;\n }\n\n // CLose the University main menu if user opens the search panel\n @Listen(\"searchPanelToggled\", {target: \"document\"})\n searchPanelToggled() {\n this.isMenuOpen = false;\n }\n\n // CLose the University main menu if user opens the language menu panel.\n @Listen(\"menuLanguageToggled\", {target: \"document\"})\n languageMenuToggled() {\n this.isMenuOpen = false;\n }\n\n render() {\n const white = \"var(--grayscale-white)\";\n const logoSizeGroup = this.isMobile ? SiteLogoSize.small : SiteLogoSize.small;\n const logoColorGroup = ColorVariant.white;\n\n return this.isMobile ? (\n <Host\n class={{\n \"menu--main-group--mobile\": true,\n \"menu--main-group--mobile__is-open\": this.isMenuOpen,\n }}\n >\n <button\n aria-label={this.menuLabel}\n class={{\n \"menu--main-group__mobile-toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <hy-icon icon={\"hy-icon-slim-hamburger-menu\"} size={20} fill={white} />\n </button>\n <nav\n role=\"navigation\"\n aria-hidden={this.isMenuOpen ? \"false\" : \"true\"}\n class={{\n \"menu--main-group__dropdown--mobile\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"menu--main-group__dropdown__top\">\n <div class={\"menu--main-group__logo-container\"} id={\"menu-logo\"}>\n <hy-site-logo\n is-group={true}\n size={logoSizeGroup}\n color={logoColorGroup}\n url={this.siteUrl}\n label={this.siteLabel}\n />\n </div>\n <button\n aria-label={`Close ${this.menuLabel}`}\n class=\"menu--main-group__dropdown__close\"\n onClick={(e) => this.handleTopMenuClose(e)}\n >\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={white} />\n </button>\n </div>\n <div class=\"menu--main-group__dropdown__items\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <div class=\"menu--main-group__dropdown__donate\">\n {this.donate &&\n this.donate.map((i) => {\n return (\n <a class={\"menu--secondary__item hy-link__donate group\"} href={i.url}>\n <hy-icon icon={\"hy-icon-heart-support\"} size={14} fill={logoColorGroup} />\n <span class={\"hy-link__donate__label group\"}>{i.label}</span>\n </a>\n );\n })}\n </div>\n </nav>\n </Host>\n ) : (\n <Host\n class={{\n \"menu--main-group\": true,\n \"menu--main-group__is-open\": this.isMenuOpen,\n }}\n >\n <button\n class={{\n \"menu--main-group__toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n aria-expanded={this.isMenuOpen ? \"true\" : \"false\"}\n aria-haspopup=\"menu\"\n //aria-label={this.isMenuOpen ? this._labels['close'] : this._labels['open']}\n >\n {this.isMenuOpen ? (\n <hy-icon class={\"toggle__close\"} icon={\"hy-icon-remove\"} size={8} fill={white} />\n ) : (\n <hy-icon class={\"toggle__caret\"} icon={\"hy-icon-slim-hamburger-menu\"} size={8} fill={white} />\n )}\n <span>{this.menuLabel}</span>\n </button>\n <div\n class={{\n \"menu--main-group__dropdown\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"list\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class=\"heading-icon\">\n <hy-icon icon={\"hy-icon-caret-right\"} size={10} fill={white} />\n </span>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <button\n onClick={(e) => this.handleComponentClick(e)}\n class={{\n \"panel-toggle\": true,\n }}\n aria-label=\"Close menu\"\n >\n <span class=\"panel-toggle__label\">\n <span class=\"panel-toggle__label__title\">{this.menuLabelClose}</span>\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={ColorVariant.white} />\n </span>\n </button>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"hy-menu-main-group.js","sourceRoot":"","sources":["../../../../src/components/hy-navigation/hy-menu-main-group/hy-menu-main-group.tsx"],"names":[],"mappings":"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","sourcesContent":["export interface MainMenu {\n label: string;\n url: string;\n menuLinkId: string;\n}\n\nexport interface DonateLink {\n url: string;\n label: string;\n}\n\nimport {Component, Host, h, Element, Prop, State, Listen, Event, EventEmitter} from \"@stencil/core\";\nimport {ColorVariant, SiteLogoSize} from \"../../../utils/utils\";\nimport {jsonParserWorker} from \"../../../global/globalScript\";\n\nlet keys = {\n enter: \"Enter\",\n};\n\n@Component({\n tag: \"hy-menu-main-group\",\n styleUrl: \"hy-menu-main-group.scss\",\n shadow: true,\n})\nexport class HyMenuMainGroup {\n @Element() el: HTMLElement;\n @Prop() menuLabel: string = \"University main menu\";\n @Prop() menuLabelClose: string = \"Close\";\n @Prop() dataMainMenu: MainMenu[] | string;\n @Prop() isMobile: boolean = false;\n @Prop() logoUrl?: string;\n @Prop() logoLabel?: string;\n @Prop() siteLabel?: string;\n @Prop() siteUrl?: string;\n @Prop() donate: DonateLink[];\n @State() isMenuOpen: boolean = false;\n\n @Event() universityMainMenuToggled: EventEmitter;\n @Event() mobileMenuTopToggle: EventEmitter;\n\n private _dataMainMenu: MainMenu[];\n\n async componentWillLoad() {\n this._dataMainMenu = await jsonParserWorker(this.dataMainMenu);\n }\n\n\n @Listen(\"click\", {capture: true})\n handleComponentClick(event) {\n this.isMenuOpen = !this.isMenuOpen;\n \n this.emitEvent();\n if (this.isMenuOpen) {\n this.adjustMainMenuPosition(event.target);\n }\n if (!this.isMenuOpen) {\n this.showBackdropShadow('close');\n }\n event.stopPropagation();\n }\n\n @Listen(\"keydown\")\n handleComponentKeyDown(event: KeyboardEvent) {\n event.stopPropagation();\n const key = event.code;\n let target = event.target as HTMLButtonElement;\n\n if (key === \"Escape\" && this.isMenuOpen) {\n this.isMenuOpen = false;\n this.emitEvent();\n }\n\n if (target && [keys.enter].includes(key)) {\n this.isMenuOpen = !this.isMenuOpen;\n\n if (this.isMenuOpen) {\n this.emitEvent();\n this.adjustMainMenuPosition(target);\n }\n }\n }\n\n // Handle events that should close the menu.\n @Listen(\"click\", {target: \"window\"})\n @Listen(\"headerScrollDown\", {target: \"window\"})\n @Listen(\"headerScrollUp\", {target: \"window\"})\n @Listen(\"menuLanguageToggled\", {target: \"document\"})\n @Listen(\"searchPanelToggled\", {target: \"document\"})\n @Listen(\"menuDesktopToggled\", {target: \"document\"})\n handleOutsideMenuClick(event) {\n if (this.isMenuOpen) {\n this.isMenuOpen = false;\n this.handleTopMenuClose(event);\n }\n event.stopPropagation();\n }\n\n emitEvent() {\n // Close other panels if they are open (lang menu, search, main menu, ..).\n this.universityMainMenuToggled.emit();\n this.mobileMenuTopToggle.emit();\n }\n\n // TODO: Cleanup this. Find cleaner way to do positioning.\n adjustMainMenuPosition(target) {\n let hyTopHeader = this.el.closest(\".hy-site-header__content-top\") as HTMLElement;\n\n if (hyTopHeader && !hyTopHeader.hasAttribute(\"is-mobile\")) {\n let mainMenuToggle = target.shadowRoot.querySelector(\".menu--main-group__toggle\") as HTMLElement;\n let mainMenuDropdown = target.shadowRoot.querySelector(\".menu--main-group__dropdown\") as HTMLElement;\n let mainMenuList = target.shadowRoot.querySelector(\".list\") as HTMLElement;\n if (mainMenuDropdown && mainMenuList && mainMenuToggle) {\n let rectHeader = hyTopHeader.getBoundingClientRect();\n let rectMenuToggle = mainMenuToggle.getBoundingClientRect();\n mainMenuDropdown.style.top = `${rectHeader.height}px`;\n\n mainMenuList.style.left = `${rectMenuToggle.left}px`;\n }\n let headerHeight = hyTopHeader.offsetHeight + 270;\n\n this.showBackdropShadow(\"open\", headerHeight);\n }\n }\n\n // TODO: Handle backdrop with CSS.\n showBackdropShadow(state = \"close\", top = 0) {\n let hyHeader = this.el.closest(\".hy-site-header\") as HTMLElement;\n let hyBackdropDiv = hyHeader.children[0] as HTMLElement;\n\n if (hyBackdropDiv) {\n if (state === \"open\") {\n let me = window.outerHeight - top;\n hyBackdropDiv.style.height = `${me}px`;\n hyBackdropDiv.style.top = `${top}px`;\n hyBackdropDiv.style.position = \"absolute\";\n hyBackdropDiv.classList.add(\"is-active\");\n } else {\n hyBackdropDiv.removeAttribute(\"style\");\n hyBackdropDiv.classList.remove(\"is-active\");\n }\n }\n }\n\n\n\n handleTopMenuClose(event) {\n this.isMenuOpen = false;\n this.mobileMenuTopToggle.emit();\n this.showBackdropShadow('close');\n event.stopPropagation();\n }\n\n\n render() {\n const white = \"var(--grayscale-white)\";\n const logoSizeGroup = this.isMobile ? SiteLogoSize.small : SiteLogoSize.small;\n const logoColorGroup = ColorVariant.white;\n\n return this.isMobile ? (\n <Host\n class={{\n \"menu--main-group--mobile\": true,\n \"menu--main-group--mobile__is-open\": this.isMenuOpen,\n }}\n >\n <button\n aria-label={this.menuLabel}\n class={{\n \"menu--main-group__mobile-toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <hy-icon icon={\"hy-icon-slim-hamburger-menu\"} size={20} fill={white} />\n </button>\n <nav\n role=\"navigation\"\n aria-hidden={this.isMenuOpen ? \"false\" : \"true\"}\n class={{\n \"menu--main-group__dropdown--mobile\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"menu--main-group__dropdown__top\">\n <div class={\"menu--main-group__logo-container\"} id={\"menu-logo\"}>\n <hy-site-logo\n is-group={true}\n size={logoSizeGroup}\n color={logoColorGroup}\n url={this.siteUrl}\n label={this.siteLabel}\n />\n </div>\n <button\n aria-label={`Close ${this.menuLabel}`}\n class=\"menu--main-group__dropdown__close\"\n onClick={(e) => this.handleTopMenuClose(e)}\n >\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={white} />\n </button>\n </div>\n <div class=\"menu--main-group__dropdown__items\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <div class=\"menu--main-group__dropdown__donate\">\n {this.donate &&\n this.donate.map((i) => {\n return (\n <a class={\"menu--secondary__item hy-link__donate group\"} href={i.url}>\n <hy-icon icon={\"hy-icon-heart-support\"} size={14} fill={logoColorGroup} />\n <span class={\"hy-link__donate__label group\"}>{i.label}</span>\n </a>\n );\n })}\n </div>\n </nav>\n </Host>\n ) : (\n <Host\n class={{\n \"menu--main-group\": true,\n \"menu--main-group__is-open\": this.isMenuOpen,\n }}\n >\n <button\n class={{\n \"menu--main-group__toggle\": true,\n \"is-open\": this.isMenuOpen,\n }}\n aria-expanded={this.isMenuOpen ? \"true\" : \"false\"}\n aria-haspopup=\"menu\"\n //aria-label={this.isMenuOpen ? this._labels['close'] : this._labels['open']}\n >\n {this.isMenuOpen ? (\n <hy-icon class={\"toggle__close\"} icon={\"hy-icon-remove\"} size={8} fill={white} />\n ) : (\n <hy-icon class={\"toggle__caret\"} icon={\"hy-icon-slim-hamburger-menu\"} size={8} fill={white} />\n )}\n <span>{this.menuLabel}</span>\n </button>\n <div\n class={{\n \"menu--main-group__dropdown\": true,\n \"is-open\": this.isMenuOpen,\n }}\n >\n <div class=\"list\">\n {this._dataMainMenu.map((item) => {\n return (\n <a href={item.url} class={{\"menu-main-link\": true}}>\n <span class=\"heading-icon\">\n <hy-icon icon={\"hy-icon-caret-right\"} size={10} fill={white} />\n </span>\n <span class={\"menu--main-group__label\"}>{item.label}</span>\n </a>\n );\n })}\n </div>\n <button\n onClick={(e) => this.handleComponentClick(e)}\n class={{\n \"panel-toggle\": true,\n }}\n aria-label=\"Close menu\"\n >\n <span class=\"panel-toggle__label\">\n <span class=\"panel-toggle__label__title\">{this.menuLabelClose}</span>\n <hy-icon icon={\"hy-icon-remove\"} size={20} fill={ColorVariant.white} />\n </span>\n </button>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -73,9 +73,10 @@ export class MenuLanguage {
73
73
  }
74
74
  })), h("hy-icon", { icon: "hy-icon-caret-down", size: 8, fill: svgColor })), h("div", { class: {
75
75
  "menu-language__dropdown": true,
76
- }, "aria-hidden": `${!this.isMenuOpen}` }, h("ul", { class: "menu-language__links" }, this._dataMenuLanguage.map((item) => {
77
- return (h("hy-menu-language-item", { "lang-code": item.langCode, url: item.url, label: item.label, abbr: item.abbr, "is-active": item.isActive, "is-disabled": item.isDisabled }));
78
- })))));
76
+ }, "aria-hidden": `${!this.isMenuOpen}` }, this.isMenuOpen &&
77
+ h("ul", { class: "menu-language__links" }, this._dataMenuLanguage.map((item) => {
78
+ return (h("hy-menu-language-item", { "lang-code": item.langCode, url: item.url, label: item.label, abbr: item.abbr, "is-active": item.isActive, "is-disabled": item.isDisabled }));
79
+ })))));
79
80
  }
80
81
  static get is() { return "hy-menu-language"; }
81
82
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-language.js","sourceRoot":"","sources":["../../../../src/components/hy-navigation/menu-language/menu-language.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAC,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAe,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAC,gBAAgB,EAAC,MAAM,8BAA8B,CAAC;AAO9D,MAAM,OAAO,YAAY;;;mBAGI,KAAK;;sBAED,KAAK;;EAOpC,uFAAuF;EAEvF,sBAAsB,CAAC,KAAK;IAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACxB,KAAK,CAAC,eAAe,EAAE,CAAC;EAC1B,CAAC;EAED,gEAAgE;EAEhE,kBAAkB;IAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC1B,CAAC;EAED,yDAAyD;EAEzD,kBAAkB;IAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC1B,CAAC;EAED,6DAA6D;EAE7D,8BAA8B;IAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;EAC1B,CAAC;EAGD,oBAAoB,CAAC,KAAK;IACxB,yCAAyC;IACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IAEhC,KAAK,CAAC,eAAe,EAAE,CAAC;EAC1B,CAAC;EAGD,oBAAoB,CAAC,KAAK;IACxB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IAEnC,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,yCAAyC;MACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;MAEhC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAqB,CAAC;MACzD,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KACpD;IAED,KAAK,CAAC,eAAe,EAAE,CAAC;EAC1B,CAAC;EAED,cAAc,CAAC,oBAAoB,EAAE,MAAM;IACzC,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CACpE,0BAA0B,CAC3B,CAAC,CAAC,CAAgB,CAAC;IACpB,IAAI,YAAY,GAAG,GAAG,CAAC;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO;MACzB,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAiB;MACjE,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAiB,CAAC;IAEvD,IAAI,QAAQ,EAAE;MACZ,IAAI,UAAU,GAAG,QAAQ,CAAC,qBAAqB,EAAE,CAAC;MAClD,IAAI,YAAY,GAAG,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;MAEhE,YAAY,GAAG,GAAG,oBAAoB,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC;KACvG;IAED,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;EACzC,CAAC;EAED,KAAK,CAAC,iBAAiB;IACrB,IAAI,CAAC,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvE,IAAI,CAAC,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACrD,CAAC;EAED,MAAM;IACJ,MAAM,KAAK,GAAG,gCAAgC,CAAC;IAC/C,MAAM,KAAK,GAAG,wBAAwB,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7C,OAAO,CACL,WACE,KAAK,EAAE;QACL,eAAe,EAAE,IAAI;QACrB,SAAS,EAAE,IAAI,CAAC,UAAU;QAC1B,UAAU,EAAE,IAAI,CAAC,OAAO;OACzB;MAED,cACE,KAAK,EAAE;UACL,uBAAuB,EAAE,IAAI;SAC9B,gBACW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAE1E,eAAS,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAI;QACvE,gBACG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAE;UACnD,IAAI,QAAQ,EAAE;YACZ,OAAO,QAAQ,CAAC;WACjB;QACH,CAAC,CAAC,CACG;QACP,eAAS,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAI,CACzD;MACT,WACE,KAAK,EAAE;UACL,yBAAyB,EAAE,IAAI;SAChC,iBACY,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;QAElC,UAAI,KAAK,EAAC,sBAAsB,IAC7B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;UACnC,OAAO,CACL,0CACa,IAAI,CAAC,QAAQ,EACxB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,IAAI,eACJ,IAAI,CAAC,QAAQ,iBACX,IAAI,CAAC,UAAU,GAC5B,CACH,CAAC;QACJ,CAAC,CAAC,CACC,CACD,CACF,CACP,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {ComponentLabels} from \"../../hy-site-header/site-header\";\n\nexport interface MenuLanguage {\n langCode: string;\n url: string;\n abbr: string;\n label: string;\n isActive?: boolean;\n isDisabled?: boolean;\n}\n\nimport {Component, h, Prop, Element, Listen, State, Event, EventEmitter} from \"@stencil/core\";\nimport {jsonParserWorker} from \"../../../global/globalScript\";\n\n@Component({\n tag: \"hy-menu-language\",\n styleUrl: \"menu-language.scss\",\n shadow: true,\n})\nexport class MenuLanguage {\n @Element() el: HTMLElement;\n @Prop() dataMenuLanguage: MenuLanguage[] | string;\n @Prop() isGroup: boolean = false;\n @Prop() labels?: ComponentLabels[] | string;\n @State() isMenuOpen: boolean = false;\n\n @Event() menuLanguageToggled: EventEmitter;\n\n private _dataMenuLanguage: MenuLanguage[];\n private _labels: ComponentLabels[];\n\n // Close the language menu if user clicks anywhere outside the Menu language component.\n @Listen(\"click\", {target: \"window\"})\n handleOutsideMenuClick(event) {\n this.isMenuOpen = false;\n event.stopPropagation();\n }\n\n // CLose the language menu if user opens the desktop menu panel.\n @Listen(\"menuDesktopToggled\", {target: \"document\"})\n desktopMenuToggled() {\n this.isMenuOpen = false;\n }\n\n // CLose the language menu if user opens the search panel\n @Listen(\"searchPanelToggled\", {target: \"document\"})\n searchPanelToggled() {\n this.isMenuOpen = false;\n }\n\n // Close the language menu if user opens University main menu\n @Listen(\"universityMainMenuToggled\", {target: \"document\"})\n universityMainMenuPanelToggled() {\n this.isMenuOpen = false;\n }\n\n @Listen(\"focus\")\n handleComponentFocus(event) {\n // Close desktop menu panel if it's open.\n this.menuLanguageToggled.emit();\n\n event.stopPropagation();\n }\n\n @Listen(\"click\")\n handleComponentClick(event) {\n this.isMenuOpen = !this.isMenuOpen;\n\n if (this.isMenuOpen) {\n // Close desktop menu panel if it's open.\n this.menuLanguageToggled.emit();\n\n const languageMenuSelector = event.target as HTMLElement;\n this.adjustPosition(languageMenuSelector, this.el);\n }\n\n event.stopPropagation();\n }\n\n adjustPosition(languageMenuSelector, target) {\n const languagePanel = languageMenuSelector.shadowRoot.querySelectorAll(\n `.menu-language__dropdown`\n )[0] as HTMLElement;\n let headerHeight = \"0\";\n let hyHeader = this.isGroup\n ? (target.closest(\".hy-site-header__content-top\") as HTMLElement)\n : (target.closest(\".hy-site-header\") as HTMLElement);\n\n if (hyHeader) {\n let rectHeader = hyHeader.getBoundingClientRect();\n let rectLangMenu = languageMenuSelector.getBoundingClientRect();\n\n headerHeight = `${languageMenuSelector.offsetHeight + rectHeader.bottom + 8 - rectLangMenu.bottom}px`;\n }\n\n languagePanel.style.top = headerHeight;\n }\n\n async componentWillLoad() {\n this._dataMenuLanguage = await jsonParserWorker(this.dataMenuLanguage);\n this._labels = await jsonParserWorker(this.labels);\n }\n\n render() {\n const black = \"var(--brand-main-nearly-black)\";\n const white = \"var(--grayscale-white)\";\n const svgColor = this.isGroup ? white : black;\n const globeIconSize = this.isGroup ? 16 : 14;\n\n return (\n <div\n class={{\n \"menu-language\": true,\n \"is-open\": this.isMenuOpen,\n \"is-group\": this.isGroup,\n }}\n >\n <button\n class={{\n \"menu-language__toggle\": true,\n }}\n aria-label={this.isMenuOpen ? this._labels[\"close\"] : this._labels[\"open\"]}\n >\n <hy-icon icon={\"hy-icon-globe\"} size={globeIconSize} fill={svgColor} />\n <span>\n {this._dataMenuLanguage.map(({isActive, langCode}) => {\n if (isActive) {\n return langCode;\n }\n })}\n </span>\n <hy-icon icon={\"hy-icon-caret-down\"} size={8} fill={svgColor} />\n </button>\n <div\n class={{\n \"menu-language__dropdown\": true,\n }}\n aria-hidden={`${!this.isMenuOpen}`}\n >\n <ul class=\"menu-language__links\">\n {this._dataMenuLanguage.map((item) => {\n return (\n <hy-menu-language-item\n lang-code={item.langCode}\n url={item.url}\n label={item.label}\n abbr={item.abbr}\n is-active={item.isActive}\n is-disabled={item.isDisabled}\n />\n );\n })}\n </ul>\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"menu-language.js","sourceRoot":"","sources":["../../../../src/components/hy-navigation/menu-language/menu-language.tsx"],"names":[],"mappings":"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","sourcesContent":["import {ComponentLabels} from \"../../hy-site-header/site-header\";\n\nexport interface MenuLanguage {\n langCode: string;\n url: string;\n abbr: string;\n label: string;\n isActive?: boolean;\n isDisabled?: boolean;\n}\n\nimport {Component, h, Prop, Element, Listen, State, Event, EventEmitter} from \"@stencil/core\";\nimport {jsonParserWorker} from \"../../../global/globalScript\";\n\n@Component({\n tag: \"hy-menu-language\",\n styleUrl: \"menu-language.scss\",\n shadow: true,\n})\nexport class MenuLanguage {\n @Element() el: HTMLElement;\n @Prop() dataMenuLanguage: MenuLanguage[] | string;\n @Prop() isGroup: boolean = false;\n @Prop() labels?: ComponentLabels[] | string;\n @State() isMenuOpen: boolean = false;\n\n @Event() menuLanguageToggled: EventEmitter;\n\n private _dataMenuLanguage: MenuLanguage[];\n private _labels: ComponentLabels[];\n\n // Close the language menu if user clicks anywhere outside the Menu language component.\n @Listen(\"click\", {target: \"window\"})\n handleOutsideMenuClick(event) {\n this.isMenuOpen = false;\n event.stopPropagation();\n }\n\n // CLose the language menu if user opens the desktop menu panel.\n @Listen(\"menuDesktopToggled\", {target: \"document\"})\n desktopMenuToggled() {\n this.isMenuOpen = false;\n }\n\n // CLose the language menu if user opens the search panel\n @Listen(\"searchPanelToggled\", {target: \"document\"})\n searchPanelToggled() {\n this.isMenuOpen = false;\n }\n\n // Close the language menu if user opens University main menu\n @Listen(\"universityMainMenuToggled\", {target: \"document\"})\n universityMainMenuPanelToggled() {\n this.isMenuOpen = false;\n }\n\n @Listen(\"focus\")\n handleComponentFocus(event) {\n // Close desktop menu panel if it's open.\n this.menuLanguageToggled.emit();\n\n event.stopPropagation();\n }\n\n @Listen(\"click\")\n handleComponentClick(event) {\n this.isMenuOpen = !this.isMenuOpen;\n\n if (this.isMenuOpen) {\n // Close desktop menu panel if it's open.\n this.menuLanguageToggled.emit();\n\n const languageMenuSelector = event.target as HTMLElement;\n this.adjustPosition(languageMenuSelector, this.el);\n }\n\n event.stopPropagation();\n }\n\n adjustPosition(languageMenuSelector, target) {\n const languagePanel = languageMenuSelector.shadowRoot.querySelectorAll(\n `.menu-language__dropdown`\n )[0] as HTMLElement;\n let headerHeight = \"0\";\n let hyHeader = this.isGroup\n ? (target.closest(\".hy-site-header__content-top\") as HTMLElement)\n : (target.closest(\".hy-site-header\") as HTMLElement);\n\n if (hyHeader) {\n let rectHeader = hyHeader.getBoundingClientRect();\n let rectLangMenu = languageMenuSelector.getBoundingClientRect();\n\n headerHeight = `${languageMenuSelector.offsetHeight + rectHeader.bottom + 8 - rectLangMenu.bottom}px`;\n }\n\n languagePanel.style.top = headerHeight;\n }\n\n async componentWillLoad() {\n this._dataMenuLanguage = await jsonParserWorker(this.dataMenuLanguage);\n this._labels = await jsonParserWorker(this.labels);\n }\n\n render() {\n const black = \"var(--brand-main-nearly-black)\";\n const white = \"var(--grayscale-white)\";\n const svgColor = this.isGroup ? white : black;\n const globeIconSize = this.isGroup ? 16 : 14;\n\n return (\n <div\n class={{\n \"menu-language\": true,\n \"is-open\": this.isMenuOpen,\n \"is-group\": this.isGroup,\n }}\n >\n <button\n class={{\n \"menu-language__toggle\": true,\n }}\n aria-label={this.isMenuOpen ? this._labels[\"close\"] : this._labels[\"open\"]}\n >\n <hy-icon icon={\"hy-icon-globe\"} size={globeIconSize} fill={svgColor} />\n <span>\n {this._dataMenuLanguage.map(({isActive, langCode}) => {\n if (isActive) {\n return langCode;\n }\n })}\n </span>\n <hy-icon icon={\"hy-icon-caret-down\"} size={8} fill={svgColor} />\n </button>\n <div\n class={{\n \"menu-language__dropdown\": true,\n }}\n aria-hidden={`${!this.isMenuOpen}`}\n >\n {this.isMenuOpen &&\n <ul class=\"menu-language__links\">\n {this._dataMenuLanguage.map((item) => {\n return (\n <hy-menu-language-item\n lang-code={item.langCode}\n url={item.url}\n label={item.label}\n abbr={item.abbr}\n is-active={item.isActive}\n is-disabled={item.isDisabled}\n />\n );\n })}\n </ul>\n }\n </div>\n </div>\n );\n }\n}\n"]}