@seniorsistemas/angular-components 19.9.8 → 19.9.10
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/card/lib/card/card.component.d.ts +6 -2
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -1
- package/datepicker/README.md +6 -2
- package/datepicker/lib/datepicker/date-segment-input.d.ts +7 -1
- package/datepicker/lib/datepicker/datepicker.component.d.ts +137 -3
- package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -0
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +3 -3
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +8 -3
- package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +4 -3
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +4 -2
- package/esm2022/button/lib/button/button.component.mjs +3 -3
- package/esm2022/card/lib/card/card.component.mjs +13 -5
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +3 -3
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +3 -3
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +3 -3
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.mjs +3 -2
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +3 -3
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +14 -9
- package/esm2022/datepicker/lib/datepicker/date-segment-input.mjs +19 -2
- package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +405 -38
- package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +3 -3
- package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -1
- package/esm2022/drawer/lib/drawer/drawer.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
- package/esm2022/editor/lib/editor/editor.component.mjs +3 -3
- package/esm2022/editor/lib/editor/toolbar-button/editor-toolbar-button.component.mjs +3 -3
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +3 -3
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +3 -3
- package/esm2022/gantt/lib/gantt/components/gantt/bar.mjs +2 -1
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +3 -3
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +16 -25
- package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +3 -3
- package/esm2022/input-text/lib/input-text/input-text.directive.mjs +3 -3
- package/esm2022/lib/locale/fallback.mjs +47 -13
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/object-card/lib/object-card/object-card.component.mjs +3 -3
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +3 -3
- package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +3 -3
- package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +4 -10
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +3 -3
- package/esm2022/select/lib/select/components/select-option/select-option.component.mjs +31 -3
- package/esm2022/select/lib/select/select.component.mjs +240 -23
- package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +3 -3
- package/esm2022/shared/lib/accessibility/datepicker-no-period-tab.directive.mjs +6 -6
- package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +3 -3
- package/esm2022/slider/lib/slider/slider.component.mjs +67 -65
- package/esm2022/slider/lib/slider/slider.module.mjs +2 -2
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +3 -3
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
- package/esm2022/stepper/lib/stepper/stepper.component.mjs +3 -3
- package/esm2022/switch/lib/switch/switch.component.mjs +5 -19
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +3 -3
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +10 -3
- package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.global.service.mjs +4 -3
- package/esm2022/tile/lib/tile/tile.component.mjs +3 -3
- package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +20 -3
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +10 -5
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -3
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-card.mjs +12 -4
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +2 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +13 -8
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +422 -38
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +14 -2
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +12 -12
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editor.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +3 -2
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +14 -23
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-input-text.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-input-text.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +3 -9
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +269 -24
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-shared.mjs +5 -5
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +67 -65
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +4 -18
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +9 -2
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +5 -4
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +20 -3
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components.mjs +46 -12
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/global-search/lib/global-search/global-search.component.d.ts +7 -3
- package/package.json +1 -1
- package/radio-button/lib/radio-button/radio-button.component.d.ts +0 -1
- package/select/README.md +16 -3
- package/select/lib/select/components/select-option/select-option.component.d.ts +23 -1
- package/select/lib/select/select.component.d.ts +111 -17
- package/slider/lib/slider/slider.component.d.ts +25 -7
- package/styles.css +5 -0
- package/switch/lib/switch/switch.component.d.ts +0 -2
- package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +1 -0
- package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-tiered-menu.mjs","sources":["../../projects/angular-components/tiered-menu/src/lib/tiered-menu/services/tiered-menu.service.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/services/tiered-menu.global.service.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/services/tiered-menu.event.service.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu/tiered-menu.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu/tiered-menu.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/tiered-menu.directive.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/tiered-menu.module.ts","../../projects/angular-components/tiered-menu/src/seniorsistemas-angular-components-tiered-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { TieredMenuItemData } from '../models/tiered-menu-item-data';\nimport { TieredMenuItemInternalData } from '../models/tiered-menu-item-internal-data';\n\n@Injectable()\nexport class TieredMenuService {\n public currentItem?: TieredMenuItemInternalData | null = null;\n public currentItems: TieredMenuItemInternalData[] = [];\n public items: TieredMenuItemInternalData[] = [];\n\n public normalizeData(\n items: TieredMenuItemData[],\n parent?: TieredMenuItemInternalData,\n ): TieredMenuItemInternalData[] {\n return items.map((i: TieredMenuItemInternalData) => {\n const item = {\n visible: true,\n ...i,\n };\n if (item.submenu) {\n item.submenu = this.normalizeData(item.submenu, item);\n }\n item.id = this._generateId();\n item.parent = parent;\n item.isOpen = false;\n return item;\n });\n }\n\n public markAllItemsAsClosed(items: TieredMenuItemInternalData[]): TieredMenuItemInternalData[] {\n return items.map((i: TieredMenuItemInternalData) => {\n const item = { ...i };\n if (item.submenu) {\n item.submenu = this.markAllItemsAsClosed(item.submenu);\n }\n item.isOpen = false;\n return item;\n });\n }\n\n public searchTheHierarchy(itemA: TieredMenuItemInternalData, itemB: TieredMenuItemInternalData) {\n let item: TieredMenuItemInternalData | null = itemB;\n while (item) {\n if (item === itemA) {\n return true;\n }\n item = item.parent ?? null;\n }\n return false;\n }\n\n public cloneItems(items: TieredMenuItemInternalData[]): TieredMenuItemInternalData[] {\n return JSON.parse(JSON.stringify(items));\n }\n\n private _generateId(): string {\n return `id-${Math.random().toString(36).substring(2, 9)}-${Math.random().toString(36).substring(2, 9)}-${Math.random().toString(36).substring(2, 9)}`;\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { TieredMenuDirective } from '../tiered-menu.directive';\n\n@Injectable()\nexport class TieredMenuGlobalService {\n public lastInstance?: TieredMenuDirective | null;\n}\n","import { Injectable, EventEmitter } from '@angular/core';\n\nimport { TieredMenuItemInternalData } from '../models/tiered-menu-item-internal-data';\n\n@Injectable()\nexport class TieredMenuEventService {\n public incrementCurrentItemEvent = new EventEmitter();\n public decrementCurrentItemEvent = new EventEmitter();\n public closeAllMenusEvent = new EventEmitter();\n public restoreFocusEvent = new EventEmitter();\n public selectItemEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n public openItemMenuEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n public closeItemMenuEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n public createMenuEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n}\n","import { Component, HostListener, Input, inject } from '@angular/core';\r\n\r\nimport { TieredMenuEventService } from '../../services/tiered-menu.event.service';\r\nimport { TieredMenuItemInternalData } from '../../models';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's-tiered-menu-item',\r\n templateUrl: './tiered-menu-item.component.html',\r\n styleUrls: ['./tiered-menu-item.component.scss'],\r\n standalone: true,\r\n imports: [NgClass],\r\n})\r\nexport class TieredMenuItemComponent {\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n\r\n @Input({ required: true })\r\n public item!: TieredMenuItemInternalData;\r\n\r\n @Input()\r\n public focused = false;\r\n\r\n @Input()\r\n public highlight? = false;\r\n\r\n @Input()\r\n public triggerEvent: 'click' | 'hover' = 'click';\r\n\r\n @Input()\r\n public closeOnClick = false;\r\n\r\n private _showTimeout?: number;\r\n\r\n @HostListener('click')\r\n @HostListener('touchend')\r\n public onClick(): void {\r\n if (this.item.disabled) return;\r\n\r\n if (this.item.submenu) {\r\n if (!this.item.isOpen) {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.item);\r\n } else if (this.closeOnClick) {\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(this.item);\r\n }\r\n } else {\r\n this._tieredMenuEventService.selectItemEvent.emit(this.item);\r\n }\r\n }\r\n\r\n @HostListener('mouseenter')\r\n public onMouseEnter(): void {\r\n if (this.item.disabled) return;\r\n\r\n if (this.triggerEvent === 'hover' && !this.item.isOpen) {\r\n this._showTimeout = window.setTimeout(() => {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.item);\r\n }, 300);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n public onMouseLeave(): void {\r\n window.clearTimeout(this._showTimeout);\r\n }\r\n}\r\n","<div\n [id]=\"item.id\"\n class=\"tiered-menu-item\"\n role=\"menuitem\"\n [tabindex]=\"focused && !item.disabled ? 0 : -1\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.aria-haspopup]=\"item.submenu ? 'menu' : null\"\n [attr.aria-expanded]=\"item.submenu ? item.isOpen : null\"\n [attr.data-key]=\"item.dataKey\"\n [ngClass]=\"{\n 'tiered-menu-item--open': item.isOpen,\n 'tiered-menu-item--focused': focused,\n 'tiered-menu-item--disabled': item.disabled,\n }\"\n>\n <div class=\"tiered-menu-item-content\">\n <span\n class=\"icon\"\n [ngClass]=\"item.iconClass\"\n ></span>\n <span class=\"label\">{{ item.label }}</span>\n </div>\n @if (item.submenu) {\n <span\n class=\"submenu-icon fas\"\n [class.fa-chevron-left]=\"item.isOpen\"\n [class.fa-chevron-right]=\"!item.isOpen\"\n >\n </span>\n }\n</div>\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's-tiered-menu-divider',\r\n templateUrl: './tiered-menu-divider.component.html',\r\n styleUrls: ['./tiered-menu-divider.component.scss'],\r\n standalone: true,\r\n})\r\nexport class TieredMenuDividerComponent {}\r\n","<div class=\"divider\"></div>\n","import { Component, ElementRef, HostListener, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { TieredMenuItemInternalData } from '../../models/tiered-menu-item-internal-data';\r\nimport { TieredMenuEventService } from '../../services/tiered-menu.event.service';\r\nimport { TieredMenuService } from '../../services/tiered-menu.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { TieredMenuItemComponent } from '../tiered-menu-item/tiered-menu-item.component';\r\nimport { TieredMenuDividerComponent } from '../tiered-menu-divider/tiered-menu-divider.component';\r\n\r\n@Component({\r\n templateUrl: './tiered-menu-nested.component.html',\r\n styleUrls: ['./tiered-menu-nested.component.scss'],\r\n standalone: true,\r\n imports: [NgTemplateOutlet, TieredMenuItemComponent, TieredMenuDividerComponent],\r\n})\r\nexport class TieredMenuNestedComponent implements OnInit, OnDestroy {\r\n readonly tieredMenuService = inject(TieredMenuService);\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _focusTrapFactory = inject(FocusTrapFactory);\r\n\r\n public items!: TieredMenuItemInternalData[];\r\n\r\n // Saves the last opened item to close it when a new one is opened\r\n private _lastOpenItem?: TieredMenuItemInternalData;\r\n private _focusTrap: FocusTrap | null = null;\r\n private _unsubscribe$ = new Subject<void>();\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onDocumentClick(event: MouseEvent): void {\r\n // Closing menu when clicked outside.\r\n const target = event.target as Element;\r\n const clickedInside = target.closest('s-tiered-menu-item') || target.closest('s-tiered-menu-divider');\r\n if (!clickedInside) {\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydownHandler(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'Escape':\r\n this._tieredMenuEventService.restoreFocusEvent.emit();\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n break;\r\n case ' ':\r\n case 'Enter':\r\n this._tieredMenuEventService.selectItemEvent.emit(this.tieredMenuService.currentItem);\r\n break;\r\n case 'ArrowLeft':\r\n // When nested I need a reference to the current item's parent item, otherwise just the current item.\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(this.tieredMenuService.currentItem?.parent);\r\n break;\r\n case 'ArrowRight':\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.tieredMenuService.currentItem);\r\n break;\r\n case 'ArrowUp':\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n break;\r\n case 'ArrowDown':\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n break;\r\n case 'Tab':\r\n // Move focus between items instead of letting Tab escape the (trapped) menu.\r\n if (event.shiftKey) {\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n } else {\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n }\r\n event.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.tieredMenuService.currentItems = this.items;\r\n this.tieredMenuService.currentItem = this.items[0] ?? null;\r\n this._subscribeEvents();\r\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._unsubscribe$.next();\r\n this._unsubscribe$.complete();\r\n this._focusTrap?.destroy();\r\n }\r\n\r\n private _focusCurrentItem(): void {\r\n const id = this.tieredMenuService.currentItem?.id;\r\n\r\n if (!id) return;\r\n\r\n document.getElementById(id)?.focus();\r\n }\r\n\r\n private _incrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n }\r\n\r\n const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) + 1;\r\n\r\n if (curIndex < this.tieredMenuService.currentItems.length) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];\r\n } else {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._incrementCurItem();\r\n }\r\n }\r\n\r\n private _decrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n }\r\n\r\n const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) - 1;\r\n\r\n if (curIndex >= 0) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];\r\n } else {\r\n this.tieredMenuService.currentItem =\r\n this.tieredMenuService.currentItems[this.tieredMenuService.currentItems.length - 1];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._decrementCurItem();\r\n }\r\n }\r\n\r\n private _closeItem(item: TieredMenuItemInternalData): void {\r\n let itemAux = this._lastOpenItem;\r\n\r\n while (itemAux && itemAux != item) {\r\n itemAux.isOpen = false;\r\n itemAux = itemAux.parent;\r\n }\r\n\r\n item.isOpen = false;\r\n\r\n this.tieredMenuService.currentItem = itemAux ?? this.tieredMenuService.items[0];\r\n this.tieredMenuService.currentItems = itemAux?.parent?.submenu || this.tieredMenuService.items;\r\n }\r\n\r\n private _openItem(item: TieredMenuItemInternalData): void {\r\n if (item?.submenu) {\r\n item.isOpen = true;\r\n this.tieredMenuService.currentItems = item.submenu;\r\n\r\n // Only has focus if there has already been interaction.\r\n if (this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = item.submenu[0];\r\n }\r\n\r\n this._lastOpenItem = item;\r\n }\r\n }\r\n\r\n private _subscribeEvents(): void {\r\n this._tieredMenuEventService.incrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._incrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n\r\n this._tieredMenuEventService.decrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._decrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n\r\n this._tieredMenuEventService.selectItemEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item && item.command) {\r\n item.command();\r\n // Close all menus after the item was selected.\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n });\r\n\r\n this._tieredMenuEventService.openItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item) {\r\n if (!this.tieredMenuService.currentItems.includes(item)) {\r\n let itemAux = this._lastOpenItem;\r\n\r\n while (itemAux?.parent?.parent) {\r\n itemAux = itemAux.parent;\r\n }\r\n\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(itemAux?.parent ?? itemAux);\r\n }\r\n\r\n this._lastOpenItem = item;\r\n this._openItem(item);\r\n }\r\n });\r\n\r\n this._tieredMenuEventService.closeItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item) {\r\n this._closeItem(item);\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"menu menu--nested\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: items }\"\n ></ng-container>\n</div>\n\n<ng-template\n #itemsTemplate\n let-items\n>\n @for (item of items; track item.id) {\n <div>\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [closeOnClick]=\"true\"\n >\n </s-tiered-menu-item>\n }\n @if (item.divider) {\n <s-tiered-menu-divider></s-tiered-menu-divider>\n }\n @if (item.submenu && item.isOpen) {\n <div>\n <div class=\"submenu\">\n <ng-container\n *ngTemplateOutlet=\"\n itemsTemplate;\n context: { $implicit: item.submenu }\n \"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n }\n</ng-template>\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject,\r\n} from '@angular/core';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TieredMenuItemInternalData } from '../../models/tiered-menu-item-internal-data';\r\nimport { TieredMenuEventService } from '../../services/tiered-menu.event.service';\r\nimport { TieredMenuService } from '../../services/tiered-menu.service';\r\nimport { TieredMenuItemComponent } from '../tiered-menu-item/tiered-menu-item.component';\r\nimport { TieredMenuDividerComponent } from '../tiered-menu-divider/tiered-menu-divider.component';\r\n\r\n@Component({\r\n selector: 's-tiered-menu',\r\n templateUrl: './tiered-menu.component.html',\r\n styleUrls: ['./tiered-menu.component.scss'],\r\n standalone: true,\r\n imports: [TieredMenuItemComponent, TieredMenuDividerComponent],\r\n})\r\nexport class TieredMenuComponent implements OnInit, OnDestroy {\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _injector = inject(Injector);\r\n private readonly _focusTrapFactory = inject(FocusTrapFactory);\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n readonly tieredMenuService = inject(TieredMenuService);\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n\r\n @Input() public ariaLabel?: string;\r\n public items: TieredMenuItemInternalData[] = [];\r\n public menuTriggerEvent: 'click' | 'hover' = 'hover';\r\n public isSubmenu = false;\r\n\r\n private _overlayRef: OverlayRef | null = null;\r\n private _componentRef: ComponentRef<TieredMenuComponent> | null = null;\r\n private _focusTrap: FocusTrap | null = null;\r\n private _unsubscribe$ = new Subject<void>();\r\n\r\n @Output()\r\n public destroyRequest = new EventEmitter<boolean>();\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onDocumentClick(event: MouseEvent): void {\r\n // Closing menu when clicked outside.\r\n const target = event.target as Element;\r\n const clickedInside = target.closest('s-tiered-menu-item') || target.closest('s-tiered-menu-divider');\r\n if (!clickedInside) {\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydownHandler(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'Escape':\r\n this._tieredMenuEventService.restoreFocusEvent.emit();\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n event.preventDefault();\r\n break;\r\n case ' ':\r\n case 'Enter':\r\n if (\r\n this.tieredMenuService.currentItem &&\r\n !this.tieredMenuService.currentItem.disabled &&\r\n this.items.includes(this.tieredMenuService.currentItem)\r\n ) {\r\n this._tieredMenuEventService.selectItemEvent.emit(this.tieredMenuService.currentItem);\r\n event.preventDefault();\r\n }\r\n break;\r\n case 'ArrowUp':\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n break;\r\n case 'ArrowDown':\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n break;\r\n case 'Tab':\r\n // Move focus between items instead of letting Tab escape the (trapped) menu.\r\n if (event.shiftKey) {\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n } else {\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n }\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n break;\r\n case 'ArrowLeft':\r\n if (this.tieredMenuService.currentItem && this.items.includes(this.tieredMenuService.currentItem)) {\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(this.tieredMenuService.currentItem);\r\n this._changeDetectorRef.detectChanges();\r\n event.preventDefault();\r\n }\r\n break;\r\n case 'ArrowRight':\r\n if (\r\n this.tieredMenuService.currentItem &&\r\n !this.tieredMenuService.currentItem.disabled &&\r\n this.items.includes(this.tieredMenuService.currentItem)\r\n ) {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.tieredMenuService.currentItem);\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._subscribeEvents();\r\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\r\n\r\n // Submenus have their focus managed by the openItemMenuEvent handler.\r\n if (!this.isSubmenu) {\r\n this.tieredMenuService.currentItems = this.items;\r\n this.tieredMenuService.currentItem = this.items[0] ?? null;\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._unsubscribe$.next();\r\n this._unsubscribe$.complete();\r\n this._focusTrap?.destroy();\r\n }\r\n\r\n private _focusCurrentItem(): void {\r\n const id = this.tieredMenuService.currentItem?.id;\r\n\r\n if (!id) {\r\n return;\r\n }\r\n\r\n document.getElementById(id)?.focus();\r\n }\r\n\r\n private _incrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n } else if (!this.items.includes(this.tieredMenuService.currentItem)) {\r\n // Checking if it is the current menu.\r\n return;\r\n }\r\n\r\n const currentIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) + 1;\r\n\r\n if (currentIndex < this.tieredMenuService.currentItems.length) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[currentIndex];\r\n } else {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._incrementCurItem();\r\n }\r\n }\r\n\r\n private _decrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n // Checking if it is the current menu.\r\n } else if (!this.items.includes(this.tieredMenuService.currentItem)) {\r\n return;\r\n }\r\n\r\n const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) - 1;\r\n\r\n if (curIndex >= 0) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];\r\n } else {\r\n this.tieredMenuService.currentItem =\r\n this.tieredMenuService.currentItems[this.tieredMenuService.currentItems.length - 1];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._decrementCurItem();\r\n }\r\n }\r\n\r\n private static readonly SUBMENU_POSITIONS: ConnectedPosition[] = [\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n private _createMenu(items: TieredMenuItemInternalData[], itemEl: HTMLElement): void {\r\n if (!this._overlayRef && items) {\r\n const positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(itemEl)\r\n .withPositions(TieredMenuComponent.SUBMENU_POSITIONS)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const componentRef = this._overlayRef.attach(new ComponentPortal(TieredMenuComponent, null, this._injector));\r\n this._componentRef = componentRef;\r\n\r\n // Setting the menu items.\r\n componentRef.instance.items = items;\r\n componentRef.instance.isSubmenu = true;\r\n\r\n // Render synchronously so item elements are queryable right away (needed by restoreOpenChain()).\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n // Subscribe menu events.\r\n componentRef.instance.destroyRequest.subscribe((propagate: boolean) => {\r\n this._destroy(propagate);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Recreates the flyout chain for whichever item is currently marked `isOpen` in `items`,\r\n * recursively — used when switching from the nested/mobile menu back to desktop, where the\r\n * open state lives on the shared item data but each tier is a separate overlay that must be\r\n * explicitly recreated to match it.\r\n */\r\n public restoreOpenChain(): void {\r\n const openItem = this.items.find((item) => item.isOpen && item.submenu);\r\n\r\n if (!openItem) return;\r\n\r\n const itemEl = document.querySelector(`#${openItem.id}`);\r\n\r\n if (!itemEl) return;\r\n\r\n this._createMenu(openItem.submenu as TieredMenuItemInternalData[], itemEl as HTMLElement);\r\n this._componentRef?.instance.restoreOpenChain();\r\n }\r\n\r\n /**\r\n * Disposes this tier's own submenu overlay chain (if any) without touching `isOpen` state —\r\n * used when switching from desktop to nested, where the open state must survive but the\r\n * flyout overlays themselves need to go away.\r\n */\r\n public disposeChain(): void {\r\n this._componentRef?.instance.disposeChain();\r\n this._overlayRef?.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n }\r\n\r\n private _destroy(propagate = true): void {\r\n if (this._overlayRef !== null) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n }\r\n\r\n if (propagate) {\r\n this.destroyRequest.emit();\r\n }\r\n }\r\n\r\n private _subscribeEvents(): void {\r\n // Increment current item event.\r\n this._tieredMenuEventService.incrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._incrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n // Decrement current item event.\r\n this._tieredMenuEventService.decrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._decrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n // Select item event.\r\n this._tieredMenuEventService.selectItemEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item) {\r\n if (item.submenu) {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(item);\r\n } else if (item.command) {\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n item.command();\r\n }\r\n }\r\n });\r\n // Close all menus event.\r\n this._tieredMenuEventService.closeAllMenusEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._destroy();\r\n this.tieredMenuService.currentItem = null;\r\n this.tieredMenuService.currentItems = this.tieredMenuService.items;\r\n this.tieredMenuService.markAllItemsAsClosed(this.tieredMenuService.items);\r\n });\r\n\r\n // Open item menu event.\r\n this._tieredMenuEventService.openItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (this.tieredMenuService.currentItem) {\r\n if (this.tieredMenuService.currentItem.parent === item) {\r\n return;\r\n }\r\n\r\n if (this.tieredMenuService.currentItem?.parent) {\r\n if (!item) return;\r\n\r\n if (\r\n !this.tieredMenuService.searchTheHierarchy(this.tieredMenuService.currentItem.parent, item)\r\n ) {\r\n let current: TieredMenuItemInternalData | undefined = this.tieredMenuService.currentItem;\r\n\r\n current.isOpen = false;\r\n\r\n while (current?.parent !== item.parent) {\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(current);\r\n this._changeDetectorRef.detectChanges();\r\n\r\n current = current?.parent;\r\n }\r\n\r\n if (current) {\r\n current.isOpen = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (item?.submenu && !item?.isOpen && this.items.includes(item)) {\r\n const itemEl = document.querySelector(`#${item.id}`);\r\n\r\n if (!itemEl) return;\r\n\r\n this._createMenu(item.submenu, itemEl as HTMLElement);\r\n this.tieredMenuService.currentItems = item.submenu;\r\n this.tieredMenuService.currentItem = item.submenu[0];\r\n item.isOpen = true;\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n });\r\n\r\n // Close item menu event.\r\n this._tieredMenuEventService.closeItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item === null) return;\r\n if (this.items.some((i) => i.id === item.id)) {\r\n if (item.parent) {\r\n item.parent.isOpen = false;\r\n }\r\n this.tieredMenuService.currentItems = item?.parent?.parent?.submenu || this.tieredMenuService.items;\r\n this.tieredMenuService.currentItem = item.parent;\r\n this.destroyRequest.emit(false);\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"menu\"\r\n role=\"application\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n>\r\n @for (item of items; track $index) {\r\n @if (item.visible && !item.divider) {\r\n <s-tiered-menu-item\r\n [item]=\"item\"\r\n [focused]=\"item === tieredMenuService.currentItem\"\r\n [highlight]=\"item.isOpen\"\r\n fieldUtils.triggerEvent=\"hover\"\r\n [closeOnClick]=\"false\"\r\n />\r\n }\r\n @if (item.divider) {\r\n <s-tiered-menu-divider />\r\n }\r\n }\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject,\r\n} from '@angular/core';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { TieredMenuNestedComponent } from './components/tiered-menu-nested/tiered-menu-nested.component';\r\nimport { TieredMenuComponent } from './components/tiered-menu/tiered-menu.component';\r\nimport { TieredMenuItemData } from './models/tiered-menu-item-data';\r\nimport { TieredMenuEventService } from './services/tiered-menu.event.service';\r\nimport { TieredMenuGlobalService } from './services/tiered-menu.global.service';\r\nimport { TieredMenuService } from './services/tiered-menu.service';\r\n\r\n/**\r\n * @description Diretiva que anexa um menu multinível (tiered menu) a qualquer elemento do DOM.\r\n * Ao disparar o evento configurado no elemento hospedeiro, exibe um painel flutuante\r\n * com itens de menu hierárquicos, suportando submenus aninhados e divisores.\r\n * Em telas estreitas (< 600px), o menu é exibido em modo aninhado fullscreen.\r\n *\r\n * @example\r\n * ```html\r\n * <s-button [sTieredMenu]=\"menuItems\" triggerEvent=\"click\">Abrir menu</s-button>\r\n * ```\r\n *\r\n * @category Navegação\r\n */\r\n@Directive({\r\n selector: '[sTieredMenu]',\r\n providers: [TieredMenuEventService, TieredMenuService],\r\n standalone: true,\r\n})\r\nexport class TieredMenuDirective implements OnInit, OnChanges, OnDestroy {\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n private readonly _tieredMenuService = inject(TieredMenuService);\r\n private readonly _tieredMenuGlobalService = inject(TieredMenuGlobalService);\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * @description Lista de itens exibidos no menu. Cada item pode conter um array de `children`\r\n * para criar submenus aninhados, além de propriedades como `label`, `icon`,\r\n * `disabled`, `command` e `divider`.\r\n */\r\n @Input()\r\n public items: TieredMenuItemData[] = [];\r\n\r\n /**\r\n * @description Item que receberá o foco inicial ao abrir o menu.\r\n * Útil para destacar uma opção pré-selecionada ou contextual.\r\n */\r\n @Input()\r\n public focusedItem: TieredMenuItemData | undefined = undefined;\r\n\r\n /**\r\n * @description Define o evento do elemento hospedeiro que dispara a abertura do menu.\r\n * - `'click'`: abre o menu ao clicar no elemento (padrão).\r\n * - `'hover'`: abre o menu ao passar o mouse sobre o elemento.\r\n *\r\n * @default 'click'\r\n */\r\n @Input()\r\n public triggerEvent: 'click' | 'hover' = 'click';\r\n\r\n @Input()\r\n public ariaLabel?: string;\r\n\r\n @Output()\r\n public tieredMenuOpened: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output()\r\n public tieredMenuClosed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private _overlayRef: OverlayRef | null = null;\r\n private _componentRef: ComponentRef<TieredMenuComponent | TieredMenuNestedComponent> | null = null;\r\n private _showTimeout?: number;\r\n private _isNested = false;\r\n private _isOpen = false;\r\n private _unsubscribe$ = new Subject<void>();\r\n private _lastActiveElement?: Element;\r\n private _previousItems: TieredMenuItemData[] = [];\r\n private _itemsAreValid?: boolean;\r\n\r\n public ngOnInit(): void {\r\n this._itemsAreValid = !!this.items?.length;\r\n\r\n if (!this._itemsAreValid) return;\r\n\r\n this._subscribeEvents();\r\n }\r\n\r\n public ngOnChanges(): void {\r\n if (!this._itemsAreValid) return;\r\n\r\n if (!this._previousItems) {\r\n this._previousItems = this._tieredMenuService.cloneItems(this.items);\r\n }\r\n\r\n let hasChanges = false;\r\n\r\n if (this.items.length !== this._previousItems.length) {\r\n hasChanges = true;\r\n } else {\r\n for (let i = 0; i < this.items.length; i++) {\r\n if (!this._compareItems(this.items[i], this._previousItems[i])) {\r\n hasChanges = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (hasChanges) {\r\n this._updateServiceItems();\r\n this._changeDetectorRef.detectChanges();\r\n this._rebuildMenu();\r\n }\r\n\r\n this._previousItems = this._tieredMenuService.cloneItems(this.items);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!this._itemsAreValid) return;\r\n\r\n this._unsubscribe$.next();\r\n this._unsubscribe$.complete();\r\n\r\n this._destroy();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: MouseEvent): void {\r\n if (!this._itemsAreValid) return;\r\n\r\n if (this.triggerEvent === 'click' && !this._isOpen) {\r\n this._lastActiveElement = document.activeElement as Element;\r\n this._createMenu();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n public onWindowResize(): void {\r\n if (!this._overlayRef) return;\r\n\r\n const isNestedNow = document.body.clientWidth < 600;\r\n\r\n if (isNestedNow === this._isNested) return;\r\n\r\n // Crossing the 600px breakpoint while open switches between the desktop (flyout) and\r\n // nested (fullscreen accordion) menu components. Unlike a real close, this must preserve\r\n // which items are currently open — _disposeOverlay() only tears down the CDK overlay(s),\r\n // it doesn't touch `isOpen` state or emit closeAllMenusEvent (which would reset it).\r\n this._isNested = isNestedNow;\r\n this._disposeOverlay();\r\n this._isNested ? this._createNestedMenu() : this._createTieredMenu();\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n if (this._componentRef?.instance instanceof TieredMenuComponent) {\r\n this._componentRef.instance.disposeChain();\r\n }\r\n\r\n this._overlayRef?.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n }\r\n\r\n private _createMenu(): void {\r\n this._updateServiceItems();\r\n\r\n if (!this._componentRef && this._tieredMenuService.items?.length > 0) {\r\n this._tieredMenuGlobalService.lastInstance?._destroy();\r\n this._tieredMenuGlobalService.lastInstance = this;\r\n\r\n (this._lastActiveElement as HTMLElement)?.blur();\r\n this._isOpen = true;\r\n this.tieredMenuOpened.emit();\r\n this._isNested = document.body.clientWidth < 600;\r\n\r\n this._isNested ? this._createNestedMenu() : this._createTieredMenu();\r\n }\r\n }\r\n\r\n private static readonly DESKTOP_POSITIONS: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\r\n ];\r\n\r\n // Single position, no flip fallback: the nested/mobile panel can accumulate several\r\n // simultaneously open branches (restored from desktop mode) and grow much taller than the\r\n // trigger's surroundings. Falling back to a \"top\" position in that case just misplaces the\r\n // panel; instead it always opens below the trigger and relies on `withFlexibleDimensions` +\r\n // `.menu`'s own `overflow: auto` to scroll internally when it doesn't fit.\r\n private static readonly NESTED_POSITIONS: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n ];\r\n\r\n private _createTieredMenu(): void {\r\n if (!this._overlayRef && this._tieredMenuService.items?.length > 0) {\r\n const positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(this._elementRef)\r\n .withPositions(TieredMenuDirective.DESKTOP_POSITIONS)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const componentRef = this._overlayRef.attach(\r\n new ComponentPortal(TieredMenuComponent, null, this._injector),\r\n );\r\n this._componentRef = componentRef;\r\n this._setMenuComponentProperties();\r\n componentRef.instance.ariaLabel = this.ariaLabel;\r\n\r\n // Render synchronously so item elements are queryable right away, then recreate any\r\n // flyout chain that was already open (e.g. coming from nested/mobile mode via resize).\r\n componentRef.changeDetectorRef.detectChanges();\r\n componentRef.instance.restoreOpenChain();\r\n\r\n componentRef.instance.destroyRequest.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._destroy();\r\n });\r\n }\r\n }\r\n\r\n private _createNestedMenu(): void {\r\n if (!this._overlayRef && this._tieredMenuService.items?.length > 0) {\r\n // The nested/mobile panel is near full-width (see .menu--nested CSS), so it doesn't\r\n // need to flip horizontally like the desktop menu — `withPush` clamps it into the\r\n // viewport instead. `withFlexibleDimensions(true)` lets it shrink to the remaining\r\n // viewport space below the trigger (scrolling internally via `.menu`'s own\r\n // `overflow: auto`) instead of flipping above it, which would misplace a panel that's\r\n // taller than the trigger's surroundings.\r\n const positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(this._elementRef)\r\n .withPositions(TieredMenuDirective.NESTED_POSITIONS)\r\n .withFlexibleDimensions(true)\r\n .withPush(true);\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n this._componentRef = this._overlayRef.attach(\r\n new ComponentPortal(TieredMenuNestedComponent, null, this._injector),\r\n );\r\n this._setMenuComponentProperties();\r\n }\r\n }\r\n\r\n private _destroy(): void {\r\n if (this._overlayRef) {\r\n this._isOpen = false;\r\n this.tieredMenuClosed.emit();\r\n window.clearTimeout(this._showTimeout);\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n\r\n this._tieredMenuService.currentItems = this._tieredMenuService.items;\r\n this._tieredMenuService.currentItem = this._tieredMenuService.items[0];\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n }\r\n\r\n private _setMenuComponentProperties(): void {\r\n if (this._componentRef != null) {\r\n this._componentRef.instance.items = this._tieredMenuService.items;\r\n }\r\n }\r\n\r\n private _subscribeEvents(): void {\r\n this._tieredMenuEventService.closeAllMenusEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._tieredMenuService.items = this._tieredMenuService.markAllItemsAsClosed(this._tieredMenuService.items);\r\n this._destroy();\r\n });\r\n\r\n this._tieredMenuEventService.restoreFocusEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n (this._lastActiveElement as HTMLElement)?.focus();\r\n });\r\n }\r\n\r\n private _compareItems(item1: TieredMenuItemData, item2: TieredMenuItemData): boolean {\r\n return JSON.stringify(item1) === JSON.stringify(item2);\r\n }\r\n\r\n private _rebuildMenu(): void {\r\n this._destroy();\r\n }\r\n\r\n private _updateServiceItems(): void {\r\n this._tieredMenuService.items = this._tieredMenuService.normalizeData(this.items);\r\n this._tieredMenuService.currentItems = this._tieredMenuService.items;\r\n\r\n this._tieredMenuService.currentItem =\r\n this._tieredMenuService.items.find((i) => i.label === this.focusedItem?.label) ??\r\n this._tieredMenuService.items[0];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TieredMenuGlobalService } from './services/tiered-menu.global.service';\r\nimport { TieredMenuDirective } from './tiered-menu.directive';\r\n\r\n@NgModule({\r\n imports: [TieredMenuDirective],\r\n exports: [TieredMenuDirective],\r\n providers: [TieredMenuGlobalService],\r\n})\r\nexport class TieredMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-tiered-menu.mjs","sources":["../../projects/angular-components/tiered-menu/src/lib/tiered-menu/services/tiered-menu.service.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/services/tiered-menu.global.service.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/services/tiered-menu.event.service.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu/tiered-menu.component.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/components/tiered-menu/tiered-menu.component.html","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/tiered-menu.directive.ts","../../projects/angular-components/tiered-menu/src/lib/tiered-menu/tiered-menu.module.ts","../../projects/angular-components/tiered-menu/src/seniorsistemas-angular-components-tiered-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { TieredMenuItemData } from '../models/tiered-menu-item-data';\nimport { TieredMenuItemInternalData } from '../models/tiered-menu-item-internal-data';\n\n@Injectable()\nexport class TieredMenuService {\n public currentItem?: TieredMenuItemInternalData | null = null;\n public currentItems: TieredMenuItemInternalData[] = [];\n public items: TieredMenuItemInternalData[] = [];\n\n public normalizeData(\n items: TieredMenuItemData[],\n parent?: TieredMenuItemInternalData,\n ): TieredMenuItemInternalData[] {\n return items.map((i: TieredMenuItemInternalData) => {\n const item = {\n visible: true,\n ...i,\n };\n if (item.submenu) {\n item.submenu = this.normalizeData(item.submenu, item);\n }\n item.id = this._generateId();\n item.parent = parent;\n item.isOpen = false;\n return item;\n });\n }\n\n public markAllItemsAsClosed(items: TieredMenuItemInternalData[]): TieredMenuItemInternalData[] {\n return items.map((i: TieredMenuItemInternalData) => {\n const item = { ...i };\n if (item.submenu) {\n item.submenu = this.markAllItemsAsClosed(item.submenu);\n }\n item.isOpen = false;\n return item;\n });\n }\n\n public searchTheHierarchy(itemA: TieredMenuItemInternalData, itemB: TieredMenuItemInternalData) {\n let item: TieredMenuItemInternalData | null = itemB;\n while (item) {\n if (item === itemA) {\n return true;\n }\n item = item.parent ?? null;\n }\n return false;\n }\n\n public cloneItems(items: TieredMenuItemInternalData[]): TieredMenuItemInternalData[] {\n return JSON.parse(JSON.stringify(items));\n }\n\n private _generateId(): string {\n return `id-${Math.random().toString(36).substring(2, 9)}-${Math.random().toString(36).substring(2, 9)}-${Math.random().toString(36).substring(2, 9)}`;\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport { TieredMenuDirective } from '../tiered-menu.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class TieredMenuGlobalService {\n public lastInstance?: TieredMenuDirective | null;\n}\n","import { Injectable, EventEmitter } from '@angular/core';\n\nimport { TieredMenuItemInternalData } from '../models/tiered-menu-item-internal-data';\n\n@Injectable()\nexport class TieredMenuEventService {\n public incrementCurrentItemEvent = new EventEmitter();\n public decrementCurrentItemEvent = new EventEmitter();\n public closeAllMenusEvent = new EventEmitter();\n public restoreFocusEvent = new EventEmitter();\n public selectItemEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n public openItemMenuEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n public closeItemMenuEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n public createMenuEvent =\n new EventEmitter<TieredMenuItemInternalData | null>();\n}\n","import { Component, HostListener, Input, inject } from '@angular/core';\r\n\r\nimport { TieredMenuEventService } from '../../services/tiered-menu.event.service';\r\nimport { TieredMenuItemInternalData } from '../../models';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's-tiered-menu-item',\r\n templateUrl: './tiered-menu-item.component.html',\r\n styleUrls: ['./tiered-menu-item.component.scss'],\r\n standalone: true,\r\n imports: [NgClass],\r\n})\r\nexport class TieredMenuItemComponent {\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n\r\n @Input({ required: true })\r\n public item!: TieredMenuItemInternalData;\r\n\r\n @Input()\r\n public focused = false;\r\n\r\n @Input()\r\n public highlight? = false;\r\n\r\n @Input()\r\n public triggerEvent: 'click' | 'hover' = 'click';\r\n\r\n @Input()\r\n public closeOnClick = false;\r\n\r\n private _showTimeout?: number;\r\n\r\n @HostListener('click')\r\n @HostListener('touchend')\r\n public onClick(): void {\r\n if (this.item.disabled) return;\r\n\r\n if (this.item.submenu) {\r\n if (!this.item.isOpen) {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.item);\r\n } else if (this.closeOnClick) {\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(this.item);\r\n }\r\n } else {\r\n this._tieredMenuEventService.selectItemEvent.emit(this.item);\r\n }\r\n }\r\n\r\n @HostListener('mouseenter')\r\n public onMouseEnter(): void {\r\n if (this.item.disabled) return;\r\n\r\n if (this.triggerEvent === 'hover' && !this.item.isOpen) {\r\n this._showTimeout = window.setTimeout(() => {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.item);\r\n }, 300);\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n public onMouseLeave(): void {\r\n window.clearTimeout(this._showTimeout);\r\n }\r\n}\r\n","<div\n [id]=\"item.id\"\n class=\"tiered-menu-item\"\n role=\"menuitem\"\n [tabindex]=\"focused && !item.disabled ? 0 : -1\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [attr.aria-haspopup]=\"item.submenu ? 'menu' : null\"\n [attr.aria-expanded]=\"item.submenu ? item.isOpen : null\"\n [attr.data-key]=\"item.dataKey\"\n [ngClass]=\"{\n 'tiered-menu-item--open': item.isOpen,\n 'tiered-menu-item--focused': focused,\n 'tiered-menu-item--disabled': item.disabled,\n }\"\n>\n <div class=\"tiered-menu-item-content\">\n <span\n class=\"icon\"\n [ngClass]=\"item.iconClass\"\n ></span>\n <span class=\"label\">{{ item.label }}</span>\n </div>\n @if (item.submenu) {\n <span\n class=\"submenu-icon fas\"\n [class.fa-chevron-left]=\"item.isOpen\"\n [class.fa-chevron-right]=\"!item.isOpen\"\n >\n </span>\n }\n</div>\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's-tiered-menu-divider',\r\n templateUrl: './tiered-menu-divider.component.html',\r\n styleUrls: ['./tiered-menu-divider.component.scss'],\r\n standalone: true,\r\n})\r\nexport class TieredMenuDividerComponent {}\r\n","<div class=\"divider\"></div>\n","import { Component, ElementRef, HostListener, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { TieredMenuItemInternalData } from '../../models/tiered-menu-item-internal-data';\r\nimport { TieredMenuEventService } from '../../services/tiered-menu.event.service';\r\nimport { TieredMenuService } from '../../services/tiered-menu.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { TieredMenuItemComponent } from '../tiered-menu-item/tiered-menu-item.component';\r\nimport { TieredMenuDividerComponent } from '../tiered-menu-divider/tiered-menu-divider.component';\r\n\r\n@Component({\r\n templateUrl: './tiered-menu-nested.component.html',\r\n styleUrls: ['./tiered-menu-nested.component.scss'],\r\n standalone: true,\r\n imports: [NgTemplateOutlet, TieredMenuItemComponent, TieredMenuDividerComponent],\r\n})\r\nexport class TieredMenuNestedComponent implements OnInit, OnDestroy {\r\n readonly tieredMenuService = inject(TieredMenuService);\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _focusTrapFactory = inject(FocusTrapFactory);\r\n\r\n public items!: TieredMenuItemInternalData[];\r\n\r\n // Saves the last opened item to close it when a new one is opened\r\n private _lastOpenItem?: TieredMenuItemInternalData;\r\n private _focusTrap: FocusTrap | null = null;\r\n private _unsubscribe$ = new Subject<void>();\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onDocumentClick(event: MouseEvent): void {\r\n // Closing menu when clicked outside.\r\n const target = event.target as Element;\r\n const clickedInside = target.closest('s-tiered-menu-item') || target.closest('s-tiered-menu-divider');\r\n if (!clickedInside) {\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydownHandler(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'Escape':\r\n this._tieredMenuEventService.restoreFocusEvent.emit();\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n break;\r\n case ' ':\r\n case 'Enter':\r\n this._tieredMenuEventService.selectItemEvent.emit(this.tieredMenuService.currentItem);\r\n break;\r\n case 'ArrowLeft':\r\n // When nested I need a reference to the current item's parent item, otherwise just the current item.\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(this.tieredMenuService.currentItem?.parent);\r\n break;\r\n case 'ArrowRight':\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.tieredMenuService.currentItem);\r\n break;\r\n case 'ArrowUp':\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n break;\r\n case 'ArrowDown':\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n break;\r\n case 'Tab':\r\n // Move focus between items instead of letting Tab escape the (trapped) menu.\r\n if (event.shiftKey) {\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n } else {\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n }\r\n event.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this.tieredMenuService.currentItems = this.items;\r\n this.tieredMenuService.currentItem = this.items[0] ?? null;\r\n this._subscribeEvents();\r\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._unsubscribe$.next();\r\n this._unsubscribe$.complete();\r\n this._focusTrap?.destroy();\r\n }\r\n\r\n private _focusCurrentItem(): void {\r\n const id = this.tieredMenuService.currentItem?.id;\r\n\r\n if (!id) return;\r\n\r\n document.getElementById(id)?.focus();\r\n }\r\n\r\n private _incrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n }\r\n\r\n const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) + 1;\r\n\r\n if (curIndex < this.tieredMenuService.currentItems.length) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];\r\n } else {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._incrementCurItem();\r\n }\r\n }\r\n\r\n private _decrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n }\r\n\r\n const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) - 1;\r\n\r\n if (curIndex >= 0) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];\r\n } else {\r\n this.tieredMenuService.currentItem =\r\n this.tieredMenuService.currentItems[this.tieredMenuService.currentItems.length - 1];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._decrementCurItem();\r\n }\r\n }\r\n\r\n private _closeItem(item: TieredMenuItemInternalData): void {\r\n let itemAux = this._lastOpenItem;\r\n\r\n while (itemAux && itemAux != item) {\r\n itemAux.isOpen = false;\r\n itemAux = itemAux.parent;\r\n }\r\n\r\n item.isOpen = false;\r\n\r\n this.tieredMenuService.currentItem = itemAux ?? this.tieredMenuService.items[0];\r\n this.tieredMenuService.currentItems = itemAux?.parent?.submenu || this.tieredMenuService.items;\r\n }\r\n\r\n private _openItem(item: TieredMenuItemInternalData): void {\r\n if (item?.submenu) {\r\n item.isOpen = true;\r\n this.tieredMenuService.currentItems = item.submenu;\r\n\r\n // Only has focus if there has already been interaction.\r\n if (this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = item.submenu[0];\r\n }\r\n\r\n this._lastOpenItem = item;\r\n }\r\n }\r\n\r\n private _subscribeEvents(): void {\r\n this._tieredMenuEventService.incrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._incrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n\r\n this._tieredMenuEventService.decrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._decrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n\r\n this._tieredMenuEventService.selectItemEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item && item.command) {\r\n item.command();\r\n // Close all menus after the item was selected.\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n });\r\n\r\n this._tieredMenuEventService.openItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item) {\r\n if (!this.tieredMenuService.currentItems.includes(item)) {\r\n let itemAux = this._lastOpenItem;\r\n\r\n while (itemAux?.parent?.parent) {\r\n itemAux = itemAux.parent;\r\n }\r\n\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(itemAux?.parent ?? itemAux);\r\n }\r\n\r\n this._lastOpenItem = item;\r\n this._openItem(item);\r\n }\r\n });\r\n\r\n this._tieredMenuEventService.closeItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item) {\r\n this._closeItem(item);\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"menu menu--nested\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: items }\"\n ></ng-container>\n</div>\n\n<ng-template\n #itemsTemplate\n let-items\n>\n @for (item of items; track item.id) {\n <div>\n @if (item.visible && !item.divider) {\n <s-tiered-menu-item\n [item]=\"item\"\n [focused]=\"item === tieredMenuService.currentItem\"\n [closeOnClick]=\"true\"\n >\n </s-tiered-menu-item>\n }\n @if (item.divider) {\n <s-tiered-menu-divider></s-tiered-menu-divider>\n }\n @if (item.submenu && item.isOpen) {\n <div>\n <div class=\"submenu\">\n <ng-container\n *ngTemplateOutlet=\"\n itemsTemplate;\n context: { $implicit: item.submenu }\n \"\n ></ng-container>\n </div>\n </div>\n }\n </div>\n }\n</ng-template>\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject,\r\n} from '@angular/core';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TieredMenuItemInternalData } from '../../models/tiered-menu-item-internal-data';\r\nimport { TieredMenuEventService } from '../../services/tiered-menu.event.service';\r\nimport { TieredMenuService } from '../../services/tiered-menu.service';\r\nimport { TieredMenuItemComponent } from '../tiered-menu-item/tiered-menu-item.component';\r\nimport { TieredMenuDividerComponent } from '../tiered-menu-divider/tiered-menu-divider.component';\r\n\r\n@Component({\r\n selector: 's-tiered-menu',\r\n templateUrl: './tiered-menu.component.html',\r\n styleUrls: ['./tiered-menu.component.scss'],\r\n standalone: true,\r\n imports: [TieredMenuItemComponent, TieredMenuDividerComponent],\r\n})\r\nexport class TieredMenuComponent implements OnInit, OnDestroy {\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _injector = inject(Injector);\r\n private readonly _focusTrapFactory = inject(FocusTrapFactory);\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n readonly tieredMenuService = inject(TieredMenuService);\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n\r\n @Input() public ariaLabel?: string;\r\n public items: TieredMenuItemInternalData[] = [];\r\n public menuTriggerEvent: 'click' | 'hover' = 'hover';\r\n public isSubmenu = false;\r\n\r\n private _overlayRef: OverlayRef | null = null;\r\n private _componentRef: ComponentRef<TieredMenuComponent> | null = null;\r\n private _focusTrap: FocusTrap | null = null;\r\n private _unsubscribe$ = new Subject<void>();\r\n\r\n @Output()\r\n public destroyRequest = new EventEmitter<boolean>();\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onDocumentClick(event: MouseEvent): void {\r\n // Closing menu when clicked outside.\r\n const target = event.target as Element;\r\n const clickedInside = target.closest('s-tiered-menu-item') || target.closest('s-tiered-menu-divider');\r\n if (!clickedInside) {\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n public onKeydownHandler(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'Escape':\r\n this._tieredMenuEventService.restoreFocusEvent.emit();\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n event.preventDefault();\r\n break;\r\n case ' ':\r\n case 'Enter':\r\n if (\r\n this.tieredMenuService.currentItem &&\r\n !this.tieredMenuService.currentItem.disabled &&\r\n this.items.includes(this.tieredMenuService.currentItem)\r\n ) {\r\n this._tieredMenuEventService.selectItemEvent.emit(this.tieredMenuService.currentItem);\r\n event.preventDefault();\r\n }\r\n break;\r\n case 'ArrowUp':\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n break;\r\n case 'ArrowDown':\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n break;\r\n case 'Tab':\r\n // Move focus between items instead of letting Tab escape the (trapped) menu.\r\n if (event.shiftKey) {\r\n this._tieredMenuEventService.decrementCurrentItemEvent.emit();\r\n } else {\r\n this._tieredMenuEventService.incrementCurrentItemEvent.emit();\r\n }\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n break;\r\n case 'ArrowLeft':\r\n if (this.tieredMenuService.currentItem && this.items.includes(this.tieredMenuService.currentItem)) {\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(this.tieredMenuService.currentItem);\r\n this._changeDetectorRef.detectChanges();\r\n event.preventDefault();\r\n }\r\n break;\r\n case 'ArrowRight':\r\n if (\r\n this.tieredMenuService.currentItem &&\r\n !this.tieredMenuService.currentItem.disabled &&\r\n this.items.includes(this.tieredMenuService.currentItem)\r\n ) {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(this.tieredMenuService.currentItem);\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._subscribeEvents();\r\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\r\n\r\n // Submenus have their focus managed by the openItemMenuEvent handler.\r\n if (!this.isSubmenu) {\r\n this.tieredMenuService.currentItems = this.items;\r\n this.tieredMenuService.currentItem = this.items[0] ?? null;\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._unsubscribe$.next();\r\n this._unsubscribe$.complete();\r\n this._focusTrap?.destroy();\r\n }\r\n\r\n private _focusCurrentItem(): void {\r\n const id = this.tieredMenuService.currentItem?.id;\r\n\r\n if (!id) {\r\n return;\r\n }\r\n\r\n document.getElementById(id)?.focus();\r\n }\r\n\r\n private _incrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n } else if (!this.items.includes(this.tieredMenuService.currentItem)) {\r\n // Checking if it is the current menu.\r\n return;\r\n }\r\n\r\n const currentIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) + 1;\r\n\r\n if (currentIndex < this.tieredMenuService.currentItems.length) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[currentIndex];\r\n } else {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._incrementCurItem();\r\n }\r\n }\r\n\r\n private _decrementCurItem(): void {\r\n if (!this.tieredMenuService.currentItem) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[0];\r\n return;\r\n // Checking if it is the current menu.\r\n } else if (!this.items.includes(this.tieredMenuService.currentItem)) {\r\n return;\r\n }\r\n\r\n const curIndex = this.tieredMenuService.currentItems.indexOf(this.tieredMenuService.currentItem) - 1;\r\n\r\n if (curIndex >= 0) {\r\n this.tieredMenuService.currentItem = this.tieredMenuService.currentItems[curIndex];\r\n } else {\r\n this.tieredMenuService.currentItem =\r\n this.tieredMenuService.currentItems[this.tieredMenuService.currentItems.length - 1];\r\n }\r\n\r\n if (this.tieredMenuService.currentItem.divider) {\r\n this._decrementCurItem();\r\n }\r\n }\r\n\r\n private static readonly SUBMENU_POSITIONS: ConnectedPosition[] = [\r\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n private _createMenu(items: TieredMenuItemInternalData[], itemEl: HTMLElement): void {\r\n if (!this._overlayRef && items) {\r\n const positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(itemEl)\r\n .withPositions(TieredMenuComponent.SUBMENU_POSITIONS)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const componentRef = this._overlayRef.attach(new ComponentPortal(TieredMenuComponent, null, this._injector));\r\n this._componentRef = componentRef;\r\n\r\n // Setting the menu items.\r\n componentRef.instance.items = items;\r\n componentRef.instance.isSubmenu = true;\r\n\r\n // Render synchronously so item elements are queryable right away (needed by restoreOpenChain()).\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n // Subscribe menu events.\r\n componentRef.instance.destroyRequest.subscribe((propagate: boolean) => {\r\n this._destroy(propagate);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Recreates the flyout chain for whichever item is currently marked `isOpen` in `items`,\r\n * recursively — used when switching from the nested/mobile menu back to desktop, where the\r\n * open state lives on the shared item data but each tier is a separate overlay that must be\r\n * explicitly recreated to match it.\r\n */\r\n public restoreOpenChain(): void {\r\n const openItem = this.items.find((item) => item.isOpen && item.submenu);\r\n\r\n if (!openItem) return;\r\n\r\n const itemEl = document.querySelector(`#${openItem.id}`);\r\n\r\n if (!itemEl) return;\r\n\r\n this._createMenu(openItem.submenu as TieredMenuItemInternalData[], itemEl as HTMLElement);\r\n this._componentRef?.instance.restoreOpenChain();\r\n }\r\n\r\n /**\r\n * Disposes this tier's own submenu overlay chain (if any) without touching `isOpen` state —\r\n * used when switching from desktop to nested, where the open state must survive but the\r\n * flyout overlays themselves need to go away.\r\n */\r\n public disposeChain(): void {\r\n this._componentRef?.instance.disposeChain();\r\n this._overlayRef?.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n }\r\n\r\n private _destroy(propagate = true): void {\r\n if (this._overlayRef !== null) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n }\r\n\r\n if (propagate) {\r\n this.destroyRequest.emit();\r\n }\r\n }\r\n\r\n private _subscribeEvents(): void {\r\n // Increment current item event.\r\n this._tieredMenuEventService.incrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._incrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n // Decrement current item event.\r\n this._tieredMenuEventService.decrementCurrentItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._decrementCurItem();\r\n this._focusCurrentItem();\r\n });\r\n // Select item event.\r\n this._tieredMenuEventService.selectItemEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item) {\r\n if (item.submenu) {\r\n this._tieredMenuEventService.openItemMenuEvent.emit(item);\r\n } else if (item.command) {\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n item.command();\r\n }\r\n }\r\n });\r\n // Close all menus event.\r\n this._tieredMenuEventService.closeAllMenusEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._destroy();\r\n this.tieredMenuService.currentItem = null;\r\n this.tieredMenuService.currentItems = this.tieredMenuService.items;\r\n this.tieredMenuService.markAllItemsAsClosed(this.tieredMenuService.items);\r\n });\r\n\r\n // Open item menu event.\r\n this._tieredMenuEventService.openItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (this.tieredMenuService.currentItem) {\r\n if (this.tieredMenuService.currentItem.parent === item) {\r\n return;\r\n }\r\n\r\n if (this.tieredMenuService.currentItem?.parent) {\r\n if (!item) return;\r\n\r\n if (\r\n !this.tieredMenuService.searchTheHierarchy(this.tieredMenuService.currentItem.parent, item)\r\n ) {\r\n let current: TieredMenuItemInternalData | undefined = this.tieredMenuService.currentItem;\r\n\r\n current.isOpen = false;\r\n\r\n while (current?.parent !== item.parent) {\r\n this._tieredMenuEventService.closeItemMenuEvent.emit(current);\r\n this._changeDetectorRef.detectChanges();\r\n\r\n current = current?.parent;\r\n }\r\n\r\n if (current) {\r\n current.isOpen = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (item?.submenu && !item?.isOpen && this.items.includes(item)) {\r\n const itemEl = document.querySelector(`#${item.id}`);\r\n\r\n if (!itemEl) return;\r\n\r\n this._createMenu(item.submenu, itemEl as HTMLElement);\r\n this.tieredMenuService.currentItems = item.submenu;\r\n this.tieredMenuService.currentItem = item.submenu[0];\r\n item.isOpen = true;\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n });\r\n\r\n // Close item menu event.\r\n this._tieredMenuEventService.closeItemMenuEvent\r\n .pipe(takeUntil(this._unsubscribe$))\r\n .subscribe((item: TieredMenuItemInternalData | null) => {\r\n if (item === null) return;\r\n if (this.items.some((i) => i.id === item.id)) {\r\n if (item.parent) {\r\n item.parent.isOpen = false;\r\n }\r\n this.tieredMenuService.currentItems = item?.parent?.parent?.submenu || this.tieredMenuService.items;\r\n this.tieredMenuService.currentItem = item.parent;\r\n this.destroyRequest.emit(false);\r\n\r\n requestAnimationFrame(() => {\r\n this._focusCurrentItem();\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","<div\r\n class=\"menu\"\r\n role=\"application\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n>\r\n @for (item of items; track $index) {\r\n @if (item.visible && !item.divider) {\r\n <s-tiered-menu-item\r\n [item]=\"item\"\r\n [focused]=\"item === tieredMenuService.currentItem\"\r\n [highlight]=\"item.isOpen\"\r\n fieldUtils.triggerEvent=\"hover\"\r\n [closeOnClick]=\"false\"\r\n />\r\n }\r\n @if (item.divider) {\r\n <s-tiered-menu-divider />\r\n }\r\n }\r\n</div>\r\n","import {\r\n ChangeDetectorRef,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n inject,\r\n} from '@angular/core';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { TieredMenuNestedComponent } from './components/tiered-menu-nested/tiered-menu-nested.component';\r\nimport { TieredMenuComponent } from './components/tiered-menu/tiered-menu.component';\r\nimport { TieredMenuItemData } from './models/tiered-menu-item-data';\r\nimport { TieredMenuEventService } from './services/tiered-menu.event.service';\r\nimport { TieredMenuGlobalService } from './services/tiered-menu.global.service';\r\nimport { TieredMenuService } from './services/tiered-menu.service';\r\n\r\n/**\r\n * @description Diretiva que anexa um menu multinível (tiered menu) a qualquer elemento do DOM.\r\n * Ao disparar o evento configurado no elemento hospedeiro, exibe um painel flutuante\r\n * com itens de menu hierárquicos, suportando submenus aninhados e divisores.\r\n * Em telas estreitas (< 600px), o menu é exibido em modo aninhado fullscreen.\r\n *\r\n * @example\r\n * ```html\r\n * <s-button [sTieredMenu]=\"menuItems\" triggerEvent=\"click\">Abrir menu</s-button>\r\n * ```\r\n *\r\n * @category Navegação\r\n */\r\n@Directive({\r\n selector: '[sTieredMenu]',\r\n providers: [TieredMenuEventService, TieredMenuService],\r\n standalone: true,\r\n})\r\nexport class TieredMenuDirective implements OnInit, OnChanges, OnDestroy {\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _overlay = inject(Overlay);\r\n private readonly _injector = inject(Injector);\r\n private readonly _tieredMenuEventService = inject(TieredMenuEventService);\r\n private readonly _tieredMenuService = inject(TieredMenuService);\r\n private readonly _tieredMenuGlobalService = inject(TieredMenuGlobalService);\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * @description Lista de itens exibidos no menu. Cada item pode conter um array de `children`\r\n * para criar submenus aninhados, além de propriedades como `label`, `icon`,\r\n * `disabled`, `command` e `divider`.\r\n */\r\n @Input()\r\n public items: TieredMenuItemData[] = [];\r\n\r\n /**\r\n * @description Item que receberá o foco inicial ao abrir o menu.\r\n * Útil para destacar uma opção pré-selecionada ou contextual.\r\n */\r\n @Input()\r\n public focusedItem: TieredMenuItemData | undefined = undefined;\r\n\r\n /**\r\n * @description Define o evento do elemento hospedeiro que dispara a abertura do menu.\r\n * - `'click'`: abre o menu ao clicar no elemento (padrão).\r\n * - `'hover'`: abre o menu ao passar o mouse sobre o elemento.\r\n *\r\n * @default 'click'\r\n */\r\n @Input()\r\n public triggerEvent: 'click' | 'hover' = 'click';\r\n\r\n @Input()\r\n public ariaLabel?: string;\r\n\r\n @Output()\r\n public tieredMenuOpened: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output()\r\n public tieredMenuClosed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n private _overlayRef: OverlayRef | null = null;\r\n private _componentRef: ComponentRef<TieredMenuComponent | TieredMenuNestedComponent> | null = null;\r\n private _showTimeout?: number;\r\n private _isNested = false;\r\n private _isOpen = false;\r\n private _unsubscribe$ = new Subject<void>();\r\n private _lastActiveElement?: Element;\r\n private _previousItems: TieredMenuItemData[] = [];\r\n private _itemsAreValid?: boolean;\r\n\r\n public ngOnInit(): void {\r\n this._itemsAreValid = !!this.items?.length;\r\n\r\n if (!this._itemsAreValid) return;\r\n\r\n this._subscribeEvents();\r\n }\r\n\r\n public ngOnChanges(): void {\r\n if (!this._itemsAreValid) return;\r\n\r\n if (!this._previousItems) {\r\n this._previousItems = this._tieredMenuService.cloneItems(this.items);\r\n }\r\n\r\n let hasChanges = false;\r\n\r\n if (this.items.length !== this._previousItems.length) {\r\n hasChanges = true;\r\n } else {\r\n for (let i = 0; i < this.items.length; i++) {\r\n if (!this._compareItems(this.items[i], this._previousItems[i])) {\r\n hasChanges = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (hasChanges) {\r\n this._updateServiceItems();\r\n this._changeDetectorRef.detectChanges();\r\n this._rebuildMenu();\r\n }\r\n\r\n this._previousItems = this._tieredMenuService.cloneItems(this.items);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (!this._itemsAreValid) return;\r\n\r\n this._unsubscribe$.next();\r\n this._unsubscribe$.complete();\r\n\r\n this._destroy();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: MouseEvent): void {\r\n if (!this._itemsAreValid) return;\r\n\r\n if (this.triggerEvent === 'click' && !this._isOpen) {\r\n this._lastActiveElement = document.activeElement as Element;\r\n this._createMenu();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n public onWindowResize(): void {\r\n if (!this._overlayRef) return;\r\n\r\n const isNestedNow = document.body.clientWidth < 600;\r\n\r\n if (isNestedNow === this._isNested) return;\r\n\r\n // Crossing the 600px breakpoint while open switches between the desktop (flyout) and\r\n // nested (fullscreen accordion) menu components. Unlike a real close, this must preserve\r\n // which items are currently open — _disposeOverlay() only tears down the CDK overlay(s),\r\n // it doesn't touch `isOpen` state or emit closeAllMenusEvent (which would reset it).\r\n this._isNested = isNestedNow;\r\n this._disposeOverlay();\r\n this._isNested ? this._createNestedMenu() : this._createTieredMenu();\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n if (this._componentRef?.instance instanceof TieredMenuComponent) {\r\n this._componentRef.instance.disposeChain();\r\n }\r\n\r\n this._overlayRef?.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n }\r\n\r\n private _createMenu(): void {\r\n this._updateServiceItems();\r\n\r\n if (!this._componentRef && this._tieredMenuService.items?.length > 0) {\r\n this._tieredMenuGlobalService.lastInstance?._destroy();\r\n this._tieredMenuGlobalService.lastInstance = this;\r\n\r\n (this._lastActiveElement as HTMLElement)?.blur();\r\n this._isOpen = true;\r\n this.tieredMenuOpened.emit();\r\n this._isNested = document.body.clientWidth < 600;\r\n\r\n this._isNested ? this._createNestedMenu() : this._createTieredMenu();\r\n }\r\n }\r\n\r\n private static readonly DESKTOP_POSITIONS: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 4 },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -4 },\r\n ];\r\n\r\n // Single position, no flip fallback: the nested/mobile panel can accumulate several\r\n // simultaneously open branches (restored from desktop mode) and grow much taller than the\r\n // trigger's surroundings. Falling back to a \"top\" position in that case just misplaces the\r\n // panel; instead it always opens below the trigger and relies on `withFlexibleDimensions` +\r\n // `.menu`'s own `overflow: auto` to scroll internally when it doesn't fit.\r\n private static readonly NESTED_POSITIONS: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n ];\r\n\r\n private _createTieredMenu(): void {\r\n if (!this._overlayRef && this._tieredMenuService.items?.length > 0) {\r\n const positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(this._elementRef)\r\n .withPositions(TieredMenuDirective.DESKTOP_POSITIONS)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const componentRef = this._overlayRef.attach(\r\n new ComponentPortal(TieredMenuComponent, null, this._injector),\r\n );\r\n this._componentRef = componentRef;\r\n this._setMenuComponentProperties();\r\n componentRef.instance.ariaLabel = this.ariaLabel;\r\n\r\n // Render synchronously so item elements are queryable right away, then recreate any\r\n // flyout chain that was already open (e.g. coming from nested/mobile mode via resize).\r\n componentRef.changeDetectorRef.detectChanges();\r\n componentRef.instance.restoreOpenChain();\r\n\r\n componentRef.instance.destroyRequest.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._destroy();\r\n });\r\n }\r\n }\r\n\r\n private _createNestedMenu(): void {\r\n if (!this._overlayRef && this._tieredMenuService.items?.length > 0) {\r\n // The nested/mobile panel is near full-width (see .menu--nested CSS), so it doesn't\r\n // need to flip horizontally like the desktop menu — `withPush` clamps it into the\r\n // viewport instead. `withFlexibleDimensions(true)` lets it shrink to the remaining\r\n // viewport space below the trigger (scrolling internally via `.menu`'s own\r\n // `overflow: auto`) instead of flipping above it, which would misplace a panel that's\r\n // taller than the trigger's surroundings.\r\n const positionStrategy = this._overlay\r\n .position()\r\n .flexibleConnectedTo(this._elementRef)\r\n .withPositions(TieredMenuDirective.NESTED_POSITIONS)\r\n .withFlexibleDimensions(true)\r\n .withPush(true);\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n this._componentRef = this._overlayRef.attach(\r\n new ComponentPortal(TieredMenuNestedComponent, null, this._injector),\r\n );\r\n this._setMenuComponentProperties();\r\n }\r\n }\r\n\r\n private _destroy(): void {\r\n if (this._overlayRef) {\r\n this._isOpen = false;\r\n this.tieredMenuClosed.emit();\r\n window.clearTimeout(this._showTimeout);\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n this._componentRef = null;\r\n\r\n this._tieredMenuService.currentItems = this._tieredMenuService.items;\r\n this._tieredMenuService.currentItem = this._tieredMenuService.items[0];\r\n this._tieredMenuEventService.closeAllMenusEvent.emit();\r\n }\r\n }\r\n\r\n private _setMenuComponentProperties(): void {\r\n if (this._componentRef != null) {\r\n this._componentRef.instance.items = this._tieredMenuService.items;\r\n }\r\n }\r\n\r\n private _subscribeEvents(): void {\r\n this._tieredMenuEventService.closeAllMenusEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n this._tieredMenuService.items = this._tieredMenuService.markAllItemsAsClosed(this._tieredMenuService.items);\r\n this._destroy();\r\n });\r\n\r\n this._tieredMenuEventService.restoreFocusEvent.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {\r\n (this._lastActiveElement as HTMLElement)?.focus();\r\n });\r\n }\r\n\r\n private _compareItems(item1: TieredMenuItemData, item2: TieredMenuItemData): boolean {\r\n return JSON.stringify(item1) === JSON.stringify(item2);\r\n }\r\n\r\n private _rebuildMenu(): void {\r\n this._destroy();\r\n }\r\n\r\n private _updateServiceItems(): void {\r\n this._tieredMenuService.items = this._tieredMenuService.normalizeData(this.items);\r\n this._tieredMenuService.currentItems = this._tieredMenuService.items;\r\n\r\n this._tieredMenuService.currentItem =\r\n this._tieredMenuService.items.find((i) => i.label === this.focusedItem?.label) ??\r\n this._tieredMenuService.items[0];\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TieredMenuGlobalService } from './services/tiered-menu.global.service';\r\nimport { TieredMenuDirective } from './tiered-menu.directive';\r\n\r\n@NgModule({\r\n imports: [TieredMenuDirective],\r\n exports: [TieredMenuDirective],\r\n providers: [TieredMenuGlobalService],\r\n})\r\nexport class TieredMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -58,11 +58,11 @@ class TileComponent {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TileComponent, isStandalone: true, selector: "s-tile", inputs: { id: "id", label: "label", description: "description", iconClass: "iconClass", imageSource: "imageSource", imageAlt: "imageAlt", disabled: "disabled", tabIndex: "tabIndex", thumbnail: "thumbnail" }, outputs: { clicked: "clicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"tile\"\n [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n [attr.aria-label]=\"label\"\n [attr.aria-disabled]=\"disabled\"\n role=\"button\"\n [ngClass]=\"{ 'tile--disabled': disabled }\"\n (click)=\"!disabled && clicked.emit($event)\"\n>\n\n @if(imageSource || iconClass) {\n <div class=\"thumbnail\">\n @if(imageSource) {\n @if(!thumbnail) {\n <div\n class=\"image-icon\">\n <div\n class=\"icon\"\n [style.background-image]=\"'url(' + imageSource + ')'\">\n </div>\n </div>\n\n }\n @if(thumbnail) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n size=\"small\"\n [isTile]=\"true\"/>\n }\n }\n @if(!imageSource && iconClass) {\n <span\n [id]=\"id + '-icon'\"\n [class]=\"'icon ' + iconClass\"\n aria-hidden=\"true\">\n </span>\n }\n </div>\n }\n\n @if (!iconClass && !imageSource) {\n <div class=\"first-letter-container\">\n <div class=\"first-letter\">\n <span>{{ initialLetter }}</span>\n </div>\n </div>\n }\n\n <div class=\"info\">\n <span\n [id]=\"id + '-title'\"\n class=\"title\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </span>\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >\n {{ description }}\n </span>\n </div>\n</div>\n", styles: [".tile{align-items:center;background-color:#fff;border:1px solid #c1c1cc;cursor:pointer;display:flex;min-height:80px;overflow:hidden;padding:15px;position:relative;transition:background-color .2s ease-out,border-color .2s ease-out}.tile:hover:not(.tile--disabled)
|
|
61
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TileComponent, isStandalone: true, selector: "s-tile", inputs: { id: "id", label: "label", description: "description", iconClass: "iconClass", imageSource: "imageSource", imageAlt: "imageAlt", disabled: "disabled", tabIndex: "tabIndex", thumbnail: "thumbnail" }, outputs: { clicked: "clicked" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"tile\"\n [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n [attr.aria-label]=\"label\"\n [attr.aria-disabled]=\"disabled\"\n role=\"button\"\n [ngClass]=\"{ 'tile--disabled': disabled }\"\n (click)=\"!disabled && clicked.emit($event)\"\n>\n\n @if(imageSource || iconClass) {\n <div class=\"thumbnail\">\n @if(imageSource) {\n @if(!thumbnail) {\n <div\n class=\"image-icon\">\n <div\n class=\"icon\"\n [style.background-image]=\"'url(' + imageSource + ')'\">\n </div>\n </div>\n\n }\n @if(thumbnail) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n size=\"small\"\n [isTile]=\"true\"/>\n }\n }\n @if(!imageSource && iconClass) {\n <span\n [id]=\"id + '-icon'\"\n [class]=\"'icon ' + iconClass\"\n aria-hidden=\"true\">\n </span>\n }\n </div>\n }\n\n @if (!iconClass && !imageSource) {\n <div class=\"first-letter-container\">\n <div class=\"first-letter\">\n <span>{{ initialLetter }}</span>\n </div>\n </div>\n }\n\n <div class=\"info\">\n <span\n [id]=\"id + '-title'\"\n class=\"title\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </span>\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >\n {{ description }}\n </span>\n </div>\n</div>\n", styles: [".tile{align-items:center;background-color:#fff;border:1px solid #c1c1cc;cursor:pointer;display:flex;min-height:80px;overflow:hidden;padding:15px;position:relative;transition:background-color .2s ease-out,border-color .2s ease-out}.tile:hover:not(.tile--disabled){background-color:#eeebf2}.tile:focus-visible:not(.tile--disabled){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:3px}.tile .thumbnail{display:flex;align-items:center;margin-right:15px}.tile .thumbnail .icon{color:#428bca;font-size:2.5rem}.tile .info{display:flex;flex-direction:column;justify-content:center;overflow:hidden}.tile .info .title,.tile .info .description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile .info .title{color:#428bca;font-size:1.25rem}.tile .info .description{color:#6e7280;font-size:.875rem}.tile .first-letter-container{float:left;margin-right:10px;position:relative;text-align:center}.tile .first-letter-container .first-letter{background-color:#428bca;border-radius:50%;color:#fff;font-size:1.375rem;height:40px;line-height:1.8em;margin:0 auto 5px;width:40px}.tile--disabled{opacity:.5;filter:Alpha(Opacity=50);background-image:none}.tile--disabled,.tile--disabled *{cursor:text!important}.tile .image-icon .icon{height:32px;width:32px;background-size:cover;background-repeat:no-repeat}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThumbnailComponent, selector: "s-thumbnail", inputs: ["id", "size", "imageSource", "imageFallback", "imageAlt", "iconClass", "hasAction", "actionIconClass", "isTile", "isBrand"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
62
62
|
}
|
|
63
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TileComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
|
-
args: [{ selector: 's-tile', standalone: true, imports: [NgClass, ThumbnailComponent, TooltipDirective], template: "<div\n [id]=\"id\"\n class=\"tile\"\n [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n [attr.aria-label]=\"label\"\n [attr.aria-disabled]=\"disabled\"\n role=\"button\"\n [ngClass]=\"{ 'tile--disabled': disabled }\"\n (click)=\"!disabled && clicked.emit($event)\"\n>\n\n @if(imageSource || iconClass) {\n <div class=\"thumbnail\">\n @if(imageSource) {\n @if(!thumbnail) {\n <div\n class=\"image-icon\">\n <div\n class=\"icon\"\n [style.background-image]=\"'url(' + imageSource + ')'\">\n </div>\n </div>\n\n }\n @if(thumbnail) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n size=\"small\"\n [isTile]=\"true\"/>\n }\n }\n @if(!imageSource && iconClass) {\n <span\n [id]=\"id + '-icon'\"\n [class]=\"'icon ' + iconClass\"\n aria-hidden=\"true\">\n </span>\n }\n </div>\n }\n\n @if (!iconClass && !imageSource) {\n <div class=\"first-letter-container\">\n <div class=\"first-letter\">\n <span>{{ initialLetter }}</span>\n </div>\n </div>\n }\n\n <div class=\"info\">\n <span\n [id]=\"id + '-title'\"\n class=\"title\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </span>\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >\n {{ description }}\n </span>\n </div>\n</div>\n", styles: [".tile{align-items:center;background-color:#fff;border:1px solid #c1c1cc;cursor:pointer;display:flex;min-height:80px;overflow:hidden;padding:15px;position:relative;transition:background-color .2s ease-out,border-color .2s ease-out}.tile:hover:not(.tile--disabled)
|
|
65
|
+
args: [{ selector: 's-tile', standalone: true, imports: [NgClass, ThumbnailComponent, TooltipDirective], template: "<div\n [id]=\"id\"\n class=\"tile\"\n [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n [attr.aria-label]=\"label\"\n [attr.aria-disabled]=\"disabled\"\n role=\"button\"\n [ngClass]=\"{ 'tile--disabled': disabled }\"\n (click)=\"!disabled && clicked.emit($event)\"\n>\n\n @if(imageSource || iconClass) {\n <div class=\"thumbnail\">\n @if(imageSource) {\n @if(!thumbnail) {\n <div\n class=\"image-icon\">\n <div\n class=\"icon\"\n [style.background-image]=\"'url(' + imageSource + ')'\">\n </div>\n </div>\n\n }\n @if(thumbnail) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n size=\"small\"\n [isTile]=\"true\"/>\n }\n }\n @if(!imageSource && iconClass) {\n <span\n [id]=\"id + '-icon'\"\n [class]=\"'icon ' + iconClass\"\n aria-hidden=\"true\">\n </span>\n }\n </div>\n }\n\n @if (!iconClass && !imageSource) {\n <div class=\"first-letter-container\">\n <div class=\"first-letter\">\n <span>{{ initialLetter }}</span>\n </div>\n </div>\n }\n\n <div class=\"info\">\n <span\n [id]=\"id + '-title'\"\n class=\"title\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </span>\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >\n {{ description }}\n </span>\n </div>\n</div>\n", styles: [".tile{align-items:center;background-color:#fff;border:1px solid #c1c1cc;cursor:pointer;display:flex;min-height:80px;overflow:hidden;padding:15px;position:relative;transition:background-color .2s ease-out,border-color .2s ease-out}.tile:hover:not(.tile--disabled){background-color:#eeebf2}.tile:focus-visible:not(.tile--disabled){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:3px}.tile .thumbnail{display:flex;align-items:center;margin-right:15px}.tile .thumbnail .icon{color:#428bca;font-size:2.5rem}.tile .info{display:flex;flex-direction:column;justify-content:center;overflow:hidden}.tile .info .title,.tile .info .description{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile .info .title{color:#428bca;font-size:1.25rem}.tile .info .description{color:#6e7280;font-size:.875rem}.tile .first-letter-container{float:left;margin-right:10px;position:relative;text-align:center}.tile .first-letter-container .first-letter{background-color:#428bca;border-radius:50%;color:#fff;font-size:1.375rem;height:40px;line-height:1.8em;margin:0 auto 5px;width:40px}.tile--disabled{opacity:.5;filter:Alpha(Opacity=50);background-image:none}.tile--disabled,.tile--disabled *{cursor:text!important}.tile .image-icon .icon{height:32px;width:32px;background-size:cover;background-repeat:no-repeat}\n"] }]
|
|
66
66
|
}], propDecorators: { id: [{
|
|
67
67
|
type: Input
|
|
68
68
|
}], label: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-tile.mjs","sources":["../../projects/angular-components/tile/src/lib/tile/tile.component.ts","../../projects/angular-components/tile/src/lib/tile/tile.component.html","../../projects/angular-components/tile/src/lib/tile/tile.module.ts","../../projects/angular-components/tile/src/seniorsistemas-angular-components-tile.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, HostListener } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Card clicável que representa uma opção ou destino de navegação,\r\n * exibindo ícone (por classe ou imagem), rótulo e descrição opcional.\r\n * Suporta navegação por teclado e exibe as iniciais do rótulo como fallback.\r\n *\r\n * @example\r\n * ```html\r\n * <s-tile\r\n * label=\"Relatórios\"\r\n * iconClass=\"fas fa-chart-bar\"\r\n * (clicked)=\"onTileClicado()\" />\r\n * ```\r\n *\r\n * @category Summary\r\n */\r\n@Component({\r\n selector: 's-tile',\r\n templateUrl: './tile.component.html',\r\n styleUrls: ['./tile.component.scss'],\r\n standalone: true,\r\n imports: [NgClass, ThumbnailComponent, TooltipDirective],\r\n})\r\nexport class TileComponent {\r\n public static nextId = 0;\r\n\r\n /** @description Identificador único do elemento no DOM. Gerado automaticamente se não informado. */\r\n @Input()\r\n public id = `s-tile-${TileComponent.nextId++}`;\r\n\r\n /** @description Rótulo principal exibido no tile. Campo obrigatório. */\r\n @Input({ required: true })\r\n public label!: string;\r\n\r\n /** @description Texto descritivo exibido abaixo do rótulo. */\r\n @Input()\r\n public description?: string;\r\n\r\n /** @description Classe do ícone exibido no tile (ex.: `'fas fa-home'`). */\r\n @Input()\r\n public iconClass?: string;\r\n\r\n /** @description URL da imagem exibida no tile. */\r\n @Input()\r\n public imageSource?: string;\r\n\r\n /** @description Texto alternativo para a imagem (`alt`). */\r\n @Input()\r\n public imageAlt?: string;\r\n\r\n /** @description Desabilita o tile, removendo interações e aplicando estilo desativado. @default false */\r\n @Input()\r\n public disabled = false;\r\n\r\n /** @description `tabindex` do tile para navegação por teclado. @default 0 */\r\n @Input()\r\n public tabIndex = 0;\r\n\r\n /** @description Exibe o thumbnail (miniatura) no tile. @default true */\r\n @Input()\r\n public thumbnail = true;\r\n\r\n /** @description Emitido quando o usuário clica ou pressiona Enter/Espaço no tile. */\r\n @Output()\r\n public clicked = new EventEmitter();\r\n\r\n public get initialLetter(): string {\r\n let initialLetter = '';\r\n if (this.label) {\r\n const words = this.label.split(' ', 2);\r\n initialLetter = words[0].charAt(0).toUpperCase();\r\n if (words.length > 1) {\r\n initialLetter += words[1].charAt(0).toUpperCase();\r\n }\r\n }\r\n return initialLetter;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n public onKeyDown(event: any) {\r\n if (!this.disabled && [13, 32].includes(event.keyCode)) {\r\n this.clicked.emit();\r\n }\r\n }\r\n}\r\n","<div\n [id]=\"id\"\n class=\"tile\"\n [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n [attr.aria-label]=\"label\"\n [attr.aria-disabled]=\"disabled\"\n role=\"button\"\n [ngClass]=\"{ 'tile--disabled': disabled }\"\n (click)=\"!disabled && clicked.emit($event)\"\n>\n\n @if(imageSource || iconClass) {\n <div class=\"thumbnail\">\n @if(imageSource) {\n @if(!thumbnail) {\n <div\n class=\"image-icon\">\n <div\n class=\"icon\"\n [style.background-image]=\"'url(' + imageSource + ')'\">\n </div>\n </div>\n\n }\n @if(thumbnail) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n size=\"small\"\n [isTile]=\"true\"/>\n }\n }\n @if(!imageSource && iconClass) {\n <span\n [id]=\"id + '-icon'\"\n [class]=\"'icon ' + iconClass\"\n aria-hidden=\"true\">\n </span>\n }\n </div>\n }\n\n @if (!iconClass && !imageSource) {\n <div class=\"first-letter-container\">\n <div class=\"first-letter\">\n <span>{{ initialLetter }}</span>\n </div>\n </div>\n }\n\n <div class=\"info\">\n <span\n [id]=\"id + '-title'\"\n class=\"title\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </span>\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >\n {{ description }}\n </span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TileComponent } from './tile.component';\r\nimport { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';\r\n\r\n@NgModule({\r\n imports: [ThumbnailModule, TileComponent],\r\n exports: [TileComponent, ThumbnailModule],\r\n})\r\nexport class TileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAKA;;;;;;;;;;;;;;AAcG;MAQU,aAAa,CAAA;AACf,IAAA,OAAO,MAAM,GAAG,CAAC,CAAC;;AAIlB,IAAA,EAAE,GAAG,CAAU,OAAA,EAAA,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;;AAIxC,IAAA,KAAK,CAAU;;AAIf,IAAA,WAAW,CAAU;;AAIrB,IAAA,SAAS,CAAU;;AAInB,IAAA,WAAW,CAAU;;AAIrB,IAAA,QAAQ,CAAU;;IAIlB,QAAQ,GAAG,KAAK,CAAC;;IAIjB,QAAQ,GAAG,CAAC,CAAC;;IAIb,SAAS,GAAG,IAAI,CAAC;;AAIjB,IAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAEpC,IAAA,IAAW,aAAa,GAAA;QACpB,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvC,YAAA,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACjD,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,gBAAA,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACrD;SACJ;AACD,QAAA,OAAO,aAAa,CAAC;KACxB;AAGM,IAAA,SAAS,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACvB;KACJ;wGA5DQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,4WC3B1B,w9DAoEA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-tile.mjs","sources":["../../projects/angular-components/tile/src/lib/tile/tile.component.ts","../../projects/angular-components/tile/src/lib/tile/tile.component.html","../../projects/angular-components/tile/src/lib/tile/tile.module.ts","../../projects/angular-components/tile/src/seniorsistemas-angular-components-tile.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, HostListener } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Card clicável que representa uma opção ou destino de navegação,\r\n * exibindo ícone (por classe ou imagem), rótulo e descrição opcional.\r\n * Suporta navegação por teclado e exibe as iniciais do rótulo como fallback.\r\n *\r\n * @example\r\n * ```html\r\n * <s-tile\r\n * label=\"Relatórios\"\r\n * iconClass=\"fas fa-chart-bar\"\r\n * (clicked)=\"onTileClicado()\" />\r\n * ```\r\n *\r\n * @category Summary\r\n */\r\n@Component({\r\n selector: 's-tile',\r\n templateUrl: './tile.component.html',\r\n styleUrls: ['./tile.component.scss'],\r\n standalone: true,\r\n imports: [NgClass, ThumbnailComponent, TooltipDirective],\r\n})\r\nexport class TileComponent {\r\n public static nextId = 0;\r\n\r\n /** @description Identificador único do elemento no DOM. Gerado automaticamente se não informado. */\r\n @Input()\r\n public id = `s-tile-${TileComponent.nextId++}`;\r\n\r\n /** @description Rótulo principal exibido no tile. Campo obrigatório. */\r\n @Input({ required: true })\r\n public label!: string;\r\n\r\n /** @description Texto descritivo exibido abaixo do rótulo. */\r\n @Input()\r\n public description?: string;\r\n\r\n /** @description Classe do ícone exibido no tile (ex.: `'fas fa-home'`). */\r\n @Input()\r\n public iconClass?: string;\r\n\r\n /** @description URL da imagem exibida no tile. */\r\n @Input()\r\n public imageSource?: string;\r\n\r\n /** @description Texto alternativo para a imagem (`alt`). */\r\n @Input()\r\n public imageAlt?: string;\r\n\r\n /** @description Desabilita o tile, removendo interações e aplicando estilo desativado. @default false */\r\n @Input()\r\n public disabled = false;\r\n\r\n /** @description `tabindex` do tile para navegação por teclado. @default 0 */\r\n @Input()\r\n public tabIndex = 0;\r\n\r\n /** @description Exibe o thumbnail (miniatura) no tile. @default true */\r\n @Input()\r\n public thumbnail = true;\r\n\r\n /** @description Emitido quando o usuário clica ou pressiona Enter/Espaço no tile. */\r\n @Output()\r\n public clicked = new EventEmitter();\r\n\r\n public get initialLetter(): string {\r\n let initialLetter = '';\r\n if (this.label) {\r\n const words = this.label.split(' ', 2);\r\n initialLetter = words[0].charAt(0).toUpperCase();\r\n if (words.length > 1) {\r\n initialLetter += words[1].charAt(0).toUpperCase();\r\n }\r\n }\r\n return initialLetter;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n public onKeyDown(event: any) {\r\n if (!this.disabled && [13, 32].includes(event.keyCode)) {\r\n this.clicked.emit();\r\n }\r\n }\r\n}\r\n","<div\n [id]=\"id\"\n class=\"tile\"\n [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n [attr.aria-label]=\"label\"\n [attr.aria-disabled]=\"disabled\"\n role=\"button\"\n [ngClass]=\"{ 'tile--disabled': disabled }\"\n (click)=\"!disabled && clicked.emit($event)\"\n>\n\n @if(imageSource || iconClass) {\n <div class=\"thumbnail\">\n @if(imageSource) {\n @if(!thumbnail) {\n <div\n class=\"image-icon\">\n <div\n class=\"icon\"\n [style.background-image]=\"'url(' + imageSource + ')'\">\n </div>\n </div>\n\n }\n @if(thumbnail) {\n <s-thumbnail\n [id]=\"id + '-thumbnail'\"\n [imageSource]=\"imageSource\"\n [imageAlt]=\"imageAlt || label\"\n size=\"small\"\n [isTile]=\"true\"/>\n }\n }\n @if(!imageSource && iconClass) {\n <span\n [id]=\"id + '-icon'\"\n [class]=\"'icon ' + iconClass\"\n aria-hidden=\"true\">\n </span>\n }\n </div>\n }\n\n @if (!iconClass && !imageSource) {\n <div class=\"first-letter-container\">\n <div class=\"first-letter\">\n <span>{{ initialLetter }}</span>\n </div>\n </div>\n }\n\n <div class=\"info\">\n <span\n [id]=\"id + '-title'\"\n class=\"title\"\n [sTooltip]=\"label\"\n >\n {{ label }}\n </span>\n <span\n [id]=\"id + '-description'\"\n class=\"description\"\n [sTooltip]=\"description\"\n >\n {{ description }}\n </span>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TileComponent } from './tile.component';\r\nimport { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';\r\n\r\n@NgModule({\r\n imports: [ThumbnailModule, TileComponent],\r\n exports: [TileComponent, ThumbnailModule],\r\n})\r\nexport class TileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|