@postnord/pn-marketweb-components 4.2.4 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/header-theme-a250bf67.js +245 -0
- package/cjs/header-theme-a250bf67.js.map +1 -0
- package/cjs/index-9a9efa1c.js +24 -16
- package/cjs/loader.cjs.js +1 -1
- package/cjs/pn-app-banner.cjs.entry.js +1 -1
- package/cjs/pn-breakpoints.cjs.entry.js +1 -1
- package/cjs/pn-chat-message_2.cjs.entry.js +2 -2
- package/cjs/pn-chat.cjs.entry.js +2 -2
- package/cjs/pn-customernumber-selector-option.cjs.entry.js +1 -1
- package/cjs/pn-customernumber-selector.cjs.entry.js +1 -1
- package/cjs/pn-find-price-result.cjs.entry.js +1 -1
- package/cjs/pn-find-price.cjs.entry.js +2 -2
- package/cjs/pn-find-service-and-price-result.cjs.entry.js +1 -1
- package/cjs/pn-find-service-and-price.cjs.entry.js +1 -1
- package/cjs/pn-hero-block-international.cjs.entry.js +1 -1
- package/cjs/pn-language-selector_13.cjs.entry.js +1519 -0
- package/cjs/pn-language-selector_13.cjs.entry.js.map +1 -0
- package/cjs/pn-level-up-modal.cjs.entry.js +1 -1
- package/cjs/pn-level-up.cjs.entry.js +2 -2
- package/cjs/pn-link-list.cjs.entry.js +1 -1
- package/cjs/pn-market-web-components.cjs.js +1 -1
- package/cjs/pn-marketweb-header-main-row_2.cjs.entry.js +222 -0
- package/cjs/pn-marketweb-header-main-row_2.cjs.entry.js.map +1 -0
- package/cjs/pn-marketweb-header-skeleton-loader.cjs.entry.js +23 -0
- package/cjs/pn-marketweb-header-skeleton-loader.cjs.entry.js.map +1 -0
- package/cjs/pn-marketweb-header-toggle.cjs.entry.js +46 -0
- package/cjs/pn-marketweb-header-toggle.cjs.entry.js.map +1 -0
- package/cjs/pn-marketweb-header.cjs.entry.js +1043 -0
- package/cjs/pn-marketweb-header.cjs.entry.js.map +1 -0
- package/cjs/pn-marketweb-icon.cjs.entry.js +1 -1
- package/cjs/{pn-marketweb-siteheader-login-linklist.cjs.entry.js → pn-marketweb-siteheader-login-button_2.cjs.entry.js} +44 -2
- package/cjs/pn-marketweb-siteheader-login-button_2.cjs.entry.js.map +1 -0
- package/cjs/pn-marketweb-siteheader-login-mypage-button.cjs.entry.js +1 -1
- package/cjs/pn-marketweb-siteheader.cjs.entry.js +7 -199
- package/cjs/pn-marketweb-siteheader.cjs.entry.js.map +1 -1
- package/cjs/pn-marketweb-table.cjs.entry.js +1 -1
- package/cjs/pn-media-block.cjs.entry.js +1 -1
- package/cjs/pn-pex-pricefinder.cjs.entry.js +1 -1
- package/cjs/pn-product-card_3.cjs.entry.js +1 -1
- package/cjs/pn-product-pricelist-result.cjs.entry.js +1 -1
- package/cjs/pn-product-pricelist.cjs.entry.js +2 -2
- package/cjs/pn-product-tile-info_2.cjs.entry.js +1 -1
- package/cjs/pn-product-tile.cjs.entry.js +1 -1
- package/cjs/pn-profile-modal-customernumber.cjs.entry.js +1 -1
- package/cjs/pn-profile-modal-profile.cjs.entry.js +2 -2
- package/cjs/pn-profile-modal-type.cjs.entry.js +1 -1
- package/cjs/pn-profile-modal.cjs.entry.js +1 -1
- package/cjs/pn-profile-selector-option.cjs.entry.js +1 -1
- package/cjs/pn-profile-selector.cjs.entry.js +1 -1
- package/cjs/pn-proxio-findprice-result.cjs.entry.js +1 -1
- package/cjs/pn-proxio-findprice.cjs.entry.js +3 -3
- package/cjs/pn-proxio-pricegroup.cjs.entry.js +1 -1
- package/cjs/pn-proxio-productcard_4.cjs.entry.js +3 -3
- package/cjs/pn-qr-code-generator.cjs.entry.js +1 -1
- package/cjs/pn-sidenav-level.cjs.entry.js +1 -1
- package/cjs/pn-sidenav-link.cjs.entry.js +1 -1
- package/cjs/pn-sidenav-togglebutton.cjs.entry.js +1 -1
- package/cjs/pn-sidenav.cjs.entry.js +1 -1
- package/cjs/pn-site-footer_3.cjs.entry.js +3 -3
- package/cjs/pn-titletag.cjs.entry.js +1 -1
- package/cjs/pn-usp-promoter.cjs.entry.js +1 -1
- package/cjs/pn-versa-card.cjs.entry.js +1 -1
- package/cjs/pn-versa-card.cjs.entry.js.map +1 -1
- package/cjs/translations-9510f11c.js +198 -0
- package/cjs/translations-9510f11c.js.map +1 -0
- package/collection/collection-manifest.json +5 -0
- package/collection/components/cards/pn-versa-card/pn-versa-card.css +27 -2
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.css +204 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.js +658 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.css +217 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.js +20 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.css +115 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.js +520 -0
- package/collection/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/components/shared/pn-marketweb-header-shared.js +37 -0
- package/collection/components/layout-components/pn-marketweb-header/components/shared/pn-marketweb-header-shared.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/mapper/pn-marketweb-header.mapper.js +109 -0
- package/collection/components/layout-components/pn-marketweb-header/mapper/pn-marketweb-header.mapper.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.css +225 -0
- package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.js +916 -0
- package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.js +638 -0
- package/collection/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/services/pn-marketweb-header.service.js +180 -0
- package/collection/components/layout-components/pn-marketweb-header/services/pn-marketweb-header.service.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.js +2 -0
- package/collection/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-i18n.js +37 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-i18n.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-language.js +46 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-language.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-menu.js +36 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-menu.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-theme.js +48 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-theme.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.js +101 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.js +63 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-url.js +91 -0
- package/collection/components/layout-components/pn-marketweb-header/utils/header-url.js.map +1 -0
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-button.js +1 -1
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-linklist.css +34 -12
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-mypage-button.js +1 -1
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login-profileselection.css +36 -15
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.css +27 -13
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js +29 -4
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.js.map +1 -1
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-types.js.map +1 -1
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-unified-login.js +1 -1
- package/collection/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader.js +4 -4
- package/collection/components/media/pn-media-block/pn-media-block.js +1 -1
- package/collection/components/minor/pn-app-banner/pn-app-banner.js +1 -1
- package/collection/components/minor/pn-marketweb-icon/pn-marketweb-icon.js +1 -1
- package/collection/components/minor/pn-swan/pn-swan.js +1 -1
- package/collection/components/minor/pn-titletag/pn-titletag.js +1 -1
- package/collection/components/navigation/pn-language-selector/pn-language-selector-option.css +25 -12
- package/collection/components/navigation/pn-language-selector/pn-language-selector-option.js +1 -1
- package/collection/components/navigation/pn-language-selector/pn-language-selector.css +17 -5
- package/collection/components/navigation/pn-language-selector/pn-language-selector.js +22 -3
- package/collection/components/navigation/pn-language-selector/pn-language-selector.js.map +1 -1
- package/collection/components/navigation/pn-mainnav/pn-mainnav-level.css +37 -17
- package/collection/components/navigation/pn-mainnav/pn-mainnav-level.js +2 -2
- package/collection/components/navigation/pn-mainnav/pn-mainnav-link.css +81 -33
- package/collection/components/navigation/pn-mainnav/pn-mainnav-link.js +1 -1
- package/collection/components/navigation/pn-mainnav/pn-mainnav-list.css +12 -2
- package/collection/components/navigation/pn-mainnav/pn-mainnav-list.js +1 -1
- package/collection/components/navigation/pn-mainnav/pn-mainnav.css +35 -22
- package/collection/components/navigation/pn-mainnav/pn-mainnav.js +1 -1
- package/collection/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.css +80 -0
- package/collection/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.js +147 -0
- package/collection/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.js.map +1 -0
- package/collection/components/navigation/pn-sidenav/pn-sidenav-level.js +1 -1
- package/collection/components/navigation/pn-sidenav/pn-sidenav-link.js +1 -1
- package/collection/components/navigation/pn-sidenav/pn-sidenav-togglebutton.js +1 -1
- package/collection/components/navigation/pn-sidenav/pn-sidenav.js +1 -1
- package/collection/components/navigation/pn-site-footer/pn-site-footer-col.js +1 -1
- package/collection/components/navigation/pn-site-footer/pn-site-footer.js +1 -1
- package/collection/components/navigation/pn-site-selector/pn-site-selector-item.css +16 -12
- package/collection/components/navigation/pn-site-selector/pn-site-selector-item.js +1 -1
- package/collection/components/navigation/pn-site-selector/pn-site-selector.css +15 -0
- package/collection/components/navigation/pn-site-selector/pn-site-selector.js +22 -3
- package/collection/components/navigation/pn-site-selector/pn-site-selector.js.map +1 -1
- package/collection/components/profile/pn-customernumber-selector/pn-customernumber-selector-option.js +1 -1
- package/collection/components/profile/pn-customernumber-selector/pn-customernumber-selector.js +1 -1
- package/collection/components/profile/pn-profile-modal/pn-profile-modal-customernumber.js +1 -1
- package/collection/components/profile/pn-profile-modal/pn-profile-modal-profile.js +2 -2
- package/collection/components/profile/pn-profile-modal/pn-profile-modal-type.js +1 -1
- package/collection/components/profile/pn-profile-modal/pn-profile-modal.js +1 -1
- package/collection/components/profile/pn-profile-selector/pn-profile-selector-option.js +1 -1
- package/collection/components/profile/pn-profile-selector/pn-profile-selector.js +1 -1
- package/collection/components/utilities/pn-breakpoints/pn-breakpoints.js +1 -1
- package/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +1 -1
- package/collection/components/widgets/pn-chat/pn-chat.js +2 -2
- package/collection/components/widgets/pn-find-price/pn-find-price-result.js +1 -1
- package/collection/components/widgets/pn-find-price/pn-find-price.js +2 -2
- package/collection/components/widgets/pn-find-service-and-price/pn-find-service-and-price-result.js +1 -1
- package/collection/components/widgets/pn-find-service-and-price/pn-find-service-and-price.js +1 -1
- package/collection/components/widgets/pn-hero-block-international/pn-hero-block-international.js +1 -1
- package/collection/components/widgets/pn-level-up/pn-level-up-modal/pn-level-up-modal.js +1 -1
- package/collection/components/widgets/pn-level-up/pn-level-up.js +2 -2
- package/collection/components/widgets/pn-link-list/pn-link-list.js +1 -1
- package/collection/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.js +1 -1
- package/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js +1 -1
- package/collection/components/widgets/pn-pex-pricefinder/pn-pex-pricefinder.js +1 -1
- package/collection/components/widgets/pn-product-card/pn-product-card.js +1 -1
- package/collection/components/widgets/pn-product-pricelist/pn-product-pricelist-result.js +1 -1
- package/collection/components/widgets/pn-product-pricelist/pn-product-pricelist.js +2 -2
- package/collection/components/widgets/pn-product-tile/pn-product-tile-info.js +1 -1
- package/collection/components/widgets/pn-product-tile/pn-product-tile.js +1 -1
- package/collection/components/widgets/pn-proxio-findprice/pn-proxio-findprice-result.js +1 -1
- package/collection/components/widgets/pn-proxio-findprice/pn-proxio-findprice.js +3 -3
- package/collection/components/widgets/pn-proxio-pricegroup/pn-proxio-pricegroup.js +1 -1
- package/collection/components/widgets/pn-proxio-productcard/pn-proxio-productcard-description.js +1 -1
- package/collection/components/widgets/pn-proxio-productcard/pn-proxio-productcard-information.js +1 -1
- package/collection/components/widgets/pn-proxio-productcard/pn-proxio-productcard.js +1 -1
- package/collection/components/widgets/pn-qr-code-generator/pn-qr-code-generator.js +1 -1
- package/collection/components/widgets/pn-usp-promoter/pn-usp-promoter.js +1 -1
- package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.constants.js +105 -0
- package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.constants.js.map +1 -0
- package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.service.js +166 -0
- package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.service.js.map +1 -0
- package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.types.js +2 -0
- package/collection/services/pn-refined-marketweb-context/pn-refined-marketweb-context.types.js.map +1 -0
- package/components/pn-app-banner.js +1 -1
- package/components/pn-breakpoints.js +1 -1
- package/components/pn-chat-message2.js +1 -1
- package/components/pn-chat.js +2 -2
- package/components/pn-customernumber-selector-option.js +1 -1
- package/components/pn-customernumber-selector.js +1 -1
- package/components/pn-find-price-result2.js +1 -1
- package/components/pn-find-price.js +2 -2
- package/components/pn-find-service-and-price-result2.js +1 -1
- package/components/pn-find-service-and-price.js +1 -1
- package/components/pn-hero-block-international.js +1 -1
- package/components/pn-language-selector-option2.js +2 -2
- package/components/pn-language-selector-option2.js.map +1 -1
- package/components/pn-language-selector2.js +4 -2
- package/components/pn-language-selector2.js.map +1 -1
- package/components/pn-level-up-modal2.js +1 -1
- package/components/pn-level-up.js +2 -2
- package/components/pn-link-list.js +1 -1
- package/components/pn-mainnav-level2.js +3 -3
- package/components/pn-mainnav-level2.js.map +1 -1
- package/components/pn-mainnav-link2.js +2 -2
- package/components/pn-mainnav-link2.js.map +1 -1
- package/components/pn-mainnav-list2.js +2 -2
- package/components/pn-mainnav-list2.js.map +1 -1
- package/components/pn-mainnav2.js +2 -2
- package/components/pn-mainnav2.js.map +1 -1
- package/components/pn-marketweb-carousel2.js +1 -1
- package/components/pn-marketweb-header-main-row.d.ts +11 -0
- package/components/pn-marketweb-header-main-row.js +8 -0
- package/components/pn-marketweb-header-main-row.js.map +1 -0
- package/components/pn-marketweb-header-main-row2.js +281 -0
- package/components/pn-marketweb-header-main-row2.js.map +1 -0
- package/components/pn-marketweb-header-shared.js +192 -0
- package/components/pn-marketweb-header-shared.js.map +1 -0
- package/components/pn-marketweb-header-skeleton-loader.d.ts +11 -0
- package/components/pn-marketweb-header-skeleton-loader.js +37 -0
- package/components/pn-marketweb-header-skeleton-loader.js.map +1 -0
- package/components/pn-marketweb-header-toggle.d.ts +11 -0
- package/components/pn-marketweb-header-toggle.js +8 -0
- package/components/pn-marketweb-header-toggle.js.map +1 -0
- package/components/pn-marketweb-header-toggle2.js +61 -0
- package/components/pn-marketweb-header-toggle2.js.map +1 -0
- package/components/pn-marketweb-header-top-row.d.ts +11 -0
- package/components/pn-marketweb-header-top-row.js +8 -0
- package/components/pn-marketweb-header-top-row.js.map +1 -0
- package/components/pn-marketweb-header-top-row2.js +238 -0
- package/components/pn-marketweb-header-top-row2.js.map +1 -0
- package/components/pn-marketweb-header.d.ts +11 -0
- package/components/pn-marketweb-header.js +1206 -0
- package/components/pn-marketweb-header.js.map +1 -0
- package/components/pn-marketweb-icon.js +1 -1
- package/components/pn-marketweb-siteheader-login-button2.js +1 -1
- package/components/pn-marketweb-siteheader-login-linklist2.js +1 -1
- package/components/pn-marketweb-siteheader-login-linklist2.js.map +1 -1
- package/components/pn-marketweb-siteheader-login-mypage-button.js +1 -1
- package/components/pn-marketweb-siteheader-login-profileselection2.js +1 -1
- package/components/pn-marketweb-siteheader-login-profileselection2.js.map +1 -1
- package/components/pn-marketweb-siteheader-login2.js +4 -2
- package/components/pn-marketweb-siteheader-login2.js.map +1 -1
- package/components/pn-marketweb-siteheader-unified-login2.js +1 -1
- package/components/pn-marketweb-siteheader.js +5 -197
- package/components/pn-marketweb-siteheader.js.map +1 -1
- package/components/pn-marketweb-table.js +1 -1
- package/components/pn-media-block.js +1 -1
- package/components/pn-pex-pricefinder.js +1 -1
- package/components/pn-product-card2.js +1 -1
- package/components/pn-product-pricelist-result.js +1 -1
- package/components/pn-product-pricelist.js +2 -2
- package/components/pn-product-tile-info2.js +1 -1
- package/components/pn-product-tile.js +1 -1
- package/components/pn-profile-modal-customernumber.js +1 -1
- package/components/pn-profile-modal-profile.js +2 -2
- package/components/pn-profile-modal-type.js +1 -1
- package/components/pn-profile-modal.js +1 -1
- package/components/pn-profile-selector-option.js +1 -1
- package/components/pn-profile-selector.js +1 -1
- package/components/pn-proxio-findprice-result2.js +2 -2
- package/components/pn-proxio-findprice.js +3 -3
- package/components/pn-proxio-pricegroup.js +2 -2
- package/components/pn-proxio-productcard-description2.js +1 -1
- package/components/pn-proxio-productcard-information2.js +1 -1
- package/components/pn-proxio-productcard2.js +1 -1
- package/components/pn-qr-code-generator2.js +1 -1
- package/components/pn-sidenav-level.js +1 -1
- package/components/pn-sidenav-link.js +1 -1
- package/components/pn-sidenav-togglebutton.js +1 -1
- package/components/pn-sidenav.js +1 -1
- package/components/pn-site-footer-col2.js +1 -1
- package/components/pn-site-footer2.js +1 -1
- package/components/pn-site-selector-item2.js +2 -2
- package/components/pn-site-selector-item2.js.map +1 -1
- package/components/pn-site-selector2.js +4 -2
- package/components/pn-site-selector2.js.map +1 -1
- package/components/pn-swan2.js +1 -1
- package/components/pn-titletag2.js +1 -1
- package/components/pn-usp-promoter.js +1 -1
- package/components/pn-versa-card.js +1 -1
- package/components/pn-versa-card.js.map +1 -1
- package/components/translations.js +189 -14
- package/components/translations.js.map +1 -1
- package/components/translations2.js +21 -0
- package/components/translations2.js.map +1 -0
- package/esm/header-theme-d09b64c7.js +234 -0
- package/esm/header-theme-d09b64c7.js.map +1 -0
- package/esm/index-c0a4d8bd.js +24 -16
- package/esm/loader.js +1 -1
- package/esm/pn-app-banner.entry.js +1 -1
- package/esm/pn-breakpoints.entry.js +1 -1
- package/esm/pn-chat-message_2.entry.js +2 -2
- package/esm/pn-chat.entry.js +2 -2
- package/esm/pn-customernumber-selector-option.entry.js +1 -1
- package/esm/pn-customernumber-selector.entry.js +1 -1
- package/esm/pn-find-price-result.entry.js +1 -1
- package/esm/pn-find-price.entry.js +2 -2
- package/esm/pn-find-service-and-price-result.entry.js +1 -1
- package/esm/pn-find-service-and-price.entry.js +1 -1
- package/esm/pn-hero-block-international.entry.js +1 -1
- package/esm/{pn-language-selector_9.entry.js → pn-language-selector_13.entry.js} +381 -22
- package/esm/pn-language-selector_13.entry.js.map +1 -0
- package/esm/pn-level-up-modal.entry.js +1 -1
- package/esm/pn-level-up.entry.js +2 -2
- package/esm/pn-link-list.entry.js +1 -1
- package/esm/pn-market-web-components.js +1 -1
- package/esm/pn-marketweb-header-main-row_2.entry.js +217 -0
- package/esm/pn-marketweb-header-main-row_2.entry.js.map +1 -0
- package/esm/pn-marketweb-header-skeleton-loader.entry.js +19 -0
- package/esm/pn-marketweb-header-skeleton-loader.entry.js.map +1 -0
- package/esm/pn-marketweb-header-toggle.entry.js +42 -0
- package/esm/pn-marketweb-header-toggle.entry.js.map +1 -0
- package/esm/pn-marketweb-header.entry.js +1039 -0
- package/esm/pn-marketweb-header.entry.js.map +1 -0
- package/esm/pn-marketweb-icon.entry.js +1 -1
- package/esm/{pn-marketweb-siteheader-login-linklist.entry.js → pn-marketweb-siteheader-login-button_2.entry.js} +44 -3
- package/esm/pn-marketweb-siteheader-login-button_2.entry.js.map +1 -0
- package/esm/pn-marketweb-siteheader-login-mypage-button.entry.js +1 -1
- package/esm/pn-marketweb-siteheader.entry.js +5 -197
- package/esm/pn-marketweb-siteheader.entry.js.map +1 -1
- package/esm/pn-marketweb-table.entry.js +1 -1
- package/esm/pn-media-block.entry.js +1 -1
- package/esm/pn-pex-pricefinder.entry.js +1 -1
- package/esm/pn-product-card_3.entry.js +1 -1
- package/esm/pn-product-pricelist-result.entry.js +1 -1
- package/esm/pn-product-pricelist.entry.js +2 -2
- package/esm/pn-product-tile-info_2.entry.js +1 -1
- package/esm/pn-product-tile.entry.js +1 -1
- package/esm/pn-profile-modal-customernumber.entry.js +1 -1
- package/esm/pn-profile-modal-profile.entry.js +2 -2
- package/esm/pn-profile-modal-type.entry.js +1 -1
- package/esm/pn-profile-modal.entry.js +1 -1
- package/esm/pn-profile-selector-option.entry.js +1 -1
- package/esm/pn-profile-selector.entry.js +1 -1
- package/esm/pn-proxio-findprice-result.entry.js +1 -1
- package/esm/pn-proxio-findprice.entry.js +3 -3
- package/esm/pn-proxio-pricegroup.entry.js +1 -1
- package/esm/pn-proxio-productcard_4.entry.js +3 -3
- package/esm/pn-qr-code-generator.entry.js +1 -1
- package/esm/pn-sidenav-level.entry.js +1 -1
- package/esm/pn-sidenav-link.entry.js +1 -1
- package/esm/pn-sidenav-togglebutton.entry.js +1 -1
- package/esm/pn-sidenav.entry.js +1 -1
- package/esm/pn-site-footer_3.entry.js +3 -3
- package/esm/pn-titletag.entry.js +1 -1
- package/esm/pn-usp-promoter.entry.js +1 -1
- package/esm/pn-versa-card.entry.js +1 -1
- package/esm/pn-versa-card.entry.js.map +1 -1
- package/esm/translations-d2f5804e.js +196 -0
- package/esm/translations-d2f5804e.js.map +1 -0
- package/package.json +1 -1
- package/pn-market-web-components/{p-4a164ef8.entry.js → p-03728b0b.entry.js} +2 -2
- package/pn-market-web-components/p-04f51418.js +2 -0
- package/pn-market-web-components/p-04f51418.js.map +1 -0
- package/pn-market-web-components/{p-e43a36e0.entry.js → p-067c1c2f.entry.js} +2 -2
- package/pn-market-web-components/p-16570ed2.entry.js +2 -0
- package/pn-market-web-components/p-16570ed2.entry.js.map +1 -0
- package/pn-market-web-components/{p-2616cdc1.entry.js → p-191c8cfc.entry.js} +2 -2
- package/pn-market-web-components/{p-ca003c1f.entry.js → p-1a91c313.entry.js} +2 -2
- package/pn-market-web-components/{p-ab1e3dc2.entry.js → p-1f8304be.entry.js} +2 -2
- package/pn-market-web-components/{p-a3f601cb.entry.js → p-24ffac0a.entry.js} +2 -2
- package/pn-market-web-components/p-3239c36b.entry.js +2 -0
- package/pn-market-web-components/p-3239c36b.entry.js.map +1 -0
- package/pn-market-web-components/{p-12cafd55.entry.js → p-3aa74418.entry.js} +2 -2
- package/pn-market-web-components/p-3d27faee.entry.js +2 -0
- package/pn-market-web-components/{p-9d0ca27b.entry.js.map → p-3d27faee.entry.js.map} +1 -1
- package/pn-market-web-components/p-3e25f431.entry.js +2 -0
- package/pn-market-web-components/p-3e25f431.entry.js.map +1 -0
- package/pn-market-web-components/{p-64f6691d.entry.js → p-42da7c5f.entry.js} +2 -2
- package/pn-market-web-components/{p-f0d423d0.entry.js → p-43748ca2.entry.js} +2 -2
- package/pn-market-web-components/{p-1c644b91.entry.js → p-466958a8.entry.js} +2 -2
- package/pn-market-web-components/{p-150da889.entry.js → p-4ab53d5d.entry.js} +2 -2
- package/pn-market-web-components/{p-118fe47d.entry.js → p-4d595345.entry.js} +2 -2
- package/pn-market-web-components/{p-0f6f715b.entry.js → p-4dac1980.entry.js} +2 -2
- package/pn-market-web-components/{p-a13f1f73.entry.js → p-4fcce83d.entry.js} +2 -2
- package/pn-market-web-components/{p-89fbca3b.entry.js → p-5a51d0b0.entry.js} +2 -2
- package/pn-market-web-components/{p-f4d2d0d3.entry.js → p-61346425.entry.js} +2 -2
- package/pn-market-web-components/{p-6e693269.entry.js → p-6b557670.entry.js} +2 -2
- package/pn-market-web-components/{p-e6d6a752.entry.js → p-70a71854.entry.js} +2 -2
- package/pn-market-web-components/p-75311d67.js +2 -0
- package/pn-market-web-components/p-75311d67.js.map +1 -0
- package/pn-market-web-components/p-756d8d95.entry.js +2 -0
- package/pn-market-web-components/p-756d8d95.entry.js.map +1 -0
- package/pn-market-web-components/{p-c0315c45.entry.js → p-76fb0c21.entry.js} +2 -2
- package/pn-market-web-components/{p-b2b2bae0.entry.js → p-81210644.entry.js} +2 -2
- package/pn-market-web-components/p-81e4d75b.entry.js +2 -0
- package/pn-market-web-components/p-81e4d75b.entry.js.map +1 -0
- package/pn-market-web-components/{p-d0f27361.entry.js → p-8382794b.entry.js} +2 -2
- package/pn-market-web-components/{p-8f25176b.entry.js → p-8519e39e.entry.js} +2 -2
- package/pn-market-web-components/p-8c26c1f2.entry.js +2 -0
- package/pn-market-web-components/p-8c26c1f2.entry.js.map +1 -0
- package/pn-market-web-components/{p-461c8792.entry.js → p-92b6477c.entry.js} +2 -2
- package/pn-market-web-components/{p-0d4d9d90.entry.js → p-9eab8192.entry.js} +2 -2
- package/pn-market-web-components/{p-40e632cc.entry.js → p-a3beee11.entry.js} +2 -2
- package/pn-market-web-components/{p-01fbf1ce.entry.js → p-a6935dc2.entry.js} +2 -2
- package/pn-market-web-components/{p-af646091.entry.js → p-a6dd3e4f.entry.js} +2 -2
- package/pn-market-web-components/{p-6d77e747.entry.js → p-af89c95a.entry.js} +2 -2
- package/pn-market-web-components/p-b318ff19.entry.js +2 -0
- package/pn-market-web-components/{p-0700cb4c.entry.js.map → p-b318ff19.entry.js.map} +1 -1
- package/pn-market-web-components/{p-c89f3d6b.entry.js → p-ba14b0ef.entry.js} +2 -2
- package/pn-market-web-components/{p-c7965104.entry.js → p-ba680948.entry.js} +2 -2
- package/pn-market-web-components/{p-11c6e458.entry.js → p-ba75bfdb.entry.js} +2 -2
- package/pn-market-web-components/{p-4149e715.entry.js → p-c186ec41.entry.js} +2 -2
- package/pn-market-web-components/{p-66c0c8dc.entry.js → p-c38707f9.entry.js} +2 -2
- package/pn-market-web-components/{p-671a8129.entry.js → p-c89cdd5a.entry.js} +2 -2
- package/pn-market-web-components/{p-4d848e18.entry.js → p-e8cd1608.entry.js} +2 -2
- package/pn-market-web-components/{p-4517a3d4.entry.js → p-ef090656.entry.js} +2 -2
- package/pn-market-web-components/p-f23ed5d2.entry.js +2 -0
- package/pn-market-web-components/p-f23ed5d2.entry.js.map +1 -0
- package/pn-market-web-components/{p-bd8ec517.entry.js → p-f3b4c13d.entry.js} +2 -2
- package/pn-market-web-components/{p-ff38b9a5.entry.js → p-f710445f.entry.js} +2 -2
- package/pn-market-web-components/{p-2e585ed5.entry.js → p-fcefe4a4.entry.js} +2 -2
- package/pn-market-web-components/p-fded22b7.entry.js +2 -0
- package/pn-market-web-components/p-fded22b7.entry.js.map +1 -0
- package/pn-market-web-components/{p-32bd2ff8.entry.js → p-ff6118f8.entry.js} +2 -2
- package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
- package/types/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-main-row.d.ts +40 -0
- package/types/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-skeleton-loader.d.ts +3 -0
- package/types/components/layout-components/pn-marketweb-header/components/pn-marketweb-header-top-row.d.ts +30 -0
- package/types/components/layout-components/pn-marketweb-header/components/shared/pn-marketweb-header-shared.d.ts +48 -0
- package/types/components/layout-components/pn-marketweb-header/mapper/pn-marketweb-header.mapper.d.ts +34 -0
- package/types/components/layout-components/pn-marketweb-header/pn-marketweb-header.d.ts +121 -0
- package/types/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.d.ts +99 -0
- package/types/components/layout-components/pn-marketweb-header/services/pn-marketweb-header.service.d.ts +108 -0
- package/types/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.d.ts +103 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-i18n.d.ts +16 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-language.d.ts +20 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-menu.d.ts +16 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-theme.d.ts +6 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.d.ts +49 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.d.ts +25 -0
- package/types/components/layout-components/pn-marketweb-header/utils/header-url.d.ts +41 -0
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-login.d.ts +2 -0
- package/types/components/layout-components/pn-marketweb-siteheader/pn-marketweb-siteheader-types.d.ts +1 -0
- package/types/components/navigation/pn-language-selector/pn-language-selector.d.ts +1 -0
- package/types/components/navigation/pn-marketweb-header-toggle/pn-marketweb-header-toggle.d.ts +25 -0
- package/types/components/navigation/pn-site-selector/pn-site-selector.d.ts +1 -0
- package/types/components/widgets/pn-proxio-pricegroup/pn-proxio-pricegroup.d.ts +1 -1
- package/types/components.d.ts +532 -2
- package/types/services/pn-refined-marketweb-context/pn-refined-marketweb-context.constants.d.ts +7 -0
- package/types/services/pn-refined-marketweb-context/pn-refined-marketweb-context.service.d.ts +24 -0
- package/types/services/pn-refined-marketweb-context/pn-refined-marketweb-context.types.d.ts +16 -0
- package/umd/pn-marketweb-init.js +1 -1
- package/umd/pn-marketweb-salesforce.js +1 -1
- package/vscode-data.json +421 -0
- package/cjs/pn-language-selector_9.cjs.entry.js +0 -1156
- package/cjs/pn-language-selector_9.cjs.entry.js.map +0 -1
- package/cjs/pn-mainnav-link.cjs.entry.js +0 -45
- package/cjs/pn-mainnav-link.cjs.entry.js.map +0 -1
- package/cjs/pn-mainnav-store-13aaa243.js +0 -22
- package/cjs/pn-mainnav-store-13aaa243.js.map +0 -1
- package/cjs/pn-marketweb-siteheader-login-button_4.cjs.entry.js +0 -366
- package/cjs/pn-marketweb-siteheader-login-button_4.cjs.entry.js.map +0 -1
- package/cjs/pn-marketweb-siteheader-login-linklist.cjs.entry.js.map +0 -1
- package/esm/pn-language-selector_9.entry.js.map +0 -1
- package/esm/pn-mainnav-link.entry.js +0 -41
- package/esm/pn-mainnav-link.entry.js.map +0 -1
- package/esm/pn-mainnav-store-c98d831e.js +0 -19
- package/esm/pn-mainnav-store-c98d831e.js.map +0 -1
- package/esm/pn-marketweb-siteheader-login-button_4.entry.js +0 -359
- package/esm/pn-marketweb-siteheader-login-button_4.entry.js.map +0 -1
- package/esm/pn-marketweb-siteheader-login-linklist.entry.js.map +0 -1
- package/pn-market-web-components/p-022780ab.entry.js +0 -2
- package/pn-market-web-components/p-022780ab.entry.js.map +0 -1
- package/pn-market-web-components/p-0700cb4c.entry.js +0 -2
- package/pn-market-web-components/p-3c69298b.entry.js +0 -2
- package/pn-market-web-components/p-3c69298b.entry.js.map +0 -1
- package/pn-market-web-components/p-4bc6d49f.entry.js +0 -2
- package/pn-market-web-components/p-4bc6d49f.entry.js.map +0 -1
- package/pn-market-web-components/p-4c8bda8f.entry.js +0 -2
- package/pn-market-web-components/p-4c8bda8f.entry.js.map +0 -1
- package/pn-market-web-components/p-5090bb1d.entry.js +0 -2
- package/pn-market-web-components/p-5090bb1d.entry.js.map +0 -1
- package/pn-market-web-components/p-9d0ca27b.entry.js +0 -2
- package/pn-market-web-components/p-a30de538.entry.js +0 -2
- package/pn-market-web-components/p-a30de538.entry.js.map +0 -1
- package/pn-market-web-components/p-e3b2486a.js +0 -2
- package/pn-market-web-components/p-e3b2486a.js.map +0 -1
- /package/pn-market-web-components/{p-4a164ef8.entry.js.map → p-03728b0b.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-e43a36e0.entry.js.map → p-067c1c2f.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-2616cdc1.entry.js.map → p-191c8cfc.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-ca003c1f.entry.js.map → p-1a91c313.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-ab1e3dc2.entry.js.map → p-1f8304be.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-a3f601cb.entry.js.map → p-24ffac0a.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-12cafd55.entry.js.map → p-3aa74418.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-64f6691d.entry.js.map → p-42da7c5f.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-f0d423d0.entry.js.map → p-43748ca2.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-1c644b91.entry.js.map → p-466958a8.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-150da889.entry.js.map → p-4ab53d5d.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-118fe47d.entry.js.map → p-4d595345.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-0f6f715b.entry.js.map → p-4dac1980.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-a13f1f73.entry.js.map → p-4fcce83d.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-89fbca3b.entry.js.map → p-5a51d0b0.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-f4d2d0d3.entry.js.map → p-61346425.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-6e693269.entry.js.map → p-6b557670.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-e6d6a752.entry.js.map → p-70a71854.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-c0315c45.entry.js.map → p-76fb0c21.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-b2b2bae0.entry.js.map → p-81210644.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-d0f27361.entry.js.map → p-8382794b.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-8f25176b.entry.js.map → p-8519e39e.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-461c8792.entry.js.map → p-92b6477c.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-0d4d9d90.entry.js.map → p-9eab8192.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-40e632cc.entry.js.map → p-a3beee11.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-01fbf1ce.entry.js.map → p-a6935dc2.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-af646091.entry.js.map → p-a6dd3e4f.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-6d77e747.entry.js.map → p-af89c95a.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-c89f3d6b.entry.js.map → p-ba14b0ef.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-c7965104.entry.js.map → p-ba680948.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-11c6e458.entry.js.map → p-ba75bfdb.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-4149e715.entry.js.map → p-c186ec41.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-66c0c8dc.entry.js.map → p-c38707f9.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-671a8129.entry.js.map → p-c89cdd5a.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-4d848e18.entry.js.map → p-e8cd1608.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-4517a3d4.entry.js.map → p-ef090656.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-bd8ec517.entry.js.map → p-f3b4c13d.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-ff38b9a5.entry.js.map → p-f710445f.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-2e585ed5.entry.js.map → p-fcefe4a4.entry.js.map} +0 -0
- /package/pn-market-web-components/{p-32bd2ff8.entry.js.map → p-ff6118f8.entry.js.map} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SiteHeaderI18N } from '../../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
2
|
+
import type { HeaderMenuMode, HeaderViewModel } from '../../types/pn-marketweb-header.types';
|
|
3
|
+
import { HeaderAppearance } from '../../utils/header-theme';
|
|
4
|
+
export interface HeaderLogoRenderProps {
|
|
5
|
+
homePageLink?: string;
|
|
6
|
+
homeLabel: string;
|
|
7
|
+
}
|
|
8
|
+
export interface HeaderMenuToggleRenderProps {
|
|
9
|
+
vm: HeaderViewModel;
|
|
10
|
+
activeMenuMode: HeaderMenuMode;
|
|
11
|
+
navigateOnMenuToggle: boolean;
|
|
12
|
+
onMenuToggleChange: (e: CustomEvent<HeaderMenuMode>) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface HeaderLoginRenderProps {
|
|
15
|
+
vm: HeaderViewModel;
|
|
16
|
+
hideLogin: boolean;
|
|
17
|
+
userToken: string;
|
|
18
|
+
userFullname: string;
|
|
19
|
+
userLoggedin: boolean;
|
|
20
|
+
endpoint?: string;
|
|
21
|
+
environment?: string;
|
|
22
|
+
i18n: SiteHeaderI18N;
|
|
23
|
+
showProfileSelection: boolean;
|
|
24
|
+
showUnifiedLogin: boolean;
|
|
25
|
+
checkUserLoggedInStateInterval: number;
|
|
26
|
+
useMarketwebLogin: boolean;
|
|
27
|
+
appearance: HeaderAppearance;
|
|
28
|
+
}
|
|
29
|
+
export interface HeaderLanguageSelectorRenderProps {
|
|
30
|
+
vm: HeaderViewModel;
|
|
31
|
+
hideLanguageSelector: boolean;
|
|
32
|
+
language?: string;
|
|
33
|
+
spaMode: boolean;
|
|
34
|
+
appearance: HeaderAppearance;
|
|
35
|
+
}
|
|
36
|
+
export interface HeaderSiteSelectorRenderProps {
|
|
37
|
+
vm: HeaderViewModel;
|
|
38
|
+
hideSiteSelector: boolean;
|
|
39
|
+
language?: string;
|
|
40
|
+
buttonText?: string;
|
|
41
|
+
appearance: HeaderAppearance;
|
|
42
|
+
adjustSiteSelectorUrl: (href: string) => string;
|
|
43
|
+
}
|
|
44
|
+
export declare function renderHeaderMenuSwitcher(props: HeaderMenuToggleRenderProps): any;
|
|
45
|
+
export declare function renderHeaderLogo(props: HeaderLogoRenderProps): any;
|
|
46
|
+
export declare function renderHeaderLogin(props: HeaderLoginRenderProps): any;
|
|
47
|
+
export declare function renderHeaderLanguageSelector(props: HeaderLanguageSelectorRenderProps): any;
|
|
48
|
+
export declare function renderHeaderSiteSelector(props: HeaderSiteSelectorRenderProps): any;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HeaderApiPayload, HeaderMapperOptions, HeaderViewModel } from '../types/pn-marketweb-header.types';
|
|
2
|
+
/**
|
|
3
|
+
* Maps backend header data into the internal renderable view model.
|
|
4
|
+
*
|
|
5
|
+
* This mapper is the normalization boundary between the backend header payload
|
|
6
|
+
* and the UI-facing header view model.
|
|
7
|
+
*
|
|
8
|
+
* Top-level menu interpretation:
|
|
9
|
+
* - all items except the last = switchable root menus
|
|
10
|
+
* - last item = shared/common root
|
|
11
|
+
*
|
|
12
|
+
* These semantics are inferred by position, not by stable backend identifiers.
|
|
13
|
+
*
|
|
14
|
+
* Responsibilities
|
|
15
|
+
* ----------------
|
|
16
|
+
* - normalize top-level backend payload sections
|
|
17
|
+
* - optionally adjust relative URLs against the site domain
|
|
18
|
+
* - detect whether the backend menu supports menu switching
|
|
19
|
+
* - preserve the raw normalized menu structure for the wrapper component
|
|
20
|
+
* - prepare a flat `menuItems` list for simpler rendering paths
|
|
21
|
+
*
|
|
22
|
+
* Important
|
|
23
|
+
* ---------
|
|
24
|
+
* - The switchable root items themselves are not intended to be rendered as
|
|
25
|
+
* visible main navigation entries
|
|
26
|
+
* - Visible navigation is derived from:
|
|
27
|
+
* - active root children
|
|
28
|
+
* - plus shared/common root children
|
|
29
|
+
* - If only a shared/common root exists, its children are rendered flat
|
|
30
|
+
* - The wrapper component may choose either:
|
|
31
|
+
* - `menuItems` for flat rendering
|
|
32
|
+
* - or `rawMenuItems` + menu helpers for grouped rendering
|
|
33
|
+
*/
|
|
34
|
+
export declare function mapHeaderDataToViewModel(data: HeaderApiPayload, options: HeaderMapperOptions): HeaderViewModel;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { EventEmitter } from '../../../stencil-public-runtime';
|
|
2
|
+
import type { EnvironmentName, MarketName } from '../../../services/pn-refined-marketweb-context/pn-refined-marketweb-context.types';
|
|
3
|
+
import { SiteHeaderI18N } from '../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
4
|
+
import type { HeaderMenuMode, HeaderViewModel } from './types/pn-marketweb-header.types';
|
|
5
|
+
/**
|
|
6
|
+
* New marketweb header wrapper.
|
|
7
|
+
*
|
|
8
|
+
* Responsibilities:
|
|
9
|
+
* - resolve runtime context
|
|
10
|
+
* - fetch header data
|
|
11
|
+
* - map backend data into a renderable view model
|
|
12
|
+
* - render the layout using existing leaf/header components
|
|
13
|
+
* - owns the active menu mode when a switchable menu structure exists
|
|
14
|
+
*/
|
|
15
|
+
export declare class PnMarketwebHeader {
|
|
16
|
+
hostElement: HTMLElement;
|
|
17
|
+
initialActiveMenuMode: HeaderMenuMode;
|
|
18
|
+
/** Optional menu theme labels, e.g. ['Business', 'Private']. passed in as a sting via cms */
|
|
19
|
+
menuThemes?: string;
|
|
20
|
+
/** Market to use for the header. Falls back to refined context resolution when omitted. */
|
|
21
|
+
market: MarketName | null;
|
|
22
|
+
/** Language to use for the header. Falls back to refined context resolution when omitted. */
|
|
23
|
+
language: string | null;
|
|
24
|
+
/** Environment to use for the header. Falls back to refined context resolution when omitted. */
|
|
25
|
+
environment: EnvironmentName | null;
|
|
26
|
+
/** Explicit endpoint override. When omitted it is resolved from market + environment. */
|
|
27
|
+
endpoint: string | null;
|
|
28
|
+
/** Current site id (guid), forwarded into the search component. */
|
|
29
|
+
siteid: string | null;
|
|
30
|
+
/** Current page id forwarded to the header backend endpoint. */
|
|
31
|
+
pageId: string;
|
|
32
|
+
/** Access token passed from backend. */
|
|
33
|
+
userToken: string;
|
|
34
|
+
/** User full name from backend. */
|
|
35
|
+
userFullname: string;
|
|
36
|
+
/** User logged in state from backend. */
|
|
37
|
+
userLoggedin: boolean;
|
|
38
|
+
/** Hides the site selector when true. */
|
|
39
|
+
hideSiteSelector: boolean;
|
|
40
|
+
/** Hides the generated home menu item when true. */
|
|
41
|
+
hideHomeMenuItem: boolean;
|
|
42
|
+
/** Hides the language selector when true. */
|
|
43
|
+
hideLanguageSelector: boolean;
|
|
44
|
+
/** Hides search when true. */
|
|
45
|
+
hideSearch: boolean;
|
|
46
|
+
/** Hides login when true. */
|
|
47
|
+
hideLogin: boolean;
|
|
48
|
+
/** Enables profile selection presentation in the login component. */
|
|
49
|
+
showProfileSelection: boolean;
|
|
50
|
+
/** Enables unified login presentation in the login component. */
|
|
51
|
+
showUnifiedLogin: boolean;
|
|
52
|
+
/** Adjust relative URLs against the site domain when true. */
|
|
53
|
+
siteDomainInUrls: boolean;
|
|
54
|
+
/** Autocomplete endpoint forwarded into the search view model. */
|
|
55
|
+
autocompleteEndpoint: string;
|
|
56
|
+
/** Whether session forwarding should be attempted after login state changes. */
|
|
57
|
+
sessionForward: boolean;
|
|
58
|
+
/** Enables cached requests in FetchHelper when true. */
|
|
59
|
+
cache: boolean;
|
|
60
|
+
/** Optional override for translated search placeholder text. */
|
|
61
|
+
searchPlaceholder: string;
|
|
62
|
+
/** When true, language selector options should not navigate directly by URL. */
|
|
63
|
+
spaMode: boolean;
|
|
64
|
+
/** Interval forwarded to the login component for login state checks. */
|
|
65
|
+
checkUserLoggedInStateInterval: number;
|
|
66
|
+
/** Enables marketweb login mode in the login component. */
|
|
67
|
+
useMarketwebLogin: boolean;
|
|
68
|
+
/** When true, changing menu mode navigates to the selected root href. */
|
|
69
|
+
navigateOnMenuToggle: boolean;
|
|
70
|
+
/** The mapped UI state used for rendering the header. */
|
|
71
|
+
vm: HeaderViewModel | null;
|
|
72
|
+
/** Current translations for the active language. */
|
|
73
|
+
i18n: SiteHeaderI18N;
|
|
74
|
+
/** Simple loading state for the wrapper. */
|
|
75
|
+
status: 'idle' | 'loading' | 'ready' | 'error';
|
|
76
|
+
/** Whether the main search should collapse to a compact version. */
|
|
77
|
+
minimizeSearch: boolean;
|
|
78
|
+
/** Internal login state used for special link handling. */
|
|
79
|
+
loggedIn: boolean;
|
|
80
|
+
/** Active menu mode when the backend structure supports menu switching. */
|
|
81
|
+
activeMenuMode: HeaderMenuMode;
|
|
82
|
+
/** Guard used to prevent watchers from reloading during initial setup. */
|
|
83
|
+
private isInitializing;
|
|
84
|
+
/** Cached raw backend payload so UI-only prop changes can remap without refetching. */
|
|
85
|
+
private rawHeaderData;
|
|
86
|
+
/** Main nav element reference used for overflow calculation. */
|
|
87
|
+
private mainNavEl?;
|
|
88
|
+
/** Emitted when the language changes. */
|
|
89
|
+
changeLanguage: EventEmitter<string>;
|
|
90
|
+
/** Emitted when the market changes. */
|
|
91
|
+
changeMarket: EventEmitter<MarketName>;
|
|
92
|
+
/** Shared helper for backend requests. */
|
|
93
|
+
private fetchHelper;
|
|
94
|
+
/** Service for context resolution and header-data fetching. */
|
|
95
|
+
private headerService;
|
|
96
|
+
private hasResolvedInitialMenuMode;
|
|
97
|
+
componentWillLoad(): Promise<void>;
|
|
98
|
+
onLanguageSelectorChange(e: CustomEvent<string>): void;
|
|
99
|
+
onLanguageChange(): Promise<void>;
|
|
100
|
+
onMarketChange(): Promise<void>;
|
|
101
|
+
onEnvironmentChange(): Promise<void>;
|
|
102
|
+
onEndpointChange(): Promise<void>;
|
|
103
|
+
onPageIdChange(): Promise<void>;
|
|
104
|
+
onPresentationInputChange(): void;
|
|
105
|
+
onLoginStateChange(e: CustomEvent<{
|
|
106
|
+
loggedIn?: boolean;
|
|
107
|
+
token?: string;
|
|
108
|
+
}>): void;
|
|
109
|
+
handleResize(): void;
|
|
110
|
+
private get menuThemeList();
|
|
111
|
+
private get logoUrl();
|
|
112
|
+
private loadHeader;
|
|
113
|
+
private remapViewModel;
|
|
114
|
+
private applyHeaderState;
|
|
115
|
+
private checkMenuOverflow;
|
|
116
|
+
private isUserLoggedIn;
|
|
117
|
+
private adjustSiteSelectorUrl;
|
|
118
|
+
private onMenuToggleChange;
|
|
119
|
+
private getVisibleMenuGroups;
|
|
120
|
+
render(): any;
|
|
121
|
+
}
|
package/types/components/layout-components/pn-marketweb-header/pn-marketweb-header.stories.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/web-components';
|
|
2
|
+
import type { HeaderApiEnvelope, HeaderMenuMode } from './types/pn-marketweb-header.types';
|
|
3
|
+
/**
|
|
4
|
+
* Story args for pn-marketweb-header.
|
|
5
|
+
*
|
|
6
|
+
* This story:
|
|
7
|
+
* - renders the real pn-marketweb-header
|
|
8
|
+
* - can optionally intercept its backend fetch call
|
|
9
|
+
* - returns a mocked backend envelope when mocking is enabled
|
|
10
|
+
* - lets the actual header component render and control its own menu switcher
|
|
11
|
+
*/
|
|
12
|
+
interface StoryArgs {
|
|
13
|
+
market: string;
|
|
14
|
+
language: string;
|
|
15
|
+
initialActiveMenuMode: HeaderMenuMode;
|
|
16
|
+
menuThemes?: string;
|
|
17
|
+
environment: 'production' | 'preproduction' | 'integration' | 'localhost';
|
|
18
|
+
endpoint: string;
|
|
19
|
+
pageId: string;
|
|
20
|
+
siteid: string;
|
|
21
|
+
userToken: string;
|
|
22
|
+
userFullname: string;
|
|
23
|
+
userLoggedin: boolean;
|
|
24
|
+
hideSiteSelector: boolean;
|
|
25
|
+
hideHomeMenuItem: boolean;
|
|
26
|
+
hideLanguageSelector: boolean;
|
|
27
|
+
hideSearch: boolean;
|
|
28
|
+
hideLogin: boolean;
|
|
29
|
+
showProfileSelection: boolean;
|
|
30
|
+
showUnifiedLogin: boolean;
|
|
31
|
+
siteDomainInUrls: boolean;
|
|
32
|
+
autocompleteEndpoint: string;
|
|
33
|
+
sessionForward: boolean;
|
|
34
|
+
cache: boolean;
|
|
35
|
+
searchPlaceholder: string;
|
|
36
|
+
spaMode: boolean;
|
|
37
|
+
checkUserLoggedInStateInterval: number;
|
|
38
|
+
useMarketwebLogin: boolean;
|
|
39
|
+
navigateOnMenuToggle: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Mocked backend response envelope.
|
|
42
|
+
*
|
|
43
|
+
* This should match the real backend response shape.
|
|
44
|
+
*/
|
|
45
|
+
mockedResponse: HeaderApiEnvelope;
|
|
46
|
+
/**
|
|
47
|
+
* When true, Storybook intercepts the header fetch and returns mockedResponse.
|
|
48
|
+
* When false, the real endpoint is used.
|
|
49
|
+
*/
|
|
50
|
+
useMockedResponse: boolean;
|
|
51
|
+
}
|
|
52
|
+
declare const meta: Meta<StoryArgs>;
|
|
53
|
+
export default meta;
|
|
54
|
+
type Story = StoryObj<StoryArgs>;
|
|
55
|
+
/**
|
|
56
|
+
* Baseline story:
|
|
57
|
+
* - 2 switchable roots
|
|
58
|
+
* - 1 shared root
|
|
59
|
+
*/
|
|
60
|
+
export declare const TwoModesWithShared: Story;
|
|
61
|
+
/**
|
|
62
|
+
* Verifies that more than 2 switchable roots are supported.
|
|
63
|
+
*/
|
|
64
|
+
export declare const ThreeModesWithShared: Story;
|
|
65
|
+
/**
|
|
66
|
+
* Only one mode root + shared.
|
|
67
|
+
* The header should not render the menu switcher.
|
|
68
|
+
*/
|
|
69
|
+
export declare const OneModeWithShared: Story;
|
|
70
|
+
/**
|
|
71
|
+
* Shared-only structure.
|
|
72
|
+
* Useful for verifying fallback rendering when no switchable roots exist.
|
|
73
|
+
*/
|
|
74
|
+
export declare const SharedOnly: Story;
|
|
75
|
+
/**
|
|
76
|
+
* Same baseline structure, but start on the second mode.
|
|
77
|
+
*/
|
|
78
|
+
export declare const StartOnSecondMode: Story;
|
|
79
|
+
/**
|
|
80
|
+
* Same baseline structure, but allow real navigation hrefs on mode change.
|
|
81
|
+
* Mostly useful for checking rendered links rather than interacting in Storybook.
|
|
82
|
+
*/
|
|
83
|
+
export declare const NavigationEnabled: Story;
|
|
84
|
+
/**
|
|
85
|
+
* Smaller layout story while still using mocked data.
|
|
86
|
+
*/
|
|
87
|
+
export declare const Minimal: Story;
|
|
88
|
+
/**
|
|
89
|
+
* Menu items contain nested sub-menu items.
|
|
90
|
+
*/
|
|
91
|
+
export declare const NestedSubmenuItems: Story;
|
|
92
|
+
/**
|
|
93
|
+
* Uses the real local CMS instead of Storybook fetch mocking.
|
|
94
|
+
*/
|
|
95
|
+
export declare const LocalCms: Story;
|
|
96
|
+
/**
|
|
97
|
+
* Uses the real integration CMS instead of Storybook fetch mocking. //FIXME: getting cors-safe data at the moment
|
|
98
|
+
*/
|
|
99
|
+
export declare const IntegrationCms: Story;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { FetchHelper } from '../../../../globals/FetchHelper';
|
|
2
|
+
import type { EnvironmentName, MarketName } from '../../../../services/pn-refined-marketweb-context/pn-refined-marketweb-context.types';
|
|
3
|
+
import type { SiteHeaderI18N } from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
4
|
+
import type { HeaderApiPayload, HeaderContext, HeaderMenuMode, HeaderViewModel } from '../types/pn-marketweb-header.types';
|
|
5
|
+
/**
|
|
6
|
+
* Input used when resolving/fetching/building header state.
|
|
7
|
+
*/
|
|
8
|
+
export interface LoadHeaderStateInput {
|
|
9
|
+
market?: MarketName | null;
|
|
10
|
+
language?: string | null;
|
|
11
|
+
environment?: EnvironmentName | null;
|
|
12
|
+
endpoint?: string | null;
|
|
13
|
+
pageId?: string;
|
|
14
|
+
cache?: boolean;
|
|
15
|
+
hideHomeMenuItem: boolean;
|
|
16
|
+
siteDomainInUrls: boolean;
|
|
17
|
+
autocompleteEndpoint: string;
|
|
18
|
+
searchPlaceholder: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Result returned from service orchestration methods.
|
|
22
|
+
*/
|
|
23
|
+
export interface HeaderStateResult {
|
|
24
|
+
context: HeaderContext;
|
|
25
|
+
rawHeaderData: HeaderApiPayload | null;
|
|
26
|
+
vm: HeaderViewModel | null;
|
|
27
|
+
i18n: SiteHeaderI18N;
|
|
28
|
+
status: 'ready' | 'error';
|
|
29
|
+
/**
|
|
30
|
+
* The currently active menu mode used by the wrapper component.
|
|
31
|
+
*
|
|
32
|
+
* This is preserved by the service during remaps, but the effective initial
|
|
33
|
+
* value is resolved by the component layer.
|
|
34
|
+
*/
|
|
35
|
+
activeMenuMode: HeaderMenuMode;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Service responsible for:
|
|
39
|
+
* - resolving the effective header context
|
|
40
|
+
* - building the fetch URL for the header endpoint
|
|
41
|
+
* - loading header data from the backend
|
|
42
|
+
* - mapping backend data into a renderable header state
|
|
43
|
+
*
|
|
44
|
+
* This service uses the refined context service as the source of truth
|
|
45
|
+
* for market/language/environment resolution.
|
|
46
|
+
*/
|
|
47
|
+
export declare class PnMarketwebHeaderService {
|
|
48
|
+
private fetchHelper;
|
|
49
|
+
private href;
|
|
50
|
+
private doc;
|
|
51
|
+
/**
|
|
52
|
+
* Fixed backend path for loading header data.
|
|
53
|
+
* This is appended to the resolved endpoint domain.
|
|
54
|
+
*/
|
|
55
|
+
private endpointPath;
|
|
56
|
+
constructor(fetchHelper: FetchHelper, href?: string, doc?: Document);
|
|
57
|
+
/**
|
|
58
|
+
* Resolves the effective header context.
|
|
59
|
+
*
|
|
60
|
+
* What it does:
|
|
61
|
+
* - uses the RefinedMarketWebContextService to resolve context from the current URL/document
|
|
62
|
+
* - lets explicit input values override resolved values when provided
|
|
63
|
+
* - resolves endpoint from environment + market when endpoint is not explicitly passed in
|
|
64
|
+
* - keeps pageId as part of the final header request context
|
|
65
|
+
*/
|
|
66
|
+
private resolveContext;
|
|
67
|
+
/**
|
|
68
|
+
* Builds the final request URL used to fetch header JSON.
|
|
69
|
+
*
|
|
70
|
+
* What it does:
|
|
71
|
+
* - removes a trailing slash from the endpoint base if needed
|
|
72
|
+
* - appends the fixed header endpoint path
|
|
73
|
+
* - adds query parameters for market, language and current page
|
|
74
|
+
*/
|
|
75
|
+
private buildFetchUrl;
|
|
76
|
+
/**
|
|
77
|
+
* Fetches header data from the backend.
|
|
78
|
+
*
|
|
79
|
+
* Returns null when required context is missing.
|
|
80
|
+
*/
|
|
81
|
+
private fetchHeaderData;
|
|
82
|
+
/**
|
|
83
|
+
* Builds i18n for the current language + presentation overrides.
|
|
84
|
+
*/
|
|
85
|
+
private resolveI18n;
|
|
86
|
+
/**
|
|
87
|
+
* Maps raw header data into the current UI view model.
|
|
88
|
+
*/
|
|
89
|
+
private mapViewModel;
|
|
90
|
+
/**
|
|
91
|
+
* Resolves context, fetches backend data and builds the final header state.
|
|
92
|
+
*/
|
|
93
|
+
loadHeaderState(input: LoadHeaderStateInput): Promise<HeaderStateResult>;
|
|
94
|
+
/**
|
|
95
|
+
* Rebuilds the UI state from already-fetched raw backend data.
|
|
96
|
+
* Use this when presentation-only inputs change and a refetch is not needed.
|
|
97
|
+
*/
|
|
98
|
+
remapHeaderState(input: {
|
|
99
|
+
context: HeaderContext;
|
|
100
|
+
rawHeaderData: HeaderApiPayload | null;
|
|
101
|
+
language?: string | null;
|
|
102
|
+
hideHomeMenuItem: boolean;
|
|
103
|
+
siteDomainInUrls: boolean;
|
|
104
|
+
autocompleteEndpoint: string;
|
|
105
|
+
searchPlaceholder: string;
|
|
106
|
+
currentActiveMenuMode: HeaderMenuMode;
|
|
107
|
+
}): HeaderStateResult;
|
|
108
|
+
}
|
package/types/components/layout-components/pn-marketweb-header/types/pn-marketweb-header.types.d.ts
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { EnvironmentName, MarketName } from '../../../../services/pn-refined-marketweb-context/pn-refined-marketweb-context.types';
|
|
2
|
+
import { LanguageSelector, LanguageSelectorItem, LoginDialog, MenuItem, MenuSiteDefinition, SiteHeaderI18N, SiteHeaderSearch, SiteSelector } from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
3
|
+
export type HeaderMenuMode = number;
|
|
4
|
+
export interface HeaderMenuModeOption {
|
|
5
|
+
index: number;
|
|
6
|
+
label: string;
|
|
7
|
+
href?: string;
|
|
8
|
+
root: MenuItem;
|
|
9
|
+
}
|
|
10
|
+
export interface HeaderMenuStructure {
|
|
11
|
+
hasMenuSwitching: boolean;
|
|
12
|
+
modeRoots: MenuItem[];
|
|
13
|
+
menuModeOptions: HeaderMenuModeOption[];
|
|
14
|
+
sharedRoot: MenuItem | null;
|
|
15
|
+
sharedItems: MenuItem[];
|
|
16
|
+
}
|
|
17
|
+
export interface HeaderMenuGroups {
|
|
18
|
+
primaryItems: MenuItem[];
|
|
19
|
+
sharedItems: MenuItem[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolved runtime context used when loading header data.
|
|
23
|
+
* These values may come from explicit props, URL parsing, or environment resolution.
|
|
24
|
+
*/
|
|
25
|
+
export interface HeaderContext {
|
|
26
|
+
market: MarketName;
|
|
27
|
+
language: string;
|
|
28
|
+
environment: EnvironmentName;
|
|
29
|
+
endpoint: string;
|
|
30
|
+
pageId?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface HeaderApiPayload {
|
|
33
|
+
sitedefinition: MenuSiteDefinition;
|
|
34
|
+
search: SiteHeaderSearch;
|
|
35
|
+
languageSelectorViewModel: LanguageSelector | null;
|
|
36
|
+
siteSelectorViewModel: SiteSelector | null;
|
|
37
|
+
loginViewModel: LoginDialog | null;
|
|
38
|
+
mainMenu: {
|
|
39
|
+
menuItems: MenuItem[];
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The raw API response shape returned by /api/navigation/header.
|
|
44
|
+
* This stays close to the backend structure.
|
|
45
|
+
*/
|
|
46
|
+
export interface HeaderApiEnvelope {
|
|
47
|
+
value: HeaderApiPayload;
|
|
48
|
+
formatters?: unknown[];
|
|
49
|
+
contentTypes?: unknown[];
|
|
50
|
+
declaredType?: unknown;
|
|
51
|
+
statusCode?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface HeaderViewModel {
|
|
54
|
+
siteDefinition: MenuSiteDefinition | null;
|
|
55
|
+
menuItems: MenuItem[];
|
|
56
|
+
search: SiteHeaderSearch | null;
|
|
57
|
+
siteSelector: SiteSelector | null;
|
|
58
|
+
languageSelector: LanguageSelector | null;
|
|
59
|
+
languageOptions: LanguageSelectorItem[];
|
|
60
|
+
loginDialog: LoginDialog | null;
|
|
61
|
+
homePageLink: string;
|
|
62
|
+
/**
|
|
63
|
+
* Whether the fetched structure supports switching between multiple top-level menu roots.
|
|
64
|
+
*
|
|
65
|
+
* When true:
|
|
66
|
+
* - all top-level menu items except the last are treated as switchable roots
|
|
67
|
+
* - the last top-level item is treated as the shared/common root
|
|
68
|
+
*/
|
|
69
|
+
hasMenuSwitching: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Visible labels for the toggle component.
|
|
72
|
+
*/
|
|
73
|
+
menuModeOptions: HeaderMenuModeOption[];
|
|
74
|
+
/**
|
|
75
|
+
* Default active menu mode index.
|
|
76
|
+
*
|
|
77
|
+
* This index refers to `menuModeOptions` and the corresponding switchable
|
|
78
|
+
* top-level root menu.
|
|
79
|
+
*/
|
|
80
|
+
defaultMenuMode: number;
|
|
81
|
+
/**
|
|
82
|
+
* Original normalized top-level menu structure from the backend.
|
|
83
|
+
*
|
|
84
|
+
* Semantics:
|
|
85
|
+
* - all items except the last are switchable root menus
|
|
86
|
+
* - the last item is the shared/common root
|
|
87
|
+
*
|
|
88
|
+
* This is preserved so the wrapper can rebuild visible menu items when the
|
|
89
|
+
* active menu mode changes.
|
|
90
|
+
*/
|
|
91
|
+
rawMenuItems: MenuItem[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Options used when mapping raw API data into a renderable view model.
|
|
95
|
+
* These mostly come from component props or derived i18n values.
|
|
96
|
+
*/
|
|
97
|
+
export interface HeaderMapperOptions {
|
|
98
|
+
language: string;
|
|
99
|
+
hideHomeMenuItem: boolean;
|
|
100
|
+
siteDomainInUrls: boolean;
|
|
101
|
+
autocompleteEndpoint?: string;
|
|
102
|
+
i18n: SiteHeaderI18N;
|
|
103
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SiteHeaderI18N } from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
2
|
+
/**
|
|
3
|
+
* Safe fallback i18n object used before translations have been resolved,
|
|
4
|
+
* or if a language is missing from the translation table.
|
|
5
|
+
*/
|
|
6
|
+
export declare const defaultHeaderI18n: SiteHeaderI18N;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the i18n object for the current language and applies overrides.
|
|
9
|
+
*
|
|
10
|
+
* What it does:
|
|
11
|
+
* - Looks up translation values for the selected language
|
|
12
|
+
* - Falls back to a safe default object if the language is missing
|
|
13
|
+
* - Allows the search placeholder to be overridden by a prop
|
|
14
|
+
* - Ensures "home" always has a non-empty fallback value
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveHeaderTranslations(language?: string, searchPlaceholder?: string): SiteHeaderI18N;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LanguageSelector, LanguageSelectorItem, MenuSiteDefinition } from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the list of language options that should actually be shown.
|
|
4
|
+
*
|
|
5
|
+
* What it does:
|
|
6
|
+
* - Reads the backend-provided language selector model
|
|
7
|
+
* - Checks page <link rel="alternate" hreflang="..."> tags
|
|
8
|
+
* - If hreflang tags exist, only languages with matching tags are shown
|
|
9
|
+
* - If no hreflang tags exist, all backend-provided languages are shown
|
|
10
|
+
*/
|
|
11
|
+
export declare function getLanguageOptions(languageSelector: LanguageSelector | null): LanguageSelectorItem[];
|
|
12
|
+
/**
|
|
13
|
+
* Resolves the URL for a given language option.
|
|
14
|
+
*
|
|
15
|
+
* What it does:
|
|
16
|
+
* - Returns null in SPA mode so language switching can be handled by events only
|
|
17
|
+
* - Uses an existing hreflang alternate URL if one exists in the document
|
|
18
|
+
* - Otherwise falls back to generating a language URL from the site definition
|
|
19
|
+
*/
|
|
20
|
+
export declare function getLanguageVersionUrl(item: LanguageSelectorItem, siteDefinition: MenuSiteDefinition | null, spaMode: boolean): string | null;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MenuItem, PromotedMenuItem, SiteHeaderI18N } from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
2
|
+
/**
|
|
3
|
+
* Adds a Home item at the beginning of the main menu when needed.
|
|
4
|
+
*
|
|
5
|
+
* What it does:
|
|
6
|
+
* - Returns the input untouched when hideHomeMenuItem is true
|
|
7
|
+
* - Avoids adding a duplicate Home item if one already exists first in the list
|
|
8
|
+
* - Otherwise prepends a synthetic Home item using the translated label
|
|
9
|
+
*/
|
|
10
|
+
export declare function prependHomeMenuItem(items: MenuItem[], i18n: SiteHeaderI18N, homeUrl: string, hideHomeMenuItem: boolean): MenuItem[];
|
|
11
|
+
/**
|
|
12
|
+
* Creates a stable-ish tracking id for promoted menu items.
|
|
13
|
+
*
|
|
14
|
+
* This mirrors the old wrapper behavior and is used when rendering promoted links.
|
|
15
|
+
*/
|
|
16
|
+
export declare function promotedItemId(item: PromotedMenuItem): string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { HeaderMenuModeOption } from '../types/pn-marketweb-header.types';
|
|
2
|
+
export type HeaderTheme = 'business' | 'private';
|
|
3
|
+
export type HeaderAppearance = 'light' | 'dark';
|
|
4
|
+
export declare function normalizeHeaderTheme(theme: HeaderTheme): HeaderTheme;
|
|
5
|
+
export declare function getAppearanceForTheme(theme: HeaderTheme): HeaderAppearance;
|
|
6
|
+
export declare function resolveHeaderMenuThemes(menuThemes: string | undefined, menuModeOptions: HeaderMenuModeOption[] | undefined): HeaderTheme[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { MenuItem } from '../../pn-marketweb-siteheader/pn-marketweb-siteheader-types';
|
|
2
|
+
import type { HeaderMenuGroups, HeaderMenuMode, HeaderMenuStructure } from '../types/pn-marketweb-header.types';
|
|
3
|
+
/**
|
|
4
|
+
* Header menu mode utilities.
|
|
5
|
+
*
|
|
6
|
+
* Purpose
|
|
7
|
+
* -------
|
|
8
|
+
* Interprets the backend top-level menu structure used for header menu
|
|
9
|
+
* switching.
|
|
10
|
+
*
|
|
11
|
+
* Expected top-level order:
|
|
12
|
+
* - all items except the last = switchable root menus
|
|
13
|
+
* - last item = shared/common root
|
|
14
|
+
*
|
|
15
|
+
* Responsibilities
|
|
16
|
+
* ----------------
|
|
17
|
+
* - extract a structured representation of the switchable menu roots
|
|
18
|
+
* - resolve the active root for a selected mode
|
|
19
|
+
* - return grouped or flat visible items for rendering
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractToggleableMenuStructure(menuItems: MenuItem[]): HeaderMenuStructure;
|
|
22
|
+
/**
|
|
23
|
+
* Returns the active root item for the selected mode.
|
|
24
|
+
*
|
|
25
|
+
* Falls back to the first available mode root when the requested mode
|
|
26
|
+
* is out of bounds.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getToggleRootForMode(structure: HeaderMenuStructure, mode: HeaderMenuMode): MenuItem | null;
|
|
29
|
+
/**
|
|
30
|
+
* Returns the active root item for the selected mode directly from raw menu items.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getToggleRootForMenuItems(menuItems: MenuItem[], mode: HeaderMenuMode): MenuItem | null;
|
|
33
|
+
/**
|
|
34
|
+
* Returns grouped visible items for rendering.
|
|
35
|
+
*
|
|
36
|
+
* - primaryItems = children of the active root
|
|
37
|
+
* - sharedItems = children of the shared/common root
|
|
38
|
+
*/
|
|
39
|
+
export declare function getMenuGroupsForMode(structure: HeaderMenuStructure, mode: HeaderMenuMode): HeaderMenuGroups;
|
|
40
|
+
/**
|
|
41
|
+
* Returns grouped visible items directly from raw menu items.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getVisibleMenuGroupsForMode(menuItems: MenuItem[], mode: HeaderMenuMode): HeaderMenuGroups;
|
|
44
|
+
/**
|
|
45
|
+
* Builds a flat list of visible menu items for the selected mode.
|
|
46
|
+
*
|
|
47
|
+
* Useful for render paths that do not need grouped rendering.
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildMenuItemsForMode(structure: HeaderMenuStructure, mode: HeaderMenuMode): MenuItem[];
|
package/types/components/layout-components/pn-marketweb-header/utils/header-toggle-menu.storage.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { HeaderMenuMode } from '../types/pn-marketweb-header.types';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the previously selected menu mode from localStorage.
|
|
4
|
+
*
|
|
5
|
+
* Returns null if:
|
|
6
|
+
* - nothing is stored
|
|
7
|
+
* - value is invalid
|
|
8
|
+
* - storage is unavailable
|
|
9
|
+
*/
|
|
10
|
+
export declare function getStoredHeaderMenuMode(): HeaderMenuMode | null;
|
|
11
|
+
/**
|
|
12
|
+
* Persists the selected menu mode in localStorage.
|
|
13
|
+
*
|
|
14
|
+
* Storage failures are intentionally ignored.
|
|
15
|
+
*/
|
|
16
|
+
export declare function storeHeaderMenuMode(mode: HeaderMenuMode): void;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves the effective initial menu mode.
|
|
19
|
+
*
|
|
20
|
+
* Priority:
|
|
21
|
+
* 1. Stored user preference
|
|
22
|
+
* 2. Server-provided initial mode
|
|
23
|
+
* 3. Fallback to first mode (index 0)
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveInitialHeaderMenuMode(hasMenuSwitching: boolean, initialActiveMenuMode?: HeaderMenuMode | null): HeaderMenuMode;
|