{"version":3,"file":"primary-navigation.CiALPuz2.js","sources":["../../../../../node_modules/lucide-static/dist/esm/icons/bell.js","../../../../../packages/icons-web/src/lib/icons/bell/bell.ts","../../../../../packages/icons-web/src/lib/icons/bell-notification/bell-notification.ts","../../../../../packages/web-components/src/lib/components/primary-navigation/primary-navigation.ts"],"sourcesContent":["/**\n * @license lucide-static v0.447.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst Bell = `\n\n \n \n\n`;\n\nexport { Bell as default };\n//# sourceMappingURL=bell.js.map\n","import { html } from 'lit';\nimport { Bell } from 'lucide-static';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { state } from 'lit/decorators.js';\nimport { pdsCustomIconElement as customElement } from '../../../decorators/pds-icon';\nimport { PdsIcon } from '../PdsIcon';\n\n@customElement('pds-icon-bell')\nexport class PdsIconBell extends PdsIcon {\n @state()\n icon = Bell;\n\n render() {\n return html`${unsafeHTML(this.setIconAttributes())}`;\n }\n}\n","import { html } from 'lit';\nimport { themedefault } from '@principal/design-system-tokens';\nimport { pdsCustomIconElement as customElement } from '../../../decorators/pds-icon';\nimport { PdsCustomIcon } from '../PdsCustomIcon';\n\n@customElement('pds-icon-bell-notification')\nexport class PdsIconBellNotification extends PdsCustomIcon {\n render() {\n return html`\n \n \n \n `;\n }\n}\n","import { PropertyValueMap, html, nothing } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport {\n property,\n query,\n state,\n queryAssignedElements,\n} from 'lit/decorators.js';\nimport * as focusTrap from 'focus-trap';\nimport { computePosition, offset, arrow, shift } from '@floating-ui/dom';\nimport { pdsCustomElement as customElement } from '../../decorators/pds-custom-element';\nimport { PdsElement } from '../PdsElement';\nimport styles from './primary-navigation.scss?inline';\nimport '@principal/design-system-icons-web/menu';\nimport '@principal/design-system-icons-web/x';\nimport '@principal/design-system-icons-web/bell';\nimport '@principal/design-system-icons-web/bell-notification';\nimport '@principal/design-system-icons-web/search';\nimport '../primary-navigation-container/primary-navigation-container';\nimport '../button/button';\nimport '../link/link';\nimport '../layout-container/layout-container';\nimport '../list/list';\nimport '../list-item/list-item';\nimport '../logo/logo';\nimport '../primary-navigation-main-menu/primary-navigation-main-menu';\nimport '../primary-navigation-main-menu-item/primary-navigation-main-menu-item';\nimport '../primary-navigation-utility-menu/primary-navigation-utility-menu';\nimport '../primary-navigation-utility-menu-item/primary-navigation-utility-menu-item';\nimport '../primary-navigation-dropdown-link/primary-navigation-dropdown-link';\n\n/**\n * @summary A component that renders a primary navigation\n *\n * @slot logo Optional: A slot for an optional custom logo, restricted to pds-logo, img, and svg elements\n * @slot primary-navigation-main-menu Optional: A main menu component containing one or more main menu items, restricted to pds-primary-navigation-main-menu components\n * @slot primary-navigation-utility-menu Optional: A utility menu component containing one or more utility menu items, restricted to pds-primary-navigation-utility-menu components\n * @slot search Optional: If passed in, will populate the search icon\n *\n * @fires pds-primary-navigation-item-click A custom event dispatched on click of the login/logout button\n */\n@customElement('pds-primary-navigation', {\n category: 'component',\n type: 'component',\n state: 'stable',\n styles,\n})\nexport class PdsPrimaryNavigation extends PdsElement {\n /**\n * Style variant\n * - **default** renders the primary-navigation used for primary actions\n * - **inverted** renders the primary-navigation used for primary actions\n */\n @property()\n variant: 'default' | 'inverted' = 'default';\n\n /**\n * Determines if search | notifications should be rendered\n * - **search** renders the search icon & panel in the navigation\n * - **notification** renders the notification bell & panel in the navigation\n */\n @property()\n includeAction?: 'search' | 'notification';\n\n /**\n * Determines if we should place the header in a layout container\n * If this property isn't passed, no layout container is used.\n */\n @property({ type: String })\n layoutContainerVariant?: 'default' | 'narrow';\n\n /**\n * Remove layout container padding (only to be used if layoutContainerVariant has a value)\n * - **md** removes padding from the layout container below md breakpoint\n * - **all** removes padding from the layout container at all screens (used for nested layout containers)\n */\n @property({ type: String })\n layoutContainerRemovePadding?: 'md' | 'all';\n\n /**\n * Gives users some flexibility if they don't want other notifications to show in the notifications panel\n */\n @property({ type: Boolean })\n hideOtherAlerts: boolean = false;\n\n /**\n * The number of unread messages\n */\n @property({ type: Number })\n messagesCount: number = 0;\n\n /**\n * The number of other unread notifications\n */\n @property({ type: Number })\n otherAlertsCount: number = 0;\n\n /**\n * Link to the message center\n */\n @property({ type: String })\n messageshref: string =\n 'https://secure05.principal.com/servlet/common/member/messagecenter';\n\n // TODO: is there a notifications center default link?\n /**\n * Link to the notifications center\n */\n @property({ type: String })\n otherAlertshref: string = '';\n\n /**\n * Link to the main content or 'none' to disable the skip content link\n */\n @property({ type: String })\n skipToContenthref: string = '#main';\n\n /**\n * The header element that contains the entire primary navigation\n * @internal\n */\n @query('header')\n header: HTMLElement;\n\n /**\n * The notifications panel card\n * @internal\n */\n @query('.pds-c-primary-navigation__notification-panel')\n notificationsPanel: HTMLElement;\n\n /**\n * The search panel card\n * @internal\n */\n @query('.pds-c-primary-navigation__search-panel')\n searchPanel: HTMLElement;\n\n /**\n * The notifications bell button (either with messages or without)\n * @internal\n */\n @query('.pds-c-primary-navigation__bell-icon')\n bellIcon: HTMLElement;\n\n /**\n * The menu button\n * @internal\n */\n @query('.pds-c-primary-navigation__menu-button')\n menuIcon: HTMLElement;\n\n /**\n * The search icon button\n * @internal\n */\n @query('.pds-c-primary-navigation__search-icon')\n searchIcon: HTMLElement;\n\n clickNotificationLink(linkId: string) {\n const notificationLink = this.shadowRoot?.querySelector(\n `#${linkId}`,\n ) as HTMLAnchorElement;\n const textContent = notificationLink?.textContent;\n\n const customEvent = new CustomEvent(\n 'pds-primary-navigation-notification-link-click',\n {\n bubbles: true,\n composed: true,\n detail: {\n summary: textContent,\n },\n },\n );\n\n // Actually click the notification link\n if (notificationLink) {\n notificationLink.click();\n }\n this.dispatchEvent(customEvent);\n }\n\n /**\n * Handle click outside the notifications panel\n * @internal\n */\n handleOnClickOutsideNotifications(e: MouseEvent) {\n // If the notification panel is already closed then we don't care about outside clicks and we\n // can bail early\n if (!this.isPanelActive) {\n return;\n }\n\n // If clicking the notification bell or search icon again, bail here and let the toggle function take over\n if (\n (this.bellIcon && e.composedPath().includes(this.bellIcon)) ||\n (this.searchIcon && e.composedPath().includes(this.searchIcon))\n ) {\n return;\n }\n\n let didClickInside = false;\n\n // Check to see if we clicked inside the active navigation item\n if (this.notificationsPanel || this.searchPanel) {\n didClickInside =\n e.composedPath().includes(this.notificationsPanel) ||\n e.composedPath().includes(this.searchPanel);\n }\n\n // Only apply click outside breakpoint greater than or equal to 768px to get better\n // accordion behavior on small screens\n // TODO: can we tokenize this?\n if (window.innerWidth >= 768) {\n // If the navigation is active and we've clicked outside of the nav then it should be closed.\n if (this.isPanelActive && !didClickInside) {\n const event = new Event('pds-primary-navigation-panel-close', {\n bubbles: true,\n composed: true,\n });\n\n this.dispatchEvent(event);\n\n this.isPanelActive = false;\n }\n }\n }\n\n /**\n * On escape key press, close the notification panel and return focus to the bell icon\n * @internal\n */\n handlePanelKeyDown(e: KeyboardEvent) {\n if (e.key === 'Escape') {\n this.isPanelActive = false;\n if (this.bellIcon && this.bellIcon.shadowRoot) {\n this.bellIcon.shadowRoot.querySelector('button')?.focus();\n } else if (this.searchIcon && this.searchIcon.shadowRoot) {\n this.searchIcon.shadowRoot.querySelector('button')?.focus();\n }\n }\n }\n\n /**\n * An object map of logo variants, keyed off the primary navigation variants\n * @internal\n */\n @state()\n logoVariants = {\n default: {\n logoVariant: 'default',\n },\n inverted: {\n logoVariant: 'white',\n },\n };\n\n /**\n * Tracks the active class across all items in the navigation\n * @internal\n */\n @property({ type: Boolean })\n isActive: boolean;\n\n /**\n * Tracks whether the notification/search panel is active or not\n * @internal\n */\n @property({ type: Boolean })\n isPanelActive: boolean = false;\n\n /**\n * @internal\n */\n @state()\n trap: focusTrap.FocusTrap;\n\n /**\n * @internal\n */\n @state()\n isUtilityMenuPopulated: boolean = false;\n\n /**\n * @internal\n */\n @state()\n isMainMenuPopulated: boolean = false;\n\n /**\n * Called from menu button at mobile, closes notifications panel and opens navigation panel\n * @internal\n */\n toggleIsActive() {\n // Close all other open panels\n if (this.isPanelActive) {\n this.isPanelActive = false;\n }\n\n if (!this.isActive) {\n setTimeout(() => {\n this.initializeMainMenuTrap();\n this.trap.activate();\n }, 10);\n }\n\n if (this.isActive) {\n if (this.trap) {\n this.trap.deactivate();\n }\n }\n\n this.isActive = !this.isActive;\n\n const event = new Event(\n `pds-primary-navigation-menu-button-${\n this.isActive === true ? 'open' : 'close'\n }`,\n {\n bubbles: true,\n composed: true,\n },\n );\n\n this.dispatchEvent(event);\n }\n\n /**\n * Called from clicking notification bell or the search icon, closes other panels and opens the notification or search panel\n * @internal\n */\n togglePanelActive() {\n // Close all other open panels\n if (this.isActive) {\n this.isActive = false;\n }\n\n if (!this.isPanelActive && this.bellIcon) {\n setTimeout(() => {\n this.initializeNotificationPanelTrap();\n this.trap.activate();\n }, 10);\n }\n\n if (!this.isPanelActive && this.searchIcon) {\n setTimeout(() => {\n this.initializeSearchPanelTrap();\n this.trap.activate();\n }, 10);\n }\n\n if (this.isPanelActive) {\n if (this.trap) {\n this.trap.deactivate();\n }\n }\n\n this.isPanelActive = !this.isPanelActive;\n\n const event = new Event(\n `pds-primary-navigation-panel-${\n this.isPanelActive === true ? 'open' : 'close'\n }`,\n {\n bubbles: true,\n composed: true,\n },\n );\n\n this.dispatchEvent(event);\n }\n\n handleClick(e: { target: { textContent: string } }) {\n const detailSummaryInfo = e.target.textContent\n ? e.target.textContent.trim()\n : this.getLogoAriaLabel();\n const customEvent = new CustomEvent('pds-primary-navigation-item-click', {\n bubbles: true,\n composed: true,\n detail: {\n summary: detailSummaryInfo,\n },\n });\n\n this.dispatchEvent(customEvent);\n }\n\n setUpMainMenu() {\n this.handleSlotValidation('primary-navigation-main-menu');\n this.addVariantToMainMenu();\n\n // Check to see if the main menu has children. If so, we need to allow the hamburger menu on mobile\n if (this.querySelector('[slot=\"primary-navigation-main-menu\"]') !== null) {\n const mainMenuSlot = this.querySelector(\n '[slot=\"primary-navigation-main-menu\"]',\n );\n // @ts-ignore Utility slot cannot be null because we've already checked that\n this.isMainMenuPopulated = mainMenuSlot.children.length > 0;\n }\n }\n\n setUpUtilityMenu() {\n this.handleSlotValidation('primary-navigation-utility-menu');\n this.addVariantToUtilityMenu();\n\n // Check to see if the utility menu has children. If so, we need to allow the hamburger menu on mobile\n if (\n this.querySelector('[slot=\"primary-navigation-utility-menu\"]') !== null\n ) {\n const utlityMenuSlot = this.querySelector(\n '[slot=\"primary-navigation-utility-menu\"]',\n );\n // @ts-ignore Utility slot cannot be null because we've already checked that\n this.isUtilityMenuPopulated = utlityMenuSlot.children.length > 0;\n }\n }\n\n /**\n * @internal\n */\n @queryAssignedElements({\n slot: 'primary-navigation-main-menu',\n selector: 'pds-primary-navigation-main-menu',\n })\n mainMenus: HTMLElement[];\n\n /**\n * @internal\n */\n @queryAssignedElements({\n slot: 'primary-navigation-utility-menu',\n selector: 'pds-primary-navigation-utility-menu',\n })\n utilityMenus: HTMLElement[];\n\n /**\n * Initialize the focus trap for main menu\n */\n initializeMainMenuTrap() {\n const trapSelectors = [];\n if (this.slotNotEmpty('primary-navigation-main-menu')) {\n trapSelectors.push('pds-primary-navigation-main-menu');\n }\n if (this.slotNotEmpty('primary-navigation-utility-menu')) {\n trapSelectors.push('pds-primary-navigation-utility-menu');\n }\n if (this.loginLink !== 'none') {\n trapSelectors.push(this.menuIcon);\n }\n\n this.trap = focusTrap.createFocusTrap(trapSelectors, {\n initialFocus: false,\n allowOutsideClick: true,\n clickOutsideDeactivates: true,\n setReturnFocus: this.menuIcon,\n escapeDeactivates: true,\n tabbableOptions: {\n getShadowRoot: true,\n },\n });\n }\n\n /**\n * Initialize the focus trap for notifications panel\n */\n initializeNotificationPanelTrap() {\n const trapSelectors = [this.notificationsPanel, this.bellIcon];\n\n this.trap = focusTrap.createFocusTrap(trapSelectors, {\n initialFocus: false,\n allowOutsideClick: true,\n clickOutsideDeactivates: true,\n setReturnFocus: this.bellIcon,\n escapeDeactivates: true,\n tabbableOptions: {\n getShadowRoot: true,\n },\n });\n }\n\n /**\n * Initialize the focus trap for search panel\n */\n initializeSearchPanelTrap() {\n const trapSelectors = [this.searchPanel, this.searchIcon];\n\n this.trap = focusTrap.createFocusTrap(trapSelectors, {\n initialFocus: false,\n allowOutsideClick: true,\n clickOutsideDeactivates: true,\n setReturnFocus: this.searchIcon,\n escapeDeactivates: true,\n tabbableOptions: {\n getShadowRoot: true,\n },\n });\n }\n\n /**\n * Adds variant to primary-navigation-main-menu components\n * @internal\n */\n addVariantToMainMenu() {\n if (this.mainMenus && this.mainMenus.length !== 0) {\n this.mainMenus.forEach((mainMenu) => {\n mainMenu.setAttribute('variant', this.variant);\n });\n }\n\n return '';\n }\n\n /**\n * Adds variant to utility menu components\n * @internal\n */\n addVariantToUtilityMenu() {\n if (this.utilityMenus && this.utilityMenus.length !== 0) {\n this.utilityMenus.forEach((utilityMenu) => {\n utilityMenu.setAttribute('variant', this.variant);\n });\n }\n\n return '';\n }\n\n /**\n * Adds variant to utility menu components\n * @internal\n */\n getIconVariant() {\n return this.variant === 'default' ? 'icon' : 'icon-inverted';\n }\n\n /**\n * @internal\n */\n addVariantToNavDropdownLinks() {\n document.querySelectorAll('pds-primary-navigation-dropdown-link');\n\n const navDropdownLinks = Array.from(\n document.querySelectorAll('pds-primary-navigation-dropdown-link'),\n ) as HTMLElement[];\n\n navDropdownLinks.forEach((navDropdownLink) => {\n navDropdownLink.setAttribute('variant', this.variant);\n });\n }\n\n protected override async firstUpdated(): Promise {\n super.firstUpdated();\n this.setWindowResizeHandler();\n this.handleSlotValidation('logo');\n // We need to wait for the update to complete to make sure that the primary nav elements are available\n // so we can adjust their variants\n await this.updateComplete;\n this.addVariantToNavDropdownLinks();\n this.setUpMainMenu();\n this.setUpUtilityMenu();\n }\n\n updated(\n changedProperties: PropertyValueMap | Map,\n ): void {\n if (\n changedProperties.has('isPanelActive') ||\n changedProperties.has('responsiveViewportSize')\n ) {\n if (\n this.isPanelActive &&\n (this.responsiveViewportSize === 'lg' ||\n this.responsiveViewportSize === 'xl')\n ) {\n const searchPanel = this.shadowRoot?.querySelector(\n `.${this.classEl('search-panel')}`,\n ) as HTMLElement;\n const notificationsPanel = this.shadowRoot?.querySelector(\n `.${this.classEl('notification-panel')}`,\n ) as HTMLElement;\n const poppedPanel = searchPanel || notificationsPanel;\n const poppingItem = this.searchIcon || this.bellIcon;\n\n const arrowEl = this.shadowRoot?.querySelector(\n `.${this.classEl('arrow')}`,\n ) as HTMLElement;\n\n if (poppedPanel && poppingItem) {\n computePosition(poppingItem, poppedPanel, {\n placement: 'bottom',\n middleware: [\n shift(),\n offset({ mainAxis: 40, crossAxis: -24.55 }),\n arrow({ element: arrowEl }),\n ],\n }).then(({ x, y, middlewareData }) => {\n Object.assign(poppedPanel.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n\n if (middlewareData.arrow) {\n const { x: arrowX } = middlewareData.arrow;\n\n Object.assign(arrowEl.style, {\n left: `${arrowX}px`,\n top: `${-arrowEl.offsetHeight}px`,\n });\n }\n });\n }\n }\n }\n }\n\n /**\n * Link for the logo\n */\n @property({ type: String })\n logohref: string = '';\n\n /**\n * String for a custom aria label describing the logo element\n * - By default, aria label for the logo will read \"Link to ÑÇÖÞÎÞÂëhomepage\"\n * - Pass a string of \"false\" in order to suppress the aria label attribute\n */\n @property()\n logoAriaLabel: String;\n\n /**\n * Link for the log in link button\n *\n * - if **customLogout** is designated, a semantic button element will be rendered instead of a link and the application will be responsible for providing logout behavior when the pds-primary-navigation-item-click event is caught\n *\n */\n @property({ type: String })\n loginLink: 'none' | 'login' | 'logout' | 'customLogout' = 'login';\n\n /**\n * Variant for the log in link; valid values should match the link component's button attribute allowed values\n */\n @property({ type: String })\n loginLinkVariant: string = 'primary';\n\n /**\n * href for the log in link button\n */\n @property({ type: String })\n loginLinkhref: string = 'https://login.principal.com/login';\n\n /**\n * Returns the log in link button markup\n * @internal\n */\n returnLogInMarkup() {\n if (this.loginLink === 'customLogout') {\n return html`${this.translateText('log-out')}\n ${this.translateText('log-out')}`;\n }\n\n if (this.loginLink !== 'none') {\n return html`${this.loginLink === 'login'\n ? this.translateText('log-in')\n : this.translateText('log-out')}\n ${this.loginLink === 'login'\n ? this.translateText('log-in')\n : this.translateText('log-out')}`;\n }\n\n return nothing;\n }\n\n /**\n * Returns the inner div markup\n * @internal\n */\n returnInnerDivMarkup() {\n return html`
\n ${this.skipToContenthref !== 'none'\n ? html`${this.translateText('skip-to-content')}`\n : nothing}\n \n \n ${this.slotEmpty('logo')\n ? html``\n : nothing}\n \n \n \n \n \n \n ${this.includeAction &&\n this.includeAction === 'search' &&\n !this.slotEmpty('search')\n ? // This needs to be conditional based on inverted or default variant of nav\n html`\n ${this.isPanelActive\n ? html``\n : html``}\n \n
\n e.stopPropagation()}\n >\n \n
\n `\n : nothing}\n ${this.includeAction &&\n this.includeAction === 'notification' &&\n this.messagesCount === 0 &&\n this.otherAlertsCount === 0\n ? html`\n ${this.isPanelActive\n ? html``\n : html``}\n `\n : nothing}\n ${this.includeAction &&\n this.includeAction === 'notification' &&\n ((this.messagesCount && this.messagesCount > 0) ||\n (this.otherAlertsCount && this.otherAlertsCount > 0))\n ? html`\n ${this.isPanelActive\n ? html``\n : html``}\n `\n : nothing}\n ${this.includeAction && this.includeAction === 'notification'\n ? html`\n \n
\n e.stopPropagation()}\n >\n \n {\n this.clickNotificationLink(\n 'pds-c-primary-nav-messages-link',\n );\n }}\"\n >${this.translateText('messages')}${this.messagesCount < 99\n ? html`${this.messagesCount}`\n : html`99+`}\n \n ${!this.hideOtherAlerts\n ? html` \n this.clickNotificationLink(\n 'pds-c-primary-nav-other-notifications-link',\n )}\"\n >${this.translateText('other-alerts')}${this.otherAlertsCount < 99\n ? html`${this.otherAlertsCount}`\n : html`99+`}`\n : nothing}\n \n \n \n `\n : nothing}\n \n \n ${this.returnLogInMarkup()}\n ${this.isMainMenuPopulated || this.isUtilityMenuPopulated\n ? html`\n ${this.isActive\n ? html``\n : html``}\n `\n : nothing}\n \n `;\n }\n\n /**\n * @internal\n * If the user passes in a custom aria-label, that will be populated.\n * If not, the label will be automated and language localized.\n */\n getLogoAriaLabel() {\n if (!this.logoAriaLabel) {\n const localizedAriaLabel = this.translateText(\n 'link-to-principal-homepage',\n );\n return localizedAriaLabel;\n }\n if (this.logoAriaLabel && this.logoAriaLabel !== 'false') {\n return this.logoAriaLabel;\n }\n return nothing;\n }\n\n /**\n * @internal\n */\n get classNames() {\n return {\n 'is-active': this.isActive,\n [`${this.variant}`]: !!this.variant,\n 'remove-padding': typeof this.layoutContainerVariant !== 'undefined',\n };\n }\n\n /**\n * Attach functions\n */\n constructor() {\n super();\n this.handleOnClickOutsideNotifications =\n this.handleOnClickOutsideNotifications.bind(this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.initLocalization();\n document.addEventListener(\n 'mouseup',\n this.handleOnClickOutsideNotifications,\n false,\n );\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n // Remove window resize event listener\n document.removeEventListener(\n 'mouseup',\n this.handleOnClickOutsideNotifications,\n false,\n );\n }\n\n render() {\n return html``;\n }\n}\n"],"names":["Bell","PdsIconBell","PdsIcon","html","unsafeHTML","__decorateClass","state","customElement","PdsIconBellNotification","PdsCustomIcon","themedefault.SemanticBorderError","PdsPrimaryNavigation","PdsElement","linkId","notificationLink","_a","textContent","customEvent","e","didClickInside","event","_b","detailSummaryInfo","mainMenuSlot","utlityMenuSlot","trapSelectors","focusTrap.createFocusTrap","mainMenu","utilityMenu","navDropdownLink","changedProperties","searchPanel","notificationsPanel","poppedPanel","poppingItem","arrowEl","_c","computePosition","shift","offset","arrow","y","middlewareData","arrowX","nothing","ifDefined","property","query","queryAssignedElements","styles"],"mappings":"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","x_google_ignoreList":[0]}