@postnord/pn-marketweb-components 1.0.21 → 1.0.23
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.
- package/cjs/loader.cjs.js +1 -1
- package/cjs/pn-language-selector_9.cjs.entry.js +21 -9
- package/cjs/pn-market-web-components.cjs.js +1 -1
- package/cjs/pn-marketweb-siteheader.cjs.entry.js +29 -8
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +44 -5
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.js +9 -5
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +77 -8
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.stories.js +18 -3
- package/collection/components/navigation/pn-language-selector/pn-language-selector.js +19 -2
- package/custom-elements/index.js +53 -20
- package/esm/loader.js +1 -1
- package/esm/pn-language-selector_9.entry.js +22 -10
- package/esm/pn-market-web-components.js +1 -1
- package/esm/pn-marketweb-siteheader.entry.js +29 -8
- package/esm-es5/loader.js +1 -1
- package/esm-es5/pn-language-selector_9.entry.js +1 -1
- package/esm-es5/pn-market-web-components.js +1 -1
- package/esm-es5/pn-marketweb-siteheader.entry.js +1 -1
- package/package.json +1 -1
- package/pn-market-web-components/p-25bdf3f8.system.js +1 -1
- package/pn-market-web-components/p-8680c074.entry.js +1 -0
- package/pn-market-web-components/p-88ab0d91.system.entry.js +1 -0
- package/pn-market-web-components/p-d7441208.entry.js +1 -0
- package/pn-market-web-components/p-dd22803d.system.entry.js +1 -0
- package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +3 -0
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-loginmanager.d.ts +7 -2
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.d.ts +8 -1
- package/types/components/navigation/pn-language-selector/pn-language-selector.d.ts +2 -0
- package/types/components.d.ts +20 -0
- package/pn-market-web-components/p-2da203c9.system.entry.js +0 -1
- package/pn-market-web-components/p-363a27ff.entry.js +0 -1
- package/pn-market-web-components/p-582dbd9c.entry.js +0 -1
- package/pn-market-web-components/p-ecfabe25.system.entry.js +0 -1
package/cjs/loader.cjs.js
CHANGED
|
@@ -14,7 +14,7 @@ const patchEsm = () => {
|
|
|
14
14
|
const defineCustomElements = (win, options) => {
|
|
15
15
|
if (typeof window === 'undefined') return Promise.resolve();
|
|
16
16
|
return patchEsm().then(() => {
|
|
17
|
-
return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[9,"resize","handleResize"]]]]],["pn-find-service-and-price.cjs",[[0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]]],["pn-product-pricelist.cjs",[[4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]]],["pn-marketweb-sitefooter.cjs",[[0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]]],["pn-filter-checkbox.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[1,"pn-filter-search",{"disabled":[4],"placeholder":[1],"inputid":[1],"name":[1],"autocomplete":[1],"value":[1],"label":[1],"loading":[4],"button":[1],"light":[4]},[[0,"input","inputHandler"]]]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[4,"pn-sidenav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"icon":[1],"current":[4],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-product-pricelist-result.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[0,"pn-find-service-and-price-result",{"item":[1040],"shownitems":[16],"weightText":[32]}],[4,"pn-choice-button",{"value":[520],"name":[1],"choiceid":[1],"type":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-site-footer_2.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[4,"pn-mainnav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"listCount":[32],"alignment":[32]}],[4,"pn-language-selector",{"value":[
|
|
17
|
+
return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"sessionForward":[4,"session-forward"],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]]],["pn-find-service-and-price.cjs",[[0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]]],["pn-product-pricelist.cjs",[[4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]]],["pn-marketweb-sitefooter.cjs",[[0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]]],["pn-filter-checkbox.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[1,"pn-filter-search",{"disabled":[4],"placeholder":[1],"inputid":[1],"name":[1],"autocomplete":[1],"value":[1],"label":[1],"loading":[4],"button":[1],"light":[4]},[[0,"input","inputHandler"]]]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[4,"pn-sidenav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"icon":[1],"current":[4],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-product-pricelist-result.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[0,"pn-find-service-and-price-result",{"item":[1040],"shownitems":[16],"weightText":[32]}],[4,"pn-choice-button",{"value":[520],"name":[1],"choiceid":[1],"type":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-site-footer_2.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[4,"pn-mainnav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"listCount":[32],"alignment":[32]}],[4,"pn-language-selector",{"value":[1537],"selectedLanguageName":[32],"options":[32],"i18n":[32]}],[0,"pn-language-selector-option",{"name":[1],"code":[1],"url":[1],"selected":[4],"currentLanguage":[1,"current-language"]}],[4,"pn-mainnav",{"market":[1],"language":[1],"navigationId":[1,"navigation-id"],"openMenu":[1028,"open-menu"],"navLabel":[1,"nav-label"]},[[0,"language","setLanguage"],[0,"market","setMarket"],[0,"menuLanguageChange","onLanguageChange"],[0,"setmenuopenstate","setMenuOpenState"],[0,"openMenuLevelChange","onOpenMenuLevelChange"]]],[4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}],[0,"pn-marketweb-siteheader-login",{"endpoint":[1],"i18n":[8,"i-1-8n"],"emitEvents":[4,"emit-events"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]],["pn-product-tile_3.cjs",[[4,"pn-product-tile"],[0,"pn-product-tile-info",{"label":[1],"text":[1],"icon":[1]}],[0,"pn-product-tile-price",{"label":[1],"amount":[1],"currency":[1],"url":[1]}]]]], options);
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
20
|
|
|
@@ -29,6 +29,7 @@ const pnLanguageSelectorCss = ".languageselector{position:relative}.languagesele
|
|
|
29
29
|
let PnlanguageSelector = class {
|
|
30
30
|
constructor(hostRef) {
|
|
31
31
|
index.registerInstance(this, hostRef);
|
|
32
|
+
this.setLanguage = index.createEvent(this, "setLanguage", 7);
|
|
32
33
|
/* Current language code */
|
|
33
34
|
this.value = "";
|
|
34
35
|
this.selectedLanguageName = "";
|
|
@@ -68,6 +69,7 @@ let PnlanguageSelector = class {
|
|
|
68
69
|
onSetCurrentLanguage(option) {
|
|
69
70
|
this.value = option.code;
|
|
70
71
|
this.selectedLanguageName = option.name;
|
|
72
|
+
this.setLanguage.emit(this.value);
|
|
71
73
|
}
|
|
72
74
|
setTranslations() {
|
|
73
75
|
if (translations$1[this.value]) {
|
|
@@ -426,10 +428,11 @@ class PNLoginManager {
|
|
|
426
428
|
const params = new URLSearchParams(window.location.search);
|
|
427
429
|
if (params.get("oneTimeCode")) {
|
|
428
430
|
const oneTimeCode = params.get("oneTimeCode");
|
|
429
|
-
this.
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
431
|
+
this.exchangeToken(oneTimeCode).then(() => {
|
|
432
|
+
const currentHref = window.location.href;
|
|
433
|
+
const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
|
|
434
|
+
history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
|
|
435
|
+
});
|
|
433
436
|
}
|
|
434
437
|
}
|
|
435
438
|
async fetchUserInfo() {
|
|
@@ -465,7 +468,10 @@ class PNLoginManager {
|
|
|
465
468
|
this.store.remove(this.keys.expire);
|
|
466
469
|
this.store.remove(this.keys.expireDate);
|
|
467
470
|
}
|
|
468
|
-
|
|
471
|
+
getToken() {
|
|
472
|
+
return this.store.get(this.keys.token);
|
|
473
|
+
}
|
|
474
|
+
async exchangeToken(oneTimeCode) {
|
|
469
475
|
this.clearUserData();
|
|
470
476
|
const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
|
|
471
477
|
const { token } = await response.json();
|
|
@@ -505,8 +511,10 @@ const pnMarketwebSiteheaderLoginCss = "pn-marketweb-siteheader-login{padding:1re
|
|
|
505
511
|
let PnMarketwebSiteheaderLogin = class {
|
|
506
512
|
constructor(hostRef) {
|
|
507
513
|
index.registerInstance(this, hostRef);
|
|
514
|
+
this.loginStateChange = index.createEvent(this, "loginStateChange", 7);
|
|
508
515
|
/** Specifies which endpoint domain we should load from */
|
|
509
516
|
this.endpoint = "";
|
|
517
|
+
this.emitEvents = true;
|
|
510
518
|
// Login dialog
|
|
511
519
|
this.loginDialog = null;
|
|
512
520
|
this.loginManager = null;
|
|
@@ -515,11 +523,12 @@ let PnMarketwebSiteheaderLogin = class {
|
|
|
515
523
|
}
|
|
516
524
|
componentWillLoad() {
|
|
517
525
|
this.loginManager = new PNLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
|
|
526
|
+
this.hostElement["loginmanager"] = this.loginManager;
|
|
527
|
+
this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
|
|
518
528
|
this.init();
|
|
519
529
|
}
|
|
520
530
|
async init() {
|
|
521
531
|
this.toggleButtonText = this.loginDialog.loginMenuLinkText;
|
|
522
|
-
this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
|
|
523
532
|
this.loginManager.init();
|
|
524
533
|
this.setToggleButtonText();
|
|
525
534
|
}
|
|
@@ -538,8 +547,11 @@ let PnMarketwebSiteheaderLogin = class {
|
|
|
538
547
|
}
|
|
539
548
|
}
|
|
540
549
|
onLoginStateChange(e) {
|
|
541
|
-
this.loggedIn
|
|
542
|
-
|
|
550
|
+
if (this.loggedIn !== e.detail && this.emitEvents) {
|
|
551
|
+
this.loggedIn = e.detail;
|
|
552
|
+
this.loginStateChange.emit({ loggedIn: this.loggedIn, token: this.loginManager.getToken() });
|
|
553
|
+
this.setToggleButtonText();
|
|
554
|
+
}
|
|
543
555
|
}
|
|
544
556
|
render() {
|
|
545
557
|
var _a, _b, _c;
|
|
@@ -557,7 +569,7 @@ let PnMarketwebSiteheaderLogin = class {
|
|
|
557
569
|
:
|
|
558
570
|
index.h("div", null, index.h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
|
|
559
571
|
const isLogoutLink = link.href.indexOf('logout');
|
|
560
|
-
const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '')) : link.href;
|
|
572
|
+
const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '').replace('http://window.location.href/?', '').replace('https://window.location.href/?', '')) : link.href;
|
|
561
573
|
return (index.h("li", null, index.h("a", Object.assign({ href: href }, (link.openInNewWindow && { target: '_blank' })), index.h("pn-button", { appearance: (link.primaryLinkApperance ? "dark" : "light"), onClick: () => {
|
|
562
574
|
if (isLogoutLink) {
|
|
563
575
|
this.loginManager.clearUserData();
|
|
@@ -55,5 +55,5 @@ const patchCloneNodeFix = (HTMLElementPrototype) => {
|
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
patchBrowser().then(options => {
|
|
58
|
-
return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[9,"resize","handleResize"]]]]],["pn-find-service-and-price.cjs",[[0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]]],["pn-product-pricelist.cjs",[[4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]]],["pn-marketweb-sitefooter.cjs",[[0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]]],["pn-filter-checkbox.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[1,"pn-filter-search",{"disabled":[4],"placeholder":[1],"inputid":[1],"name":[1],"autocomplete":[1],"value":[1],"label":[1],"loading":[4],"button":[1],"light":[4]},[[0,"input","inputHandler"]]]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[4,"pn-sidenav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"icon":[1],"current":[4],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-product-pricelist-result.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[0,"pn-find-service-and-price-result",{"item":[1040],"shownitems":[16],"weightText":[32]}],[4,"pn-choice-button",{"value":[520],"name":[1],"choiceid":[1],"type":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-site-footer_2.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[4,"pn-mainnav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"listCount":[32],"alignment":[32]}],[4,"pn-language-selector",{"value":[
|
|
58
|
+
return index.bootstrapLazy([["pn-marketweb-siteheader.cjs",[[4,"pn-marketweb-siteheader",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"hideSiteSelector":[1540,"hide-site-selector"],"hideLanguageSelector":[1540,"hide-language-selector"],"hideSearch":[1540,"hide-search"],"hideLogin":[1540,"hide-login"],"sessionForward":[4,"session-forward"],"spaMode":[4,"spa-mode"],"i18n":[32],"gotData":[32],"fetchingData":[32],"menuItems":[32],"siteDefinition":[32],"search":[32],"siteSelector":[32],"languageSelector":[32],"loginDialog":[32],"minimizeSearch":[32]},[[0,"setLanguage","onLanguageSelectorChange"],[0,"loginStateChange","onLoginStateChange"],[9,"resize","handleResize"]]]]],["pn-find-service-and-price.cjs",[[0,"pn-find-service-and-price",{"source":[1],"language":[1025],"market":[1025],"filteredItems":[32],"postagetype":[32],"weight":[32],"weightvalue":[32],"deliveryscope":[32],"sourceData":[32]}]]],["pn-product-pricelist.cjs",[[4,"pn-product-pricelist",{"source":[1],"language":[1025],"market":[1025],"productid":[1],"filteredItems":[32],"sourceData":[32],"gotData":[32],"loading":[32],"postagetype":[32],"weight":[32],"weightvalue":[32]}]]],["pn-marketweb-sitefooter.cjs",[[0,"pn-marketweb-sitefooter",{"market":[1537],"language":[1537],"environment":[1537],"endpoint":[1],"siteDefinition":[32],"footerContent":[32],"i18n":[32],"gotData":[32],"fetchingData":[32]}]]],["pn-filter-checkbox.cjs",[[1,"pn-filter-checkbox",{"value":[520],"name":[1],"checkboxid":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-filter-search.cjs",[[1,"pn-filter-search",{"disabled":[4],"placeholder":[1],"inputid":[1],"name":[1],"autocomplete":[1],"value":[1],"label":[1],"loading":[4],"button":[1],"light":[4]},[[0,"input","inputHandler"]]]]],["pn-sidenav.cjs",[[4,"pn-sidenav",{"language":[1],"navLabel":[1,"nav-label"],"i18n":[32]},[[0,"language","setLanguage"],[0,"openSubMenuLevelChange","onOpenSubMenuLevelChange"]]]]],["pn-sidenav-level.cjs",[[4,"pn-sidenav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"alignment":[32]}]]],["pn-sidenav-link.cjs",[[4,"pn-sidenav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"icon":[1],"current":[4],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-product-pricelist-result.cjs",[[0,"pn-product-pricelist-result",{"item":[1040],"shownitems":[16],"weightText":[32]}]]],["pn-choice-button_2.cjs",[[0,"pn-find-service-and-price-result",{"item":[1040],"shownitems":[16],"weightText":[32]}],[4,"pn-choice-button",{"value":[520],"name":[1],"choiceid":[1],"type":[1],"disabled":[4],"checked":[4],"indeterminate":[1028]},[[0,"change","handlechange"]]]]],["pn-site-footer_2.cjs",[[4,"pn-site-footer",{"url":[1]}],[4,"pn-site-footer-col"]]],["pn-mainnav-link.cjs",[[4,"pn-mainnav-link",{"name":[1],"href":[1],"target":[1],"linkid":[1],"levelId":[32],"open":[32],"hasChildren":[32]}]]],["pn-language-selector_9.cjs",[[4,"pn-mainnav-level",{"level":[32],"levelId":[32],"isOpen":[32],"parentName":[32],"parentHref":[32],"parentLinkId":[32],"listCount":[32],"alignment":[32]}],[4,"pn-language-selector",{"value":[1537],"selectedLanguageName":[32],"options":[32],"i18n":[32]}],[0,"pn-language-selector-option",{"name":[1],"code":[1],"url":[1],"selected":[4],"currentLanguage":[1,"current-language"]}],[4,"pn-mainnav",{"market":[1],"language":[1],"navigationId":[1,"navigation-id"],"openMenu":[1028,"open-menu"],"navLabel":[1,"nav-label"]},[[0,"language","setLanguage"],[0,"market","setMarket"],[0,"menuLanguageChange","onLanguageChange"],[0,"setmenuopenstate","setMenuOpenState"],[0,"openMenuLevelChange","onOpenMenuLevelChange"]]],[4,"pn-mainnav-list",{"heading":[1],"linkCount":[32]}],[0,"pn-marketweb-siteheader-login",{"endpoint":[1],"i18n":[8,"i-1-8n"],"emitEvents":[4,"emit-events"],"loginDialog":[1040],"loginManager":[32],"loggedIn":[32],"toggleButtonText":[32]}],[0,"pn-marketweb-siteheader-search",{"i18n":[8,"i-1-8n"],"showOnlyLink":[1028,"show-only-link"],"hideSearch":[1028,"hide-search"],"search":[1040]}],[4,"pn-site-selector",{"buttontext":[1537],"heading":[1537],"language":[1537],"i18n":[32]}],[0,"pn-site-selector-item",{"url":[1],"heading":[1],"description":[1],"newwindow":[4]}]]],["pn-product-tile_3.cjs",[[4,"pn-product-tile"],[0,"pn-product-tile-info",{"label":[1],"text":[1],"icon":[1]}],[0,"pn-product-tile-price",{"label":[1],"amount":[1],"currency":[1],"url":[1]}]]]], options);
|
|
59
59
|
});
|
|
@@ -79,6 +79,10 @@ let PnMarketwebSiteheader = class {
|
|
|
79
79
|
this.hideSearch = false;
|
|
80
80
|
/** Hides the login if set to true*/
|
|
81
81
|
this.hideLogin = false;
|
|
82
|
+
/** Forward session to backend */
|
|
83
|
+
this.sessionForward = false;
|
|
84
|
+
/** Event based only language switch */
|
|
85
|
+
this.spaMode = false;
|
|
82
86
|
this.gotData = false;
|
|
83
87
|
this.fetchingData = false;
|
|
84
88
|
// Menu state
|
|
@@ -119,11 +123,6 @@ let PnMarketwebSiteheader = class {
|
|
|
119
123
|
this.endpoint = "";
|
|
120
124
|
}
|
|
121
125
|
}
|
|
122
|
-
// TODO
|
|
123
|
-
//* Expose market and language attributes when changed internally
|
|
124
|
-
//* Business logic to select market and language depending on domains / html tag.
|
|
125
|
-
//* Property to stop language change from changeing url, throw an event instead.
|
|
126
|
-
//* Fetch new data when langauge or market is changed
|
|
127
126
|
async init() {
|
|
128
127
|
this.setTranslations();
|
|
129
128
|
await this.fetchData();
|
|
@@ -134,6 +133,9 @@ let PnMarketwebSiteheader = class {
|
|
|
134
133
|
this.i18n = translations[this.language];
|
|
135
134
|
}
|
|
136
135
|
}
|
|
136
|
+
onLanguageSelectorChange(e) {
|
|
137
|
+
this.language = e.detail;
|
|
138
|
+
}
|
|
137
139
|
onLanguageChange() {
|
|
138
140
|
this.setTranslations();
|
|
139
141
|
this.changeLanguage.emit(this.language);
|
|
@@ -153,9 +155,12 @@ let PnMarketwebSiteheader = class {
|
|
|
153
155
|
const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
|
|
154
156
|
const response = await fetch(fetchUrl);
|
|
155
157
|
const data = await response.json();
|
|
156
|
-
this.setStateFromData(data);
|
|
158
|
+
await this.setStateFromData(data);
|
|
157
159
|
}
|
|
158
160
|
getLanguageVersionUrl(item) {
|
|
161
|
+
if (this.spaMode) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
159
164
|
const alternativeTag = document.querySelector(`link[rel="alternate"][hreflang="${item.twoLetterISOLanguageName}"]`);
|
|
160
165
|
if (alternativeTag) {
|
|
161
166
|
return alternativeTag.getAttribute('href');
|
|
@@ -164,7 +169,7 @@ let PnMarketwebSiteheader = class {
|
|
|
164
169
|
// Add trailing slash to domain if it's missing
|
|
165
170
|
return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
|
|
166
171
|
}
|
|
167
|
-
setStateFromData(data) {
|
|
172
|
+
async setStateFromData(data) {
|
|
168
173
|
if (typeof data !== "object") {
|
|
169
174
|
console.warn('Data was not valid', data);
|
|
170
175
|
}
|
|
@@ -188,10 +193,26 @@ let PnMarketwebSiteheader = class {
|
|
|
188
193
|
// Set language selector
|
|
189
194
|
this.languageSelector = data.languageSelectorViewModel;
|
|
190
195
|
this.loginDialog = data.loginViewModel;
|
|
196
|
+
await this.spaModeAdjustments();
|
|
191
197
|
this.gotData = true;
|
|
192
198
|
this.fetchingData = true;
|
|
193
199
|
window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
|
|
194
200
|
}
|
|
201
|
+
async spaModeAdjustments() {
|
|
202
|
+
if (!this.spaMode) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
onLoginStateChange(e) {
|
|
208
|
+
var _a, _b;
|
|
209
|
+
if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.loggedIn) && ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.token) && this.sessionForward) {
|
|
210
|
+
try {
|
|
211
|
+
fetch('/api/userprofile/sync?token=' + e.detail.token);
|
|
212
|
+
}
|
|
213
|
+
catch (e) { }
|
|
214
|
+
}
|
|
215
|
+
}
|
|
195
216
|
promotedItemId(item) {
|
|
196
217
|
return "promo-" + item.linkText.replace(/[^A-Za-z0-9.\\\/]/igm, "");
|
|
197
218
|
}
|
|
@@ -236,7 +257,7 @@ let PnMarketwebSiteheader = class {
|
|
|
236
257
|
return (index.h("pn-mainnav-link", { name: childitem.name, href: childitem.href, target: (_a = childitem.linkTarget) !== null && _a !== void 0 ? _a : "_self", linkid: childitem.trackingId }));
|
|
237
258
|
})), (item.promotedMenuItems && item.promotedMenuItems.length > 0) &&
|
|
238
259
|
index.h("pn-mainnav-list", { heading: item.promotedMenuItemsHeader }, item.promotedMenuItems.map((childitem) => (index.h("pn-mainnav-link", { href: childitem.href, name: childitem.linkText, target: childitem.openInNewWindow ? "_blank" : "_self", linkid: this.promotedItemId(childitem) })))))));
|
|
239
|
-
})), index.h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (index.h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
|
|
260
|
+
})), index.h("div", { slot: "footer", class: "siteheader-menu-footer" }, (this.gotData && this.loginDialog && !this.hideLogin) && (index.h("pn-marketweb-siteheader-login", { emitEvents: false, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })), (this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
|
|
240
261
|
index.h("pn-language-selector", { value: this.language }, this.languageSelector.languages.map(language => index.h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))), !this.hideSiteSelector &&
|
|
241
262
|
index.h("pn-site-selector", { language: this.language }, (this.gotData && ((_j = this.siteSelector) === null || _j === void 0 ? void 0 : _j.currentSiteTitle)) &&
|
|
242
263
|
index.h("pn-site-selector-item", { heading: this.siteSelector.currentSiteTitle, description: this.siteSelector.currentSiteDescription }), (this.gotData && ((_k = this.siteSelector) === null || _k === void 0 ? void 0 : _k.siteSelections)) && this.siteSelector.siteSelections.map((site) => index.h("pn-site-selector-item", { heading: site.linkText, description: site.linkDescription, url: site.pageLink, newwindow: site.openInNewWindow })))), index.h("div", { slot: "top", class: "siteheader-menu-top" }, index.h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, i18n: this.i18n }))))), index.h("pn-marketweb-siteheader-search", { search: this.search, "hide-search": this.hideSearch, "show-only-link": this.minimizeSearch, i18n: this.i18n })))));
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, Prop, h, State, Element, Watch } from "@stencil/core";
|
|
1
|
+
import { Component, Prop, h, State, Element, Watch, Event } from "@stencil/core";
|
|
2
2
|
import { PNLoginManager } from "./pn-marketweb-siteheader-loginmanager";
|
|
3
3
|
export class PnMarketwebSiteheaderLogin {
|
|
4
4
|
constructor() {
|
|
5
5
|
/** Specifies which endpoint domain we should load from */
|
|
6
6
|
this.endpoint = "";
|
|
7
|
+
this.emitEvents = true;
|
|
7
8
|
// Login dialog
|
|
8
9
|
this.loginDialog = null;
|
|
9
10
|
this.loginManager = null;
|
|
@@ -12,11 +13,12 @@ export class PnMarketwebSiteheaderLogin {
|
|
|
12
13
|
}
|
|
13
14
|
componentWillLoad() {
|
|
14
15
|
this.loginManager = new PNLoginManager({ endpoint: this.endpoint, eventTarget: this.hostElement });
|
|
16
|
+
this.hostElement["loginmanager"] = this.loginManager;
|
|
17
|
+
this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
|
|
15
18
|
this.init();
|
|
16
19
|
}
|
|
17
20
|
async init() {
|
|
18
21
|
this.toggleButtonText = this.loginDialog.loginMenuLinkText;
|
|
19
|
-
this.hostElement.addEventListener(this.loginManager.events.loginstatechange, this.onLoginStateChange.bind(this));
|
|
20
22
|
this.loginManager.init();
|
|
21
23
|
this.setToggleButtonText();
|
|
22
24
|
}
|
|
@@ -35,8 +37,11 @@ export class PnMarketwebSiteheaderLogin {
|
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
onLoginStateChange(e) {
|
|
38
|
-
this.loggedIn
|
|
39
|
-
|
|
40
|
+
if (this.loggedIn !== e.detail && this.emitEvents) {
|
|
41
|
+
this.loggedIn = e.detail;
|
|
42
|
+
this.loginStateChange.emit({ loggedIn: this.loggedIn, token: this.loginManager.getToken() });
|
|
43
|
+
this.setToggleButtonText();
|
|
44
|
+
}
|
|
40
45
|
}
|
|
41
46
|
render() {
|
|
42
47
|
var _a, _b, _c;
|
|
@@ -64,7 +69,7 @@ export class PnMarketwebSiteheaderLogin {
|
|
|
64
69
|
h("div", null,
|
|
65
70
|
h("ul", null, this.loginDialog.loggedInLinks.map((link) => {
|
|
66
71
|
const isLogoutLink = link.href.indexOf('logout');
|
|
67
|
-
const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '')) : link.href;
|
|
72
|
+
const href = (isLogoutLink) ? this.loginManager.getLogoutUrl(link.href.replace('logout', '').replace('http://window.location.href/?', '').replace('https://window.location.href/?', '')) : link.href;
|
|
68
73
|
return (h("li", null,
|
|
69
74
|
h("a", Object.assign({ href: href }, (link.openInNewWindow && { target: '_blank' })),
|
|
70
75
|
h("pn-button", { appearance: (link.primaryLinkApperance ? "dark" : "light"), onClick: () => { if (isLogoutLink) {
|
|
@@ -119,6 +124,24 @@ export class PnMarketwebSiteheaderLogin {
|
|
|
119
124
|
"attribute": "i-1-8n",
|
|
120
125
|
"reflect": false
|
|
121
126
|
},
|
|
127
|
+
"emitEvents": {
|
|
128
|
+
"type": "boolean",
|
|
129
|
+
"mutable": false,
|
|
130
|
+
"complexType": {
|
|
131
|
+
"original": "boolean",
|
|
132
|
+
"resolved": "boolean",
|
|
133
|
+
"references": {}
|
|
134
|
+
},
|
|
135
|
+
"required": false,
|
|
136
|
+
"optional": false,
|
|
137
|
+
"docs": {
|
|
138
|
+
"tags": [],
|
|
139
|
+
"text": ""
|
|
140
|
+
},
|
|
141
|
+
"attribute": "emit-events",
|
|
142
|
+
"reflect": false,
|
|
143
|
+
"defaultValue": "true"
|
|
144
|
+
},
|
|
122
145
|
"loginDialog": {
|
|
123
146
|
"type": "unknown",
|
|
124
147
|
"mutable": true,
|
|
@@ -146,6 +169,22 @@ export class PnMarketwebSiteheaderLogin {
|
|
|
146
169
|
"loggedIn": {},
|
|
147
170
|
"toggleButtonText": {}
|
|
148
171
|
}; }
|
|
172
|
+
static get events() { return [{
|
|
173
|
+
"method": "loginStateChange",
|
|
174
|
+
"name": "loginStateChange",
|
|
175
|
+
"bubbles": true,
|
|
176
|
+
"cancelable": true,
|
|
177
|
+
"composed": true,
|
|
178
|
+
"docs": {
|
|
179
|
+
"tags": [],
|
|
180
|
+
"text": ""
|
|
181
|
+
},
|
|
182
|
+
"complexType": {
|
|
183
|
+
"original": "any",
|
|
184
|
+
"resolved": "any",
|
|
185
|
+
"references": {}
|
|
186
|
+
}
|
|
187
|
+
}]; }
|
|
149
188
|
static get elementRef() { return "hostElement"; }
|
|
150
189
|
static get watchers() { return [{
|
|
151
190
|
"propName": "i18n",
|
|
@@ -110,10 +110,11 @@ class PNLoginManager {
|
|
|
110
110
|
const params = new URLSearchParams(window.location.search);
|
|
111
111
|
if (params.get("oneTimeCode")) {
|
|
112
112
|
const oneTimeCode = params.get("oneTimeCode");
|
|
113
|
-
this.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
this.exchangeToken(oneTimeCode).then(() => {
|
|
114
|
+
const currentHref = window.location.href;
|
|
115
|
+
const paramPrefix = (currentHref.indexOf('?oneTimeCode') !== -1) ? "?" : "&";
|
|
116
|
+
history.replaceState({}, document.querySelector('title').innerText, currentHref.replace(`${paramPrefix}oneTimeCode=${oneTimeCode}`, ''));
|
|
117
|
+
});
|
|
117
118
|
}
|
|
118
119
|
}
|
|
119
120
|
async fetchUserInfo() {
|
|
@@ -149,7 +150,10 @@ class PNLoginManager {
|
|
|
149
150
|
this.store.remove(this.keys.expire);
|
|
150
151
|
this.store.remove(this.keys.expireDate);
|
|
151
152
|
}
|
|
152
|
-
|
|
153
|
+
getToken() {
|
|
154
|
+
return this.store.get(this.keys.token);
|
|
155
|
+
}
|
|
156
|
+
async exchangeToken(oneTimeCode) {
|
|
153
157
|
this.clearUserData();
|
|
154
158
|
const response = await fetch(`${this.getBaseUrl()}${this.endpoints.tokenExchangeEndpoint}?oneTimeCode=${oneTimeCode}`);
|
|
155
159
|
const { token } = await response.json();
|
package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js
CHANGED
|
@@ -22,6 +22,10 @@ export class PnMarketwebSiteheader {
|
|
|
22
22
|
this.hideSearch = false;
|
|
23
23
|
/** Hides the login if set to true*/
|
|
24
24
|
this.hideLogin = false;
|
|
25
|
+
/** Forward session to backend */
|
|
26
|
+
this.sessionForward = false;
|
|
27
|
+
/** Event based only language switch */
|
|
28
|
+
this.spaMode = false;
|
|
25
29
|
this.gotData = false;
|
|
26
30
|
this.fetchingData = false;
|
|
27
31
|
// Menu state
|
|
@@ -62,11 +66,6 @@ export class PnMarketwebSiteheader {
|
|
|
62
66
|
this.endpoint = "";
|
|
63
67
|
}
|
|
64
68
|
}
|
|
65
|
-
// TODO
|
|
66
|
-
//* Expose market and language attributes when changed internally
|
|
67
|
-
//* Business logic to select market and language depending on domains / html tag.
|
|
68
|
-
//* Property to stop language change from changeing url, throw an event instead.
|
|
69
|
-
//* Fetch new data when langauge or market is changed
|
|
70
69
|
async init() {
|
|
71
70
|
this.setTranslations();
|
|
72
71
|
await this.fetchData();
|
|
@@ -77,6 +76,9 @@ export class PnMarketwebSiteheader {
|
|
|
77
76
|
this.i18n = translations[this.language];
|
|
78
77
|
}
|
|
79
78
|
}
|
|
79
|
+
onLanguageSelectorChange(e) {
|
|
80
|
+
this.language = e.detail;
|
|
81
|
+
}
|
|
80
82
|
onLanguageChange() {
|
|
81
83
|
this.setTranslations();
|
|
82
84
|
this.changeLanguage.emit(this.language);
|
|
@@ -96,9 +98,12 @@ export class PnMarketwebSiteheader {
|
|
|
96
98
|
const fetchUrl = `${endpointBase}${this.endpointPath}?market=${this.market}&language=${this.language}`;
|
|
97
99
|
const response = await fetch(fetchUrl);
|
|
98
100
|
const data = await response.json();
|
|
99
|
-
this.setStateFromData(data);
|
|
101
|
+
await this.setStateFromData(data);
|
|
100
102
|
}
|
|
101
103
|
getLanguageVersionUrl(item) {
|
|
104
|
+
if (this.spaMode) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
102
107
|
const alternativeTag = document.querySelector(`link[rel="alternate"][hreflang="${item.twoLetterISOLanguageName}"]`);
|
|
103
108
|
if (alternativeTag) {
|
|
104
109
|
return alternativeTag.getAttribute('href');
|
|
@@ -107,7 +112,7 @@ export class PnMarketwebSiteheader {
|
|
|
107
112
|
// Add trailing slash to domain if it's missing
|
|
108
113
|
return siteUrl + ((siteUrl.lastIndexOf("/") !== siteUrl.length - 1) ? "/" : "") + item.twoLetterISOLanguageName;
|
|
109
114
|
}
|
|
110
|
-
setStateFromData(data) {
|
|
115
|
+
async setStateFromData(data) {
|
|
111
116
|
if (typeof data !== "object") {
|
|
112
117
|
console.warn('Data was not valid', data);
|
|
113
118
|
}
|
|
@@ -131,10 +136,26 @@ export class PnMarketwebSiteheader {
|
|
|
131
136
|
// Set language selector
|
|
132
137
|
this.languageSelector = data.languageSelectorViewModel;
|
|
133
138
|
this.loginDialog = data.loginViewModel;
|
|
139
|
+
await this.spaModeAdjustments();
|
|
134
140
|
this.gotData = true;
|
|
135
141
|
this.fetchingData = true;
|
|
136
142
|
window.setTimeout(() => { this.checkMenuOverflow(); }, 100);
|
|
137
143
|
}
|
|
144
|
+
async spaModeAdjustments() {
|
|
145
|
+
if (!this.spaMode) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
onLoginStateChange(e) {
|
|
151
|
+
var _a, _b;
|
|
152
|
+
if (((_a = e.detail) === null || _a === void 0 ? void 0 : _a.loggedIn) && ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.token) && this.sessionForward) {
|
|
153
|
+
try {
|
|
154
|
+
fetch('/api/userprofile/sync?token=' + e.detail.token);
|
|
155
|
+
}
|
|
156
|
+
catch (e) { }
|
|
157
|
+
}
|
|
158
|
+
}
|
|
138
159
|
promotedItemId(item) {
|
|
139
160
|
return "promo-" + item.linkText.replace(/[^A-Za-z0-9.\\\/]/igm, "");
|
|
140
161
|
}
|
|
@@ -204,7 +225,7 @@ export class PnMarketwebSiteheader {
|
|
|
204
225
|
h("pn-mainnav-list", { heading: item.promotedMenuItemsHeader }, item.promotedMenuItems.map((childitem) => (h("pn-mainnav-link", { href: childitem.href, name: childitem.linkText, target: childitem.openInNewWindow ? "_blank" : "_self", linkid: this.promotedItemId(childitem) })))))));
|
|
205
226
|
})),
|
|
206
227
|
h("div", { slot: "footer", class: "siteheader-menu-footer" },
|
|
207
|
-
(this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })),
|
|
228
|
+
(this.gotData && this.loginDialog && !this.hideLogin) && (h("pn-marketweb-siteheader-login", { emitEvents: false, loginDialog: this.loginDialog, endpoint: this.endpoint, i18n: this.i18n })),
|
|
208
229
|
(this.gotData && ((_h = this.languageSelector) === null || _h === void 0 ? void 0 : _h.languages)) && !this.hideLanguageSelector &&
|
|
209
230
|
h("pn-language-selector", { value: this.language }, this.languageSelector.languages.map(language => h("pn-language-selector-option", { name: language.nativeName, code: language.twoLetterISOLanguageName, selected: language.isCurrent, url: this.getLanguageVersionUrl(language) }))),
|
|
210
231
|
!this.hideSiteSelector &&
|
|
@@ -367,6 +388,42 @@ export class PnMarketwebSiteheader {
|
|
|
367
388
|
"attribute": "hide-login",
|
|
368
389
|
"reflect": true,
|
|
369
390
|
"defaultValue": "false"
|
|
391
|
+
},
|
|
392
|
+
"sessionForward": {
|
|
393
|
+
"type": "boolean",
|
|
394
|
+
"mutable": false,
|
|
395
|
+
"complexType": {
|
|
396
|
+
"original": "boolean",
|
|
397
|
+
"resolved": "boolean",
|
|
398
|
+
"references": {}
|
|
399
|
+
},
|
|
400
|
+
"required": false,
|
|
401
|
+
"optional": false,
|
|
402
|
+
"docs": {
|
|
403
|
+
"tags": [],
|
|
404
|
+
"text": "Forward session to backend"
|
|
405
|
+
},
|
|
406
|
+
"attribute": "session-forward",
|
|
407
|
+
"reflect": false,
|
|
408
|
+
"defaultValue": "false"
|
|
409
|
+
},
|
|
410
|
+
"spaMode": {
|
|
411
|
+
"type": "boolean",
|
|
412
|
+
"mutable": false,
|
|
413
|
+
"complexType": {
|
|
414
|
+
"original": "boolean",
|
|
415
|
+
"resolved": "boolean",
|
|
416
|
+
"references": {}
|
|
417
|
+
},
|
|
418
|
+
"required": false,
|
|
419
|
+
"optional": false,
|
|
420
|
+
"docs": {
|
|
421
|
+
"tags": [],
|
|
422
|
+
"text": "Event based only language switch"
|
|
423
|
+
},
|
|
424
|
+
"attribute": "spa-mode",
|
|
425
|
+
"reflect": false,
|
|
426
|
+
"defaultValue": "false"
|
|
370
427
|
}
|
|
371
428
|
}; }
|
|
372
429
|
static get states() { return {
|
|
@@ -421,6 +478,18 @@ export class PnMarketwebSiteheader {
|
|
|
421
478
|
"methodName": "onMarketChange"
|
|
422
479
|
}]; }
|
|
423
480
|
static get listeners() { return [{
|
|
481
|
+
"name": "setLanguage",
|
|
482
|
+
"method": "onLanguageSelectorChange",
|
|
483
|
+
"target": undefined,
|
|
484
|
+
"capture": false,
|
|
485
|
+
"passive": false
|
|
486
|
+
}, {
|
|
487
|
+
"name": "loginStateChange",
|
|
488
|
+
"method": "onLoginStateChange",
|
|
489
|
+
"target": undefined,
|
|
490
|
+
"capture": false,
|
|
491
|
+
"passive": false
|
|
492
|
+
}, {
|
|
424
493
|
"name": "resize",
|
|
425
494
|
"method": "handleResize",
|
|
426
495
|
"target": "window",
|
|
@@ -48,7 +48,8 @@ const PrimaryTemplate = ({ ...args }) => {
|
|
|
48
48
|
hide-site-selector="false"
|
|
49
49
|
hide-language-selector="false"
|
|
50
50
|
hide-search="false"
|
|
51
|
-
hide-login="false"
|
|
51
|
+
hide-login="false"
|
|
52
|
+
session-forward="true">
|
|
52
53
|
</pn-marketweb-siteheader>
|
|
53
54
|
<div style="height:120vh; margin:2em; max-width:calc(100vw - 1em);background:#ccc;border:1px solid #333;">
|
|
54
55
|
Content that is higher than 100% viewport height
|
|
@@ -74,11 +75,25 @@ const MinimalOptionsTemplate = ({ ...args }) => {
|
|
|
74
75
|
`;
|
|
75
76
|
};
|
|
76
77
|
|
|
77
|
-
|
|
78
|
-
|
|
79
78
|
export const MinimalOptions = MinimalOptionsTemplate.bind({});
|
|
80
79
|
MinimalOptionsTemplate.args = {
|
|
81
80
|
market : "",
|
|
82
81
|
language: '',
|
|
83
82
|
endpoint: ''
|
|
84
83
|
};
|
|
84
|
+
|
|
85
|
+
const SPAModeOptionsTemplate = ({ ...args }) => {
|
|
86
|
+
return `
|
|
87
|
+
<div style="background:#ddd;min-height:100vh;">
|
|
88
|
+
<pn-marketweb-siteheader language="sv" spa-mode="true">
|
|
89
|
+
</pn-marketweb-siteheader>
|
|
90
|
+
</div>
|
|
91
|
+
`;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export const SPAModeOptions = SPAModeOptionsTemplate.bind({});
|
|
95
|
+
SPAModeOptions.args = {
|
|
96
|
+
market : "",
|
|
97
|
+
language: '',
|
|
98
|
+
endpoint: ''
|
|
99
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Prop, h, State, Host, Watch, Element } from "@stencil/core";
|
|
1
|
+
import { Component, Prop, h, State, Host, Watch, Element, Event } from "@stencil/core";
|
|
2
2
|
import { translations } from "./translations";
|
|
3
3
|
export class PnlanguageSelector {
|
|
4
4
|
constructor() {
|
|
@@ -41,6 +41,7 @@ export class PnlanguageSelector {
|
|
|
41
41
|
onSetCurrentLanguage(option) {
|
|
42
42
|
this.value = option.code;
|
|
43
43
|
this.selectedLanguageName = option.name;
|
|
44
|
+
this.setLanguage.emit(this.value);
|
|
44
45
|
}
|
|
45
46
|
setTranslations() {
|
|
46
47
|
if (translations[this.value]) {
|
|
@@ -77,7 +78,7 @@ export class PnlanguageSelector {
|
|
|
77
78
|
static get properties() { return {
|
|
78
79
|
"value": {
|
|
79
80
|
"type": "string",
|
|
80
|
-
"mutable":
|
|
81
|
+
"mutable": true,
|
|
81
82
|
"complexType": {
|
|
82
83
|
"original": "string",
|
|
83
84
|
"resolved": "string",
|
|
@@ -99,6 +100,22 @@ export class PnlanguageSelector {
|
|
|
99
100
|
"options": {},
|
|
100
101
|
"i18n": {}
|
|
101
102
|
}; }
|
|
103
|
+
static get events() { return [{
|
|
104
|
+
"method": "setLanguage",
|
|
105
|
+
"name": "setLanguage",
|
|
106
|
+
"bubbles": true,
|
|
107
|
+
"cancelable": true,
|
|
108
|
+
"composed": true,
|
|
109
|
+
"docs": {
|
|
110
|
+
"tags": [],
|
|
111
|
+
"text": ""
|
|
112
|
+
},
|
|
113
|
+
"complexType": {
|
|
114
|
+
"original": "any",
|
|
115
|
+
"resolved": "any",
|
|
116
|
+
"references": {}
|
|
117
|
+
}
|
|
118
|
+
}]; }
|
|
102
119
|
static get elementRef() { return "hostElement"; }
|
|
103
120
|
static get watchers() { return [{
|
|
104
121
|
"propName": "value",
|