@almoamendev/ngx-md3 0.2.1 → 0.2.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"almoamendev-ngx-md3.mjs","sources":["../../../projects/ngx-md3/src/lib/styles/typography/type-display.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-headline.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-title.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-body.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-label.ts","../../../projects/ngx-md3/src/lib/foundations/layout.service.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet-ref.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet-stack.ts","../../../projects/ngx-md3/src/lib/components/sheets/sheets.service.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold/scaffold.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold/scaffold.html","../../../projects/ngx-md3/src/lib/foundations/scaffold-bar.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold-rail.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold-pane.ts","../../../projects/ngx-md3/src/lib/foundations/grid.ts","../../../projects/ngx-md3/src/lib/foundations/grid-item.ts","../../../projects/ngx-md3/src/lib/components/common/input-element.ts","../../../projects/ngx-md3/src/lib/components/common/state-component.ts","../../../projects/ngx-md3/src/lib/components/common/icon-element.ts","../../../projects/ngx-md3/src/lib/components/common/material-icon/material-icon.ts","../../../projects/ngx-md3/src/lib/components/common/material-icon/material-icon.html","../../../projects/ngx-md3/src/lib/components/common/divider.ts","../../../projects/ngx-md3/src/lib/components/common/badge.ts","../../../projects/ngx-md3/src/lib/components/common/avatar.ts","../../../projects/ngx-md3/src/lib/interfaces/button-context.interface.ts","../../../projects/ngx-md3/src/lib/components/buttons/button/button.ts","../../../projects/ngx-md3/src/lib/components/buttons/button/button.html","../../../projects/ngx-md3/src/lib/components/buttons/floating-action-button/floating-action-button.ts","../../../projects/ngx-md3/src/lib/components/buttons/floating-action-button/floating-action-button.html","../../../projects/ngx-md3/src/lib/components/buttons/icon-button/icon-button.ts","../../../projects/ngx-md3/src/lib/components/buttons/icon-button/icon-button.html","../../../projects/ngx-md3/src/lib/components/buttons/split-button/split-button.ts","../../../projects/ngx-md3/src/lib/components/buttons/split-button/split-button.html","../../../projects/ngx-md3/src/lib/components/buttons/button-group/button-group.ts","../../../projects/ngx-md3/src/lib/components/buttons/button-group/button-group.html","../../../projects/ngx-md3/src/lib/components/card/card.ts","../../../projects/ngx-md3/src/lib/components/card/card.html","../../../projects/ngx-md3/src/lib/components/chips/chips.ts","../../../projects/ngx-md3/src/lib/components/chips/chips.html","../../../projects/ngx-md3/src/lib/components/selection-controls/checkbox/checkbox.ts","../../../projects/ngx-md3/src/lib/components/selection-controls/checkbox/checkbox.html","../../../projects/ngx-md3/src/lib/components/selection-controls/radio-button/radio-button.ts","../../../projects/ngx-md3/src/lib/components/selection-controls/radio-button/radio-button.html","../../../projects/ngx-md3/src/lib/components/selection-controls/switch/switch.ts","../../../projects/ngx-md3/src/lib/components/selection-controls/switch/switch.html","../../../projects/ngx-md3/src/lib/components/slider/slider.ts","../../../projects/ngx-md3/src/lib/components/slider/slider.html","../../../projects/ngx-md3/src/lib/components/list/list.ts","../../../projects/ngx-md3/src/lib/components/list/list.html","../../../projects/ngx-md3/src/lib/components/list/list-item/list-item.ts","../../../projects/ngx-md3/src/lib/components/list/list-item/list-item.html","../../../projects/ngx-md3/src/lib/components/list/list-leading/list-leading.ts","../../../projects/ngx-md3/src/lib/components/list/list-leading/list-leading.html","../../../projects/ngx-md3/src/lib/components/list/list-slot.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/loading-indicator/loading-indicator.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/loading-indicator/loading-indicator.html","../../../projects/ngx-md3/src/lib/components/loading-and-progress/linear-progress-indicator/linear-progress-indicator.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/linear-progress-indicator/linear-progress-indicator.html","../../../projects/ngx-md3/src/lib/components/loading-and-progress/circular-progress-indicator/circular-progress-indicator.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/circular-progress-indicator/circular-progress-indicator.html","../../../projects/ngx-md3/src/lib/components/app-bar/app-bar-logo.ts","../../../projects/ngx-md3/src/lib/components/app-bar/app-bar.ts","../../../projects/ngx-md3/src/lib/components/app-bar/app-bar.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-item/navigation-item.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-item/navigation-item.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-group/navigation-group.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-group/navigation-group.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-rail/navigation-rail.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-rail/navigation-rail.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-bar/navigation-bar.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-bar/navigation-bar.html","../../../projects/ngx-md3/src/lib/components/text-field/text-field.ts","../../../projects/ngx-md3/src/lib/components/text-field/text-field.html","../../../projects/ngx-md3/src/lib/components/text-field/supporting-text.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-ref.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog.html","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog/full-screen-dialog.ts","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog/full-screen-dialog.html","../../../projects/ngx-md3/src/lib/components/dialog/dialog.service.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-header/dialog-header.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-header/dialog-header.html","../../../projects/ngx-md3/src/lib/components/dialog/dialog-body/dialog-body.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-body/dialog-body.html","../../../projects/ngx-md3/src/lib/components/dialog/dialog-actions/dialog-actions.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-actions/dialog-actions.html","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog-header/full-screen-dialog-header.ts","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog-header/full-screen-dialog-header.html","../../../projects/ngx-md3/src/lib/components/menu/menu-ref.ts","../../../projects/ngx-md3/src/lib/components/menu/menu.ts","../../../projects/ngx-md3/src/lib/components/menu/menu.html","../../../projects/ngx-md3/src/lib/components/menu/menu.service.ts","../../../projects/ngx-md3/src/lib/components/menu/menu-group/menu-group.ts","../../../projects/ngx-md3/src/lib/components/menu/menu-group/menu-group.html","../../../projects/ngx-md3/src/lib/components/menu/menu-item/menu-item.ts","../../../projects/ngx-md3/src/lib/components/menu/menu-item/menu-item.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-header/side-sheet-header.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-header/side-sheet-header.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-body/side-sheet-body.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-body/side-sheet-body.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-actions/side-sheet-actions.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-actions/side-sheet-actions.html","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar-ref.ts","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar.ts","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar.html","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar.service.ts","../../../projects/ngx-md3/src/lib/index.ts","../../../projects/ngx-md3/src/almoamendev-ngx-md3.ts"],"sourcesContent":["import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-display, [md3-type-display]',\n host: {\n 'class': 'md3-text-display',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeDisplay {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-headline, [md3-type-headline]',\n host: {\n 'class': 'md3-text-headline',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeHeadline {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-title, [md3-type-title]',\n host: {\n 'class': 'md3-text-title',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeTitle {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-body, [md3-type-body]',\n host: {\n 'class': 'md3-text-body',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeBody {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-label, [md3-type-label]',\n host: {\n 'class': 'md3-text-label',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeLabel {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, fromEvent, map, startWith, Subscription } from 'rxjs';\nimport { ViewportWidth } from '../types/viewport-width.type';\nimport { ViewportHeight } from '../types/viewport-height.type';\n\nexport type Md3NavigationMode = 'none' | 'navigation-bar' | 'navigation-rail' | 'standard-drawer' | 'modal-drawer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n private readonly document = inject(DOCUMENT);\n private readonly breakpointObserver = inject(BreakpointObserver);\n // Optional — LayoutService (and anything built on Scaffold) shouldn't\n // hard-require the Router, only benefit from it when it's present.\n private readonly router = inject(Router, { optional: true });\n\n private readonly widthQueries: Record<ViewportWidth, string> = {\n 'compact': '(max-width: 37.499em)', // < 600\n 'medium': '(min-width: 37.5em) and (max-width: 52.499em)', // 600-839\n 'expanded': '(min-width: 52.5em) and (max-width: 74.999em)', // 840-1199\n 'large': '(min-width: 75em) and (max-width: 99.999em)', // 1200-1599\n 'extra-large': '(min-width: 100em)' // >=1600\n } as const;\n\n private readonly heightQueries: Record<ViewportHeight, string> = {\n 'compact': '(max-height: 29.999em)',\n 'medium': '(min-height: 30em) and (max-height: 56.249em)',\n 'expanded': '(min-height: 56.25em)'\n } as const;\n\n private mainPaneSub?: Subscription;\n private mainPaneEl?: HTMLElement;\n private panesContainerResizeObserver?: ResizeObserver;\n private panesContainerResizeListener?: () => void;\n\n readonly mainScrollTop = signal<number>(0);\n readonly mainIsScrolled = computed<boolean>(() => this.mainScrollTop() > 0);\n\n /**\n * Distance, in pixels, between the viewport bottom and the bottom edge of\n * the scaffold's .md3-panes-container — i.e. whatever the bottom scaffold\n * bar (nav bar) currently reserves, or 0 when there is none. Overlay-based\n * components anchored to the viewport bottom (like Snackbar) read this so\n * they never render lower than the panes container.\n */\n readonly bottomInset = signal<number>(0);\n\n public readonly viewport = toSignal(\n fromEvent(window, 'resize').pipe(\n startWith(null),\n map(() => ({\n width: window.innerWidth,\n height: window.innerHeight\n }))\n ),\n {\n initialValue: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n }\n );\n\n public readonly widthClass = toSignal(\n this.breakpointObserver.observe(Object.values(this.widthQueries)).pipe(\n map((state): ViewportWidth => {\n if (state.breakpoints[this.widthQueries.compact]) {\n return 'compact';\n }\n\n if (state.breakpoints[this.widthQueries.medium]) {\n return 'medium';\n }\n\n if (state.breakpoints[this.widthQueries.expanded]) {\n return 'expanded';\n }\n\n if (state.breakpoints[this.widthQueries.large]) {\n return 'large';\n }\n\n return 'extra-large';\n })\n ),\n { initialValue: 'expanded' as ViewportWidth }\n );\n\n public readonly heightClass = toSignal(\n this.breakpointObserver.observe(Object.values(this.heightQueries)).pipe(\n map((state): ViewportHeight => {\n if (state.breakpoints[this.heightQueries.compact]) {\n return 'compact';\n }\n\n if (state.breakpoints[this.heightQueries.medium]) {\n return 'medium';\n }\n\n return 'expanded';\n })\n ),\n { initialValue: 'expanded' as ViewportHeight }\n );\n\n public readonly direction = signal<'ltr' | 'rtl'>(\n (this.document.documentElement.dir as 'ltr' | 'rtl') || 'ltr'\n );\n\n public readonly isCompact = computed(() => this.widthClass() === 'compact');\n public readonly isMedium = computed(() => this.widthClass() === 'medium');\n public readonly isExpanded = computed(() => this.widthClass() === 'expanded');\n public readonly isLarge = computed(() => this.widthClass() === 'large');\n public readonly isExtraLarge = computed(() => this.widthClass() === 'extra-large');\n\n public readonly isPortrait = computed(() => {\n const viewport = this.viewport();\n return viewport.height >= viewport.width;\n });\n\n public readonly isLandscape = computed(() => !this.isPortrait());\n\n public readonly preferredNavigationMode = computed(() => {\n switch (this.widthClass()) {\n case 'compact':\n return 'navigation-bar';\n\n case 'medium':\n return 'navigation-rail';\n\n case 'expanded':\n case 'large':\n case 'extra-large':\n return 'standard-drawer';\n }\n });\n\n public darkMode = signal<boolean>(true);\n\n constructor() {\n effect(() => {\n const darkMode = this.darkMode();\n this.document.body.classList.toggle('md-scheme-dark', darkMode);\n this.document.body.classList.toggle('md-scheme-light', !darkMode);\n });\n\n // Reset the scaffold's main pane to the top after every completed\n // navigation — otherwise a scrolled-down list page leaves the next\n // page's content scrolled down too, since the pane itself never\n // remounts on route change.\n this.router?.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.scrollMainPaneToTop());\n }\n\n public setDirection(direction: 'ltr' | 'rtl'): void {\n this.document.documentElement.dir = direction;\n this.direction.set(direction);\n }\n\n private scrollMainPaneToTop(): void {\n this.mainPaneEl?.scrollTo({ top: 0 });\n this.mainScrollTop.set(0);\n }\n\n public registerMainPane(element: HTMLElement): void {\n this.mainPaneSub?.unsubscribe();\n this.mainPaneEl = element;\n\n const update = () => {\n const scrollTop = element.scrollTop;\n\n this.mainScrollTop.set(scrollTop);\n };\n\n update();\n\n this.mainPaneSub = new Subscription();\n\n element.addEventListener('scroll', update, { passive: true });\n\n this.mainPaneSub.add(() => {\n element.removeEventListener('scroll', update);\n });\n }\n\n public unregisterMainPane(element: HTMLElement): void {\n this.mainPaneSub?.unsubscribe();\n this.mainPaneSub = undefined;\n\n if (this.mainPaneEl === element) {\n this.mainPaneEl = undefined;\n }\n\n this.mainScrollTop.set(0);\n }\n\n public registerPanesContainer(element: HTMLElement): void {\n this.unregisterPanesContainer();\n\n const update = () => {\n const rect = element.getBoundingClientRect();\n this.bottomInset.set(Math.max(0, Math.round(window.innerHeight - rect.bottom)));\n };\n\n update();\n\n this.panesContainerResizeObserver = new ResizeObserver(update);\n this.panesContainerResizeObserver.observe(element);\n\n this.panesContainerResizeListener = update;\n window.addEventListener('resize', update, { passive: true });\n }\n\n public unregisterPanesContainer(): void {\n this.panesContainerResizeObserver?.disconnect();\n this.panesContainerResizeObserver = undefined;\n\n if (this.panesContainerResizeListener) {\n window.removeEventListener('resize', this.panesContainerResizeListener);\n this.panesContainerResizeListener = undefined;\n }\n\n this.bottomInset.set(0);\n }\n}\n","import { ComponentRef, InjectionToken, Type } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SideSheetConfig, SideSheetContainer, SideSheetSide, SideSheetType } from '../../../interfaces/side-sheet-config.interface';\nimport { SideSheet } from './side-sheet';\n\nexport const SIDE_SHEET_DATA = new InjectionToken<unknown>('MD3_SIDE_SHEET_DATA');\nexport const SIDE_SHEET_CONFIG = new InjectionToken<SideSheetConfig>('MD3_SIDE_SHEET_CONFIG');\nexport const SIDE_SHEET_COMPONENT = new InjectionToken<Type<unknown>>('MD3_SIDE_SHEET_COMPONENT');\n\nconst SIDE_SHEET_EXIT_ANIMATION_FALLBACK_MS = 300;\n\nexport class SideSheetRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private isClosed = false;\n private isHidden = false;\n private sheetComponentRef?: ComponentRef<SideSheet>;\n\n public componentInstance?: T;\n public sheetInstance?: SideSheetContainer;\n\n constructor(\n public readonly side: SideSheetSide,\n private readonly onClosed: () => void,\n ) {\n }\n\n public attachSheetComponentRef(sheetComponentRef: ComponentRef<SideSheet>): void {\n this.sheetComponentRef = sheetComponentRef;\n this.sheetInstance = sheetComponentRef.instance as SideSheetContainer;\n }\n\n public setSide(side: SideSheetSide): void {\n this.sheetComponentRef?.instance?.side.set(side);\n }\n\n public setSheetType(type: SideSheetType): void {\n this.sheetComponentRef?.instance?.sheetType.set(type);\n }\n\n public setInset(isInset: boolean): void {\n this.sheetComponentRef?.instance?.isInset.set(isInset);\n }\n\n public setDivider(showDivider: boolean): void {\n this.sheetComponentRef?.instance?.showDivider.set(showDivider);\n }\n\n public hide(): void {\n this.isHidden = true;\n this.sheetInstance?.setHidden(true);\n }\n\n public show(): void {\n this.isHidden = false;\n this.sheetInstance?.setHidden(false);\n this.sheetInstance?.showSheet(true);\n }\n\n public close(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.startCloseAnimation().then(() => {\n this.destroySheet();\n this.onClosed();\n this.closed.next(result);\n this.closed.complete();\n });\n }\n\n public dispose(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.destroySheet();\n this.onClosed();\n this.closed.next(result);\n this.closed.complete();\n }\n\n public afterClosed(): Observable<R | undefined> {\n return this.closed.asObservable();\n }\n\n private destroySheet(): void {\n this.sheetComponentRef?.destroy();\n this.sheetComponentRef = undefined;\n this.sheetInstance = undefined;\n }\n\n private startCloseAnimation(): Promise<void> {\n const animatedElement = this.sheetInstance?.element;\n\n if (this.isHidden) {\n return Promise.resolve();\n }\n\n this.sheetInstance?.setHidden(false);\n this.sheetInstance?.showSheet(false);\n\n return new Promise((resolve) => {\n if (!animatedElement) {\n resolve();\n return;\n }\n\n let isResolved = false;\n const timeoutId = setTimeout(done, SIDE_SHEET_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n animatedElement!.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === animatedElement) {\n done();\n }\n }\n\n animatedElement.addEventListener('transitionend', onTransitionEnd);\n });\n }\n}\n","import { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { AfterContentInit, Component, ComponentRef, computed, effect, ElementRef, inject, Injector, signal, Type, ViewChild } from '@angular/core';\nimport { SIDE_SHEET_CONFIG, SideSheetRef } from './side-sheet-ref';\nimport { SideSheetConfig, SideSheetSide, SideSheetType } from '../../../interfaces/side-sheet-config.interface';\nimport { LayoutService } from '../../../foundations/layout.service';\n\n@Component({\n selector: 'md3-side-sheet',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './side-sheet.html',\n styleUrl: './side-sheet.scss',\n host: {\n '[class.md3-active]': 'isActive()',\n '[class.md3-hidden]': 'isHidden()',\n '[class.md3-start]': 'side() === \"start\"',\n '[class.md3-end]': 'side() === \"end\"',\n '[class.md3-inset]': 'isInset()',\n '[class.md3-show-divider]': 'showDivider()',\n },\n})\nexport class SideSheet implements AfterContentInit {\n @ViewChild(CdkPortalOutlet, { static: true })\n private readonly portalOutlet!: CdkPortalOutlet;\n\n protected readonly config = inject<SideSheetConfig>(SIDE_SHEET_CONFIG, { optional: true }) ?? {};\n private readonly sideSheetRef = inject<SideSheetRef>(SideSheetRef, { optional: true });\n\n public readonly isActive = signal<boolean>(false);\n public readonly isHidden = signal<boolean>(false);\n public readonly side = signal<SideSheetSide>(this.config.side ?? 'end');\n public readonly sheetType = signal<SideSheetType>(this.config.type ?? 'default');\n public readonly isInset = signal<boolean>(this.config.inset ?? false);\n public readonly showDivider = signal<boolean>(this.config.divider ?? false);\n private readonly resolvedSheetType = computed<SideSheetType>(() => {\n if (this.layoutService.isMedium() || this.layoutService.isCompact()) {\n return 'modal';\n }\n \n return this.sheetType();\n });\n\n constructor(\n private layoutService: LayoutService,\n private el: ElementRef<HTMLElement>\n ) {\n effect((onCleanUp) => {\n const type = 'md3-style-' + this.resolvedSheetType();\n this.element.classList.add(type);\n\n onCleanUp(() => {\n this.element.classList.remove(type);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n ngAfterContentInit(): void {\n requestAnimationFrame(() => {\n this.showSheet(true);\n });\n }\n\n public showSheet(value: boolean): void {\n this.isActive.set(value);\n }\n\n public setHidden(value: boolean): void {\n this.isHidden.set(value);\n }\n\n public close(): void {\n this.sideSheetRef?.close();\n }\n\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\n const portal = new ComponentPortal(component, this.config.viewContainerRef ?? null, injector);\n\n return this.portalOutlet.attachComponentPortal(portal);\n }\n}\n","<div class=\"md3-side-sheet-scrim\" (click)=\"close()\"></div>\n<div class=\"md3-side-sheet-container\">\n <ng-template cdkPortalOutlet></ng-template>\n</div>\n","import { Component, ComponentRef, Injector, inputBinding, Type, ViewChild, ViewContainerRef } from '@angular/core';\nimport { SideSheet } from './side-sheet';\n\nexport interface SideSheetStackItem<T> {\n sheetComponentRef: ComponentRef<SideSheet>;\n contentComponentRef: ComponentRef<T>;\n}\n\n@Component({\n selector: 'md3-side-sheet-stack',\n template: '<ng-container #container></ng-container>',\n styles: [`\n :host {\n display: grid;\n min-width: 0;\n min-height: 0;\n height: 100%;\n }\n\n :host ::ng-deep md3-side-sheet {\n grid-area: 1 / 1;\n }\n `],\n})\nexport class SideSheetStack {\n @ViewChild('container', { read: ViewContainerRef, static: true })\n private readonly container!: ViewContainerRef;\n\n public createSheet<T>(component: Type<T>, injector: Injector): SideSheetStackItem<T> {\n const sheetComponentRef = this.container.createComponent(SideSheet, {\n injector: injector,\n });\n\n sheetComponentRef.changeDetectorRef.detectChanges();\n\n const contentComponentRef = sheetComponentRef.instance.attachContent(component, injector);\n\n sheetComponentRef.changeDetectorRef.detectChanges();\n\n return {\n sheetComponentRef,\n contentComponentRef,\n };\n }\n}\n","import { ComponentRef, inject, Injectable, Injector, Type } from '@angular/core';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { SideSheetStack } from './side-sheet/side-sheet-stack';\nimport {\n SIDE_SHEET_COMPONENT,\n SIDE_SHEET_CONFIG,\n SIDE_SHEET_DATA,\n SideSheetRef,\n} from './side-sheet/side-sheet-ref';\nimport { SideSheetConfig, SideSheetSide, SideSheetType } from '../../interfaces/side-sheet-config.interface';\n\ninterface ResolvedSideSheetConfig<D = unknown> extends SideSheetConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n side: SideSheetSide;\n type: SideSheetType;\n inset: boolean;\n divider: boolean;\n closeExisting: boolean;\n injector: Injector;\n}\n\ninterface SideSheetOutletState<T = unknown, R = unknown> {\n outlet: CdkPortalOutlet;\n stackComponentRef: ComponentRef<SideSheetStack>;\n refs: SideSheetRef<T, R>[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SheetsService {\n private readonly injector = inject(Injector);\n\n /**\n * Outlets registered per side, from the page scaffold up to whatever took\n * them over last. Sheets always open in the outlet on top, so a full screen\n * dialog can host them while it is up and hand them back when it closes.\n */\n private readonly states = new Map<SideSheetSide, SideSheetOutletState[]>();\n\n public registerSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const stack = this.getOutletStack(side);\n\n if (stack.some((state) => state.outlet === outlet)) {\n return;\n }\n\n if (outlet.hasAttached()) {\n outlet.detach();\n }\n\n const stackPortal = new ComponentPortal(SideSheetStack, null, this.injector);\n const stackComponentRef = outlet.attachComponentPortal(stackPortal);\n\n stack.push({\n outlet,\n stackComponentRef,\n refs: [],\n });\n }\n\n public unregisterSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const stack = this.states.get(side);\n const index = stack?.findIndex((state) => state.outlet === outlet) ?? -1;\n\n if (!stack || index === -1) {\n return;\n }\n\n // Sheets opened in this outlet go with it, and the outlet underneath\n // becomes the one new sheets open in.\n this.disposeOutletState(stack[index]);\n stack.splice(index, 1);\n\n if (stack.length === 0) {\n this.states.delete(side);\n }\n }\n\n public openSideSheet<T = unknown, D = unknown, R = unknown>(\n component: Type<T>,\n config: SideSheetConfig<D> = {},\n ): SideSheetRef<T, R> {\n const sheetConfig = this.mergeConfig(config);\n const state = this.activeState(sheetConfig.side);\n\n if (!state) {\n throw new Error(`No ${sheetConfig.side} side sheet outlet is registered.`);\n }\n\n if (sheetConfig.closeExisting) {\n this.disposeSideSheetRefs(state);\n } else {\n this.getVisibleRef(state)?.hide();\n }\n\n const sheetRef = new SideSheetRef<T, R>(\n sheetConfig.side,\n () => this.removeSideSheetRef(state, sheetRef as SideSheetRef),\n );\n const injector = this.createInjector(component, sheetConfig, sheetRef);\n const { sheetComponentRef, contentComponentRef } = state.stackComponentRef.instance.createSheet(\n component,\n injector,\n );\n\n sheetRef.attachSheetComponentRef(sheetComponentRef);\n this.bindDataToInputs(contentComponentRef, sheetConfig);\n sheetRef.componentInstance = contentComponentRef.instance;\n state.refs.push(sheetRef as SideSheetRef);\n\n return sheetRef;\n }\n\n public closeSideSheet<R = unknown>(side: SideSheetSide = 'end', result?: R): void {\n this.getVisibleRef(this.activeState(side))?.close(result);\n }\n\n /** Outlet that sheets currently open in: the last one that registered. */\n private activeState(side: SideSheetSide): SideSheetOutletState | undefined {\n const stack = this.states.get(side);\n\n return stack?.[stack.length - 1];\n }\n\n private getOutletStack(side: SideSheetSide): SideSheetOutletState[] {\n const stack = this.states.get(side) ?? [];\n\n if (!this.states.has(side)) {\n this.states.set(side, stack);\n }\n\n return stack;\n }\n\n private mergeConfig<D>(config: SideSheetConfig<D>): ResolvedSideSheetConfig<D> {\n return {\n data: config.data,\n bindDataToInputs: config.bindDataToInputs ?? false,\n side: config.side ?? 'end',\n type: config.type ?? 'default',\n inset: config.inset ?? false,\n divider: config.divider ?? false,\n closeExisting: config.closeExisting ?? false,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n private createInjector<T, D, R>(\n component: Type<T>,\n config: ResolvedSideSheetConfig<D>,\n sheetRef: SideSheetRef<T, R>,\n ): Injector {\n return Injector.create({\n parent: config.injector,\n providers: [\n { provide: SideSheetRef, useValue: sheetRef },\n { provide: SIDE_SHEET_DATA, useValue: config.data },\n { provide: SIDE_SHEET_CONFIG, useValue: config },\n { provide: SIDE_SHEET_COMPONENT, useValue: component },\n ],\n });\n }\n\n private bindDataToInputs<T, D>(\n componentRef: ComponentRef<T>,\n config: ResolvedSideSheetConfig<D>,\n ): void {\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\n return;\n }\n\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\n componentRef.setInput(inputName, inputValue);\n });\n }\n\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n }\n\n private disposeOutletState(state: SideSheetOutletState): void {\n this.disposeSideSheetRefs(state);\n\n if (state.outlet.hasAttached()) {\n state.outlet.detach();\n }\n }\n\n private disposeSideSheetRefs(state: SideSheetOutletState): void {\n const refs = [...state.refs];\n\n state.refs.length = 0;\n\n refs.forEach((ref) => {\n ref.dispose();\n });\n }\n\n private removeSideSheetRef(state: SideSheetOutletState, sheetRef: SideSheetRef): void {\n const index = state.refs.indexOf(sheetRef);\n\n if (index === -1) {\n return;\n }\n\n state.refs.splice(index, 1);\n this.getVisibleRef(state)?.show();\n }\n\n private getVisibleRef(state: SideSheetOutletState | undefined): SideSheetRef | undefined {\n if (!state || state.refs.length === 0) {\n return undefined;\n }\n\n return state.refs[state.refs.length - 1];\n }\n}\n","import { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AfterViewInit, Component, ElementRef, inject, OnDestroy, viewChild } from '@angular/core';\nimport { SheetsService } from '../../components/sheets/sheets.service';\nimport { LayoutService } from '../layout.service';\n\n@Component({\n selector: 'md3-scaffold',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './scaffold.html',\n styleUrl: './scaffold.scss',\n})\nexport class Scaffold implements AfterViewInit, OnDestroy {\n private startOutlet = viewChild('startOutlet', { read: CdkPortalOutlet });\n private endOutlet = viewChild('endOutlet', { read: CdkPortalOutlet });\n private panesContainer = viewChild<ElementRef<HTMLElement>>('panesContainer');\n private sheets = inject(SheetsService);\n private layout = inject(LayoutService);\n\n ngAfterViewInit(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n const panesContainer = this.panesContainer();\n\n if (startOutlet) {\n this.sheets.registerSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.registerSideSheetOutlet('end', endOutlet);\n }\n\n if (panesContainer) {\n this.layout.registerPanesContainer(panesContainer.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n\n if (startOutlet) {\n this.sheets.unregisterSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.unregisterSideSheetOutlet('end', endOutlet);\n }\n\n this.layout.unregisterPanesContainer();\n }\n}\n","<ng-content select=\"[md3-scaffold-bar=top]\"></ng-content>\n<ng-content select=\"[md3-scaffold-rail=leading]\"></ng-content>\n\n<div class=\"md3-panes-container\" #panesContainer>\n <div class=\"md3-pane md3-pane-start\">\n <ng-content select=\"[md3-scaffold-pane=start]\"></ng-content>\n <ng-template #startOutlet cdkPortalOutlet></ng-template>\n </div>\n <div class=\"md3-pane md3-pane-main\">\n <ng-content select=\"[md3-scaffold-pane=main]\"></ng-content>\n </div>\n <div class=\"md3-pane md3-pane-end\">\n <ng-content select=\"[md3-scaffold-pane=end]\"></ng-content>\n <ng-template #endOutlet cdkPortalOutlet></ng-template>\n </div>\n</div>\n\n<ng-content select=\"[md3-scaffold-rail=trailing]\"></ng-content>\n<ng-content select=\"[md3-scaffold-bar=bottom]\"></ng-content>","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-scaffold-bar]'\n})\nexport class ScaffoldBar {\n public region = input.required<'top' | 'bottom'>({\n alias: 'md3-scaffold-bar',\n });\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-scaffold-rail]'\n})\nexport class ScaffoldRail {\n public region = input.required<'leading' | 'trailing'>({\n alias: 'md3-scaffold-rail',\n });\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Directive, effect, ElementRef, input, OnDestroy } from '@angular/core';\nimport { LayoutService } from './layout.service';\n\n@Directive({\n selector: '[md3-scaffold-pane]',\n host: {\n class: 'md3-scrollable',\n },\n hostDirectives: [\n CdkScrollable,\n ],\n})\nexport class ScaffoldPane implements OnDestroy {\n public role = input.required<'main' | 'start' | 'end'>({\n alias: 'md3-scaffold-pane',\n });\n\n constructor(\n private el: ElementRef,\n private layout: LayoutService\n ) {\n effect(() => {\n if (this.role() == 'main') {\n this.layout.registerMainPane(this.el.nativeElement);\n } else {\n this.layout.unregisterMainPane(this.el.nativeElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.role() == 'main') {\n this.layout.unregisterMainPane(this.el.nativeElement);\n }\n }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { LayoutService } from './layout.service';\nimport { ViewportWidth } from '../types/viewport-width.type';\n\nconst GRID_COLUMNS_BY_WIDTH: Record<ViewportWidth, number> = {\n 'compact': 4,\n 'medium': 8,\n 'expanded': 8,\n 'large': 12,\n 'extra-large': 12,\n};\n\n@Directive({\n selector: 'md3-grid, [md3-grid]',\n host: {\n 'class': 'md3-grid',\n '[style.--md-grid-columns]': 'columns()',\n }\n})\nexport class Grid {\n private readonly layout = inject(LayoutService);\n\n // overrides the window-size-class column count when set — e.g. to simulate a screen size\n public readonly cols = input<number | undefined>(undefined, {\n alias: 'cols',\n });\n\n protected readonly columns = computed(() => this.cols() ?? GRID_COLUMNS_BY_WIDTH[this.layout.widthClass()]);\n}\n","import { computed, Directive, input, numberAttribute } from '@angular/core';\n\n@Directive({\n selector: 'md3-grid-item, [md3-grid-item]',\n host: {\n 'class': 'md3-grid-item',\n '[style.grid-column]': 'span()',\n }\n})\nexport class GridItem {\n public readonly colSpan = input(1, {\n alias: 'col-span',\n transform: numberAttribute,\n });\n\n protected readonly span = computed(() => `span ${this.colSpan()}`);\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[md3-input-element]',\n host: {\n 'class': 'md3-input-element'\n }\n})\nexport class InputElement {\n constructor(private el: ElementRef<HTMLInputElement>) { }\n\n public get nativeElement(): HTMLInputElement {\n return this.el.nativeElement;\n }\n}\n","import { Directive, effect, ElementRef, HostListener, Input, OnInit, Renderer2, signal } from '@angular/core';\n\n@Directive({\n selector: '[md3-state-component]',\n host: {\n class: 'md3-state-component',\n },\n})\nexport class StateComponent implements OnInit {\n private stateLayer?: HTMLDivElement;\n private stateLayerSignal = signal<boolean>(true);\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {\n effect(() => {\n if (this.stateLayerSignal()) {\n this.enable();\n } else {\n this.disable();\n }\n });\n }\n\n ngOnInit(): void {\n this.init();\n }\n\n private init(): void {\n if (!this.stateLayerSignal() || this.stateLayer) {\n return;\n }\n\n let layer = this.el.nativeElement.querySelector(\n ':scope > .md3-state-layer'\n ) as HTMLDivElement | null;\n\n if (!layer) {\n // Create the state layer and insert as the first child\n layer = this.renderer.createElement('div') as HTMLDivElement;\n this.renderer.addClass(layer, 'md3-state-layer');\n\n this.renderer.appendChild(\n this.el.nativeElement,\n layer\n );\n\n }\n\n this.stateLayer = layer;\n }\n\n public setStateLayer(value: boolean) {\n this.stateLayerSignal.set(value);\n }\n\n private enable(): void {\n this.el.nativeElement.classList.add('md3-state-component');\n this.init();\n }\n\n private disable(): void {\n this.el.nativeElement.classList.remove('md3-state-component');\n this.stateLayer?.remove();\n this.stateLayer = undefined;\n }\n\n @HostListener('pointerdown', ['$event'])\n onPointerDown(event: PointerEvent): void {\n if (!this.stateLayer) {\n return;\n }\n\n const rect = this.el.nativeElement.getBoundingClientRect();\n const w = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n\n this.stateLayer.style.setProperty('--ripple-w', `${w}px`);\n this.stateLayer.style.setProperty('--ripple-x', `${x}px`);\n this.stateLayer.style.setProperty('--ripple-y', `${y}px`);\n }\n}\n","import { Directive, ElementRef, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-icon-element]',\n host: {\n 'class': 'md3-icon-element'\n }\n})\nexport class IconElement {\n public iconType = input<string | null>(null, {\n alias: 'md3-icon-element',\n });\n\n constructor(private el: ElementRef) { }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { Component, ElementRef, input, booleanAttribute, effect } from '@angular/core';\n\n@Component({\n selector: 'md3-icon',\n imports: [],\n templateUrl: './material-icon.html',\n styleUrl: './material-icon.scss',\n host: {\n '[class.md3-filled]': 'isFilled()',\n '[class.md3-bi-directional]': 'biDirectional()',\n },\n})\nexport class MaterialIcon {\n public iconVersion = input<'MaterialIcons' | 'MaterialSymbols'>('MaterialSymbols', {\n alias: 'icon-version',\n });\n public isFilled = input<boolean, unknown>(false, {\n alias: 'filled',\n transform: booleanAttribute\n });\n public iconStyle = input<'normal' | 'outlined' | 'rounded' | 'sharp' | 'two-tone'>('normal', {\n alias: 'icon-style',\n });\n public iconSize = input<48 | 36 | 24 | 18>(24, {\n alias: 'icon-size',\n });\n public biDirectional = input<boolean, unknown>(false, {\n alias: 'bi-directional',\n transform: booleanAttribute\n });\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const iconSize = 'md3-' + this.iconSize().toString();\n this.element.classList.add(iconSize);\n\n onCleanup(() => {\n this.element.classList.remove(iconSize);\n });\n });\n\n effect((onCleanup) => {\n let iconStyle = this.iconStyle() == 'normal' ? null : this.iconStyle();\n\n if (this.iconVersion() == 'MaterialSymbols') {\n this.element.classList.add('md3-symbol');\n\n if (iconStyle == 'two-tone') {\n iconStyle = null;\n }\n }\n\n if (iconStyle !== null) {\n this.element.classList.add('md3-' + iconStyle);\n }\n\n onCleanup(() => {\n this.element.classList.remove('md3-symbol', 'md3-' + iconStyle);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content></ng-content>","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: 'md3-divider'\n})\nexport class Divider {\n public dividerType = input<string | null>(null, {\n alias: 'type',\n });\n}\n","import { booleanAttribute, Directive, ElementRef, input } from '@angular/core';\n\n@Directive({\n selector: 'md3-badge',\n host: {\n '[class.md3-small]': 'isSmall()',\n },\n})\nexport class Badge {\n public isSmall = input<boolean, unknown>(false, {\n alias: 'small',\n transform: booleanAttribute,\n });\n\n constructor(private el: ElementRef) {\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { Directive } from '@angular/core';\nimport { StateComponent } from './state-component';\n\n@Directive({\n selector: '[md3-avatar]',\n host: {\n 'class': 'md3-avatar',\n },\n hostDirectives: [\n StateComponent,\n ],\n})\nexport class Avatar {\n constructor() { }\n}\n","import { InjectionToken, Signal } from \"@angular/core\";\nimport { IconButtonWidth } from \"../types/icon-button-width.type\";\nimport { ButtonSize } from \"../types/button-size.type\";\nimport { SplitButtonType } from \"../types/split-button-type.type\";\n\nexport interface ButtonContext {\n buttonContextSize?: Signal<ButtonSize>;\n buttonContextType?: Signal<SplitButtonType>;\n buttonContextWidth?: Signal<IconButtonWidth>;\n buttonContextSquared?: Signal<boolean>;\n buttonContextExtended?: Signal<boolean>;\n}\n\nexport const MD3_BUTTON_CONTEXT = new InjectionToken<ButtonContext>('MD3_BUTTON_CONTEXT');","import { booleanAttribute, Component, computed, effect, ElementRef, HostListener, inject, input, model } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { ButtonType } from '../../../types/button-type.type';\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\n\n@Component({\n selector: 'button[md3-button], a[md3-button]',\n imports: [],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n host: {\n '[class.md3-square]': 'effectiveSquared()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class Button {\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\n \n @HostListener('click', ['$event']) onClick(event: Event): void {\n if (this.isSelected() === null) {\n return;\n }\n\n this.isSelected.update((value) => {\n return !value;\n });\n }\n\n public buttonSize = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<ButtonType>('filled', {\n alias: 'button-type',\n });\n public isSquared = input<boolean, unknown>(false, {\n alias: 'button-squared',\n transform: booleanAttribute,\n });\n public isSelected = model<boolean | null>(null, {\n alias: 'selected',\n });\n\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\n public effectiveType = computed(() => this.context?.buttonContextType?.() ?? this.buttonType());\n public effectiveSquared = computed(() => this.context?.buttonContextSquared?.() ?? this.isSquared());\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.effectiveSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.effectiveType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect(() => {\n const toggle = this.isSelected() !== null;\n\n if (toggle) {\n this.element.classList.add('md3-toggle');\n this.element.classList.toggle('md3-selected', this.isSelected() ?? false);\n } else {\n this.element.classList.remove('md3-toggle', 'md3-selected');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n public enableSelection() {\n this.isSelected.update((current) => {\n if (current !== null) {\n return current;\n }\n\n return false;\n });\n }\n}\n","<ng-content select=\"[md3-icon-element=leading]\"></ng-content>\n<div class=\"md3-label\">\n <ng-content></ng-content>\n</div>\n<ng-content select=\"[md3-icon-element=trailing]\"></ng-content>","import { booleanAttribute, Component, computed, effect, ElementRef, inject, input } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { FabType } from '../../../types/fab-type.type';\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { FabSize } from '../../../types/fab-size.type';\n\n@Component({\n selector: 'button[md3-fab], a[md3-fab]',\n imports: [],\n templateUrl: './floating-action-button.html',\n styleUrl: './floating-action-button.scss',\n host: {\n '[class.md3-extended-fab]': 'effectiveExtended()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class FloatingActionButton {\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\n \n public buttonSize = input<FabSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<FabType>('tonal-primary', {\n alias: 'button-type',\n });\n public isExtended = input<boolean, unknown>(false, {\n alias: 'extended',\n transform: booleanAttribute,\n });\n\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\n public effectiveExtended = computed(() => this.context?.buttonContextExtended?.() ?? this.isExtended());\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const buttonSize = 'md3-' + this.effectiveSize();\n this.element.classList.add(buttonSize);\n\n onCleanup(() => {\n this.element.classList.remove(buttonSize);\n });\n });\n\n effect((onCleanup) => {\n const buttonType = 'md3-' + this.buttonType();\n this.element.classList.add(buttonType);\n\n onCleanup(() => {\n this.element.classList.remove(buttonType);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\n<div class=\"md3-icon-label-space\"></div>\n<div class=\"md3-label\">\n <ng-content></ng-content>\n</div>","import { booleanAttribute, Component, computed, effect, ElementRef, HostListener, inject, input, model } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButtonType } from '../../../types/icon-button-type.type';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\n\n@Component({\n selector: 'button[md3-icon-button], a[md3-icon-button]',\n imports: [],\n templateUrl: './icon-button.html',\n styleUrl: './icon-button.scss',\n host: {\n '[class.md3-square]': 'effectiveSquared()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class IconButton {\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\n \n @HostListener('click', ['$event']) onClick(event: Event): void {\n if (this.isSelected() === null) {\n return;\n }\n\n this.isSelected.update((value) => {\n return !value;\n });\n }\n\n public buttonSize = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<IconButtonType>('filled', {\n alias: 'button-type',\n });\n public buttonWidth = input<IconButtonWidth>('default', {\n alias: 'button-width',\n });\n public isSquared = input<boolean, unknown>(false, {\n alias: 'button-squared',\n transform: booleanAttribute\n });\n public isSelected = model<boolean | null>(null, {\n alias: 'selected',\n });\n\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\n public effectiveType = computed(() => {\n const contextType = this.context?.buttonContextType?.();\n if (contextType) {\n return contextType == 'elevated' ? 'standard' : contextType;\n }\n \n return this.buttonType();\n });\n public effectiveWidth = computed(() => this.context?.buttonContextWidth?.() ?? this.buttonWidth());\n public effectiveSquared = computed(() => this.context?.buttonContextSquared?.() ?? this.isSquared());\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.effectiveSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.effectiveType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const width = 'md3-' + this.effectiveWidth();\n this.element.classList.add(width);\n\n onCleanup(() => {\n this.element.classList.remove(width);\n });\n });\n\n effect(() => {\n const toggle = this.isSelected() !== null;\n\n if (toggle) {\n this.element.classList.add('md3-toggle');\n this.element.classList.toggle('md3-selected', this.isSelected() ?? false);\n } else {\n this.element.classList.remove('md3-toggle', 'md3-selected');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n public enableSelection() {\n this.isSelected.update((current) => {\n if (current !== null) {\n return current;\n }\n\n return false;\n });\n }\n}\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\n<ng-content></ng-content>","import { booleanAttribute, Component, contentChild, contentChildren, effect, ElementRef, input, signal, Signal } from '@angular/core';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { SplitButtonType } from '../../../types/split-button-type.type';\nimport { Button } from '../button/button';\nimport { IconButton } from '../icon-button/icon-button';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\n\n@Component({\n selector: 'md3-split-button',\n imports: [\n ],\n templateUrl: './split-button.html',\n styleUrl: './split-button.scss',\n host: {\n 'role': 'group',\n },\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: SplitButton,\n },\n ],\n})\nexport class SplitButton implements ButtonContext {\n public buttonSize = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<SplitButtonType>('filled', {\n alias: 'button-type',\n });\n\n public flipTrailingIcon = input<boolean, unknown>(true, {\n alias: 'flip-trailing-icon',\n transform: booleanAttribute,\n });\n\n private button = contentChild<Button>(Button);\n private iconButtons = contentChildren<IconButton>(IconButton);\n\n // context values\n buttonContextSize: Signal<ButtonSize> = this.buttonSize;\n buttonContextType: Signal<SplitButtonType> = this.buttonType;\n buttonContextWidth: Signal<IconButtonWidth> = signal('default');\n buttonContextSquared?: Signal<boolean> = signal(false);\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.buttonSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.buttonType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n \n effect(() => {\n this.button()?.isSelected.set(null);\n });\n \n effect(() => {\n this.iconButtons().forEach((iconButton) => {\n iconButton.isSelected.set(null);\n \n if (iconButton?.element.hasAttribute('md3-main-action')) {\n return;\n }\n\n iconButton.element.classList.toggle('md3-flip-icon', this.flipTrailingIcon());\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content select=\"button[md3-button], button[md3-icon-button][md3-main-action], a[md3-button], a[md3-icon-button][md3-main-action]\"></ng-content>\n<ng-content select=\"button[md3-icon-button], a[md3-icon-button]\"></ng-content>","import { Component, contentChildren, effect, ElementRef, HostListener, input, InputSignal, Signal } from '@angular/core';\nimport { Button } from '../button/button';\nimport { IconButton } from '../icon-button/icon-button';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { ButtonGroupSelection } from '../../../types/button-group-selection.type';\nimport { ButtonGroupType } from '../../../types/button-group-type.type';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\n\n@Component({\n selector: 'md3-button-group',\n templateUrl: './button-group.html',\n styleUrl: './button-group.scss',\n host: {\n 'role': 'group',\n },\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: ButtonGroup,\n },\n ],\n})\nexport class ButtonGroup implements ButtonContext {\n @HostListener('click', ['$event']) onClick(event: PointerEvent): void {\n if (this.groupSelection() !== 'single') {\n return;\n }\n\n const selectedItem = this.findEventButton(event);\n\n if (selectedItem?.isSelected()) {\n this.clearOtherSelections(selectedItem);\n }\n }\n \n public buttonSize: InputSignal<ButtonSize> = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public groupType: InputSignal<ButtonGroupType> = input<ButtonGroupType>('standard', {\n alias: 'group-type',\n });\n public groupSelection: InputSignal<ButtonGroupSelection> = input<ButtonGroupSelection>('none', {\n alias: 'selection',\n });\n\n private buttons = contentChildren<Button>(Button, { descendants: true });\n private iconButtons = contentChildren<IconButton>(IconButton, { descendants: true });\n \n // context values\n buttonContextSize: Signal<ButtonSize> = this.buttonSize;\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.buttonSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const groupType = 'md3-' + this.groupType();\n this.element.classList.add(groupType);\n\n onCleanup(() => {\n this.element.classList.remove(groupType);\n });\n });\n\n effect(() => {\n const selection = this.groupSelection();\n\n if (selection == 'none') {\n this.allButtons().forEach((item) => {\n item.isSelected.set(null);\n });\n } else {\n this.allButtons().forEach((item) => {\n item.enableSelection();\n });\n\n if (selection == 'single') {\n this.normalizeSingleSelection();\n }\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n private findEventButton(event: PointerEvent): Button | IconButton | undefined {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return undefined;\n }\n\n return this.allButtons().find((item) => {\n return item.element.contains(target);\n });\n }\n\n private normalizeSingleSelection(): void {\n const selectedItem = this.allButtons().find((item) => {\n return item.isSelected();\n });\n\n if (selectedItem) {\n this.clearOtherSelections(selectedItem);\n }\n }\n\n private clearOtherSelections(selectedItem: Button | IconButton): void {\n this.allButtons().forEach((item) => {\n if (item != selectedItem) {\n item.isSelected.set(false);\n }\n });\n }\n\n private allButtons(): (Button | IconButton)[] {\n return [\n ...this.buttons(),\n ...this.iconButtons(),\n ];\n }\n}\n","<ng-content select=\"button[md3-button], button[md3-icon-button], a[md3-button], a[md3-icon-button]\"></ng-content>","import { AfterViewInit, booleanAttribute, Component, effect, ElementRef, input, signal } from '@angular/core';\nimport { StateComponent } from '../common/state-component';\nimport { CardType } from '../../types/card-type.type';\n\n@Component({\n selector: 'md3-card, button[md3-card], a[md3-card]',\n imports: [],\n templateUrl: './card.html',\n styleUrl: './card.scss',\n // host: {\n // tabindex: '0',\n // },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class Card implements AfterViewInit {\n public cardType = input<CardType>('elevated', {\n alias: 'card-type',\n });\n\n public isInteractive = input<boolean, unknown>(false, {\n alias: 'interactive',\n transform: booleanAttribute,\n });\n\n private isActionTag = signal<boolean>(false);\n\n constructor(\n private el: ElementRef,\n private state: StateComponent,\n ) {\n effect((onCleanup) => {\n const type = 'md3-' + this.cardType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect(() => {\n if (this.isInteractive() || this.isActionTag()) {\n this.element.classList.add('md3-interactive');\n this.state.setStateLayer(true);\n\n if (!this.isActionTag()) {\n this.element.setAttribute('tabindex', '0');\n }\n } else {\n this.element.classList.remove('md3-interactive');\n this.state.setStateLayer(false);\n this.element.removeAttribute('tabindex');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n ngAfterViewInit(): void {\n const tagName = this.element.tagName.toLowerCase();\n this.isActionTag.set(tagName != 'md3-card');\n }\n}\n","<ng-content></ng-content>\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, Directive, effect, ElementRef, input, Input, output } from '@angular/core';\nimport { MaterialIcon } from '../common/material-icon/material-icon';\nimport { StateComponent } from '../common/state-component';\nimport { ChipType } from '../../types/chip-type.type';\nimport { IconElement } from '../common/icon-element';\nimport { ChipStyle } from '../../types/chip-style.type';\n\n@Directive({\n selector: '[md3-chip-avatar]'\n})\nexport class ChipAvatar {}\n\n@Component({\n selector: 'button[md3-chip], a[md3-chip], label[md3-chip]',\n imports: [\n StateComponent,\n MaterialIcon,\n ],\n templateUrl: './chips.html',\n styleUrl: './chips.scss',\n})\nexport class Chips {\n public chipType = input<ChipType>('assist', {\n alias: 'chip-type',\n });\n\n public chipStyle = input<ChipStyle>('default', {\n alias: 'chip-style',\n });\n\n public trailingFunction = output<void>({\n alias: 'on-trailing',\n });\n\n protected onTrailingClick(event: Event): void {\n event.stopPropagation();\n this.trailingFunction.emit();\n }\n\n private avatar = contentChild(ChipAvatar);\n private iconElements = contentChildren(IconElement);\n\n public hasSurface = input<boolean, unknown>(false, {\n alias: 'surface',\n transform: booleanAttribute,\n });\n\n public isElevated = input<boolean, unknown>(false, {\n alias: 'elevated',\n transform: booleanAttribute,\n });\n\n public leading = computed(() => this.iconElements().find((icon) => icon.iconType() === 'leading'));\n public trailing = computed(() => this.iconElements().find((icon) => icon.iconType() === 'trailing'));\n public isSelectable = computed(() => this.chipType() != 'assist');\n public showCheckIcon = computed(() => !this.leading() && this.chipType() == 'filter');\n public hasAvatar = computed(() => this.avatar() != undefined && this.chipType() == 'input');\n public hasRemove = computed(() => this.chipType() == 'input');\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const type = 'md3-' + this.chipType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const style = 'md3-' + this.chipStyle();\n this.element.classList.add(style);\n\n onCleanup(() => {\n this.element.classList.remove(style);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}","@if (isSelectable()) {\n <ng-content select=\"[md3-input-element]\"></ng-content>\n}\n<div class=\"md3-chip-container\" md3-state-component>\n <div class=\"md3-chip-leading\" [class.has-icon]=\"leading()\" [class.has-avatar]=\"hasAvatar()\">\n <ng-content select=\"[md3-icon-element=leading], [md3-chip-avatar]\"></ng-content>\n @if (showCheckIcon()) {\n <md3-icon [icon-size]=\"18\" md3-icon-element=\"leading\">check</md3-icon>\n }\n </div>\n <div class=\"md3-chip-label\">\n <ng-content></ng-content>\n </div>\n @if (hasRemove() || trailing()) {\n <button class=\"md3-chip-trailing\" md3-state-component [class.has-icon]=\"trailing()\" (click)=\"onTrailingClick($event)\">\n <ng-content select=\"[md3-icon-element=trailing]\"></ng-content>\n\n @if (hasRemove() && !trailing()) {\n <md3-icon [icon-size]=\"18\" md3-icon-element=\"trailing\">close</md3-icon>\n }\n </button>\n }\n</div>","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, Signal, viewChild } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { InputElement } from '../../common/input-element';\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\nimport { StateComponent } from '../../common/state-component';\n\n@Component({\n selector: 'md3-checkbox',\n imports: [\n MaterialIcon,\n StateComponent,\n ],\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n})\nexport class Checkbox {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n\n private stateComponent = viewChild<StateComponent>(StateComponent);\n private input = contentChild(InputElement);\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n\n public disableStateLayer = input<boolean, unknown>(false, {\n alias: 'disable-state-layer',\n transform: booleanAttribute\n });\n\n protected checkboxIcon: 'check_small' | 'check_indeterminate_small' = 'check_small';\n public state = signal<boolean | null>(false);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n private inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n private inputDisabledState = signal<boolean>(false);\n public isDisabled = computed<boolean>(() => this.inputDisabledState());\n\n constructor() {\n effect(() => {\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n this.syncInitialState(input);\n this.syncNativeInputState(input);\n\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromState(this.state());\n this.syncNativeInputState(input);\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => {\n if (!this.formControl()) {\n this.syncStateFromInput(input);\n }\n\n this.syncNativeInputState(input);\n });\n observer?.observe(input, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'required'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private updateState(state: boolean | null = false): void {\n this.checkboxIcon = state === null\n ? 'check_indeterminate_small'\n : 'check_small';\n\n this.state.set(state);\n }\n\n private syncStateFromInput(input: HTMLInputElement): void {\n this.updateState(input.indeterminate ? null : input.checked);\n }\n\n private syncInputFromState(state: boolean | null = false): void {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n const indeterminate = state === null;\n const checked = state === true;\n\n if (input.indeterminate !== indeterminate) {\n input.indeterminate = indeterminate;\n }\n\n if (input.checked !== checked) {\n input.checked = checked;\n }\n }\n\n private syncControlFromState(state: boolean | null = false): void {\n const control = this.formControl();\n if (!control || control.value === state) {\n return;\n }\n\n control.setValue(state);\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n const controlState = control.value === null\n ? null\n : control.value === true;\n\n this.updateState(controlState);\n this.syncInputFromState(controlState);\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.nativeInputError.set(this.hasNativeInputError(input));\n this.inputDisabledState.set(input.disabled);\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n return !input.validity.valid || input.ariaInvalid === 'true';\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n const value = this.inputError() ? 'true' : 'false';\n if (input && input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div md3-state-component class=\"md3-checkbox-container\">\n <div class=\"md3-checkbox-icon\">\n <md3-icon>{{ checkboxIcon }}</md3-icon>\n </div>\n</div>\n","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, viewChild } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { InputElement } from '../../common/input-element';\nimport { StateComponent } from '../../common/state-component';\n\n@Component({\n selector: 'md3-radio-button',\n imports: [\n StateComponent\n ],\n templateUrl: './radio-button.html',\n styleUrl: './radio-button.scss',\n})\nexport class RadioButton {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n\n private stateComponent = viewChild<StateComponent>(StateComponent);\n private input = contentChild(InputElement);\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n\n public disableStateLayer = input<boolean, unknown>(false, {\n alias: 'disable-state-layer',\n transform: booleanAttribute\n });\n\n public state = signal<boolean>(false);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n private inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n private inputDisabledState = signal<boolean>(false);\n public isDisabled = computed<boolean>(() => this.inputDisabledState());\n\n constructor() {\n effect(() => {\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n this.syncInitialState(input);\n this.syncNativeInputState(input);\n\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromInput(input);\n this.syncNativeInputState(input);\n });\n\n const documentEvents = fromEvent(input.ownerDocument, 'change').subscribe((event) => {\n if (this.isSameRadioGroup(input, event.target)) {\n this.syncStateFromInput(input);\n this.syncNativeInputState(input);\n }\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => {\n if (!this.formControl()) {\n this.syncStateFromInput(input);\n }\n\n this.syncNativeInputState(input);\n });\n observer?.observe(input, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'name', 'required', 'value'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n documentEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private getInputValue(input: HTMLInputElement | undefined = this.input()?.nativeElement): unknown {\n return input?.value ?? true;\n }\n\n private updateState(state: boolean = false): void {\n this.state.set(state);\n }\n\n private syncStateFromInput(input: HTMLInputElement): void {\n this.updateState(input.checked);\n }\n\n private syncInputFromState(state: boolean = false): void {\n const input = this.input()?.nativeElement;\n if (input && input.checked !== state) {\n input.checked = state;\n }\n }\n\n private syncControlFromInput(input: HTMLInputElement): void {\n const control = this.formControl();\n if (!control || !input.checked) {\n return;\n }\n\n const inputValue = this.getInputValue(input);\n if (control.value !== inputValue) {\n control.setValue(inputValue);\n }\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n const controlState = control.value === this.getInputValue();\n\n this.updateState(controlState);\n this.syncInputFromState(controlState);\n }\n\n private isSameRadioGroup(input: HTMLInputElement, target: EventTarget | null): boolean {\n return target instanceof HTMLInputElement\n && target.type === 'radio'\n && target.name === input.name\n && target.form === input.form;\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.nativeInputError.set(this.hasNativeInputError(input));\n this.inputDisabledState.set(input.disabled);\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n return !input.validity.valid || input.ariaInvalid === 'true';\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n const value = this.inputError() ? 'true' : 'false';\n if (input && input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div md3-state-component class=\"md3-radio-button-container\">\n <div class=\"md3-radio-button-icon\"></div>\n</div>\n","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, viewChild } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { InputElement } from '../../common/input-element';\nimport { StateComponent } from '../../common/state-component';\n\n@Component({\n selector: 'md3-switch',\n imports: [\n StateComponent\n ],\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n})\nexport class Switch {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n\n private stateComponent = viewChild<StateComponent>(StateComponent);\n private input = contentChild(InputElement);\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n \n public disableStateLayer = input<boolean, unknown>(false, {\n alias: 'disable-state-layer',\n transform: booleanAttribute\n });\n\n public state = signal<boolean>(false);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n private inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n private inputDisabledState = signal<boolean>(false);\n public isDisabled = computed<boolean>(() => {\n console.log('Switch disabled');\n return this.inputDisabledState();\n });\n\n constructor() {\n effect(() => {\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n input.setAttribute('role', 'switch');\n this.syncInitialState(input);\n this.syncNativeInputState(input);\n\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromState(this.state());\n this.syncNativeInputState(input);\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => {\n if (!this.formControl()) {\n this.syncStateFromInput(input);\n }\n\n this.syncNativeInputState(input);\n });\n observer?.observe(input, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'required'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private updateState(state: boolean = false): void {\n this.state.set(state);\n }\n\n private syncStateFromInput(input: HTMLInputElement): void {\n this.updateState(input.checked);\n }\n\n private syncInputFromState(state: boolean = false): void {\n const input = this.input()?.nativeElement;\n if (input && input.checked !== state) {\n input.checked = state;\n }\n }\n\n private syncControlFromState(state: boolean = false): void {\n const control = this.formControl();\n if (!control || control.value === state) {\n return;\n }\n\n control.setValue(state);\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n const controlState = control.value === true;\n\n this.updateState(controlState);\n this.syncInputFromState(controlState);\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.nativeInputError.set(this.hasNativeInputError(input));\n this.inputDisabledState.set(input.disabled);\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n return !input.validity.valid || input.ariaInvalid === 'true';\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n const value = this.inputError() ? 'true' : 'false';\n if (input && input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div md3-state-component class=\"md3-track-container\">\n <div class=\"md3-track\">\n <div class=\"md3-handle-container\">\n <div class=\"md3-handle\">\n <ng-content select=\"[md3-icon-element]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { Component, computed, contentChild, effect, ElementRef, input, signal } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent, merge } from 'rxjs';\nimport { InputElement } from '../common/input-element';\nimport { TypeBody } from '../../styles/typography/type-body';\nimport { SliderSize } from '../../types/slider-size.type';\n\n@Component({\n selector: 'md3-slider',\n imports: [\n TypeBody,\n ],\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n})\nexport class Slider {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n public sliderSize = input<SliderSize>('x-small', {\n alias: 'slider-size',\n });\n public showValueLabel = input<boolean>(false, {\n alias: 'show-value-label'\n });\n\n private input = contentChild<InputElement>(InputElement);\n private controlName = contentChild<FormControlName>(FormControlName);\n\n public value = signal<number>(0);\n public min = signal<number>(0);\n public max = signal<number>(100);\n public progress = signal<number>(0);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n constructor(private el: ElementRef<HTMLElement>) {\n effect((onCleanup) => {\n const size = 'md3-' + this.sliderSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect(() => {\n this.element.style.setProperty('--slider-progress', `${this.progress()}%`);\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n this.syncInitialState(input);\n\n const inputEvents = merge(\n fromEvent(input, 'input'),\n fromEvent(input, 'change'),\n ).subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromState(this.value());\n });\n\n onCleanup(() => inputEvents.unsubscribe());\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private updateState(value: number = 0): void {\n let min = this.min();\n let max = this.max();\n let range = max - min;\n let nextValue = Number.isFinite(value) ? value : min;\n let progress = range === 0\n ? 0\n : ((nextValue - min) / range) * 100;\n\n this.value.set(nextValue);\n this.progress.set(Math.min(100, Math.max(0, progress)));\n }\n\n private syncLimitsFromInput(input: HTMLInputElement | undefined = this.input()?.nativeElement): void {\n if (!input) {\n return;\n }\n\n let min = input.min === ''\n ? 0\n : Number(input.min);\n let max = input.max === ''\n ? 100\n : Number(input.max);\n\n this.min.set(Number.isFinite(min) ? min : 0);\n this.max.set(Number.isFinite(max) ? max : 100);\n }\n\n private syncStateFromInput(input: HTMLInputElement | undefined = this.input()?.nativeElement): void {\n if (!input) {\n return;\n }\n\n this.syncLimitsFromInput(input);\n this.updateState(input.valueAsNumber);\n }\n\n private syncInputFromState(value: number = 0): void {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n input.valueAsNumber = value;\n }\n\n private syncControlFromState(value: number = 0): void {\n const control = this.formControl();\n if (!control || control.value === value) {\n return;\n }\n\n control.setValue(value);\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n let controlValue = Number(control.value ?? this.min());\n\n this.syncLimitsFromInput();\n this.updateState(controlValue);\n this.syncInputFromState(controlValue);\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div class=\"md3-slider-container\">\n <div class=\"md3-slider-track\">\n <div class=\"md3-active-track\">\n <div class=\"md3-track-bar\">\n <div class=\"md3-icon-container\">\n <ng-content select=\"[md3-icon-element]\"></ng-content>\n </div>\n </div>\n </div>\n <div class=\"md3-inactive-track\">\n <div class=\"md3-track-bar\"></div>\n </div>\n </div>\n <div class=\"md3-slider-handle\">\n @if (showValueLabel()) {\n <div class=\"md3-value-label\">\n <md3-type-body size=\"medium\">{{ value() }}</md3-type-body>\n </div>\n }\n </div>\n</div>\n","import { Component, effect, ElementRef, input } from '@angular/core';\n\n@Component({\n selector: 'md3-list',\n templateUrl: './list.html',\n styleUrl: './list.scss',\n})\nexport class List {\n public variant = input<'expressive' | 'baseline'>('expressive');\n public type = input<'standard' | 'segmented'>('standard');\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const variant = 'md3-' + this.variant();\n this.element.classList.add(variant);\n\n onCleanup(() => {\n this.element.classList.remove(variant);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.type();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content></ng-content>","import { AfterViewInit, booleanAttribute, Component, computed, contentChild, Directive, effect, ElementRef, HostListener, input } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { Checkbox } from '../../selection-controls/checkbox/checkbox';\nimport { RadioButton } from '../../selection-controls/radio-button/radio-button';\nimport { Switch } from '../../selection-controls/switch/switch';\n\n@Directive({\n selector: 'button[md3-item-primary-action], a[md3-item-primary-action]',\n host: {\n 'class': 'md3-item-primary-action',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class ListItemPrimaryAction {\n}\n\n@Component({\n selector: 'md3-list-item, label[md3-list-item], button[md3-list-item], a[md3-list-item]',\n templateUrl: './list-item.html',\n styleUrl: './list-item.scss',\n host: {\n '[class.md3-selected]': 'isSelected()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class ListItem implements AfterViewInit {\n public slotsAlignment = input<'start' | 'center' | 'end'>('center', {\n alias: 'slots-alignment',\n });\n public selected = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n public isActionTag: boolean = false;\n private isLabelTag: boolean = false;\n private checkbox = contentChild(Checkbox);\n private radioButton = contentChild(RadioButton);\n private switch = contentChild(Switch);\n\n public isSelected = computed(() => {\n const checkbox = this.checkbox();\n const radioButton = this.radioButton();\n\n if (checkbox || radioButton) {\n return (checkbox?.state() || radioButton?.state()) === true;\n }\n\n return this.selected();\n });\n\n public isInputDisabled = computed(() => {\n return this.checkbox()?.isDisabled() || this.radioButton()?.isDisabled() || this.switch()?.isDisabled();\n });\n\n constructor(\n private el: ElementRef,\n private state: StateComponent\n ) {\n effect((onCleanup) => {\n const alignment = 'md3-slots-alignment-' + this.slotsAlignment();\n this.element.classList.add(alignment);\n\n onCleanup(() => {\n this.element.classList.remove(alignment);\n });\n });\n\n effect(() => {\n if (this.isInputDisabled()) {\n this.state.setStateLayer(false);\n this.element.classList.add('md3-disabled');\n } else {\n this.state.setStateLayer(true);\n this.element.classList.remove('md3-disabled');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n ngAfterViewInit(): void {\n let tagName = this.element.tagName.toLowerCase();\n\n this.isLabelTag = tagName == 'label';\n\n if (this.isLabelTag) {\n this.element.setAttribute('tabindex', '0');\n this.setLabelInputTabIndex();\n }\n\n this.isActionTag = tagName != 'md3-list-item';\n \n if (!this.isActionTag) {\n this.state.setStateLayer(false);\n }\n }\n\n @HostListener('focusin', ['$event'])\n protected onFocusIn(event: FocusEvent): void {\n if (!this.isLabelTag || event.target === this.element || !this.isInputElement(event.target)) {\n return;\n }\n\n this.focusLabel();\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(event: KeyboardEvent): void {\n if (!this.isLabelTag || event.target !== this.element || event.defaultPrevented) {\n return;\n }\n\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n }\n\n const input = this.getLabelActivationInput();\n\n if (!input) {\n return;\n }\n\n event.preventDefault();\n input.click();\n this.focusLabel();\n }\n\n private setLabelInputTabIndex(): void {\n this.getLabelInputs().forEach((input) => input.tabIndex = -1);\n }\n\n private getLabelActivationInput(): HTMLInputElement | undefined {\n return this.getLabelInputs().find((input) => {\n return !input.disabled && (input.type === 'checkbox' || input.type === 'radio');\n }) ?? this.getLabelInputs().find((input) => !input.disabled);\n }\n\n private getLabelInputs(): HTMLInputElement[] {\n return Array.from(this.element.querySelectorAll<HTMLInputElement>('input'));\n }\n\n private focusLabel(): void {\n this.element.focus({ preventScroll: true });\n }\n\n private isInputElement(target: EventTarget | null): target is HTMLInputElement {\n return target instanceof HTMLInputElement;\n }\n}\n","<ng-content select=\"[md3-item-primary-action]\"></ng-content>\n<ng-content select=\"md3-list-leading\"></ng-content>\n<ng-content select=\"[md3-list-slot=content]\"></ng-content>\n<ng-content select=\"[md3-list-slot=trailing]\"></ng-content>","import { Component, effect, ElementRef, input } from '@angular/core';\nimport { ListLeadingType } from '../../../types/list-leading-type.type';\nimport { ListLeadingSize } from '../../../types/list-leading-size.type';\n\n@Component({\n selector: 'md3-list-leading',\n templateUrl: './list-leading.html',\n styleUrl: './list-leading.scss',\n})\nexport class ListLeading {\n public type = input<ListLeadingType>('icon');\n public size = input<ListLeadingSize>('image');\n\n constructor(\n private el: ElementRef,\n ) {\n effect((onCleanup) => {\n const type = 'md3-type-' + this.type();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const size = 'md3-size-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content></ng-content>","import { Directive, ElementRef, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-list-slot]',\n host: {\n '[attr.md3-list-slot]': 'position()',\n },\n})\nexport class ListSlot {\n public position = input.required<'content' | 'trailing'>({\n alias: 'md3-list-slot',\n });\n\n constructor(private el: ElementRef) { }\n\n public get nativeElement(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","import { Component, computed, ElementRef, input, Input } from '@angular/core';\n\n@Component({\n selector: 'md3-loading-indicator',\n imports: [],\n templateUrl: './loading-indicator.html',\n styleUrl: './loading-indicator.scss',\n})\nexport class LoadingIndicator {\n public contained = input<boolean>(false);\n public size = input<number>(48);\n\n public dpSize = computed(() => {\n const fontSize = this.getHostFontSize();\n return Number((this.size() / fontSize).toFixed(4));\n });\n\n constructor(\n private el: ElementRef,\n ) {\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n private getHostFontSize(): number {\n if (typeof getComputedStyle === 'undefined') {\n return 16;\n }\n\n return Number.parseFloat(getComputedStyle(this.element).fontSize) || 16;\n }\n}\n","<div class=\"md3-indicator-indeterminate\" [class.md3-contained]=\"contained()\" [style]=\"'--size: '+dpSize()+'em'\">\n <svg viewBox=\"0 0 48 48\" class=\"md3-indicator-svg\">\n <path class=\"md3-indicator-shape\"></path>\n </svg>\n</div>","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'md3-linear-progress-indicator',\n imports: [],\n templateUrl: './linear-progress-indicator.html',\n styleUrl: './linear-progress-indicator.scss',\n})\nexport class LinearProgressIndicator {\n public indeterminate = input<boolean>(false);\n public thickness = input<4 | 8>(4);\n public progress = input<number>(0);\n\n public progressValue = computed(() => {\n const progress = this.progress();\n if (progress < 0) {\n return 0;\n }\n\n if (progress > 100) {\n return 100;\n }\n\n return progress;\n });\n\n constructor() {\n }\n}\n","<div class=\"md3-linear-indicator\" [class.md3-thickness-8dp]=\"thickness() == 8\" [class.md3-indeterminate]=\"indeterminate()\" [style.--progress]=\"progressValue() + '%'\">\n <div class=\"md3-track\"></div>\n <div class=\"md3-active-indicator\"></div>\n @if (indeterminate()) {\n <div class=\"md3-track-secondary\"></div>\n <div class=\"md3-active-indicator-secondary\"></div>\n }\n</div>","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'md3-circular-progress-indicator',\n imports: [],\n templateUrl: './circular-progress-indicator.html',\n styleUrl: './circular-progress-indicator.scss',\n})\nexport class CircularProgressIndicator {\n public indeterminate = input<boolean>(false);\n public thickness = input<4 | 8>(4);\n public progress = input<number>(0);\n\n public progressValue = computed(() => {\n const progress = this.progress();\n if (progress < 0) {\n return 0;\n }\n\n if (progress > 100) {\n return 100;\n }\n\n return progress;\n });\n\n constructor() {\n }\n}\n","<div class=\"md3-indicator-container\" [class.md3-thickness-8dp]=\"thickness() == 8\" [class.md3-indeterminate]=\"indeterminate()\" [style.--progress]=\"progressValue()\">\n <svg class=\"md3-circlar-indicator\">\n <circle class=\"md3-track\" pathLength=\"100\"></circle>\n <circle class=\"md3-active-indicator\" pathLength=\"100\"></circle>\n </svg>\n</div>","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[md3-app-bar-logo]',\n})\nexport class AppBarLogo {\n}\n","import { booleanAttribute, Component, computed, contentChild, effect, ElementRef, input, Signal, signal } from '@angular/core';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../types/button-size.type';\nimport { Avatar } from '../common/avatar';\nimport { LayoutService } from '../../foundations/layout.service';\nimport { AppBarLogo } from './app-bar-logo';\nimport { TypeDisplay, TypeHeadline, TypeTitle } from '../../../public-api';\n\nexport type AppBarType = 'small' | 'medium' | 'large' | 'search';\nexport type AppBarScrollingStyle = 'none' | 'transparent' | 'elevate';\n\n@Component({\n selector: 'md3-app-bar',\n imports: [\n TypeHeadline,\n TypeTitle,\n TypeDisplay,\n ],\n templateUrl: './app-bar.html',\n styleUrl: './app-bar.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: AppBar,\n },\n ],\n host: {\n role: 'banner',\n '[class.md3-scrolled]': 'mainIsScrolled()',\n '[class.md3-auto-hide]': 'autoHide()',\n '[class.md3-scrolling-down]': 'isScrollingDown()',\n },\n})\nexport class AppBar implements ButtonContext {\n public title = input<string | null>(null, {\n alias: 'bar-title',\n });\n\n public subtitle = input<string | null>(null, {\n alias: 'bar-subtitle',\n });\n\n public appBarType = input<AppBarType>('small', {\n alias: 'bar-type',\n });\n\n public appBarScrollingStyle = input<AppBarScrollingStyle>('elevate', {\n alias: 'scroll-style',\n });\n\n public autoHide = input<boolean, unknown>(false, {\n alias: 'auto-hide',\n transform: booleanAttribute,\n });\n \n public centerAligned = input<boolean, unknown>(false, {\n alias: 'center-aligned',\n transform: booleanAttribute,\n });\n\n private logo = contentChild(AppBarLogo);\n private avatar = contentChild(Avatar);\n\n public hasLogo = computed(() => !!this.logo());\n public hasAvatar = computed(() => !!this.avatar());\n\n public mainIsScrolled = computed(() => this.layoutService.mainIsScrolled());\n public isScrollingDown = signal<boolean>(false);\n\n private scrollPosition = 0;\n private bottomExpandedHeight = computed(() => {\n const type = this.appBarType();\n\n if (!this.hasCollapsibleBottom(type)) {\n return 0;\n }\n\n this.layoutService.viewport();\n\n const fontSize = this.getHostFontSize();\n const hasSubtitle = !!this.subtitle()?.length;\n\n if (type === 'medium') {\n return (hasSubtitle ? 4.5 : 3) * fontSize;\n }\n\n return (hasSubtitle ? 5.5 : 3.5) * fontSize;\n });\n\n private bottomCollapse = computed(() => {\n const expandedHeight = this.bottomExpandedHeight();\n\n if (!expandedHeight) {\n return 0;\n }\n\n return Math.min(expandedHeight, Math.max(0, this.layoutService.mainScrollTop()));\n });\n\n // button context\n public buttonContextSize: Signal<ButtonSize> = signal('small');\n\n constructor(\n private el: ElementRef,\n private layoutService: LayoutService\n ) {\n this.scrollPosition = this.layoutService.mainScrollTop();\n\n effect((onCleanup) => {\n const type = 'md3-' + this.appBarType();\n\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const scrollingStyle = 'md3-scroll-style-' + this.appBarScrollingStyle();\n\n this.element.classList.add(scrollingStyle);\n\n onCleanup(() => {\n this.element.classList.remove(scrollingStyle);\n });\n });\n\n effect((onCleanup) => {\n const width = 'md3-layout-' + this.layoutService.widthClass();\n this.element.classList.add(width);\n\n onCleanup(() => {\n this.element.classList.remove(width);\n });\n });\n\n effect(() => {\n this.updateScrollDirection(this.layoutService.mainScrollTop());\n });\n\n effect(() => {\n const collapse = this.bottomCollapse();\n const expandedHeight = this.bottomExpandedHeight();\n\n this.element.style.setProperty(\n '--app-bar-bottom-collapse',\n `${collapse}px`\n );\n this.element.style.setProperty(\n '--app-bar-bottom-opacity',\n this.getBottomOpacity(collapse, expandedHeight).toString()\n );\n this.element.classList.toggle(\n 'md3-collapsed',\n this.isBottomCollapsed(collapse, expandedHeight)\n );\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n private getBottomOpacity(collapse: number, expandedHeight: number): number {\n if (!expandedHeight) {\n return 1;\n }\n\n return Math.max(0, Math.min(1, 1 - (collapse / expandedHeight)));\n }\n\n private isBottomCollapsed(collapse: number, expandedHeight: number): boolean {\n return expandedHeight > 0 && collapse >= expandedHeight;\n }\n\n private updateScrollDirection(scrollTop: number): void {\n if (scrollTop === this.scrollPosition) {\n return;\n }\n\n const defaultBarHeight = this.getHostFontSize() * 4;\n const scrollOffset = scrollTop - this.scrollPosition;\n\n if (Math.abs(scrollOffset) <= defaultBarHeight) {\n return;\n }\n\n this.isScrollingDown.set(scrollOffset > 0);\n this.scrollPosition = scrollTop;\n }\n\n private hasCollapsibleBottom(type: AppBarType): boolean {\n return (type === 'medium' || type === 'large') &&\n (!!this.title()?.length || !!this.subtitle()?.length);\n }\n\n private getHostFontSize(): number {\n if (typeof getComputedStyle === 'undefined') {\n return 16;\n }\n\n return Number.parseFloat(getComputedStyle(this.element).fontSize) || 16;\n }\n}\n","<div class=\"md3-app-bar-container\">\n <div class=\"md3-app-bar-leading\">\n <ng-content select=\"[md3-app-bar-leading]\"></ng-content>\n </div>\n\n @if (appBarType() == 'search') {\n <div class=\"md3-app-bar-search\" [class.md3-center]=\"centerAligned()\">\n <div class=\"md3-search-container\">\n <div class=\"md3-leading-buttons\">\n <ng-content select=\"[md3-search-leading]\"></ng-content>\n </div>\n <ng-content select=\"[md3-input-element]\"></ng-content>\n <div class=\"md3-trailing-buttons\">\n <ng-content select=\"[md3-search-trailing]\"></ng-content>\n </div>\n </div>\n </div>\n } @else if (hasLogo()) {\n <div class=\"md3-app-bar-logo\" [class.md3-center]=\"centerAligned()\">\n <ng-content select=\"[md3-app-bar-logo]\"></ng-content>\n </div>\n } @else if (title() || subtitle()) {\n <div class=\"md3-app-bar-title\" [class.md3-center]=\"centerAligned()\">\n @if (title()?.length) {\n <div md3-type-title size=\"large\">{{ title() }}</div>\n }\n @if (subtitle()?.length) {\n <div md3-type-body size=\"small\" emphasized>{{ subtitle() }}</div>\n }\n </div>\n }\n\n <div class=\"md3-app-bar-trailing\">\n <ng-content select=\"[md3-app-bar-trailing]\"></ng-content>\n @if (hasAvatar()) {\n <div class=\"md3-app-bar-avatar\">\n <ng-content select=\"[md3-avatar]\"></ng-content>\n </div>\n }\n </div>\n\n @if ((appBarType() == 'medium' || appBarType() == 'large') && (title() || subtitle())) {\n <div class=\"md3-app-bar-bottom\" [class.md3-center]=\"centerAligned()\">\n <div class=\"md3-app-bar-bottom-content\">\n @if (appBarType() == 'medium') {\n @if (title()?.length) {\n <div md3-type-headline size=\"medium\">{{ title() }}</div>\n }\n @if (subtitle()?.length) {\n <div md3-type-title size=\"small\">{{ subtitle() }}</div>\n }\n }\n @if (appBarType() == 'large') {\n @if (title()?.length) {\n <div md3-type-display size=\"small\">{{ title() }}</div>\n }\n @if (subtitle()?.length) {\n <div md3-type-title size=\"medium\">{{ subtitle() }}</div>\n }\n }\n </div>\n </div>\n }\n</div>\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, ElementRef, HostBinding, inject, input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { IconElement } from '../../common/icon-element';\nimport { Badge } from '../../common/badge';\n\n@Component({\n selector: 'button[md3-nav-item], a[md3-nav-item]',\n exportAs: 'md3NavItem',\n imports: [],\n templateUrl: './navigation-item.html',\n styleUrl: './navigation-item.scss',\n host: {\n '[class.md3-hide-on-collapse]': 'this.hideOnCollapse()',\n },\n hostDirectives: [\n {\n directive: RouterLinkActive,\n inputs: ['routerLinkActiveOptions', 'ariaCurrentWhenActive'],\n }\n ],\n})\nexport class NavigationItem {\n private readonly el = inject(ElementRef<HTMLElement>);\n private routerLinkActive = inject(RouterLinkActive);\n \n public hideOnCollapse = input<boolean, unknown>(false, {\n alias: 'hide-on-collapse',\n transform: booleanAttribute\n });\n\n private icons = contentChildren<IconElement>(IconElement);\n\n public hasIcons = computed(() => this.icons()?.length != 0);\n\n public badge = contentChild<Badge>(Badge);\n\n public get isRouteActive(): boolean {\n return this.routerLinkActive.isActive;\n }\n\n @HostBinding('class.md3-active') get active(): boolean {\n return this.isRouteActive;\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","<div class=\"md3-item-container\">\n @if (hasIcons()) {\n <div class=\"md3-icon-container\">\n <ng-content select=\"[md3-icon-element=active]\"></ng-content>\n <ng-content select=\"[md3-icon-element]\"></ng-content>\n </div>\n }\n <div class=\"md3-label\">\n <ng-content></ng-content>\n </div>\n @if (hasIcons() && badge()) {\n <div class=\"md3-badge-container\" [class.md3-small]=\"badge()?.isSmall()\">\n <ng-content select=\"md3-badge\"></ng-content>\n </div>\n }\n</div>","import { booleanAttribute, Component, ElementRef, inject, input } from '@angular/core';\nimport { TypeLabel } from '../../../../public-api';\n\n@Component({\n selector: 'md3-nav-group',\n imports: [\n TypeLabel,\n ],\n templateUrl: './navigation-group.html',\n styleUrl: './navigation-group.scss',\n host: {\n '[class.md3-hide-on-collapse]': 'hideOnCollapse()',\n },\n})\nexport class NavigationGroup {\n private readonly el = inject(ElementRef<HTMLElement>);\n \n public label = input<string>();\n \n public hideOnCollapse = input<boolean, unknown>(false, {\n alias: 'hide-on-collapse',\n transform: booleanAttribute\n });\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","@if (label()?.length) {\n <div class=\"md3-nav-label\">\n <md3-type-label size=\"large\">{{ label() }}</md3-type-label>\n </div>\n}\n<ng-content select=\"[md3-nav-item]\"></ng-content>","import { Component, ElementRef, Signal, booleanAttribute, computed, contentChild, contentChildren, effect, inject, input, model, signal } from '@angular/core';\nimport { LayoutService } from '../../../foundations/layout.service';\nimport { IconElement } from '../../common/icon-element';\nimport { FloatingActionButton } from '../../buttons/floating-action-button/floating-action-button';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButton } from '../../buttons/icon-button/icon-button';\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\n\ntype ExpandedLayout = 'standard' | 'modal';\ntype CollapsedLayout = 'compact' | 'narrow' | 'hidden';\ntype ContainerStyle = 'none' | 'elevated' | 'divider';\n\n@Component({\n selector: 'md3-navigation-rail',\n imports: [\n IconButton,\n IconElement,\n MaterialIcon,\n ],\n templateUrl: './navigation-rail.html',\n styleUrl: './navigation-rail.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: NavigationRail,\n },\n ],\n host: {\n '[class.md3-expanded]': 'this.expanded()',\n },\n})\nexport class NavigationRail implements ButtonContext {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly layoutService = inject(LayoutService);\n\n public expanded = model(false, {\n alias: 'expanded',\n });\n\n public hideMenuButton = input<boolean, unknown>(false, {\n alias: 'hide-menu-button',\n transform: booleanAttribute\n });\n\n public fullWidthIndicator = input<boolean, unknown>(false, {\n alias: 'full-width-indicator',\n transform: booleanAttribute\n });\n\n public containerStyle = input<ContainerStyle>('none', {\n alias: 'container-style',\n });\n\n public collapsedMode = input<CollapsedLayout>('compact', {\n alias: 'collapsed-layout',\n });\n\n public expandedMode = input<ExpandedLayout>('standard', {\n alias: 'expanded-layout',\n });\n\n private readonly resolvedCollapsedLayout = computed<CollapsedLayout>(() => {\n if (this.layoutService.isCompact()) {\n return 'hidden';\n }\n\n return this.collapsedMode();\n });\n\n private readonly resolvedExpandedLayout = computed<ExpandedLayout>(() => {\n if (this.layoutService.isCompact()) {\n return 'modal';\n }\n\n return this.expandedMode();\n });\n\n private menuIcons = contentChildren<IconElement>(IconElement);\n private floatingActionButton = contentChild<FloatingActionButton>(FloatingActionButton);\n\n public menuExpandIcon = computed(() => this.menuIcons().find((icon) => icon.iconType() == 'expand'));\n public menuCollapseIcon = computed(() => this.menuIcons().find((icon) => icon.iconType() == 'collapse'));\n public hasFab = computed(() => !!this.floatingActionButton());\n \n // context values\n buttonContextSize: Signal<ButtonSize> = signal('small');\n buttonContextExtended: Signal<boolean> = this.expanded;\n\n constructor() {\n effect((onCleanup) => {\n const containerStyle = this.containerStyle();\n if (containerStyle == 'none') {\n return;\n }\n\n const containerClass = 'md3-style-' + containerStyle;\n\n this.element.classList.add(containerClass);\n\n onCleanup(() => {\n this.element.classList.remove(containerClass);\n });\n });\n\n effect((onCleanup) => {\n const collapsed = 'md3-collapsed-' + this.resolvedCollapsedLayout();\n this.element.classList.add(collapsed);\n\n onCleanup(() => {\n this.element.classList.remove(collapsed);\n });\n });\n \n effect((onCleanup) => {\n const expanded = 'md3-expanded-' + this.resolvedExpandedLayout();\n this.element.classList.add(expanded);\n\n onCleanup(() => {\n this.element.classList.remove(expanded);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n public toggle(): void {\n const isExpanded = !this.expanded();\n this.expanded.set(isExpanded);\n }\n\n public collapse(): void {\n this.expanded.set(false);\n }\n\n public expand(): void {\n this.expanded.set(true);\n }\n}","<div class=\"md3-nav-scrim\" (click)=\"collapse()\"></div>\n<div class=\"md3-nav-container\">\n <div class=\"md3-nav-header\" [class.md3-hidden]=\"hideMenuButton() && !hasFab()\">\n @if (!hideMenuButton()) {\n <button md3-icon-button button-type=\"standard\" class=\"md3-menu-button\" (click)=\"toggle()\">\n <ng-content select=\"[md3-icon-element=expand]\"></ng-content>\n @if (!menuExpandIcon()) {\n <md3-icon md3-icon-element md3-menu-expand>menu</md3-icon>\n }\n <ng-content select=\"[md3-icon-element=collapse]\"></ng-content>\n @if (!menuCollapseIcon()) {\n <md3-icon md3-icon-element md3-menu-collapse bi-directional>menu_open</md3-icon>\n }\n </button>\n }\n\n <ng-content select=\"[md3-fab]\"></ng-content>\n </div>\n <div class=\"md3-menu-container md3-scrollable\" [class.md3-full-width-indicator]=\"fullWidthIndicator()\">\n <ng-content select=\"[md3-nav-item], md3-nav-group\"></ng-content>\n </div>\n</div>","import { Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { LayoutService } from '../../../foundations/layout.service';\n\ntype NavigationLayout = 'vertical' | 'horizontal';\n\n@Component({\n selector: 'md3-navigation-bar',\n imports: [\n ],\n templateUrl: './navigation-bar.html',\n styleUrl: './navigation-bar.scss',\n})\nexport class NavigationBar {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly layoutService = inject(LayoutService);\n private readonly resolvedLayout = computed<NavigationLayout>(() => {\n if (this.layoutService.widthClass() === 'compact') {\n return 'vertical';\n }\n\n return 'horizontal';\n });\n\n constructor() {\n effect((onCleanup) => {\n const layout = 'md3-layout-' + this.resolvedLayout();\n this.element.classList.add(layout);\n\n onCleanup(() => {\n this.element.classList.remove(layout);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","<div class=\"md3-navigation-container\">\n <div class=\"md3-menu-container\">\n <ng-content select=\"[md3-nav-item]\"></ng-content>\n </div>\n</div>","import { Component, computed, contentChild, contentChildren, effect, ElementRef, input, signal, Signal, viewChild } from '@angular/core';\nimport { InputElement } from '../common/input-element';\nimport { IconElement } from '../common/icon-element';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent, merge } from 'rxjs';\nimport { IconButton } from '../buttons/icon-button/icon-button';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../types/button-size.type';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'md3-text-field',\n imports: [\n NgClass,\n ],\n templateUrl: './text-field.html',\n styleUrl: './text-field.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: TextField,\n },\n ],\n})\nexport class TextField implements ButtonContext {\n public label = input<string | null>(null, {\n alias: 'label',\n });\n public fieldType = input<'filled' | 'outlined'>('filled', {\n alias: 'field-type',\n });\n public inputCounter = input<boolean | number>(false, {\n alias: 'input-counter',\n });\n public control = input<AbstractControl>(undefined, {\n alias: 'control',\n });\n\n private inputContainer = viewChild<ElementRef>('inputContainer');\n private input = contentChild(InputElement);\n private iconElements = contentChildren(IconElement, { descendants: true });\n private iconButtons = contentChildren(IconButton, { descendants: true });\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n // Tracks the last aria-invalid value this component itself wrote, so\n // hasNativeInputError() can tell a self-authored value apart from one set\n // externally. See hasNativeInputError() for why that distinction matters.\n private lastSyncedAriaInvalid: string | null = null;\n\n public formControl = computed<AbstractControl | undefined>(() => {\n if (this.control()) {\n return this.control();\n }\n\n return this.controlName()?.control;\n });\n\n public inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n public maxLength = computed<number | undefined>(() => {\n const counter = this.inputCounter();\n\n if (!counter || counter === true) {\n return undefined;\n }\n\n return Number(Number(counter).toFixed(0));\n });\n public valueLength = signal(0);\n \n // context values\n buttonContextSize: Signal<ButtonSize> = signal('small');\n\n constructor() {\n effect((onCleanup) => {\n const input = this.input();\n if (!input) {\n return;\n }\n\n const nativeInput = input.nativeElement;\n const isTextarea = nativeInput.tagName.toLowerCase() === 'textarea';\n \n nativeInput.setAttribute('placeholder', '');\n this.syncNativeInputState(nativeInput);\n\n if (isTextarea) {\n nativeInput.setAttribute('rows', '1');\n }\n\n const inputEvents = merge(\n fromEvent(nativeInput, 'input'),\n fromEvent(nativeInput, 'change'),\n fromEvent(nativeInput, 'blur'),\n fromEvent(nativeInput, 'invalid'),\n ).subscribe(() => {\n this.syncNativeInputState(nativeInput);\n\n if (isTextarea) {\n nativeInput.style.height = 'auto';\n nativeInput.style.height = nativeInput.scrollHeight + 'px';\n }\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => this.syncNativeInputState(nativeInput));\n observer?.observe(nativeInput, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'disabled', 'maxlength', 'minlength', 'pattern', 'required'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncControlError(control);\n\n const controlEvents = control.events.subscribe(() => this.syncControlError(control));\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n const container = this.inputContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n const hasLeading: boolean = this.iconElements().some(i => i.iconType() === 'leading') ?? false;\n const hasTrailing: boolean = (this.iconElements().some(i => i.iconType() === 'trailing') || !!this.iconButtons().length) ?? false;\n\n container.classList.toggle('md3-has-leading-icon', hasLeading);\n container.classList.toggle('md3-has-trailing-icon', hasTrailing);\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.valueLength.set(input.value.length);\n this.nativeInputError.set(this.hasNativeInputError(input));\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n const ariaInvalid = input.getAttribute('aria-invalid');\n\n // aria-invalid is also written by syncAriaInvalidAttribute() below,\n // based on this very computation. Without excluding our own last\n // write, a validity error that gets flagged once can never clear:\n // the native 'input'/'change' handler would keep reading back the\n // (still-true, self-authored) attribute from the previous cycle\n // before the effect that's about to correct it has had a chance to\n // run. Comparing against lastSyncedAriaInvalid means only a value\n // that didn't come from us — i.e. set externally, such as by a\n // consumer's own validation — counts as an error signal here.\n const externallyFlaggedInvalid = ariaInvalid === 'true' && ariaInvalid !== this.lastSyncedAriaInvalid;\n\n return !input.validity.valid || externallyFlaggedInvalid;\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n if (!input) {\n return;\n }\n\n const value = this.inputError() ? 'true' : 'false';\n this.lastSyncedAriaInvalid = value;\n\n if (input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n}\n","<label #inputContainer class=\"md3-text-field-container\" [ngClass]=\"{\n 'md3-text-field-filled': fieldType() == 'filled',\n 'md3-text-field-outlined': fieldType() == 'outlined',\n}\">\n <ng-content></ng-content>\n <fieldset aria-hidden=\"true\" class=\"md3-text-field-outline\">\n @if (label() && fieldType() == 'outlined') {\n <legend class=\"md3-label-gap\">{{ label() }}</legend>\n }\n </fieldset>\n @if (label()) {\n <label class=\"md3-text-field-label\">{{ label() }}</label>\n }\n <ng-content select=\"[md3-icon-element=leading]\"></ng-content>\n <ng-content select=\"[md3-icon-button], [md3-icon-element=trailing]\"></ng-content>\n @if (fieldType() != 'outlined') {\n <div class=\"md3-text-field-state\"></div>\n }\n</label>\n<div class=\"md3-supporting-text-container\" [class.md3-has-error]=\"inputError()\">\n <ng-content select=\"[md3-supporting-text]\"></ng-content>\n @if (inputCounter()) {\n <div class=\"md3-text-input-counter\">{{ valueLength() + (maxLength() ? \"/\" + maxLength() : \"\") }}</div>\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[md3-supporting-text]',\n host: {\n 'class': 'md3-supporting-text'\n }\n})\nexport class SupportingText {\n}\n","import { DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, Type } from '@angular/core';\nimport { filter, Observable, Subject, take } from 'rxjs';\nimport { DialogConfig, DialogContainer } from '../../interfaces/dialog-config.interface';\n\nexport const DIALOG_DATA = new InjectionToken<unknown>('MD3_DIALOG_DATA');\nexport const DIALOG_CONFIG = new InjectionToken<DialogConfig>('MD3_DIALOG_CONFIG');\nexport const DIALOG_COMPONENT = new InjectionToken<Type<unknown>>('MD3_DIALOG_COMPONENT');\n\nconst DIALOG_EXIT_ANIMATION_FALLBACK_MS = 300;\nconst HIDDEN_CLASS = 'md3-dialog-hidden';\n\nexport class DialogRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private readonly closing = new Subject<void>();\n private closePromise: Promise<void> | null = null;\n private closeStarted = false;\n private closeSettled = false;\n private hidden = false;\n\n /** Shell hosting the dialog: the regular dialog or the full screen one. */\n public dialogInstance?: DialogContainer;\n /**\n * Filled by DialogService after the user component is attached. Keeping the\n * instance here lets callers imperatively update inputs when that is useful.\n */\n public componentInstance?: T;\n\n /** Overlay hosting the dialog, useful to reach the panel and the scrim. */\n public get overlayRef(): OverlayRef {\n return this.cdkRef.overlayRef;\n }\n\n /** Whether the dialog started closing. Such a dialog cannot be hidden or shown anymore. */\n public get isClosing(): boolean {\n return this.closeStarted;\n }\n\n /** Whether the dialog is currently hidden behind another dialog. */\n public get isHidden(): boolean {\n return this.hidden;\n }\n\n constructor(\n private readonly cdkRef: CdkDialogRef<R, T>,\n disableCloseEvents: boolean,\n /** Whether this reference belongs to a full screen dialog. */\n public readonly isFullScreen: boolean = false,\n ) {\n // Closing always goes through this reference so the exit animation can\n // run before the CDK disposes the overlay. Detachments triggered from\n // the outside (navigation, scroll strategy) still settle this ref.\n this.cdkRef.closed.pipe(take(1)).subscribe((result) => this.settle(result));\n\n if (!disableCloseEvents) {\n this.connectCloseEvents();\n }\n }\n\n /** Closes the dialog. The promise resolves once the exit animation is done. */\n public close(result?: R): Promise<void> {\n if (this.closePromise) {\n return this.closePromise;\n }\n\n this.startClosing();\n this.closePromise = this.startCloseAnimation().then(() => this.cdkRef.close(result));\n\n return this.closePromise;\n }\n\n /**\n * Hides the dialog with the closing animation while keeping it alive, so\n * its content, form state and subscriptions survive until show() is called.\n * The promise resolves once the dialog is out of sight.\n */\n public hide(): Promise<void> {\n if (this.hidden || this.closeStarted) {\n return Promise.resolve();\n }\n\n this.hidden = true;\n this.toggleHiddenState(true);\n this.dialogInstance?.setActive(false);\n\n return this.waitForSurfaceAnimation();\n }\n\n /**\n * Brings a hidden dialog back with the opening animation. Focus moves back\n * into the dialog even when it was never hidden, which is what makes it\n * usable again once the dialog above it closes.\n */\n public show(): void {\n if (this.closeStarted) {\n return;\n }\n\n if (this.hidden) {\n this.hidden = false;\n this.toggleHiddenState(false);\n this.dialogInstance?.setActive(true);\n }\n\n this.dialogInstance?.recaptureFocus();\n }\n\n /** Emits when the dialog starts closing, before the exit animation runs. */\n public beforeClosed(): Observable<void> {\n return this.closing.asObservable();\n }\n\n public afterClosed(): Observable<R | undefined> {\n return this.closed.asObservable();\n }\n\n private connectCloseEvents(): void {\n // The CDK config keeps `disableClose` on, so the scrim and Escape key\n // are handled here instead and the dialog can animate out.\n this.cdkRef.backdropClick.pipe(take(1)).subscribe(() => {\n this.cdkRef.containerInstance._closeInteractionType = 'mouse';\n this.close();\n });\n\n this.cdkRef.keydownEvents.pipe(\n filter((event) => event.key === 'Escape' && !hasModifierKey(event)),\n take(1),\n ).subscribe((event) => {\n event.preventDefault();\n this.cdkRef.containerInstance._closeInteractionType = 'keyboard';\n this.close();\n });\n }\n\n private toggleHiddenState(isHidden: boolean): void {\n const overlayRef = this.cdkRef.overlayRef;\n const panel = overlayRef.overlayElement;\n const backdrop = overlayRef.backdropElement;\n\n panel.classList.toggle(HIDDEN_CLASS, isHidden);\n backdrop?.classList.toggle(HIDDEN_CLASS, isHidden);\n\n // `inert` keeps a hidden dialog out of the tab order and away from\n // assistive technology without removing it from the DOM.\n if (isHidden) {\n panel.setAttribute('inert', '');\n } else {\n panel.removeAttribute('inert');\n }\n }\n\n private startClosing(): void {\n if (this.closeStarted) {\n return;\n }\n\n this.closeStarted = true;\n this.closing.next();\n this.closing.complete();\n }\n\n private startCloseAnimation(): Promise<void> {\n const overlayRef = this.cdkRef.overlayRef;\n const wasVisible = !this.hidden;\n\n overlayRef.overlayElement.classList.add('md3-dialog-closing');\n overlayRef.backdropElement?.classList.add('md3-dialog-closing');\n this.dialogInstance?.setActive(false);\n\n // A hidden dialog already played the exit animation, so there is\n // nothing left to transition and it can be disposed right away.\n return wasVisible ? this.waitForSurfaceAnimation() : Promise.resolve();\n }\n\n /** Resolves when the surface finished animating, with a timeout as a safety net. */\n private waitForSurfaceAnimation(): Promise<void> {\n const panel = this.cdkRef.overlayRef.overlayElement;\n const surface = this.dialogInstance?.surfaceElement ?? panel;\n\n return new Promise((resolve) => {\n let isResolved = false;\n let timeoutId = setTimeout(done, DIALOG_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n surface.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === surface) {\n done();\n }\n }\n\n surface.addEventListener('transitionend', onTransitionEnd);\n });\n }\n\n /** Emits the result once the CDK reference is closed. Focus is restored by the container. */\n private settle(result?: R): void {\n if (this.closeSettled) {\n return;\n }\n\n // Covers detachments that did not go through close(), so anything\n // waiting on beforeClosed() is still notified.\n this.startClosing();\n this.closeSettled = true;\n this.closed.next(result);\n this.closed.complete();\n }\n}\n","import { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { Component, ElementRef, inject, signal, viewChild } from '@angular/core';\nimport { DIALOG_CONFIG } from './dialog-ref';\nimport { DialogConfig, DialogContainer } from '../../interfaces/dialog-config.interface';\n\n/**\n * Material 3 dialog shell. It extends the CDK dialog container, so focus\n * trapping, focus restoration and the ARIA attributes are handled by the CDK\n * while this component only owns the MD3 surface and its animation.\n */\n@Component({\n selector: 'md3-dialog',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './dialog.html',\n styleUrl: './dialog.scss',\n})\nexport class Dialog extends CdkDialogContainer implements DialogContainer {\n private readonly surface = viewChild<ElementRef<HTMLElement>>('surface');\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\n\n public get surfaceElement(): HTMLElement | null {\n return this.surface()?.nativeElement ?? null;\n }\n\n /**\n * Started by DialogService, either right after the dialog is created or\n * once the dialog it replaces has had its head start. The animation runs on\n * the next frame so the surface has a real from/to state.\n */\n public startEnterAnimation(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\n }\n\n public setActive(value: boolean): void {\n this.isActive.set(value);\n }\n\n public recaptureFocus(): void {\n this._recaptureFocus();\n }\n}\n","<!-- The role and aria attributes live on the host element, applied by the CDK dialog container. -->\n<section\n #surface\n class=\"md3-dialog-container\"\n [class.md3-active]=\"isActive()\"\n [class.md-scheme-dark]=\"config.scheme == 'dark'\"\n [class.md-scheme-light]=\"config.scheme == 'light'\"\n [attr.dir]=\"config.direction ?? null\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n","import { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AfterViewInit, Component, ElementRef, inject, signal, viewChild } from '@angular/core';\nimport { DIALOG_CONFIG } from '../dialog-ref';\nimport { DialogConfig, DialogContainer } from '../../../interfaces/dialog-config.interface';\nimport { SheetsService } from '../../sheets/sheets.service';\n\n/**\n * Material 3 full screen dialog shell. It covers the viewport and lays its\n * content out like the scaffold does, with a main pane and a side sheet outlet\n * on each side, so side sheets opened while it is up land inside the dialog\n * instead of behind it.\n */\n@Component({\n selector: 'md3-fullscreen-dialog',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './full-screen-dialog.html',\n styleUrl: './full-screen-dialog.scss',\n})\nexport class FullScreenDialog extends CdkDialogContainer implements DialogContainer, AfterViewInit {\n private readonly surface = viewChild<ElementRef<HTMLElement>>('surface');\n private readonly startOutlet = viewChild('startOutlet', { read: CdkPortalOutlet });\n private readonly endOutlet = viewChild('endOutlet', { read: CdkPortalOutlet });\n private readonly sheets = inject(SheetsService);\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\n\n public get surfaceElement(): HTMLElement | null {\n return this.surface()?.nativeElement ?? null;\n }\n\n ngAfterViewInit(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n\n // Taking the outlets over is what sends the next side sheet inside the\n // dialog. The scaffold gets them back when this dialog is destroyed.\n if (startOutlet) {\n this.sheets.registerSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.registerSideSheetOutlet('end', endOutlet);\n }\n }\n\n public override ngOnDestroy(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n\n if (startOutlet) {\n this.sheets.unregisterSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.unregisterSideSheetOutlet('end', endOutlet);\n }\n\n super.ngOnDestroy();\n }\n\n public startEnterAnimation(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\n }\n\n public setActive(value: boolean): void {\n this.isActive.set(value);\n }\n\n public recaptureFocus(): void {\n this._recaptureFocus();\n }\n}\n","<!-- The role and aria attributes live on the host element, applied by the CDK dialog container. -->\n<section\n #surface\n class=\"md3-fullscreen-dialog-container\"\n [class.md3-active]=\"isActive()\"\n [class.md-scheme-dark]=\"config.scheme == 'dark'\"\n [class.md-scheme-light]=\"config.scheme == 'light'\"\n [attr.dir]=\"config.direction ?? null\">\n <div class=\"md3-panes-container md3-scrollable\">\n <!--\n The CDK attaches the dialog content to the first portal outlet of\n this template, so the main pane has to come first. The panes are\n placed by grid area, which makes the DOM order irrelevant visually.\n -->\n <div class=\"md3-pane md3-pane-main\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n <div class=\"md3-pane md3-pane-start\">\n <ng-template #startOutlet cdkPortalOutlet></ng-template>\n </div>\n <div class=\"md3-pane md3-pane-end\">\n <ng-template #endOutlet cdkPortalOutlet></ng-template>\n </div>\n </div>\n</section>\n","import { Dialog as CdkDialog, DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { DOCUMENT } from '@angular/common';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { Dialog } from './dialog';\nimport { FullScreenDialog } from './full-screen-dialog/full-screen-dialog';\nimport { DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, DialogRef } from './dialog-ref';\nimport { DialogConfig, DialogContainer, PreviousDialog } from '../../interfaces/dialog-config.interface';\nimport { FullScreenDialogConfig } from '../../interfaces/full-screen-dialog-config.interface';\n\ninterface ResolvedDialogConfig<D = unknown> extends DialogConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n disableCloseEvents: boolean;\n previousDialog: PreviousDialog;\n role: 'dialog' | 'alertdialog';\n ariaLabel: string;\n ariaLabelledBy: string;\n ariaDescribedBy: string;\n scheme: 'inherit' | 'dark' | 'light';\n direction: null | 'ltr' | 'rtl';\n viewContainerRef?: ViewContainerRef;\n injector: Injector;\n}\n\nconst PANEL_CLASS = 'md3-dialog-panel';\nconst FULL_SCREEN_PANEL_CLASS = 'md3-fullscreen-dialog-panel';\nconst OPENING_CLASS = 'md3-dialog-opening';\nconst SCRIM_KEPT_CLASS = 'md3-dialog-scrim-kept';\nconst SCRIM_INSTANT_CLASS = 'md3-dialog-scrim-instant';\n\n/**\n * Head start given to a dialog that leaves the screen before the dialog taking\n * its place animates in. Long enough to read as one dialog replacing another,\n * short enough to still feel like a single gesture.\n */\nconst DIALOG_HANDOVER_DELAY_MS = 160;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n private readonly cdkDialog = inject(CdkDialog);\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly document = inject(DOCUMENT);\n\n /** Open dialogs, from the first one opened to the one currently on top. */\n private readonly refs: DialogRef<any, any>[] = [];\n\n /**\n * Page scrolling is blocked here instead of per overlay, so stacked dialogs\n * cannot unblock the page while another dialog is still open.\n */\n private readonly scrollBlock = this.overlay.scrollStrategies.block();\n\n /** Element that was focused before the first dialog of the stack opened. */\n private rootTrigger: HTMLElement | null = null;\n\n public get openDialogs(): readonly DialogRef<any, any>[] {\n return this.refs;\n }\n\n /** The full screen dialog that is open, if there is one. */\n public get fullScreenDialog(): DialogRef<any, any> | undefined {\n return this.refs.find((ref) => ref.isFullScreen && !ref.isClosing);\n }\n\n public open<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: DialogConfig<D> = {},\n ): DialogRef<T, R> {\n const dialogConfig = this.mergeConfig(config);\n\n if (this.refs.length === 0) {\n this.rootTrigger = this.getFocusedElement();\n }\n\n // The dialog that is on screen starts leaving first, so the two dialogs\n // never animate on top of each other. A full screen dialog is not part\n // of this: regular dialogs open on top of it and leave it alone.\n const previousRef = this.topRegularRef();\n\n if (previousRef) {\n this.dismissPrevious(previousRef, dialogConfig.previousDialog);\n }\n\n let dialogRef!: DialogRef<T, R>;\n\n const cdkRef = this.cdkDialog.open<R, D, T>(component, {\n // The MD3 shell replaces the default CDK container, so the overlay,\n // focus trap and focus restoration come from the CDK while the shell\n // only renders the surface.\n container: {\n type: Dialog,\n providers: () => [\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n ],\n },\n // These tokens make the dialog controllable from the dynamic\n // component without coupling that component to the service.\n providers: (cdkDialogRef: CdkDialogRef<R, T>) => {\n dialogRef = new DialogRef<T, R>(cdkDialogRef, dialogConfig.disableCloseEvents);\n\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: dialogConfig.data },\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n { provide: DIALOG_COMPONENT, useValue: component },\n ];\n },\n data: dialogConfig.data,\n role: dialogConfig.role,\n ariaModal: true,\n ariaLabel: dialogConfig.ariaLabel || null,\n ariaLabelledBy: dialogConfig.ariaLabelledBy || null,\n ariaDescribedBy: dialogConfig.ariaDescribedBy || null,\n direction: dialogConfig.direction ?? undefined,\n viewContainerRef: dialogConfig.viewContainerRef,\n injector: dialogConfig.injector,\n hasBackdrop: true,\n backdropClass: ['md3-dialog-scrim', OPENING_CLASS],\n panelClass: [PANEL_CLASS, OPENING_CLASS],\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n // Scrolling is blocked by the service for the whole stack.\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n // Focus goes back to whatever opened the stack, even when the dialog\n // that was open underneath has been closed in the meantime.\n restoreFocus: this.rootTrigger ?? true,\n // Scrim and Escape handling lives in DialogRef so the dialog can\n // play its exit animation before the overlay is disposed.\n disableClose: true,\n });\n\n this.registerDialog(dialogRef, cdkRef, dialogConfig, previousRef);\n\n return dialogRef;\n }\n\n /**\n * Opens a dialog that covers the whole screen. Only one can be open at a\n * time, so it replaces whatever is open, and while it is up the side sheet\n * outlets belong to it: side sheets open inside the dialog, not behind it.\n */\n public openFullScreen<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: FullScreenDialogConfig<D> = {},\n ): DialogRef<T, R> {\n const dialogConfig = this.mergeConfig(config);\n\n if (this.refs.length === 0) {\n this.rootTrigger = this.getFocusedElement();\n }\n\n // A full screen dialog is a context of its own: the dialog it replaces\n // and anything stacked on that dialog goes with it.\n const previousRef = this.topRef();\n\n if (previousRef) {\n // Everything open belongs to the context being replaced, including\n // a full screen dialog that is already up.\n this.closeAll();\n }\n\n let dialogRef!: DialogRef<T, R>;\n\n const cdkRef = this.cdkDialog.open<R, D, T>(component, {\n container: {\n type: FullScreenDialog,\n providers: () => [\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n ],\n },\n providers: (cdkDialogRef: CdkDialogRef<R, T>) => {\n dialogRef = new DialogRef<T, R>(cdkDialogRef, dialogConfig.disableCloseEvents, true);\n\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: dialogConfig.data },\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n { provide: DIALOG_COMPONENT, useValue: component },\n ];\n },\n data: dialogConfig.data,\n role: dialogConfig.role,\n ariaModal: true,\n ariaLabel: dialogConfig.ariaLabel || null,\n ariaLabelledBy: dialogConfig.ariaLabelledBy || null,\n ariaDescribedBy: dialogConfig.ariaDescribedBy || null,\n direction: dialogConfig.direction ?? undefined,\n viewContainerRef: dialogConfig.viewContainerRef,\n injector: dialogConfig.injector,\n // The dialog covers the page on its own, so there is nothing left\n // for a scrim to dim.\n hasBackdrop: false,\n panelClass: [FULL_SCREEN_PANEL_CLASS, OPENING_CLASS],\n // The CDK writes the size on the panel and the global strategy then\n // drops its centering margins, which is how the panel ends up\n // covering the whole wrapper.\n width: '100%',\n height: '100%',\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n restoreFocus: this.rootTrigger ?? true,\n disableClose: true,\n });\n\n this.registerDialog(dialogRef, cdkRef, dialogConfig, previousRef);\n\n return dialogRef;\n }\n\n /** Wires a freshly created dialog into the stack and starts its animation. */\n private registerDialog<T, D, R>(\n dialogRef: DialogRef<T, R>,\n cdkRef: CdkDialogRef<R, T>,\n dialogConfig: ResolvedDialogConfig<D>,\n previousRef: DialogRef<any, any> | undefined,\n ): void {\n dialogRef.dialogInstance = cdkRef.containerInstance as unknown as DialogContainer;\n dialogRef.componentInstance = cdkRef.componentInstance ?? undefined;\n\n if (cdkRef.componentRef) {\n this.bindDataToInputs(cdkRef.componentRef, dialogConfig);\n }\n\n this.refs.push(dialogRef);\n this.updateScrollBlock();\n\n if (previousRef) {\n setTimeout(\n () => this.startReplacingAnimation(dialogRef, previousRef),\n DIALOG_HANDOVER_DELAY_MS,\n );\n } else {\n this.startOpenAnimation(dialogRef);\n }\n\n // Restoring starts with the exit animation, so the dialog underneath is\n // already coming back while this one is fading out.\n dialogRef.beforeClosed().subscribe(() => this.restorePreviousDialog(dialogRef));\n dialogRef.afterClosed().subscribe(() => this.removeRef(dialogRef));\n }\n\n /** Closes every open dialog, including the hidden and the full screen ones. */\n public closeAll(): Promise<void> {\n // Closed from the bottom up so a closing dialog never brings back a\n // hidden dialog that is about to close as well.\n return Promise.all([...this.refs].map((ref) => ref.close())).then(() => undefined);\n }\n\n /** Closes the regular dialogs and leaves a full screen dialog alone. */\n private closeRegularDialogs(): Promise<void> {\n const closing = this.refs\n .filter((ref) => !ref.isFullScreen)\n .map((ref) => ref.close());\n\n return Promise.all(closing).then(() => undefined);\n }\n\n private mergeConfig<D>(config: DialogConfig<D>): ResolvedDialogConfig<D> {\n return {\n data: config.data,\n bindDataToInputs: config.bindDataToInputs ?? false,\n disableCloseEvents: config.disableCloseEvents ?? false,\n previousDialog: config.previousDialog ?? 'close',\n role: config.role ?? 'dialog',\n ariaLabel: config.ariaLabel ?? '',\n ariaLabelledBy: config.ariaLabelledBy ?? '',\n ariaDescribedBy: config.ariaDescribedBy ?? '',\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n /**\n * Hides or closes the dialog that is on screen. Its scrim stays up until\n * the dialog taking over is ready for it, so the page behind never\n * brightens between the two dialogs.\n */\n private dismissPrevious(\n previousRef: DialogRef<any, any>,\n behavior: PreviousDialog,\n ): Promise<void> {\n previousRef.overlayRef.backdropElement?.classList.add(SCRIM_KEPT_CLASS);\n\n return behavior === 'hide' ? previousRef.hide() : this.closeRegularDialogs();\n }\n\n private startOpenAnimation(dialogRef: DialogRef<any, any>): void {\n const overlayRef = dialogRef.overlayRef;\n const panel = overlayRef.overlayElement;\n const backdrop = overlayRef.backdropElement;\n\n // The overlay is inserted already rendered. Keep an initial class for\n // one frame, force style calculation, then remove it so CSS transitions\n // have a real from/to state.\n requestAnimationFrame(() => {\n setTimeout(() => {\n panel.getBoundingClientRect();\n panel.classList.remove(OPENING_CLASS);\n backdrop?.classList.remove(OPENING_CLASS);\n }, 100);\n });\n\n dialogRef.dialogInstance?.startEnterAnimation();\n }\n\n /** Opening animation for a dialog that took the place of another one. */\n private startReplacingAnimation(\n dialogRef: DialogRef<any, any>,\n previousRef: DialogRef<any, any>,\n ): void {\n if (dialogRef.isClosing) {\n return;\n }\n\n const panel = dialogRef.overlayRef.overlayElement;\n const backdrop = dialogRef.overlayRef.backdropElement;\n\n this.beginScrimHandover(previousRef, dialogRef);\n\n panel.getBoundingClientRect();\n panel.classList.remove(OPENING_CLASS);\n backdrop?.classList.remove(OPENING_CLASS);\n\n this.endScrimHandover(previousRef, dialogRef);\n\n dialogRef.dialogInstance?.startEnterAnimation();\n }\n\n /** Opening animation for a dialog coming back from behind a closing one. */\n private startRestoringAnimation(\n closingRef: DialogRef<any, any>,\n previousRef: DialogRef<any, any>,\n ): void {\n if (previousRef.isClosing) {\n return;\n }\n\n this.beginScrimHandover(closingRef, previousRef);\n previousRef.show();\n this.endScrimHandover(closingRef, previousRef);\n }\n\n /**\n * Moves both scrims to their new value in a single frame, without a\n * transition on either side, so the dim behind the dialogs never changes.\n */\n private beginScrimHandover(fromRef: DialogRef<any, any>, toRef: DialogRef<any, any>): void {\n const from = fromRef.overlayRef.backdropElement;\n const to = toRef.overlayRef.backdropElement;\n\n // Nothing to hand the scrim over to, e.g. a full screen dialog: the\n // outgoing scrim fades out on its own instead.\n if (!to) {\n return;\n }\n\n from?.classList.add(SCRIM_INSTANT_CLASS);\n from?.classList.remove(SCRIM_KEPT_CLASS);\n to?.classList.add(SCRIM_INSTANT_CLASS);\n }\n\n /** Gives the scrims their transitions back once the handover is painted. */\n private endScrimHandover(fromRef: DialogRef<any, any>, toRef: DialogRef<any, any>): void {\n const from = fromRef.overlayRef.backdropElement;\n const to = toRef.overlayRef.backdropElement;\n\n requestAnimationFrame(() => {\n from?.classList.remove(SCRIM_INSTANT_CLASS);\n to?.classList.remove(SCRIM_INSTANT_CLASS);\n });\n }\n\n private bindDataToInputs<T, D>(\n componentRef: ComponentRef<T>,\n config: ResolvedDialogConfig<D>,\n ): void {\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\n return;\n }\n\n // setInput runs Angular's normal input pipeline, so input setters,\n // transforms, signal inputs, and change detection are handled for us.\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\n componentRef.setInput(inputName, inputValue);\n });\n }\n\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n }\n\n /** Last dialog of the stack that is not closing yet. */\n private topRef(): DialogRef<any, any> | undefined {\n for (let index = this.refs.length - 1; index >= 0; index--) {\n if (!this.refs[index].isClosing) {\n return this.refs[index];\n }\n }\n\n return undefined;\n }\n\n /**\n * Same, without the full screen dialog: it hosts the dialogs opened on top\n * of it, so it is never the one that gets hidden or closed to make room.\n */\n private topRegularRef(): DialogRef<any, any> | undefined {\n const ref = this.topRef();\n\n return ref?.isFullScreen ? undefined : ref;\n }\n\n private restorePreviousDialog(ref: DialogRef<any, any>): void {\n const index = this.refs.indexOf(ref);\n\n if (index < 1) {\n return;\n }\n\n for (let previousIndex = index - 1; previousIndex >= 0; previousIndex--) {\n const previousRef = this.refs[previousIndex];\n\n if (previousRef.isClosing) {\n continue;\n }\n\n // The closing dialog gets the same head start it was given when it\n // took the screen, and keeps the scrim until then. Nothing to keep\n // when the dialog underneath has no scrim of its own.\n if (previousRef.overlayRef.backdropElement) {\n ref.overlayRef.backdropElement?.classList.add(SCRIM_KEPT_CLASS);\n }\n\n setTimeout(\n () => this.startRestoringAnimation(ref, previousRef),\n DIALOG_HANDOVER_DELAY_MS,\n );\n return;\n }\n }\n\n private removeRef(ref: DialogRef<any, any>): void {\n const index = this.refs.indexOf(ref);\n\n if (index === -1) {\n return;\n }\n\n this.refs.splice(index, 1);\n\n if (this.refs.length === 0) {\n this.rootTrigger = null;\n }\n\n this.updateScrollBlock();\n }\n\n private updateScrollBlock(): void {\n if (this.refs.length > 0) {\n this.scrollBlock.enable();\n } else {\n this.scrollBlock.disable();\n }\n }\n\n private getFocusedElement(): HTMLElement | null {\n const activeElement = this.document.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n }\n}\n","import { Component } from '@angular/core';\nimport { TypeHeadline } from '../../../styles/typography/type-headline';\n\n@Component({\n selector: 'md3-dialog-header',\n imports: [\n TypeHeadline\n ],\n templateUrl: './dialog-header.html',\n styleUrl: './dialog-header.scss',\n})\nexport class DialogHeader {\n}\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\n<div class=\"md3-dialog-title\">\n <md3-type-headline size=\"small\">\n <ng-content></ng-content>\n </md3-type-headline>\n</div>","import { Component } from '@angular/core';\nimport { TypeBody } from '../../../styles/typography/type-body';\n\n@Component({\n selector: 'md3-dialog-body',\n imports: [\n TypeBody\n ],\n templateUrl: './dialog-body.html',\n styleUrl: './dialog-body.scss',\n host: {\n 'class': 'md3-scrollable',\n },\n})\nexport class DialogBody {\n}\n","<md3-type-body size=\"medium\">\n <ng-content></ng-content>\n</md3-type-body>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'md3-dialog-actions',\n imports: [],\n templateUrl: './dialog-actions.html',\n styleUrl: './dialog-actions.scss',\n})\nexport class DialogActions {\n}\n","<div class=\"md3-actions\">\n <ng-content></ng-content>\n</div>","import { Component, input, signal, Signal } from '@angular/core';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\n\n/**\n * Header of a full screen dialog: a leading icon button to leave the dialog,\n * the headline, and a trailing action. It sticks to the top of the dialog while\n * the content scrolls underneath.\n */\n@Component({\n selector: 'md3-fullscreen-dialog-header',\n imports: [\n ],\n templateUrl: './full-screen-dialog-header.html',\n styleUrl: './full-screen-dialog-header.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: FullScreenDialogHeader,\n },\n ],\n})\nexport class FullScreenDialogHeader implements ButtonContext {\n // context values\n buttonContextSize: Signal<ButtonSize> = signal('small');\n buttonContextWidth: Signal<IconButtonWidth> = signal('default');\n}\n","<ng-content select=\"[md3-icon-button][md3-header-leading]\"></ng-content>\n<div class=\"md3-title-container\">\n <ng-content></ng-content>\n</div>\n<div class=\"md3-actions-container\">\n <ng-content select=\"[md3-header-trailing]\"></ng-content>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, Type } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { MenuConfig } from '../../interfaces/menu-config.interface';\nimport { Menu } from './menu';\n\nexport const MENU_DATA = new InjectionToken<unknown>('MD3_MENU_DATA');\nexport const MENU_CONFIG = new InjectionToken<MenuConfig>('MD3_MENU_CONFIG');\nexport const MENU_COMPONENT = new InjectionToken<Type<unknown>>('MD3_MENU_COMPONENT');\n\nconst MENU_EXIT_ANIMATION_FALLBACK_MS = 300;\n\nexport class MenuRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private isClosed = false;\n\n public menuInstance?: Menu;\n /**\n * Filled by MenuService after the user component is attached. Keeping the\n * instance here lets callers imperatively update inputs when that is useful.\n */\n public componentInstance?: T;\n\n constructor(\n private readonly overlayRef: OverlayRef,\n private readonly previouslyFocusedElement: HTMLElement | null\n ) {\n }\n\n public close(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.startCloseAnimation().then(() => {\n // Disposing the overlay removes the wrapper, the backdrop, and the\n // dynamically attached content component in one operation.\n this.overlayRef.dispose();\n\n this.previouslyFocusedElement?.focus();\n\n this.closed.next(result);\n this.closed.complete();\n });\n }\n\n private startCloseAnimation(): Promise<void> {\n let panel = this.overlayRef.overlayElement;\n let animatedElement = panel.querySelector<HTMLElement>('.md3-menu-container') ?? panel;\n\n panel.classList.add('md3-menu-closing');\n this.menuInstance?.showMenu(false);\n\n return new Promise((resolve) => {\n let isResolved = false;\n let timeoutId = setTimeout(done, MENU_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n animatedElement.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === animatedElement) {\n done();\n }\n }\n\n animatedElement.addEventListener('transitionend', onTransitionEnd);\n });\n }\n\n public afterClosed(): Observable<R | undefined> {\n return this.closed.asObservable();\n }\n}\n","import { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { AfterContentInit, Component, ComponentRef, effect, ElementRef, inject, Injector, signal, Type, viewChild } from '@angular/core';\nimport { MenuConfig } from '../../interfaces/menu-config.interface';\nimport { MENU_CONFIG } from './menu-ref';\n\n@Component({\n selector: 'md3-menu',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n host: {\n 'class': 'md3-menu-container',\n 'role': 'menu',\n '[class.md3-visible]': 'isVisible()',\n '[class.md3-inactive]': '!isActive()',\n '[class.md-scheme-dark]': 'scheme() == \"dark\"',\n '[class.md-scheme-light]': 'scheme() == \"light\"',\n '[dir]': 'direction()',\n },\n})\nexport class Menu implements AfterContentInit {\n private readonly portalOutlet = viewChild<CdkPortalOutlet>(CdkPortalOutlet);\n\n protected readonly config = inject<MenuConfig>(MENU_CONFIG, { optional: true }) ?? {};\n protected menuColors = signal<'standard' | 'vibrant'>('standard');\n protected isVisible = signal<boolean>(false);\n protected scheme = signal<'inherit' | 'dark' | 'light'>('inherit');\n protected direction = signal<null | 'ltr' | 'rtl'>(null);\n \n public isActive = signal<boolean>(true);\n \n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const color = 'md3-' + this.menuColors();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n\n this.menuColors.set(this.config.menuColors ?? 'standard');\n this.scheme.set(this.config.scheme ?? 'inherit');\n this.direction.set(this.config.direction ?? null);\n }\n\n ngAfterContentInit(): void {\n requestAnimationFrame(() => {\n this.showMenu(true);\n });\n }\n\n public showMenu(value: boolean): void {\n this.isVisible.set(value);\n }\n \n /**\n * The service creates this wrapper first, then calls this method to mount\n * the user supplied component into the dialog container.\n */\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\n const portal = new ComponentPortal(component, null, injector);\n\n return this.portalOutlet()!.attachComponentPortal(portal);\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>","import {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, ElementRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { MenuConfig, MenuPositionOrigin, MenuPositionX, MenuPositionY, MenuScrollStrategy } from '../../interfaces/menu-config.interface';\nimport { MENU_COMPONENT, MENU_CONFIG, MENU_DATA, MenuRef } from './menu-ref';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Menu } from './menu';\nimport { filter, take } from 'rxjs';\n\ninterface ResolvedMenuConfig<D = unknown> extends MenuConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n isSubMenu: boolean;\n menuColors: 'standard' | 'vibrant';\n xPosition: MenuPositionX;\n yPosition: MenuPositionY;\n overlapTrigger: boolean;\n offsetX: number;\n offsetY: number;\n viewportMargin: number;\n positions?: ConnectedPosition[];\n scrollStrategy: MenuScrollStrategy;\n scheme: 'inherit' | 'dark' | 'light';\n direction: null | 'ltr' | 'rtl';\n viewContainerRef?: ViewContainerRef;\n injector: Injector;\n}\n\ninterface InternalMenuConfig<D = unknown> extends MenuConfig<D> {\n isSubMenu?: boolean;\n}\n\ninterface CreatedMenuOverlay {\n overlayRef: OverlayRef;\n positionStrategy?: FlexibleConnectedPositionStrategy;\n origin: ResolvedMenuOrigin;\n}\n\ntype ResolvedMenuOrigin = Element | { height?: number; width?: number; x: number; y: number };\ntype ClientRect = Pick<DOMRectReadOnly, 'bottom' | 'height' | 'left' | 'right' | 'top' | 'width' | 'x' | 'y'>;\ntype SubMenuPositionX = Extract<MenuPositionX, 'before' | 'after'>;\ntype SubMenuVerticalAlignment = 'top' | 'bottom';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MenuService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly document = inject(DOCUMENT);\n\n public open<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: MenuConfig<D> = {},\n ): MenuRef<T, R> {\n const menuConfig = this.mergeConfig(config);\n const previouslyFocusedElement = this.getFocusedElement();\n const triggerElement = this.resolveTriggerElement(menuConfig.origin, previouslyFocusedElement);\n const menuOverlay = this.createOverlay(menuConfig, previouslyFocusedElement);\n const overlayRef = menuOverlay.overlayRef;\n const menuRef = new MenuRef<T, R>(\n overlayRef,\n previouslyFocusedElement\n );\n const injector = this.createInjector(component, menuConfig, menuRef);\n\n // The overlay hosts the MD3 menu shell. The shell is responsible for\n // the surface markup and receives the dynamic content through a portal.\n const menuPortal = new ComponentPortal(\n Menu,\n menuConfig.viewContainerRef ?? null,\n injector,\n );\n const menuComponentRef = overlayRef.attach(menuPortal);\n const contentComponentRef = menuComponentRef.instance.attachContent(component, injector);\n\n this.bindDataToInputs(contentComponentRef, menuConfig);\n this.flipPositionIfPushBreaksAnchor(menuOverlay, menuConfig);\n menuRef.componentInstance = contentComponentRef.instance;\n menuRef.menuInstance = menuComponentRef.instance;\n this.bindTriggerActiveState(triggerElement, overlayRef, menuRef);\n this.startOpenAnimation(overlayRef);\n this.connectCloseEvents(overlayRef, menuRef);\n\n return menuRef;\n }\n\n public openSubMenu<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: MenuConfig<D> = {},\n ): MenuRef<T, R> {\n const xPosition = this.getSubMenuXPosition(config.xPosition);\n const yPosition = config.yPosition ?? 'below';\n const offsetX = config.offsetX ?? 0;\n const offsetY = config.offsetY ?? 0;\n\n const subMenuConfig: InternalMenuConfig<D> = {\n ...config,\n isSubMenu: true,\n xPosition,\n yPosition,\n overlapTrigger: config.overlapTrigger ?? true,\n offsetX,\n offsetY,\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n };\n\n return this.open<T, D, R>(component, subMenuConfig);\n }\n\n private mergeConfig<D>(config: MenuConfig<D>): ResolvedMenuConfig<D> {\n const viewportMargin = this.getViewportMargin(config.viewportMargin);\n\n return {\n data: config.data,\n bindDataToInputs: config.bindDataToInputs ?? false,\n isSubMenu: (config as InternalMenuConfig<D>).isSubMenu ?? false,\n menuColors: config.menuColors ?? 'standard',\n xPosition: config.xPosition ?? 'start',\n yPosition: config.yPosition ?? 'below',\n overlapTrigger: config.overlapTrigger ?? false,\n offsetX: config.offsetX ?? 0,\n offsetY: config.offsetY ?? 4,\n viewportMargin,\n positions: config.positions,\n scrollStrategy: config.scrollStrategy ?? 'reposition',\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n private createOverlay(\n config: ResolvedMenuConfig,\n fallbackOrigin: HTMLElement | null,\n ): CreatedMenuOverlay {\n const origin = this.resolveOrigin(config.origin, fallbackOrigin);\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(origin)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(true)\n .withPush(true)\n .withViewportMargin(config.viewportMargin)\n .withPositions(config.positions ?? this.getInitialConnectedPositions(config))\n .withTransformOriginOn('.md3-menu-container');\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['md3-menu-scrim', 'md3-menu-opening'],\n panelClass: ['md3-menu-panel', 'md3-menu-opening'],\n positionStrategy,\n scrollStrategy: this.getScrollStrategy(config.scrollStrategy),\n });\n\n return {\n overlayRef: this.overlay.create(overlayConfig),\n positionStrategy: config.positions ? undefined : positionStrategy,\n origin,\n };\n }\n\n private bindTriggerActiveState<T, R>(\n triggerElement: HTMLElement | null,\n overlayRef: OverlayRef,\n menuRef: MenuRef<T, R>,\n ): void {\n if (!triggerElement) {\n return;\n }\n\n const removeActiveClass = () => triggerElement.classList.remove('md3-menu-active');\n\n triggerElement.classList.add('md3-menu-active');\n menuRef.afterClosed().pipe(take(1)).subscribe(removeActiveClass);\n overlayRef.detachments().pipe(take(1)).subscribe(removeActiveClass);\n }\n\n private resolveOrigin(\n origin: MenuPositionOrigin | undefined,\n fallbackOrigin: HTMLElement | null,\n ): ResolvedMenuOrigin {\n const resolvedOrigin = origin ?? fallbackOrigin;\n\n if (resolvedOrigin) {\n if (this.isMouseEvent(resolvedOrigin)) {\n if (resolvedOrigin.currentTarget instanceof HTMLElement) {\n return resolvedOrigin.currentTarget;\n }\n\n return {\n x: resolvedOrigin.clientX,\n y: resolvedOrigin.clientY,\n };\n }\n\n if (this.isElementRef(resolvedOrigin)) {\n return resolvedOrigin.nativeElement;\n }\n\n return resolvedOrigin as ResolvedMenuOrigin;\n }\n\n const viewport = this.document.defaultView;\n\n return {\n x: (viewport?.innerWidth ?? 0) / 2,\n y: (viewport?.innerHeight ?? 0) / 2,\n };\n }\n\n private resolveTriggerElement(\n origin: MenuPositionOrigin | undefined,\n fallbackOrigin: HTMLElement | null,\n ): HTMLElement | null {\n const resolvedOrigin = origin ?? fallbackOrigin;\n\n if (!resolvedOrigin) {\n return null;\n }\n\n if (this.isMouseEvent(resolvedOrigin)) {\n return resolvedOrigin.currentTarget instanceof HTMLElement\n ? resolvedOrigin.currentTarget\n : null;\n }\n\n if (this.isElementRef(resolvedOrigin)) {\n return resolvedOrigin.nativeElement;\n }\n\n return resolvedOrigin instanceof HTMLElement ? resolvedOrigin : null;\n }\n\n private flipPositionIfPushBreaksAnchor(\n menuOverlay: CreatedMenuOverlay,\n config: ResolvedMenuConfig,\n ): void {\n if (!menuOverlay.positionStrategy) {\n return;\n }\n\n menuOverlay.overlayRef.updatePosition();\n\n const fallbackPosition = this.getFallbackPositionAfterPush(\n config,\n this.getOriginClientRect(menuOverlay.origin),\n menuOverlay.overlayRef.overlayElement.getBoundingClientRect(),\n );\n\n if (!fallbackPosition) {\n return;\n }\n\n menuOverlay.positionStrategy.withPositions([fallbackPosition]);\n menuOverlay.overlayRef.updatePosition();\n }\n\n private getInitialConnectedPositions(config: ResolvedMenuConfig): ConnectedPosition[] {\n return [this.getPreferredConnectedPosition(config)];\n }\n\n private getPreferredConnectedPosition(config: ResolvedMenuConfig): ConnectedPosition {\n if (config.isSubMenu) {\n return this.createSubMenuConnectedPosition(\n this.getSubMenuXPosition(config.xPosition),\n this.getSubMenuVerticalAlignment(config.yPosition),\n config.offsetX,\n config.offsetY,\n );\n }\n\n return this.createConnectedPosition(config.xPosition, config.yPosition, config);\n }\n\n private getFallbackPositionAfterPush(\n config: ResolvedMenuConfig,\n originRect: ClientRect,\n overlayRect: ClientRect,\n ): ConnectedPosition | null {\n const xPosition = this.shouldFlipXPosition(\n config,\n originRect,\n overlayRect,\n )\n ? this.getFallbackXPosition(config.xPosition)\n : config.xPosition;\n const yPosition = this.shouldFlipYPosition(\n config,\n originRect,\n overlayRect,\n )\n ? this.getFallbackYPosition(config.yPosition)\n : config.yPosition;\n\n if (xPosition === config.xPosition && yPosition === config.yPosition) {\n return null;\n }\n\n return this.getPreferredConnectedPosition({\n ...config,\n xPosition,\n yPosition,\n });\n }\n\n private shouldFlipXPosition(\n config: ResolvedMenuConfig,\n originRect: ClientRect,\n overlayRect: ClientRect,\n ): boolean {\n const tolerance = config.viewportMargin;\n\n switch (config.xPosition) {\n case 'before':\n return overlayRect.right > originRect.left + tolerance;\n\n case 'after':\n return overlayRect.left < originRect.right - tolerance;\n\n case 'start':\n return originRect.left < overlayRect.left - tolerance\n || originRect.left > overlayRect.right + tolerance;\n\n case 'end':\n return originRect.right < overlayRect.left - tolerance\n || originRect.right > overlayRect.right + tolerance;\n\n case 'center':\n default:\n return false;\n }\n }\n\n private shouldFlipYPosition(\n config: ResolvedMenuConfig,\n originRect: ClientRect,\n overlayRect: ClientRect,\n ): boolean {\n const tolerance = config.viewportMargin;\n\n if (config.isSubMenu) {\n const anchorY = config.yPosition === 'above' ? originRect.bottom : originRect.top;\n\n return anchorY < overlayRect.top - tolerance\n || anchorY > overlayRect.bottom + tolerance;\n }\n\n if (config.overlapTrigger) {\n const anchorY = config.yPosition === 'above' ? originRect.bottom : originRect.top;\n\n return anchorY < overlayRect.top - tolerance\n || anchorY > overlayRect.bottom + tolerance;\n }\n\n switch (config.yPosition) {\n case 'above':\n return overlayRect.bottom > originRect.top + tolerance;\n\n case 'below':\n return overlayRect.top < originRect.bottom - tolerance;\n\n case 'center':\n default:\n return false;\n }\n }\n\n private createConnectedPosition(\n xPosition: MenuPositionX,\n yPosition: MenuPositionY,\n config: ResolvedMenuConfig,\n ): ConnectedPosition {\n const horizontal = this.getHorizontalPosition(xPosition);\n const vertical = this.getVerticalPosition(yPosition, config.overlapTrigger);\n\n return {\n ...horizontal,\n ...vertical,\n offsetX: config.offsetX,\n offsetY: this.getOffsetY(yPosition, config),\n panelClass: [\n 'md3-menu-position-' + xPosition,\n 'md3-menu-position-' + yPosition,\n ],\n };\n }\n\n private createSubMenuConnectedPosition(\n xPosition: SubMenuPositionX,\n yAlignment: SubMenuVerticalAlignment,\n offsetX: number,\n offsetY: number,\n ): ConnectedPosition {\n const horizontal = this.getHorizontalPosition(xPosition);\n const yPosition = yAlignment === 'top' ? 'below' : 'above';\n\n return {\n ...horizontal,\n originY: yAlignment,\n overlayY: yAlignment,\n offsetX: this.getSubMenuOffsetX(xPosition, offsetX),\n offsetY: this.getSubMenuOffsetY(yAlignment, offsetY),\n panelClass: [\n 'md3-menu-position-' + xPosition,\n 'md3-menu-position-' + yPosition,\n 'md3-menu-position-submenu',\n ],\n };\n }\n\n private getHorizontalPosition(position: MenuPositionX): Pick<ConnectedPosition, 'originX' | 'overlayX'> {\n switch (position) {\n case 'end':\n return {\n originX: 'end',\n overlayX: 'end',\n };\n\n case 'before':\n return {\n originX: 'start',\n overlayX: 'end',\n };\n\n case 'after':\n return {\n originX: 'end',\n overlayX: 'start',\n };\n\n case 'center':\n return {\n originX: 'center',\n overlayX: 'center',\n };\n\n case 'start':\n default:\n return {\n originX: 'start',\n overlayX: 'start',\n };\n }\n }\n\n private getVerticalPosition(\n position: MenuPositionY,\n overlapTrigger: boolean,\n ): Pick<ConnectedPosition, 'originY' | 'overlayY'> {\n switch (position) {\n case 'above':\n return {\n originY: overlapTrigger ? 'bottom' : 'top',\n overlayY: 'bottom',\n };\n\n case 'center':\n return {\n originY: 'center',\n overlayY: 'center',\n };\n\n case 'below':\n default:\n return {\n originY: overlapTrigger ? 'top' : 'bottom',\n overlayY: 'top',\n };\n }\n }\n\n private getFallbackXPosition(position: MenuPositionX): MenuPositionX {\n switch (position) {\n case 'start':\n return 'end';\n\n case 'end':\n return 'start';\n\n case 'before':\n return 'after';\n\n case 'after':\n return 'before';\n\n case 'center':\n default:\n return 'center';\n }\n }\n\n private getSubMenuXPosition(position: MenuPositionX | undefined): SubMenuPositionX {\n return position === 'before' ? 'before' : 'after';\n }\n\n private getFallbackYPosition(position: MenuPositionY): MenuPositionY {\n switch (position) {\n case 'above':\n return 'below';\n\n case 'below':\n return 'above';\n\n case 'center':\n default:\n return 'center';\n }\n }\n\n private getSubMenuVerticalAlignment(position: MenuPositionY): SubMenuVerticalAlignment {\n return position === 'above' ? 'bottom' : 'top';\n }\n\n private getOriginClientRect(origin: ResolvedMenuOrigin): ClientRect {\n if ('getBoundingClientRect' in origin) {\n return origin.getBoundingClientRect();\n }\n\n return {\n x: origin.x,\n y: origin.y,\n top: origin.y,\n right: origin.x,\n bottom: origin.y,\n left: origin.x,\n width: 0,\n height: 0,\n };\n }\n\n private getViewportMargin(configuredMargin: number | undefined): number {\n const minimumMargin = this.getHalfEmInPixels();\n\n return Math.max(configuredMargin ?? minimumMargin, minimumMargin);\n }\n\n private getHalfEmInPixels(): number {\n const viewport = this.document.defaultView;\n const fontSize = viewport?.getComputedStyle(this.document.documentElement).fontSize;\n const pixels = fontSize ? Number.parseFloat(fontSize) * 0.5 : 8;\n\n return Number.isFinite(pixels) ? pixels : 8;\n }\n\n private getOffsetY(position: MenuPositionY, config: ResolvedMenuConfig): number {\n if (config.overlapTrigger || position === 'center') {\n return 0;\n }\n\n return position === 'above'\n ? config.offsetY * -1\n : config.offsetY;\n }\n\n private getSubMenuOffsetX(position: SubMenuPositionX, offsetX: number): number {\n return position === 'before' ? offsetX * -1 : offsetX;\n }\n\n private getSubMenuOffsetY(\n alignment: SubMenuVerticalAlignment,\n offsetY: number,\n ): number {\n return alignment === 'bottom' ? offsetY * -1 : offsetY;\n }\n\n private getScrollStrategy(scrollStrategy: MenuScrollStrategy) {\n switch (scrollStrategy) {\n case 'block':\n return this.overlay.scrollStrategies.block();\n\n case 'close':\n return this.overlay.scrollStrategies.close();\n\n case 'noop':\n return this.overlay.scrollStrategies.noop();\n\n case 'reposition':\n default:\n return this.overlay.scrollStrategies.reposition();\n }\n }\n\n private isMouseEvent(origin: MenuPositionOrigin | HTMLElement): origin is MouseEvent {\n return typeof MouseEvent !== 'undefined' && origin instanceof MouseEvent;\n }\n\n private isElementRef(origin: Exclude<MenuPositionOrigin, MouseEvent>): origin is ElementRef<HTMLElement> {\n return typeof origin === 'object'\n && origin !== null\n && 'nativeElement' in origin\n && origin.nativeElement instanceof HTMLElement;\n }\n\n private startOpenAnimation(overlayRef: OverlayRef): void {\n const panel = overlayRef.overlayElement;\n const backdrop = overlayRef.backdropElement;\n\n // The overlay is inserted already rendered. Keep an initial class for\n // one frame, force style calculation, then remove it so CSS transitions\n // have a real from/to state.\n requestAnimationFrame(() => {\n setTimeout(() => {\n panel.getBoundingClientRect();\n panel.classList.remove('md3-menu-opening');\n backdrop?.classList.remove('md3-menu-opening');\n }, 100);\n });\n }\n\n private createInjector<T, D, R>(\n component: Type<T>,\n config: ResolvedMenuConfig<D>,\n menuRef: MenuRef<T, R>,\n ): Injector {\n return Injector.create({\n parent: config.injector,\n providers: [\n // These tokens make the menu controllable from the dynamic\n // component without coupling that component to the service.\n { provide: MenuRef, useValue: menuRef },\n { provide: MENU_DATA, useValue: config.data },\n { provide: MENU_CONFIG, useValue: config },\n { provide: MENU_COMPONENT, useValue: component },\n ],\n });\n }\n\n private bindDataToInputs<T, D>(\n componentRef: ComponentRef<T>,\n config: ResolvedMenuConfig<D>,\n ): void {\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\n return;\n }\n\n // setInput runs Angular's normal input pipeline, so input setters,\n // transforms, signal inputs, and change detection are handled for us.\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\n componentRef.setInput(inputName, inputValue);\n });\n }\n\n private connectCloseEvents<T, R>(\n overlayRef: OverlayRef,\n menuRef: MenuRef<T, R>,\n ): void {\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => menuRef.close());\n overlayRef.keydownEvents().pipe(\n filter((event) => event.key === 'Escape'),\n take(1),\n ).subscribe(() => menuRef.close());\n }\n\n private getFocusedElement(): HTMLElement | null {\n const activeElement = this.document.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n }\n}\n","import { booleanAttribute, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'md3-menu-group',\n imports: [],\n templateUrl: './menu-group.html',\n styleUrl: './menu-group.scss',\n host: {\n 'role': 'group',\n },\n})\nexport class MenuGroup {\n}\n","<ng-content></ng-content>\n","import { Component, contentChildren, ElementRef, input, model } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { IconElement } from '../../common/icon-element';\nimport { InputElement } from '../../common/input-element';\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\nimport { TypeBody, TypeLabel, TypeTitle } from '../../../../public-api';\n\n@Component({\n selector: 'button[md3-menu-item], a[md3-menu-item]',\n imports: [\n InputElement,\n StateComponent,\n MaterialIcon,\n TypeLabel,\n TypeBody,\n TypeTitle,\n ],\n templateUrl: './menu-item.html',\n styleUrl: './menu-item.scss',\n host: {\n '(click)': 'onHostClick()',\n },\n})\nexport class MenuItem {\n public label = input<string>('', {\n alias: 'label',\n });\n\n public supportingText = input<string | null>(null, {\n alias: 'supporting-text',\n });\n\n public trailingText = input<string | null>(null, {\n alias: 'trailing-text',\n });\n\n public selected = model<boolean | null>(null, {\n alias: 'selected'\n });\n\n private iconElements = contentChildren(IconElement);\n \n public get leading(): IconElement | undefined {\n return this.iconElements().find((icon) => icon.iconType() === 'leading');\n }\n\n public get trailing(): IconElement | undefined {\n return this.iconElements().find((icon) => icon.iconType() === 'trailing');\n }\n\n public get showLeadingIcon(): boolean {\n return (!!this.leading && !this.selected()) || this.selected() == true;\n }\n\n public onHostClick(): void {\n const selected = this.selected();\n if (selected === null) {\n return;\n }\n\n this.selected.set(!selected);\n }\n\n constructor(private el: ElementRef<HTMLElement>) {\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","@if (selected() !== null) {\n <input type=\"checkbox\" md3-input-element [checked]=\"selected()\">\n}\n\n<div class=\"md3-menu-item-container\" md3-state-component>\n <div class=\"md3-menu-item-leading\" [class.has-icon]=\"showLeadingIcon\">\n <ng-content select=\"[md3-icon-element=leading]\"></ng-content>\n @if (!leading) {\n <md3-icon>check</md3-icon>\n }\n </div>\n\n <div class=\"md3-menu-item-content\">\n <md3-type-label size=\"large\">{{ label() }}</md3-type-label>\n @if (supportingText()?.length) {\n <md3-type-body size=\"small\">{{ supportingText() }}</md3-type-body>\n }\n </div>\n\n <div class=\"md3-menu-item-trailing\">\n <ng-content select=\"md3-badge\"></ng-content>\n @if (trailingText()?.length) {\n <md3-type-title size=\"small\">{{ trailingText() }}</md3-type-title>\n }\n <ng-content select=\"[md3-icon-element=trailing]\"></ng-content>\n </div>\n</div>","import { Component, input, signal, Signal } from '@angular/core';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { TypeTitle } from '../../../styles/typography/type-title';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\n\n@Component({\n selector: 'md3-side-sheet-header',\n imports: [\n TypeTitle\n ],\n templateUrl: './side-sheet-header.html',\n styleUrl: './side-sheet-header.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: SideSheetHeader,\n },\n ],\n})\nexport class SideSheetHeader implements ButtonContext {\n public title = input<string>('', {\n alias: 'title',\n });\n \n // context values\n buttonContextSize: Signal<ButtonSize> = signal(\"small\");\n buttonContextWidth: Signal<IconButtonWidth> = signal(\"default\");\n}\n","<ng-content select=\"[md3-icon-button][leading]\"></ng-content>\n<div class=\"md3-title-container\">\n <md3-type-title size=\"large\">{{ title() }}</md3-type-title>\n</div>\n<ng-content select=\"[md3-icon-button][trailing]\"></ng-content>","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'md3-side-sheet-body',\n imports: [],\n templateUrl: './side-sheet-body.html',\n styleUrl: './side-sheet-body.scss',\n host: {\n class: 'md3-scrollable',\n },\n hostDirectives: [\n CdkScrollable\n ],\n})\nexport class SideSheetBody {\n}\n","<ng-content></ng-content>","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'md3-side-sheet-actions',\n imports: [],\n templateUrl: './side-sheet-actions.html',\n styleUrl: './side-sheet-actions.scss',\n host: {\n '[class.md3-style-divider]': 'showDivider()',\n },\n})\nexport class SideSheetActions {\n public showDivider = input<boolean, unknown>(false, {\n alias: 'show-divider',\n transform: booleanAttribute\n });\n}\n","<ng-content></ng-content>","import { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SnackbarConfig } from '../../interfaces/snackbar-config.interface';\nimport { Snackbar } from './snackbar';\n\nexport const SNACKBAR_MESSAGE = new InjectionToken<string | TemplateRef<unknown>>('MD3_SNACKBAR_MESSAGE');\nexport const SNACKBAR_ACTION_LABEL = new InjectionToken<string | undefined>('MD3_SNACKBAR_ACTION_LABEL');\nexport const SNACKBAR_CONFIG = new InjectionToken<SnackbarConfig>('MD3_SNACKBAR_CONFIG');\n\nconst SNACKBAR_EXIT_ANIMATION_FALLBACK_MS = 300;\n\nexport type SnackbarDismissReason = 'timeout' | 'action' | 'manual';\n\nexport interface SnackbarDismiss<R = unknown> {\n reason: SnackbarDismissReason;\n result?: R;\n}\n\nexport class SnackbarRef<R = unknown> {\n private readonly closed = new Subject<SnackbarDismiss<R>>();\n private readonly actionTriggered = new Subject<void>();\n private isClosed = false;\n private overlayRef?: OverlayRef;\n private timeoutId?: ReturnType<typeof setTimeout>;\n private timerStartedAt = 0;\n private remainingMs: number;\n\n public snackbarInstance?: Snackbar;\n\n constructor(private readonly duration: number) {\n this.remainingMs = duration;\n }\n\n /**\n * Called by SnackbarService once this snackbar is dequeued and actually\n * attached to the overlay. Queued-but-never-shown refs never get one, and\n * close() below handles that case without trying to animate or dispose.\n */\n public attachOverlay(overlayRef: OverlayRef): void {\n this.overlayRef = overlayRef;\n }\n\n public startTimer(): void {\n if (this.isClosed || this.duration <= 0 || this.timeoutId) {\n return;\n }\n\n this.timerStartedAt = Date.now();\n this.timeoutId = setTimeout(() => this.close('timeout'), this.remainingMs);\n }\n\n public pauseTimer(): void {\n if (!this.timeoutId) {\n return;\n }\n\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n this.remainingMs = Math.max(0, this.remainingMs - (Date.now() - this.timerStartedAt));\n }\n\n public resumeTimer(): void {\n if (this.timeoutId || this.isClosed || this.duration <= 0 || this.remainingMs <= 0) {\n return;\n }\n\n this.startTimer();\n }\n\n public triggerAction(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.actionTriggered.next();\n this.close('action', result);\n }\n\n public close(reason: SnackbarDismissReason = 'manual', result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n\n if (!this.overlayRef) {\n // Still sitting in the queue — nothing was ever attached, so\n // there's nothing to animate or dispose.\n this.closed.next({ reason, result });\n this.closed.complete();\n this.actionTriggered.complete();\n return;\n }\n\n this.startCloseAnimation().then(() => {\n this.overlayRef!.dispose();\n this.closed.next({ reason, result });\n this.closed.complete();\n this.actionTriggered.complete();\n });\n }\n\n public onAction(): Observable<void> {\n return this.actionTriggered.asObservable();\n }\n\n public afterDismissed(): Observable<SnackbarDismiss<R>> {\n return this.closed.asObservable();\n }\n\n private startCloseAnimation(): Promise<void> {\n const panel = this.overlayRef!.overlayElement;\n const animatedElement = panel.querySelector<HTMLElement>('.md3-snackbar-container') ?? panel;\n\n panel.classList.add('md3-snackbar-closing');\n this.snackbarInstance?.isActive.set(false);\n\n return new Promise((resolve) => {\n let isResolved = false;\n const timeoutId = setTimeout(done, SNACKBAR_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n animatedElement.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === animatedElement) {\n done();\n }\n }\n\n animatedElement.addEventListener('transitionend', onTransitionEnd);\n });\n }\n}\n","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, ElementRef, HostListener, OnDestroy, OnInit, Signal, TemplateRef, effect, inject, signal } from '@angular/core';\nimport { Button } from '../buttons/button/button';\nimport { IconButton } from '../buttons/icon-button/icon-button';\nimport { MaterialIcon } from '../common/material-icon/material-icon';\nimport { LayoutService } from '../../foundations/layout.service';\nimport { SnackbarConfig } from '../../interfaces/snackbar-config.interface';\nimport { SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, SnackbarRef } from './snackbar-ref';\nimport { IconElement, TypeBody } from '../../../public-api';\n\n@Component({\n selector: 'md3-snackbar',\n imports: [\n NgClass,\n NgTemplateOutlet,\n TypeBody,\n Button,\n IconButton,\n MaterialIcon,\n IconElement,\n ],\n templateUrl: './snackbar.html',\n styleUrl: './snackbar.scss',\n})\nexport class Snackbar implements OnInit, OnDestroy {\n private readonly snackbarRef = inject(SnackbarRef, { optional: true });\n private readonly layout = inject(LayoutService);\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<SnackbarConfig>(SNACKBAR_CONFIG, { optional: true }) ?? {};\n protected readonly message = inject<string | TemplateRef<unknown>>(SNACKBAR_MESSAGE, { optional: true }) ?? '';\n protected readonly actionLabel = inject<string | undefined>(SNACKBAR_ACTION_LABEL, { optional: true });\n\n protected get role(): string {\n return this.config.politeness === 'assertive' ? 'alert' : 'status';\n }\n\n protected get isTemplateMessage(): boolean {\n return this.message instanceof TemplateRef;\n }\n\n protected get templateMessage(): TemplateRef<unknown> {\n return this.message as TemplateRef<unknown>;\n }\n\n protected get textMessage(): string {\n return this.message as string;\n }\n\n protected get templateContext(): unknown {\n return this.config.data ?? null;\n }\n\n protected get isStacked(): boolean {\n return !!this.config.stackedAction && !!this.actionLabel;\n }\n\n constructor(private readonly el: ElementRef<HTMLElement>) {\n effect(() => {\n const inset = this.layout.bottomInset() + (this.config.bottomOffset ?? 0);\n this.el.nativeElement.style.setProperty('--md3-snackbar-bottom-inset', `${inset}px`);\n });\n\n effect(() => {\n if (this.layout.isCompact()) {\n this.el.nativeElement.classList.add('md3-full-width');\n } else {\n this.el.nativeElement.classList.remove('md3-full-width');\n }\n });\n }\n\n @HostListener('pointerenter')\n @HostListener('focusin')\n protected onInteractionStart(): void {\n this.snackbarRef?.pauseTimer();\n }\n\n @HostListener('pointerleave')\n @HostListener('focusout')\n protected onInteractionEnd(): void {\n this.snackbarRef?.resumeTimer();\n }\n\n ngOnInit(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\n\n this.snackbarRef?.startTimer();\n }\n\n ngOnDestroy(): void {\n this.snackbarRef?.pauseTimer();\n }\n\n protected onActionClick(): void {\n this.snackbarRef?.triggerAction();\n }\n\n protected onCloseClick(): void {\n this.snackbarRef?.close('manual');\n }\n}\n","<div\n class=\"md3-snackbar-container\"\n [class.md3-active]=\"isActive()\"\n [class.md3-snackbar-stacked]=\"isStacked\"\n [ngClass]=\"{\n 'md-scheme-light': config.scheme == 'dark',\n 'md-scheme-dark': config.scheme == 'light',\n }\"\n [attr.dir]=\"config.direction ?? null\"\n [attr.role]=\"role\"\n [attr.aria-live]=\"config.politeness ?? 'polite'\"\n [attr.aria-label]=\"config.ariaLabel || null\">\n <div class=\"md3-snackbar-message\">\n @if (isTemplateMessage) {\n <ng-container *ngTemplateOutlet=\"templateMessage; context: templateContext\"></ng-container>\n } @else {\n <div md3-type-body size=\"medium\">{{ textMessage }}</div>\n }\n </div>\n\n @if (actionLabel) {\n <button md3-button type=\"button\" class=\"md3-snackbar-action\" button-type=\"text\" button-size=\"small\" (click)=\"onActionClick()\">\n {{ actionLabel }}\n </button>\n }\n\n @if (config.showCloseIcon) {\n <button md3-icon-button type=\"button\" class=\"md3-snackbar-close\" button-type=\"standard\" button-size=\"small\" aria-label=\"Dismiss\" (click)=\"onCloseClick()\">\n <md3-icon md3-icon-element>close</md3-icon>\n </button>\n }\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, TemplateRef, inject } from '@angular/core';\nimport { SnackbarConfig, SnackbarPoliteness } from '../../interfaces/snackbar-config.interface';\nimport { Snackbar } from './snackbar';\nimport { SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, SnackbarRef } from './snackbar-ref';\n\nconst DEFAULT_DURATION_MS = 4000;\n\ninterface ResolvedSnackbarConfig extends SnackbarConfig {\n showCloseIcon: boolean;\n stackedAction: boolean;\n duration: number;\n politeness: SnackbarPoliteness;\n replaceCurrent: boolean;\n ariaLabel: string;\n scheme: 'inherit' | 'dark' | 'light';\n direction: null | 'ltr' | 'rtl';\n position: 'start' | 'center' | 'end';\n bottomOffset: number;\n injector: Injector;\n}\n\n// Internally every queued snackbar is tracked as SnackbarRef<unknown> — the\n// caller-facing generic <R> only matters for the ref that open() hands back,\n// so it's applied once at that single return point instead of threaded\n// through the queue/active bookkeeping.\ninterface QueuedSnackbar {\n message: string | TemplateRef<unknown>;\n actionLabel: string | undefined;\n config: ResolvedSnackbarConfig;\n ref: SnackbarRef;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackbarService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n private readonly queue: QueuedSnackbar[] = [];\n private active?: QueuedSnackbar;\n\n /**\n * Opens a snackbar. Only one is ever visible at a time — if another is\n * already showing, this one waits in a FIFO queue unless\n * config.replaceCurrent is set.\n *\n * message can be a plain string, or a TemplateRef for cases like a\n * progress indicator that needs to keep re-rendering as the caller's own\n * state changes. The surrounding surface, action button, close icon,\n * positioning, and animation are always owned by the Snackbar shell —\n * there's no arbitrary custom-component API, since that's how you end up\n * with something that isn't a snackbar anymore per MD3.\n *\n * config.onAction, if provided, is called when the action button (never\n * the close icon) is clicked — an alternative to ref.onAction().subscribe()\n * for callers that don't want to hold onto the returned ref.\n */\n public open<D = unknown, R = unknown>(\n message: string | TemplateRef<D>,\n actionLabel?: string,\n config: SnackbarConfig<D> = {},\n ): SnackbarRef<R> {\n const snackbarConfig = this.mergeConfig(config);\n\n if (snackbarConfig.showCloseIcon && actionLabel) {\n throw new Error(\n 'Snackbar cannot have both an action and a close icon — Material Design 3 snackbars support only one.',\n );\n }\n\n const ref = new SnackbarRef(snackbarConfig.duration);\n const queued: QueuedSnackbar = {\n message,\n actionLabel,\n config: snackbarConfig,\n ref,\n };\n\n ref.afterDismissed().subscribe(() => this.onDismissed(queued));\n\n if (snackbarConfig.onAction) {\n // Only ever fires for the action button — SnackbarRef.actionTriggered\n // is exclusively raised from the action button's click handler, never\n // from the close icon, which just closes without emitting.\n ref.onAction().subscribe(() => snackbarConfig.onAction!());\n }\n\n if (snackbarConfig.replaceCurrent && this.active) {\n this.queue.unshift(queued);\n this.active.ref.close('manual');\n } else if (this.active) {\n this.queue.push(queued);\n } else {\n this.show(queued);\n }\n\n return ref as SnackbarRef<R>;\n }\n\n /** Dismisses whichever snackbar is currently showing, if any. */\n public dismiss<R = unknown>(result?: R): void {\n this.active?.ref.close('manual', result);\n }\n\n /** Dismisses the visible snackbar and clears everything still queued. */\n public dismissAll(): void {\n const stillQueued = this.queue.splice(0, this.queue.length);\n stillQueued.forEach((item) => item.ref.close('manual'));\n this.active?.ref.close('manual');\n }\n\n private show(queued: QueuedSnackbar): void {\n this.active = queued;\n\n const overlayRef = this.createOverlay(queued.config);\n queued.ref.attachOverlay(overlayRef);\n\n const injector = this.createInjector(queued);\n const portal = new ComponentPortal(Snackbar, queued.config.viewContainerRef ?? null, injector);\n const componentRef = overlayRef.attach(portal);\n\n queued.ref.snackbarInstance = componentRef.instance;\n }\n\n private onDismissed(queued: QueuedSnackbar): void {\n if (this.active === queued) {\n this.active = undefined;\n } else {\n const index = this.queue.indexOf(queued);\n\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n\n return;\n }\n\n const next = this.queue.shift();\n\n if (next) {\n this.show(next);\n }\n }\n\n private mergeConfig(config: SnackbarConfig): ResolvedSnackbarConfig {\n return {\n data: config.data,\n showCloseIcon: config.showCloseIcon ?? false,\n stackedAction: config.stackedAction ?? false,\n onAction: config.onAction,\n duration: config.duration ?? DEFAULT_DURATION_MS,\n politeness: config.politeness ?? 'polite',\n replaceCurrent: config.replaceCurrent ?? false,\n ariaLabel: config.ariaLabel ?? '',\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n position: config.position ?? 'start',\n bottomOffset: config.bottomOffset ?? 0,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n private createOverlay(config: ResolvedSnackbarConfig): OverlayRef {\n let panelClass = ['md3-snackbar-panel', 'md3-position-' + config.position];\n if (config.direction !== null) {\n panelClass.push('md3-direction-' + config.direction);\n }\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: false,\n panelClass: panelClass,\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n });\n\n return this.overlay.create(overlayConfig);\n }\n\n private createInjector(queued: QueuedSnackbar): Injector {\n return Injector.create({\n parent: queued.config.injector,\n providers: [\n { provide: SnackbarRef, useValue: queued.ref },\n { provide: SNACKBAR_MESSAGE, useValue: queued.message },\n { provide: SNACKBAR_ACTION_LABEL, useValue: queued.actionLabel },\n { provide: SNACKBAR_CONFIG, useValue: queued.config },\n ],\n });\n }\n}\n","// types\nexport * from './types/text-size.type';\nexport * from './types/text-color.type';\nexport * from './types/card-type.type';\nexport * from './types/button-size.type';\nexport * from './types/button-type.type';\nexport * from './types/icon-button-type.type';\nexport * from './types/icon-button-width.type';\nexport * from './types/split-button-type.type';\nexport * from './types/button-group-type.type';\nexport * from './types/button-group-selection.type';\nexport * from './types/fab-size.type';\nexport * from './types/fab-type.type';\nexport * from './types/slider-size.type';\nexport * from './types/dialog-role.type';\nexport * from './types/chip-type.type';\nexport * from './types/chip-style.type';\nexport * from './types/list-leading-type.type';\nexport * from './types/list-leading-size.type';\n\n// interfaces\nexport * from './interfaces/dialog-config.interface';\nexport * from './interfaces/full-screen-dialog-config.interface';\nexport * from './interfaces/menu-config.interface';\nexport * from './interfaces/side-sheet-config.interface';\nexport * from './interfaces/snackbar-config.interface';\n\n// typography\nexport * from './styles/typography/type-display';\nexport * from './styles/typography/type-headline';\nexport * from './styles/typography/type-title';\nexport * from './styles/typography/type-body';\nexport * from './styles/typography/type-label';\n\n// foundations\nexport * from './foundations/layout.service';\nexport * from './foundations/scaffold/scaffold';\nexport * from './foundations/scaffold-bar';\nexport * from './foundations/scaffold-rail';\nexport * from './foundations/scaffold-pane';\nexport * from './foundations/grid';\nexport * from './foundations/grid-item';\n\n// common components and directives\nexport * from './components/common/input-element';\nexport * from './components/common/state-component';\nexport * from './components/common/icon-element';\nexport * from './components/common/material-icon/material-icon';\nexport * from './components/common/divider';\nexport * from './components/common/badge';\nexport * from './components/common/avatar';\n\n// buttons\nexport * from './components/buttons/button/button';\nexport * from './components/buttons/floating-action-button/floating-action-button';\nexport * from './components/buttons/icon-button/icon-button';\nexport * from './components/buttons/split-button/split-button';\nexport * from './components/buttons/button-group/button-group';\n\n// cards\nexport * from './components/card/card';\n\n// chips\nexport * from './components/chips/chips';\n\n// selection controls\nexport * from './components/selection-controls/checkbox/checkbox';\nexport * from './components/selection-controls/radio-button/radio-button';\nexport * from './components/selection-controls/switch/switch';\n\n// sliders\nexport * from './components/slider/slider';\n\n// list\nexport * from './components/list/list';\nexport * from './components/list/list-item/list-item';\nexport * from './components/list/list-leading/list-leading';\nexport * from './components/list/list-slot';\n\n// loading and progress\nexport * from './components/loading-and-progress/loading-indicator/loading-indicator';\nexport * from './components/loading-and-progress/linear-progress-indicator/linear-progress-indicator';\nexport * from './components/loading-and-progress/circular-progress-indicator/circular-progress-indicator';\n\n// app bar\nexport * from './components/app-bar/app-bar';\nexport * from './components/app-bar/app-bar-logo';\n\n// navigations\nexport * from './components/navigations/navigation-item/navigation-item';\nexport * from './components/navigations/navigation-group/navigation-group';\nexport * from './components/navigations/navigation-rail/navigation-rail';\nexport * from './components/navigations/navigation-bar/navigation-bar';\n\n// text fields\nexport * from './components/text-field/text-field';\nexport * from './components/text-field/supporting-text';\n\n// dialogs\nexport * from './components/dialog/dialog';\nexport * from './components/dialog/dialog-ref';\nexport * from './components/dialog/dialog.service';\nexport * from './components/dialog/dialog-header/dialog-header';\nexport * from './components/dialog/dialog-body/dialog-body';\nexport * from './components/dialog/dialog-actions/dialog-actions';\nexport * from './components/dialog/full-screen-dialog/full-screen-dialog';\nexport * from './components/dialog/full-screen-dialog-header/full-screen-dialog-header';\n\n// menus\nexport * from './components/menu/menu';\nexport * from './components/menu/menu-ref';\nexport * from './components/menu/menu.service';\nexport * from './components/menu/menu-group/menu-group';\nexport * from './components/menu/menu-item/menu-item';\n\n// sheets\nexport * from './components/sheets/side-sheet/side-sheet-ref';\nexport * from './components/sheets/sheets.service';\nexport * from './components/sheets/side-sheet-header/side-sheet-header';\nexport * from './components/sheets/side-sheet-body/side-sheet-body';\nexport * from './components/sheets/side-sheet-actions/side-sheet-actions';\n\n// snackbar\nexport * from './components/snackbar/snackbar';\nexport * from './components/snackbar/snackbar-ref';\nexport * from './components/snackbar/snackbar.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LayoutService","i1.StateComponent","CdkDialog"],"mappings":"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"}
1
+ {"version":3,"file":"almoamendev-ngx-md3.mjs","sources":["../../../projects/ngx-md3/src/lib/styles/typography/type-display.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-headline.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-title.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-body.ts","../../../projects/ngx-md3/src/lib/styles/typography/type-label.ts","../../../projects/ngx-md3/src/lib/foundations/layout.service.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet-ref.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet/side-sheet-stack.ts","../../../projects/ngx-md3/src/lib/components/sheets/sheets.service.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold/scaffold.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold/scaffold.html","../../../projects/ngx-md3/src/lib/foundations/scaffold-bar.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold-rail.ts","../../../projects/ngx-md3/src/lib/foundations/scaffold-pane.ts","../../../projects/ngx-md3/src/lib/foundations/grid.ts","../../../projects/ngx-md3/src/lib/foundations/grid-item.ts","../../../projects/ngx-md3/src/lib/components/common/input-element.ts","../../../projects/ngx-md3/src/lib/components/common/state-component.ts","../../../projects/ngx-md3/src/lib/components/common/icon-element.ts","../../../projects/ngx-md3/src/lib/components/common/material-icon/material-icon.ts","../../../projects/ngx-md3/src/lib/components/common/material-icon/material-icon.html","../../../projects/ngx-md3/src/lib/components/common/divider.ts","../../../projects/ngx-md3/src/lib/components/common/badge.ts","../../../projects/ngx-md3/src/lib/components/common/avatar.ts","../../../projects/ngx-md3/src/lib/interfaces/button-context.interface.ts","../../../projects/ngx-md3/src/lib/components/buttons/button/button.ts","../../../projects/ngx-md3/src/lib/components/buttons/button/button.html","../../../projects/ngx-md3/src/lib/components/buttons/floating-action-button/floating-action-button.ts","../../../projects/ngx-md3/src/lib/components/buttons/floating-action-button/floating-action-button.html","../../../projects/ngx-md3/src/lib/components/buttons/icon-button/icon-button.ts","../../../projects/ngx-md3/src/lib/components/buttons/icon-button/icon-button.html","../../../projects/ngx-md3/src/lib/components/buttons/split-button/split-button.ts","../../../projects/ngx-md3/src/lib/components/buttons/split-button/split-button.html","../../../projects/ngx-md3/src/lib/components/buttons/button-group/button-group.ts","../../../projects/ngx-md3/src/lib/components/buttons/button-group/button-group.html","../../../projects/ngx-md3/src/lib/components/card/card.ts","../../../projects/ngx-md3/src/lib/components/card/card.html","../../../projects/ngx-md3/src/lib/components/chips/chips.ts","../../../projects/ngx-md3/src/lib/components/chips/chips.html","../../../projects/ngx-md3/src/lib/components/selection-controls/checkbox/checkbox.ts","../../../projects/ngx-md3/src/lib/components/selection-controls/checkbox/checkbox.html","../../../projects/ngx-md3/src/lib/components/selection-controls/radio-button/radio-button.ts","../../../projects/ngx-md3/src/lib/components/selection-controls/radio-button/radio-button.html","../../../projects/ngx-md3/src/lib/components/selection-controls/switch/switch.ts","../../../projects/ngx-md3/src/lib/components/selection-controls/switch/switch.html","../../../projects/ngx-md3/src/lib/components/slider/slider.ts","../../../projects/ngx-md3/src/lib/components/slider/slider.html","../../../projects/ngx-md3/src/lib/components/list/list.ts","../../../projects/ngx-md3/src/lib/components/list/list.html","../../../projects/ngx-md3/src/lib/components/list/list-item/list-item.ts","../../../projects/ngx-md3/src/lib/components/list/list-item/list-item.html","../../../projects/ngx-md3/src/lib/components/list/list-leading/list-leading.ts","../../../projects/ngx-md3/src/lib/components/list/list-leading/list-leading.html","../../../projects/ngx-md3/src/lib/components/list/list-slot.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/loading-indicator/loading-indicator.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/loading-indicator/loading-indicator.html","../../../projects/ngx-md3/src/lib/components/loading-and-progress/linear-progress-indicator/linear-progress-indicator.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/linear-progress-indicator/linear-progress-indicator.html","../../../projects/ngx-md3/src/lib/components/loading-and-progress/circular-progress-indicator/circular-progress-indicator.ts","../../../projects/ngx-md3/src/lib/components/loading-and-progress/circular-progress-indicator/circular-progress-indicator.html","../../../projects/ngx-md3/src/lib/components/app-bar/app-bar-logo.ts","../../../projects/ngx-md3/src/lib/components/app-bar/app-bar.ts","../../../projects/ngx-md3/src/lib/components/app-bar/app-bar.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-item/navigation-item.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-item/navigation-item.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-group/navigation-group.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-group/navigation-group.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-rail/navigation-rail.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-rail/navigation-rail.html","../../../projects/ngx-md3/src/lib/components/navigations/navigation-bar/navigation-bar.ts","../../../projects/ngx-md3/src/lib/components/navigations/navigation-bar/navigation-bar.html","../../../projects/ngx-md3/src/lib/components/text-field/text-field.ts","../../../projects/ngx-md3/src/lib/components/text-field/text-field.html","../../../projects/ngx-md3/src/lib/components/text-field/supporting-text.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-ref.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog.html","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog/full-screen-dialog.ts","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog/full-screen-dialog.html","../../../projects/ngx-md3/src/lib/components/dialog/dialog.service.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-header/dialog-header.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-header/dialog-header.html","../../../projects/ngx-md3/src/lib/components/dialog/dialog-body/dialog-body.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-body/dialog-body.html","../../../projects/ngx-md3/src/lib/components/dialog/dialog-actions/dialog-actions.ts","../../../projects/ngx-md3/src/lib/components/dialog/dialog-actions/dialog-actions.html","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog-header/full-screen-dialog-header.ts","../../../projects/ngx-md3/src/lib/components/dialog/full-screen-dialog-header/full-screen-dialog-header.html","../../../projects/ngx-md3/src/lib/components/menu/menu-ref.ts","../../../projects/ngx-md3/src/lib/components/menu/menu.ts","../../../projects/ngx-md3/src/lib/components/menu/menu.html","../../../projects/ngx-md3/src/lib/components/menu/menu.service.ts","../../../projects/ngx-md3/src/lib/components/menu/menu-group/menu-group.ts","../../../projects/ngx-md3/src/lib/components/menu/menu-group/menu-group.html","../../../projects/ngx-md3/src/lib/components/menu/menu-item/menu-item.ts","../../../projects/ngx-md3/src/lib/components/menu/menu-item/menu-item.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-header/side-sheet-header.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-header/side-sheet-header.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-body/side-sheet-body.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-body/side-sheet-body.html","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-actions/side-sheet-actions.ts","../../../projects/ngx-md3/src/lib/components/sheets/side-sheet-actions/side-sheet-actions.html","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar-ref.ts","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar.ts","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar.html","../../../projects/ngx-md3/src/lib/components/snackbar/snackbar.service.ts","../../../projects/ngx-md3/src/lib/index.ts","../../../projects/ngx-md3/src/almoamendev-ngx-md3.ts"],"sourcesContent":["import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-display, [md3-type-display]',\n host: {\n 'class': 'md3-text-display',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeDisplay {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-headline, [md3-type-headline]',\n host: {\n 'class': 'md3-text-headline',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeHeadline {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-title, [md3-type-title]',\n host: {\n 'class': 'md3-text-title',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeTitle {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-body, [md3-type-body]',\n host: {\n 'class': 'md3-text-body',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeBody {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\nimport { TextColor } from '../../types/text-color.type';\nimport { TextSize } from '../../types/text-size.type';\n\n@Directive({\n selector: 'md3-type-label, [md3-type-label]',\n host: {\n 'class': 'md3-text-label',\n '[class.md3-emphasized]': 'emphasized()',\n }\n})\nexport class TypeLabel {\n public size = input<TextSize | 'default'>('default');\n public color = input<TextColor | 'default'>('default');\n public emphasized = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n constructor(public el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-text-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const color = 'md3-color-' + this.color();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, fromEvent, map, startWith, Subscription } from 'rxjs';\nimport { ViewportWidth } from '../types/viewport-width.type';\nimport { ViewportHeight } from '../types/viewport-height.type';\n\nexport type Md3NavigationMode = 'none' | 'navigation-bar' | 'navigation-rail' | 'standard-drawer' | 'modal-drawer';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n private readonly document = inject(DOCUMENT);\n private readonly breakpointObserver = inject(BreakpointObserver);\n // Optional — LayoutService (and anything built on Scaffold) shouldn't\n // hard-require the Router, only benefit from it when it's present.\n private readonly router = inject(Router, { optional: true });\n\n private readonly widthQueries: Record<ViewportWidth, string> = {\n 'compact': '(max-width: 37.499em)', // < 600\n 'medium': '(min-width: 37.5em) and (max-width: 52.499em)', // 600-839\n 'expanded': '(min-width: 52.5em) and (max-width: 74.999em)', // 840-1199\n 'large': '(min-width: 75em) and (max-width: 99.999em)', // 1200-1599\n 'extra-large': '(min-width: 100em)' // >=1600\n } as const;\n\n private readonly heightQueries: Record<ViewportHeight, string> = {\n 'compact': '(max-height: 29.999em)',\n 'medium': '(min-height: 30em) and (max-height: 56.249em)',\n 'expanded': '(min-height: 56.25em)'\n } as const;\n\n private mainPaneSub?: Subscription;\n private mainPaneEl?: HTMLElement;\n private panesContainerResizeObserver?: ResizeObserver;\n private panesContainerResizeListener?: () => void;\n\n readonly mainScrollTop = signal<number>(0);\n readonly mainIsScrolled = computed<boolean>(() => this.mainScrollTop() > 0);\n\n /**\n * Distance, in pixels, between the viewport bottom and the bottom edge of\n * the scaffold's .md3-panes-container — i.e. whatever the bottom scaffold\n * bar (nav bar) currently reserves, or 0 when there is none. Overlay-based\n * components anchored to the viewport bottom (like Snackbar) read this so\n * they never render lower than the panes container.\n */\n readonly bottomInset = signal<number>(0);\n\n public readonly viewport = toSignal(\n fromEvent(window, 'resize').pipe(\n startWith(null),\n map(() => ({\n width: window.innerWidth,\n height: window.innerHeight\n }))\n ),\n {\n initialValue: {\n width: window.innerWidth,\n height: window.innerHeight\n }\n }\n );\n\n public readonly widthClass = toSignal(\n this.breakpointObserver.observe(Object.values(this.widthQueries)).pipe(\n map((state): ViewportWidth => {\n if (state.breakpoints[this.widthQueries.compact]) {\n return 'compact';\n }\n\n if (state.breakpoints[this.widthQueries.medium]) {\n return 'medium';\n }\n\n if (state.breakpoints[this.widthQueries.expanded]) {\n return 'expanded';\n }\n\n if (state.breakpoints[this.widthQueries.large]) {\n return 'large';\n }\n\n return 'extra-large';\n })\n ),\n { initialValue: 'expanded' as ViewportWidth }\n );\n\n public readonly heightClass = toSignal(\n this.breakpointObserver.observe(Object.values(this.heightQueries)).pipe(\n map((state): ViewportHeight => {\n if (state.breakpoints[this.heightQueries.compact]) {\n return 'compact';\n }\n\n if (state.breakpoints[this.heightQueries.medium]) {\n return 'medium';\n }\n\n return 'expanded';\n })\n ),\n { initialValue: 'expanded' as ViewportHeight }\n );\n\n public readonly direction = signal<'ltr' | 'rtl'>(\n (this.document.documentElement.dir as 'ltr' | 'rtl') || 'ltr'\n );\n\n public readonly isCompact = computed(() => this.widthClass() === 'compact');\n public readonly isMedium = computed(() => this.widthClass() === 'medium');\n public readonly isExpanded = computed(() => this.widthClass() === 'expanded');\n public readonly isLarge = computed(() => this.widthClass() === 'large');\n public readonly isExtraLarge = computed(() => this.widthClass() === 'extra-large');\n\n public readonly isPortrait = computed(() => {\n const viewport = this.viewport();\n return viewport.height >= viewport.width;\n });\n\n public readonly isLandscape = computed(() => !this.isPortrait());\n\n public readonly preferredNavigationMode = computed(() => {\n switch (this.widthClass()) {\n case 'compact':\n return 'navigation-bar';\n\n case 'medium':\n return 'navigation-rail';\n\n case 'expanded':\n case 'large':\n case 'extra-large':\n return 'standard-drawer';\n }\n });\n\n public darkMode = signal<boolean>(true);\n\n constructor() {\n effect(() => {\n const darkMode = this.darkMode();\n this.document.body.classList.toggle('md-scheme-dark', darkMode);\n this.document.body.classList.toggle('md-scheme-light', !darkMode);\n });\n\n // Reset the scaffold's main pane to the top after every completed\n // navigation — otherwise a scrolled-down list page leaves the next\n // page's content scrolled down too, since the pane itself never\n // remounts on route change.\n this.router?.events\n .pipe(\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.scrollMainPaneToTop());\n }\n\n public setDirection(direction: 'ltr' | 'rtl'): void {\n this.document.documentElement.dir = direction;\n this.direction.set(direction);\n }\n\n private scrollMainPaneToTop(): void {\n this.mainPaneEl?.scrollTo({ top: 0 });\n this.mainScrollTop.set(0);\n }\n\n public registerMainPane(element: HTMLElement): void {\n this.mainPaneSub?.unsubscribe();\n this.mainPaneEl = element;\n\n const update = () => {\n const scrollTop = element.scrollTop;\n\n this.mainScrollTop.set(scrollTop);\n };\n\n update();\n\n this.mainPaneSub = new Subscription();\n\n element.addEventListener('scroll', update, { passive: true });\n\n this.mainPaneSub.add(() => {\n element.removeEventListener('scroll', update);\n });\n }\n\n public unregisterMainPane(element: HTMLElement): void {\n this.mainPaneSub?.unsubscribe();\n this.mainPaneSub = undefined;\n\n if (this.mainPaneEl === element) {\n this.mainPaneEl = undefined;\n }\n\n this.mainScrollTop.set(0);\n }\n\n public registerPanesContainer(element: HTMLElement): void {\n this.unregisterPanesContainer();\n\n const update = () => {\n const rect = element.getBoundingClientRect();\n this.bottomInset.set(Math.max(0, Math.round(window.innerHeight - rect.bottom)));\n };\n\n update();\n\n this.panesContainerResizeObserver = new ResizeObserver(update);\n this.panesContainerResizeObserver.observe(element);\n\n this.panesContainerResizeListener = update;\n window.addEventListener('resize', update, { passive: true });\n }\n\n public unregisterPanesContainer(): void {\n this.panesContainerResizeObserver?.disconnect();\n this.panesContainerResizeObserver = undefined;\n\n if (this.panesContainerResizeListener) {\n window.removeEventListener('resize', this.panesContainerResizeListener);\n this.panesContainerResizeListener = undefined;\n }\n\n this.bottomInset.set(0);\n }\n}\n","import { ComponentRef, InjectionToken, Type } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SideSheetConfig, SideSheetContainer, SideSheetSide, SideSheetType } from '../../../interfaces/side-sheet-config.interface';\nimport { SideSheet } from './side-sheet';\n\nexport const SIDE_SHEET_DATA = new InjectionToken<unknown>('MD3_SIDE_SHEET_DATA');\nexport const SIDE_SHEET_CONFIG = new InjectionToken<SideSheetConfig>('MD3_SIDE_SHEET_CONFIG');\nexport const SIDE_SHEET_COMPONENT = new InjectionToken<Type<unknown>>('MD3_SIDE_SHEET_COMPONENT');\n\nconst SIDE_SHEET_EXIT_ANIMATION_FALLBACK_MS = 300;\n\nexport class SideSheetRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private isClosed = false;\n private isHidden = false;\n private sheetComponentRef?: ComponentRef<SideSheet>;\n\n public componentInstance?: T;\n public sheetInstance?: SideSheetContainer;\n\n constructor(\n public readonly side: SideSheetSide,\n private readonly onClosed: () => void,\n ) {\n }\n\n public attachSheetComponentRef(sheetComponentRef: ComponentRef<SideSheet>): void {\n this.sheetComponentRef = sheetComponentRef;\n this.sheetInstance = sheetComponentRef.instance as SideSheetContainer;\n }\n\n public setSide(side: SideSheetSide): void {\n this.sheetComponentRef?.instance?.side.set(side);\n }\n\n public setSheetType(type: SideSheetType): void {\n this.sheetComponentRef?.instance?.sheetType.set(type);\n }\n\n public setInset(isInset: boolean): void {\n this.sheetComponentRef?.instance?.isInset.set(isInset);\n }\n\n public setDivider(showDivider: boolean): void {\n this.sheetComponentRef?.instance?.showDivider.set(showDivider);\n }\n\n public hide(): void {\n this.isHidden = true;\n this.sheetInstance?.setHidden(true);\n }\n\n public show(): void {\n this.isHidden = false;\n this.sheetInstance?.setHidden(false);\n this.sheetInstance?.showSheet(true);\n }\n\n public close(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.startCloseAnimation().then(() => {\n this.destroySheet();\n this.onClosed();\n this.closed.next(result);\n this.closed.complete();\n });\n }\n\n public dispose(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.destroySheet();\n this.onClosed();\n this.closed.next(result);\n this.closed.complete();\n }\n\n public afterClosed(): Observable<R | undefined> {\n return this.closed.asObservable();\n }\n\n private destroySheet(): void {\n this.sheetComponentRef?.destroy();\n this.sheetComponentRef = undefined;\n this.sheetInstance = undefined;\n }\n\n private startCloseAnimation(): Promise<void> {\n const animatedElement = this.sheetInstance?.element;\n\n if (this.isHidden) {\n return Promise.resolve();\n }\n\n this.sheetInstance?.setHidden(false);\n this.sheetInstance?.showSheet(false);\n\n return new Promise((resolve) => {\n if (!animatedElement) {\n resolve();\n return;\n }\n\n let isResolved = false;\n const timeoutId = setTimeout(done, SIDE_SHEET_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n animatedElement!.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === animatedElement) {\n done();\n }\n }\n\n animatedElement.addEventListener('transitionend', onTransitionEnd);\n });\n }\n}\n","import { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { AfterContentInit, Component, ComponentRef, computed, effect, ElementRef, inject, Injector, signal, Type, ViewChild } from '@angular/core';\nimport { SIDE_SHEET_CONFIG, SideSheetRef } from './side-sheet-ref';\nimport { SideSheetConfig, SideSheetSide, SideSheetType } from '../../../interfaces/side-sheet-config.interface';\nimport { LayoutService } from '../../../foundations/layout.service';\n\n@Component({\n selector: 'md3-side-sheet',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './side-sheet.html',\n styleUrl: './side-sheet.scss',\n host: {\n '[class.md3-active]': 'isActive()',\n '[class.md3-hidden]': 'isHidden()',\n '[class.md3-start]': 'side() === \"start\"',\n '[class.md3-end]': 'side() === \"end\"',\n '[class.md3-inset]': 'isInset()',\n '[class.md3-show-divider]': 'showDivider()',\n },\n})\nexport class SideSheet implements AfterContentInit {\n @ViewChild(CdkPortalOutlet, { static: true })\n private readonly portalOutlet!: CdkPortalOutlet;\n\n protected readonly config = inject<SideSheetConfig>(SIDE_SHEET_CONFIG, { optional: true }) ?? {};\n private readonly sideSheetRef = inject<SideSheetRef>(SideSheetRef, { optional: true });\n\n public readonly isActive = signal<boolean>(false);\n public readonly isHidden = signal<boolean>(false);\n public readonly side = signal<SideSheetSide>(this.config.side ?? 'end');\n public readonly sheetType = signal<SideSheetType>(this.config.type ?? 'default');\n public readonly isInset = signal<boolean>(this.config.inset ?? false);\n public readonly showDivider = signal<boolean>(this.config.divider ?? false);\n private readonly resolvedSheetType = computed<SideSheetType>(() => {\n if (this.layoutService.isMedium() || this.layoutService.isCompact()) {\n return 'modal';\n }\n \n return this.sheetType();\n });\n\n constructor(\n private layoutService: LayoutService,\n private el: ElementRef<HTMLElement>\n ) {\n effect((onCleanUp) => {\n const type = 'md3-style-' + this.resolvedSheetType();\n this.element.classList.add(type);\n\n onCleanUp(() => {\n this.element.classList.remove(type);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n ngAfterContentInit(): void {\n requestAnimationFrame(() => {\n this.showSheet(true);\n });\n }\n\n public showSheet(value: boolean): void {\n this.isActive.set(value);\n }\n\n public setHidden(value: boolean): void {\n this.isHidden.set(value);\n }\n\n public close(): void {\n this.sideSheetRef?.close();\n }\n\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\n const portal = new ComponentPortal(component, this.config.viewContainerRef ?? null, injector);\n\n return this.portalOutlet.attachComponentPortal(portal);\n }\n}\n","<div class=\"md3-side-sheet-scrim\" (click)=\"close()\"></div>\n<div class=\"md3-side-sheet-container\">\n <ng-template cdkPortalOutlet></ng-template>\n</div>\n","import { Component, ComponentRef, Injector, inputBinding, Type, ViewChild, ViewContainerRef } from '@angular/core';\nimport { SideSheet } from './side-sheet';\n\nexport interface SideSheetStackItem<T> {\n sheetComponentRef: ComponentRef<SideSheet>;\n contentComponentRef: ComponentRef<T>;\n}\n\n@Component({\n selector: 'md3-side-sheet-stack',\n template: '<ng-container #container></ng-container>',\n styles: [`\n :host {\n display: grid;\n min-width: 0;\n min-height: 0;\n height: 100%;\n }\n\n :host ::ng-deep md3-side-sheet {\n grid-area: 1 / 1;\n }\n `],\n})\nexport class SideSheetStack {\n @ViewChild('container', { read: ViewContainerRef, static: true })\n private readonly container!: ViewContainerRef;\n\n public createSheet<T>(component: Type<T>, injector: Injector): SideSheetStackItem<T> {\n const sheetComponentRef = this.container.createComponent(SideSheet, {\n injector: injector,\n });\n\n sheetComponentRef.changeDetectorRef.detectChanges();\n\n const contentComponentRef = sheetComponentRef.instance.attachContent(component, injector);\n\n sheetComponentRef.changeDetectorRef.detectChanges();\n\n return {\n sheetComponentRef,\n contentComponentRef,\n };\n }\n}\n","import { ComponentRef, inject, Injectable, Injector, Type } from '@angular/core';\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { SideSheetStack } from './side-sheet/side-sheet-stack';\nimport {\n SIDE_SHEET_COMPONENT,\n SIDE_SHEET_CONFIG,\n SIDE_SHEET_DATA,\n SideSheetRef,\n} from './side-sheet/side-sheet-ref';\nimport { SideSheetConfig, SideSheetSide, SideSheetType } from '../../interfaces/side-sheet-config.interface';\n\ninterface ResolvedSideSheetConfig<D = unknown> extends SideSheetConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n side: SideSheetSide;\n type: SideSheetType;\n inset: boolean;\n divider: boolean;\n closeExisting: boolean;\n injector: Injector;\n}\n\ninterface SideSheetOutletState<T = unknown, R = unknown> {\n outlet: CdkPortalOutlet;\n stackComponentRef: ComponentRef<SideSheetStack>;\n refs: SideSheetRef<T, R>[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SheetsService {\n private readonly injector = inject(Injector);\n\n /**\n * Outlets registered per side, from the page scaffold up to whatever took\n * them over last. Sheets always open in the outlet on top, so a full screen\n * dialog can host them while it is up and hand them back when it closes.\n */\n private readonly states = new Map<SideSheetSide, SideSheetOutletState[]>();\n\n public registerSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const stack = this.getOutletStack(side);\n\n if (stack.some((state) => state.outlet === outlet)) {\n return;\n }\n\n if (outlet.hasAttached()) {\n outlet.detach();\n }\n\n const stackPortal = new ComponentPortal(SideSheetStack, null, this.injector);\n const stackComponentRef = outlet.attachComponentPortal(stackPortal);\n\n stack.push({\n outlet,\n stackComponentRef,\n refs: [],\n });\n }\n\n public unregisterSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const stack = this.states.get(side);\n const index = stack?.findIndex((state) => state.outlet === outlet) ?? -1;\n\n if (!stack || index === -1) {\n return;\n }\n\n // Sheets opened in this outlet go with it, and the outlet underneath\n // becomes the one new sheets open in.\n this.disposeOutletState(stack[index]);\n stack.splice(index, 1);\n\n if (stack.length === 0) {\n this.states.delete(side);\n }\n }\n\n public openSideSheet<T = unknown, D = unknown, R = unknown>(\n component: Type<T>,\n config: SideSheetConfig<D> = {},\n ): SideSheetRef<T, R> {\n const sheetConfig = this.mergeConfig(config);\n const state = this.activeState(sheetConfig.side);\n\n if (!state) {\n throw new Error(`No ${sheetConfig.side} side sheet outlet is registered.`);\n }\n\n if (sheetConfig.closeExisting) {\n this.disposeSideSheetRefs(state);\n } else {\n this.getVisibleRef(state)?.hide();\n }\n\n const sheetRef = new SideSheetRef<T, R>(\n sheetConfig.side,\n () => this.removeSideSheetRef(state, sheetRef as SideSheetRef),\n );\n const injector = this.createInjector(component, sheetConfig, sheetRef);\n const { sheetComponentRef, contentComponentRef } = state.stackComponentRef.instance.createSheet(\n component,\n injector,\n );\n\n sheetRef.attachSheetComponentRef(sheetComponentRef);\n this.bindDataToInputs(contentComponentRef, sheetConfig);\n sheetRef.componentInstance = contentComponentRef.instance;\n state.refs.push(sheetRef as SideSheetRef);\n\n return sheetRef;\n }\n\n public closeSideSheet<R = unknown>(side: SideSheetSide = 'end', result?: R): void {\n this.getVisibleRef(this.activeState(side))?.close(result);\n }\n\n /** Outlet that sheets currently open in: the last one that registered. */\n private activeState(side: SideSheetSide): SideSheetOutletState | undefined {\n const stack = this.states.get(side);\n\n return stack?.[stack.length - 1];\n }\n\n private getOutletStack(side: SideSheetSide): SideSheetOutletState[] {\n const stack = this.states.get(side) ?? [];\n\n if (!this.states.has(side)) {\n this.states.set(side, stack);\n }\n\n return stack;\n }\n\n private mergeConfig<D>(config: SideSheetConfig<D>): ResolvedSideSheetConfig<D> {\n return {\n data: config.data,\n bindDataToInputs: config.bindDataToInputs ?? false,\n side: config.side ?? 'end',\n type: config.type ?? 'default',\n inset: config.inset ?? false,\n divider: config.divider ?? false,\n closeExisting: config.closeExisting ?? false,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n private createInjector<T, D, R>(\n component: Type<T>,\n config: ResolvedSideSheetConfig<D>,\n sheetRef: SideSheetRef<T, R>,\n ): Injector {\n return Injector.create({\n parent: config.injector,\n providers: [\n { provide: SideSheetRef, useValue: sheetRef },\n { provide: SIDE_SHEET_DATA, useValue: config.data },\n { provide: SIDE_SHEET_CONFIG, useValue: config },\n { provide: SIDE_SHEET_COMPONENT, useValue: component },\n ],\n });\n }\n\n private bindDataToInputs<T, D>(\n componentRef: ComponentRef<T>,\n config: ResolvedSideSheetConfig<D>,\n ): void {\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\n return;\n }\n\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\n componentRef.setInput(inputName, inputValue);\n });\n }\n\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n }\n\n private disposeOutletState(state: SideSheetOutletState): void {\n this.disposeSideSheetRefs(state);\n\n if (state.outlet.hasAttached()) {\n state.outlet.detach();\n }\n }\n\n private disposeSideSheetRefs(state: SideSheetOutletState): void {\n const refs = [...state.refs];\n\n state.refs.length = 0;\n\n refs.forEach((ref) => {\n ref.dispose();\n });\n }\n\n private removeSideSheetRef(state: SideSheetOutletState, sheetRef: SideSheetRef): void {\n const index = state.refs.indexOf(sheetRef);\n\n if (index === -1) {\n return;\n }\n\n state.refs.splice(index, 1);\n this.getVisibleRef(state)?.show();\n }\n\n private getVisibleRef(state: SideSheetOutletState | undefined): SideSheetRef | undefined {\n if (!state || state.refs.length === 0) {\n return undefined;\n }\n\n return state.refs[state.refs.length - 1];\n }\n}\n","import { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AfterViewInit, Component, ElementRef, inject, OnDestroy, viewChild } from '@angular/core';\nimport { SheetsService } from '../../components/sheets/sheets.service';\nimport { LayoutService } from '../layout.service';\n\n@Component({\n selector: 'md3-scaffold',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './scaffold.html',\n styleUrl: './scaffold.scss',\n})\nexport class Scaffold implements AfterViewInit, OnDestroy {\n private startOutlet = viewChild('startOutlet', { read: CdkPortalOutlet });\n private endOutlet = viewChild('endOutlet', { read: CdkPortalOutlet });\n private panesContainer = viewChild<ElementRef<HTMLElement>>('panesContainer');\n private sheets = inject(SheetsService);\n private layout = inject(LayoutService);\n\n ngAfterViewInit(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n const panesContainer = this.panesContainer();\n\n if (startOutlet) {\n this.sheets.registerSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.registerSideSheetOutlet('end', endOutlet);\n }\n\n if (panesContainer) {\n this.layout.registerPanesContainer(panesContainer.nativeElement);\n }\n }\n\n ngOnDestroy(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n\n if (startOutlet) {\n this.sheets.unregisterSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.unregisterSideSheetOutlet('end', endOutlet);\n }\n\n this.layout.unregisterPanesContainer();\n }\n}\n","<ng-content select=\"[md3-scaffold-bar=top]\"></ng-content>\n<ng-content select=\"[md3-scaffold-rail=leading]\"></ng-content>\n\n<div class=\"md3-panes-container\" #panesContainer>\n <div class=\"md3-pane md3-pane-start\">\n <ng-content select=\"[md3-scaffold-pane=start]\"></ng-content>\n <ng-template #startOutlet cdkPortalOutlet></ng-template>\n </div>\n <div class=\"md3-pane md3-pane-main\">\n <ng-content select=\"[md3-scaffold-pane=main]\"></ng-content>\n </div>\n <div class=\"md3-pane md3-pane-end\">\n <ng-content select=\"[md3-scaffold-pane=end]\"></ng-content>\n <ng-template #endOutlet cdkPortalOutlet></ng-template>\n </div>\n</div>\n\n<ng-content select=\"[md3-scaffold-rail=trailing]\"></ng-content>\n<ng-content select=\"[md3-scaffold-bar=bottom]\"></ng-content>","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-scaffold-bar]'\n})\nexport class ScaffoldBar {\n public region = input.required<'top' | 'bottom'>({\n alias: 'md3-scaffold-bar',\n });\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-scaffold-rail]'\n})\nexport class ScaffoldRail {\n public region = input.required<'leading' | 'trailing'>({\n alias: 'md3-scaffold-rail',\n });\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Directive, effect, ElementRef, input, OnDestroy } from '@angular/core';\nimport { LayoutService } from './layout.service';\n\n@Directive({\n selector: '[md3-scaffold-pane]',\n host: {\n class: 'md3-scrollable',\n },\n hostDirectives: [\n CdkScrollable,\n ],\n})\nexport class ScaffoldPane implements OnDestroy {\n public role = input.required<'main' | 'start' | 'end'>({\n alias: 'md3-scaffold-pane',\n });\n\n constructor(\n private el: ElementRef,\n private layout: LayoutService\n ) {\n effect(() => {\n if (this.role() == 'main') {\n this.layout.registerMainPane(this.el.nativeElement);\n } else {\n this.layout.unregisterMainPane(this.el.nativeElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n if (this.role() == 'main') {\n this.layout.unregisterMainPane(this.el.nativeElement);\n }\n }\n}\n","import { computed, Directive, inject, input } from '@angular/core';\nimport { LayoutService } from './layout.service';\nimport { ViewportWidth } from '../types/viewport-width.type';\n\nconst GRID_COLUMNS_BY_WIDTH: Record<ViewportWidth, number> = {\n 'compact': 4,\n 'medium': 8,\n 'expanded': 8,\n 'large': 12,\n 'extra-large': 12,\n};\n\n@Directive({\n selector: 'md3-grid, [md3-grid]',\n host: {\n 'class': 'md3-grid',\n '[style.--md-grid-columns]': 'columns()',\n }\n})\nexport class Grid {\n private readonly layout = inject(LayoutService);\n\n // overrides the window-size-class column count when set — e.g. to simulate a screen size\n public readonly cols = input<number | undefined>(undefined, {\n alias: 'cols',\n });\n\n protected readonly columns = computed(() => this.cols() ?? GRID_COLUMNS_BY_WIDTH[this.layout.widthClass()]);\n}\n","import { computed, Directive, input, numberAttribute } from '@angular/core';\n\n@Directive({\n selector: 'md3-grid-item, [md3-grid-item]',\n host: {\n 'class': 'md3-grid-item',\n '[style.grid-column]': 'span()',\n }\n})\nexport class GridItem {\n public readonly colSpan = input(1, {\n alias: 'col-span',\n transform: numberAttribute,\n });\n\n protected readonly span = computed(() => `span ${this.colSpan()}`);\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[md3-input-element]',\n host: {\n 'class': 'md3-input-element'\n }\n})\nexport class InputElement {\n constructor(private el: ElementRef<HTMLInputElement>) { }\n\n public get nativeElement(): HTMLInputElement {\n return this.el.nativeElement;\n }\n}\n","import { Directive, effect, ElementRef, HostListener, Input, OnInit, Renderer2, signal } from '@angular/core';\n\n@Directive({\n selector: '[md3-state-component]',\n host: {\n class: 'md3-state-component',\n },\n})\nexport class StateComponent implements OnInit {\n private stateLayer?: HTMLDivElement;\n private stateLayerSignal = signal<boolean>(true);\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {\n effect(() => {\n if (this.stateLayerSignal()) {\n this.enable();\n } else {\n this.disable();\n }\n });\n }\n\n ngOnInit(): void {\n this.init();\n }\n\n private init(): void {\n if (!this.stateLayerSignal() || this.stateLayer) {\n return;\n }\n\n let layer = this.el.nativeElement.querySelector(\n ':scope > .md3-state-layer'\n ) as HTMLDivElement | null;\n\n if (!layer) {\n // Create the state layer and insert as the first child\n layer = this.renderer.createElement('div') as HTMLDivElement;\n this.renderer.addClass(layer, 'md3-state-layer');\n\n this.renderer.appendChild(\n this.el.nativeElement,\n layer\n );\n\n }\n\n this.stateLayer = layer;\n }\n\n public setStateLayer(value: boolean) {\n this.stateLayerSignal.set(value);\n }\n\n private enable(): void {\n this.el.nativeElement.classList.add('md3-state-component');\n this.init();\n }\n\n private disable(): void {\n this.el.nativeElement.classList.remove('md3-state-component');\n this.stateLayer?.remove();\n this.stateLayer = undefined;\n }\n\n @HostListener('pointerdown', ['$event'])\n onPointerDown(event: PointerEvent): void {\n if (!this.stateLayer) {\n return;\n }\n\n const rect = this.el.nativeElement.getBoundingClientRect();\n const w = Math.max(rect.width, rect.height);\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n\n this.stateLayer.style.setProperty('--ripple-w', `${w}px`);\n this.stateLayer.style.setProperty('--ripple-x', `${x}px`);\n this.stateLayer.style.setProperty('--ripple-y', `${y}px`);\n }\n}\n","import { Directive, ElementRef, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-icon-element]',\n host: {\n 'class': 'md3-icon-element'\n }\n})\nexport class IconElement {\n public iconType = input<string | null>(null, {\n alias: 'md3-icon-element',\n });\n\n constructor(private el: ElementRef) { }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { Component, ElementRef, input, booleanAttribute, effect } from '@angular/core';\n\n@Component({\n selector: 'md3-icon',\n imports: [],\n templateUrl: './material-icon.html',\n styleUrl: './material-icon.scss',\n host: {\n '[class.md3-filled]': 'isFilled()',\n '[class.md3-bi-directional]': 'biDirectional()',\n },\n})\nexport class MaterialIcon {\n public iconVersion = input<'MaterialIcons' | 'MaterialSymbols'>('MaterialSymbols', {\n alias: 'icon-version',\n });\n public isFilled = input<boolean, unknown>(false, {\n alias: 'filled',\n transform: booleanAttribute\n });\n public iconStyle = input<'normal' | 'outlined' | 'rounded' | 'sharp' | 'two-tone'>('normal', {\n alias: 'icon-style',\n });\n public iconSize = input<48 | 36 | 24 | 18>(24, {\n alias: 'icon-size',\n });\n public biDirectional = input<boolean, unknown>(false, {\n alias: 'bi-directional',\n transform: booleanAttribute\n });\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const iconSize = 'md3-' + this.iconSize().toString();\n this.element.classList.add(iconSize);\n\n onCleanup(() => {\n this.element.classList.remove(iconSize);\n });\n });\n\n effect((onCleanup) => {\n let iconStyle = this.iconStyle() == 'normal' ? null : this.iconStyle();\n\n if (this.iconVersion() == 'MaterialSymbols') {\n this.element.classList.add('md3-symbol');\n\n if (iconStyle == 'two-tone') {\n iconStyle = null;\n }\n }\n\n if (iconStyle !== null) {\n this.element.classList.add('md3-' + iconStyle);\n }\n\n onCleanup(() => {\n this.element.classList.remove('md3-symbol', 'md3-' + iconStyle);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content></ng-content>","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: 'md3-divider'\n})\nexport class Divider {\n public dividerType = input<string | null>(null, {\n alias: 'type',\n });\n}\n","import { booleanAttribute, Directive, ElementRef, input } from '@angular/core';\n\n@Directive({\n selector: 'md3-badge',\n host: {\n '[class.md3-small]': 'isSmall()',\n },\n})\nexport class Badge {\n public isSmall = input<boolean, unknown>(false, {\n alias: 'small',\n transform: booleanAttribute,\n });\n\n constructor(private el: ElementRef) {\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","import { Directive } from '@angular/core';\nimport { StateComponent } from './state-component';\n\n@Directive({\n selector: '[md3-avatar]',\n host: {\n 'class': 'md3-avatar',\n },\n hostDirectives: [\n StateComponent,\n ],\n})\nexport class Avatar {\n constructor() { }\n}\n","import { InjectionToken, Signal } from \"@angular/core\";\nimport { IconButtonWidth } from \"../types/icon-button-width.type\";\nimport { ButtonSize } from \"../types/button-size.type\";\nimport { SplitButtonType } from \"../types/split-button-type.type\";\n\nexport interface ButtonContext {\n buttonContextSize?: Signal<ButtonSize>;\n buttonContextType?: Signal<SplitButtonType>;\n buttonContextWidth?: Signal<IconButtonWidth>;\n buttonContextSquared?: Signal<boolean>;\n buttonContextExtended?: Signal<boolean>;\n}\n\nexport const MD3_BUTTON_CONTEXT = new InjectionToken<ButtonContext>('MD3_BUTTON_CONTEXT');","import { booleanAttribute, Component, computed, effect, ElementRef, HostListener, inject, input, model } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { ButtonType } from '../../../types/button-type.type';\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\n\n@Component({\n selector: 'button[md3-button], a[md3-button]',\n imports: [],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n host: {\n '[class.md3-square]': 'effectiveSquared()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class Button {\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\n \n @HostListener('click', ['$event']) onClick(event: Event): void {\n if (this.isSelected() === null) {\n return;\n }\n\n this.isSelected.update((value) => {\n return !value;\n });\n }\n\n public buttonSize = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<ButtonType>('filled', {\n alias: 'button-type',\n });\n public isSquared = input<boolean, unknown>(false, {\n alias: 'button-squared',\n transform: booleanAttribute,\n });\n public isSelected = model<boolean | null>(null, {\n alias: 'selected',\n });\n\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\n public effectiveType = computed(() => this.context?.buttonContextType?.() ?? this.buttonType());\n public effectiveSquared = computed(() => this.context?.buttonContextSquared?.() ?? this.isSquared());\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.effectiveSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.effectiveType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect(() => {\n const toggle = this.isSelected() !== null;\n\n if (toggle) {\n this.element.classList.add('md3-toggle');\n this.element.classList.toggle('md3-selected', this.isSelected() ?? false);\n } else {\n this.element.classList.remove('md3-toggle', 'md3-selected');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n public enableSelection() {\n this.isSelected.update((current) => {\n if (current !== null) {\n return current;\n }\n\n return false;\n });\n }\n}\n","<ng-content select=\"[md3-icon-element=leading]\"></ng-content>\n<div class=\"md3-label\">\n <ng-content></ng-content>\n</div>\n<ng-content select=\"[md3-icon-element=trailing]\"></ng-content>","import { booleanAttribute, Component, computed, effect, ElementRef, inject, input } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { FabType } from '../../../types/fab-type.type';\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { FabSize } from '../../../types/fab-size.type';\n\n@Component({\n selector: 'button[md3-fab], a[md3-fab]',\n imports: [],\n templateUrl: './floating-action-button.html',\n styleUrl: './floating-action-button.scss',\n host: {\n '[class.md3-extended-fab]': 'effectiveExtended()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class FloatingActionButton {\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\n \n public buttonSize = input<FabSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<FabType>('tonal-primary', {\n alias: 'button-type',\n });\n public isExtended = input<boolean, unknown>(false, {\n alias: 'extended',\n transform: booleanAttribute,\n });\n\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\n public effectiveExtended = computed(() => this.context?.buttonContextExtended?.() ?? this.isExtended());\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const buttonSize = 'md3-' + this.effectiveSize();\n this.element.classList.add(buttonSize);\n\n onCleanup(() => {\n this.element.classList.remove(buttonSize);\n });\n });\n\n effect((onCleanup) => {\n const buttonType = 'md3-' + this.buttonType();\n this.element.classList.add(buttonType);\n\n onCleanup(() => {\n this.element.classList.remove(buttonType);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\n<div class=\"md3-icon-label-space\"></div>\n<div class=\"md3-label\">\n <ng-content></ng-content>\n</div>","import { booleanAttribute, Component, computed, effect, ElementRef, HostListener, inject, input, model } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButtonType } from '../../../types/icon-button-type.type';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\n\n@Component({\n selector: 'button[md3-icon-button], a[md3-icon-button]',\n imports: [],\n templateUrl: './icon-button.html',\n styleUrl: './icon-button.scss',\n host: {\n '[class.md3-square]': 'effectiveSquared()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class IconButton {\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\n \n @HostListener('click', ['$event']) onClick(event: Event): void {\n if (this.isSelected() === null) {\n return;\n }\n\n this.isSelected.update((value) => {\n return !value;\n });\n }\n\n public buttonSize = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<IconButtonType>('filled', {\n alias: 'button-type',\n });\n public buttonWidth = input<IconButtonWidth>('default', {\n alias: 'button-width',\n });\n public isSquared = input<boolean, unknown>(false, {\n alias: 'button-squared',\n transform: booleanAttribute\n });\n public isSelected = model<boolean | null>(null, {\n alias: 'selected',\n });\n\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\n public effectiveType = computed(() => {\n const contextType = this.context?.buttonContextType?.();\n if (contextType) {\n return contextType == 'elevated' ? 'standard' : contextType;\n }\n \n return this.buttonType();\n });\n public effectiveWidth = computed(() => this.context?.buttonContextWidth?.() ?? this.buttonWidth());\n public effectiveSquared = computed(() => this.context?.buttonContextSquared?.() ?? this.isSquared());\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.effectiveSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.effectiveType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const width = 'md3-' + this.effectiveWidth();\n this.element.classList.add(width);\n\n onCleanup(() => {\n this.element.classList.remove(width);\n });\n });\n\n effect(() => {\n const toggle = this.isSelected() !== null;\n\n if (toggle) {\n this.element.classList.add('md3-toggle');\n this.element.classList.toggle('md3-selected', this.isSelected() ?? false);\n } else {\n this.element.classList.remove('md3-toggle', 'md3-selected');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n public enableSelection() {\n this.isSelected.update((current) => {\n if (current !== null) {\n return current;\n }\n\n return false;\n });\n }\n}\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\n<ng-content></ng-content>","import { booleanAttribute, Component, contentChild, contentChildren, effect, ElementRef, input, signal, Signal } from '@angular/core';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { SplitButtonType } from '../../../types/split-button-type.type';\nimport { Button } from '../button/button';\nimport { IconButton } from '../icon-button/icon-button';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\n\n@Component({\n selector: 'md3-split-button',\n imports: [\n ],\n templateUrl: './split-button.html',\n styleUrl: './split-button.scss',\n host: {\n 'role': 'group',\n },\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: SplitButton,\n },\n ],\n})\nexport class SplitButton implements ButtonContext {\n public buttonSize = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public buttonType = input<SplitButtonType>('filled', {\n alias: 'button-type',\n });\n\n public flipTrailingIcon = input<boolean, unknown>(true, {\n alias: 'flip-trailing-icon',\n transform: booleanAttribute,\n });\n\n private button = contentChild<Button>(Button);\n private iconButtons = contentChildren<IconButton>(IconButton);\n\n // context values\n buttonContextSize: Signal<ButtonSize> = this.buttonSize;\n buttonContextType: Signal<SplitButtonType> = this.buttonType;\n buttonContextWidth: Signal<IconButtonWidth> = signal('default');\n buttonContextSquared?: Signal<boolean> = signal(false);\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.buttonSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.buttonType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n \n effect(() => {\n this.button()?.isSelected.set(null);\n });\n \n effect(() => {\n this.iconButtons().forEach((iconButton) => {\n iconButton.isSelected.set(null);\n \n if (iconButton?.element.hasAttribute('md3-main-action')) {\n return;\n }\n\n iconButton.element.classList.toggle('md3-flip-icon', this.flipTrailingIcon());\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content select=\"button[md3-button], button[md3-icon-button][md3-main-action], a[md3-button], a[md3-icon-button][md3-main-action]\"></ng-content>\n<ng-content select=\"button[md3-icon-button], a[md3-icon-button]\"></ng-content>","import { Component, contentChildren, effect, ElementRef, HostListener, input, InputSignal, Signal } from '@angular/core';\nimport { Button } from '../button/button';\nimport { IconButton } from '../icon-button/icon-button';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { ButtonGroupSelection } from '../../../types/button-group-selection.type';\nimport { ButtonGroupType } from '../../../types/button-group-type.type';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\n\n@Component({\n selector: 'md3-button-group',\n templateUrl: './button-group.html',\n styleUrl: './button-group.scss',\n host: {\n 'role': 'group',\n },\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: ButtonGroup,\n },\n ],\n})\nexport class ButtonGroup implements ButtonContext {\n @HostListener('click', ['$event']) onClick(event: PointerEvent): void {\n if (this.groupSelection() !== 'single') {\n return;\n }\n\n const selectedItem = this.findEventButton(event);\n\n if (selectedItem?.isSelected()) {\n this.clearOtherSelections(selectedItem);\n }\n }\n \n public buttonSize: InputSignal<ButtonSize> = input<ButtonSize>('small', {\n alias: 'button-size',\n });\n public groupType: InputSignal<ButtonGroupType> = input<ButtonGroupType>('standard', {\n alias: 'group-type',\n });\n public groupSelection: InputSignal<ButtonGroupSelection> = input<ButtonGroupSelection>('none', {\n alias: 'selection',\n });\n\n private buttons = contentChildren<Button>(Button, { descendants: true });\n private iconButtons = contentChildren<IconButton>(IconButton, { descendants: true });\n \n // context values\n buttonContextSize: Signal<ButtonSize> = this.buttonSize;\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const size = 'md3-' + this.buttonSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect((onCleanup) => {\n const groupType = 'md3-' + this.groupType();\n this.element.classList.add(groupType);\n\n onCleanup(() => {\n this.element.classList.remove(groupType);\n });\n });\n\n effect(() => {\n const selection = this.groupSelection();\n\n if (selection == 'none') {\n this.allButtons().forEach((item) => {\n item.isSelected.set(null);\n });\n } else {\n this.allButtons().forEach((item) => {\n item.enableSelection();\n });\n\n if (selection == 'single') {\n this.normalizeSingleSelection();\n }\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n private findEventButton(event: PointerEvent): Button | IconButton | undefined {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return undefined;\n }\n\n return this.allButtons().find((item) => {\n return item.element.contains(target);\n });\n }\n\n private normalizeSingleSelection(): void {\n const selectedItem = this.allButtons().find((item) => {\n return item.isSelected();\n });\n\n if (selectedItem) {\n this.clearOtherSelections(selectedItem);\n }\n }\n\n private clearOtherSelections(selectedItem: Button | IconButton): void {\n this.allButtons().forEach((item) => {\n if (item != selectedItem) {\n item.isSelected.set(false);\n }\n });\n }\n\n private allButtons(): (Button | IconButton)[] {\n return [\n ...this.buttons(),\n ...this.iconButtons(),\n ];\n }\n}\n","<ng-content select=\"button[md3-button], button[md3-icon-button], a[md3-button], a[md3-icon-button]\"></ng-content>","import { AfterViewInit, booleanAttribute, Component, effect, ElementRef, input, signal } from '@angular/core';\nimport { StateComponent } from '../common/state-component';\nimport { CardType } from '../../types/card-type.type';\n\n@Component({\n selector: 'md3-card, button[md3-card], a[md3-card]',\n imports: [],\n templateUrl: './card.html',\n styleUrl: './card.scss',\n // host: {\n // tabindex: '0',\n // },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class Card implements AfterViewInit {\n public cardType = input<CardType>('elevated', {\n alias: 'card-type',\n });\n\n public isInteractive = input<boolean, unknown>(false, {\n alias: 'interactive',\n transform: booleanAttribute,\n });\n\n private isActionTag = signal<boolean>(false);\n\n constructor(\n private el: ElementRef,\n private state: StateComponent,\n ) {\n effect((onCleanup) => {\n const type = 'md3-' + this.cardType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect(() => {\n if (this.isInteractive() || this.isActionTag()) {\n this.element.classList.add('md3-interactive');\n this.state.setStateLayer(true);\n\n if (!this.isActionTag()) {\n this.element.setAttribute('tabindex', '0');\n }\n } else {\n this.element.classList.remove('md3-interactive');\n this.state.setStateLayer(false);\n this.element.removeAttribute('tabindex');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n ngAfterViewInit(): void {\n const tagName = this.element.tagName.toLowerCase();\n this.isActionTag.set(tagName != 'md3-card');\n }\n}\n","<ng-content></ng-content>\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, Directive, effect, ElementRef, input, Input, output } from '@angular/core';\nimport { MaterialIcon } from '../common/material-icon/material-icon';\nimport { StateComponent } from '../common/state-component';\nimport { ChipType } from '../../types/chip-type.type';\nimport { IconElement } from '../common/icon-element';\nimport { ChipStyle } from '../../types/chip-style.type';\n\n@Directive({\n selector: '[md3-chip-avatar]'\n})\nexport class ChipAvatar {}\n\n@Component({\n selector: 'button[md3-chip], a[md3-chip], label[md3-chip]',\n imports: [\n StateComponent,\n MaterialIcon,\n ],\n templateUrl: './chips.html',\n styleUrl: './chips.scss',\n})\nexport class Chips {\n public chipType = input<ChipType>('assist', {\n alias: 'chip-type',\n });\n\n public chipStyle = input<ChipStyle>('default', {\n alias: 'chip-style',\n });\n\n public trailingFunction = output<void>({\n alias: 'on-trailing',\n });\n\n protected onTrailingClick(event: Event): void {\n event.stopPropagation();\n this.trailingFunction.emit();\n }\n\n private avatar = contentChild(ChipAvatar);\n private iconElements = contentChildren(IconElement);\n\n public hasSurface = input<boolean, unknown>(false, {\n alias: 'surface',\n transform: booleanAttribute,\n });\n\n public isElevated = input<boolean, unknown>(false, {\n alias: 'elevated',\n transform: booleanAttribute,\n });\n\n public leading = computed(() => this.iconElements().find((icon) => icon.iconType() === 'leading'));\n public trailing = computed(() => this.iconElements().find((icon) => icon.iconType() === 'trailing'));\n public isSelectable = computed(() => this.chipType() != 'assist');\n public showCheckIcon = computed(() => !this.leading() && this.chipType() == 'filter');\n public hasAvatar = computed(() => this.avatar() != undefined && this.chipType() == 'input');\n public hasRemove = computed(() => this.chipType() == 'input');\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const type = 'md3-' + this.chipType();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const style = 'md3-' + this.chipStyle();\n this.element.classList.add(style);\n\n onCleanup(() => {\n this.element.classList.remove(style);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}","@if (isSelectable()) {\n <ng-content select=\"[md3-input-element]\"></ng-content>\n}\n<div class=\"md3-chip-container\" md3-state-component>\n <div class=\"md3-chip-leading\" [class.has-icon]=\"leading()\" [class.has-avatar]=\"hasAvatar()\">\n <ng-content select=\"[md3-icon-element=leading], [md3-chip-avatar]\"></ng-content>\n @if (showCheckIcon()) {\n <md3-icon [icon-size]=\"18\" md3-icon-element=\"leading\">check</md3-icon>\n }\n </div>\n <div class=\"md3-chip-label\">\n <ng-content></ng-content>\n </div>\n @if (hasRemove() || trailing()) {\n <button class=\"md3-chip-trailing\" md3-state-component [class.has-icon]=\"trailing()\" (click)=\"onTrailingClick($event)\">\n <ng-content select=\"[md3-icon-element=trailing]\"></ng-content>\n\n @if (hasRemove() && !trailing()) {\n <md3-icon [icon-size]=\"18\" md3-icon-element=\"trailing\">close</md3-icon>\n }\n </button>\n }\n</div>","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, Signal, viewChild } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { InputElement } from '../../common/input-element';\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\nimport { StateComponent } from '../../common/state-component';\n\n@Component({\n selector: 'md3-checkbox',\n imports: [\n MaterialIcon,\n StateComponent,\n ],\n templateUrl: './checkbox.html',\n styleUrl: './checkbox.scss',\n})\nexport class Checkbox {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n\n private stateComponent = viewChild<StateComponent>(StateComponent);\n private input = contentChild(InputElement);\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n\n public disableStateLayer = input<boolean, unknown>(false, {\n alias: 'disable-state-layer',\n transform: booleanAttribute\n });\n\n protected checkboxIcon: 'check_small' | 'check_indeterminate_small' = 'check_small';\n public state = signal<boolean | null>(false);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n private inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n private inputDisabledState = signal<boolean>(false);\n public isDisabled = computed<boolean>(() => this.inputDisabledState());\n\n constructor() {\n effect(() => {\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n this.syncInitialState(input);\n this.syncNativeInputState(input);\n\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromState(this.state());\n this.syncNativeInputState(input);\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => {\n if (!this.formControl()) {\n this.syncStateFromInput(input);\n }\n\n this.syncNativeInputState(input);\n });\n observer?.observe(input, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'required'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private updateState(state: boolean | null = false): void {\n this.checkboxIcon = state === null\n ? 'check_indeterminate_small'\n : 'check_small';\n\n this.state.set(state);\n }\n\n private syncStateFromInput(input: HTMLInputElement): void {\n this.updateState(input.indeterminate ? null : input.checked);\n }\n\n private syncInputFromState(state: boolean | null = false): void {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n const indeterminate = state === null;\n const checked = state === true;\n\n if (input.indeterminate !== indeterminate) {\n input.indeterminate = indeterminate;\n }\n\n if (input.checked !== checked) {\n input.checked = checked;\n }\n }\n\n private syncControlFromState(state: boolean | null = false): void {\n const control = this.formControl();\n if (!control || control.value === state) {\n return;\n }\n\n control.setValue(state);\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n const controlState = control.value === null\n ? null\n : control.value === true;\n\n this.updateState(controlState);\n this.syncInputFromState(controlState);\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.nativeInputError.set(this.hasNativeInputError(input));\n this.inputDisabledState.set(input.disabled);\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n return !input.validity.valid || input.ariaInvalid === 'true';\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n const value = this.inputError() ? 'true' : 'false';\n if (input && input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div md3-state-component class=\"md3-checkbox-container\">\n <div class=\"md3-checkbox-icon\">\n <md3-icon>{{ checkboxIcon }}</md3-icon>\n </div>\n</div>\n","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, viewChild } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { InputElement } from '../../common/input-element';\nimport { StateComponent } from '../../common/state-component';\n\n@Component({\n selector: 'md3-radio-button',\n imports: [\n StateComponent\n ],\n templateUrl: './radio-button.html',\n styleUrl: './radio-button.scss',\n})\nexport class RadioButton {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n\n private stateComponent = viewChild<StateComponent>(StateComponent);\n private input = contentChild(InputElement);\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n\n public disableStateLayer = input<boolean, unknown>(false, {\n alias: 'disable-state-layer',\n transform: booleanAttribute\n });\n\n public state = signal<boolean>(false);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n private inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n private inputDisabledState = signal<boolean>(false);\n public isDisabled = computed<boolean>(() => this.inputDisabledState());\n\n constructor() {\n effect(() => {\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n this.syncInitialState(input);\n this.syncNativeInputState(input);\n\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromInput(input);\n this.syncNativeInputState(input);\n });\n\n const documentEvents = fromEvent(input.ownerDocument, 'change').subscribe((event) => {\n if (this.isSameRadioGroup(input, event.target)) {\n this.syncStateFromInput(input);\n this.syncNativeInputState(input);\n }\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => {\n if (!this.formControl()) {\n this.syncStateFromInput(input);\n }\n\n this.syncNativeInputState(input);\n });\n observer?.observe(input, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'name', 'required', 'value'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n documentEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private getInputValue(input: HTMLInputElement | undefined = this.input()?.nativeElement): unknown {\n return input?.value ?? true;\n }\n\n private updateState(state: boolean = false): void {\n this.state.set(state);\n }\n\n private syncStateFromInput(input: HTMLInputElement): void {\n this.updateState(input.checked);\n }\n\n private syncInputFromState(state: boolean = false): void {\n const input = this.input()?.nativeElement;\n if (input && input.checked !== state) {\n input.checked = state;\n }\n }\n\n private syncControlFromInput(input: HTMLInputElement): void {\n const control = this.formControl();\n if (!control || !input.checked) {\n return;\n }\n\n const inputValue = this.getInputValue(input);\n if (control.value !== inputValue) {\n control.setValue(inputValue);\n }\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n const controlState = control.value === this.getInputValue();\n\n this.updateState(controlState);\n this.syncInputFromState(controlState);\n }\n\n private isSameRadioGroup(input: HTMLInputElement, target: EventTarget | null): boolean {\n return target instanceof HTMLInputElement\n && target.type === 'radio'\n && target.name === input.name\n && target.form === input.form;\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.nativeInputError.set(this.hasNativeInputError(input));\n this.inputDisabledState.set(input.disabled);\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n return !input.validity.valid || input.ariaInvalid === 'true';\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n const value = this.inputError() ? 'true' : 'false';\n if (input && input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div md3-state-component class=\"md3-radio-button-container\">\n <div class=\"md3-radio-button-icon\"></div>\n</div>\n","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, viewChild } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent } from 'rxjs';\nimport { InputElement } from '../../common/input-element';\nimport { StateComponent } from '../../common/state-component';\n\n@Component({\n selector: 'md3-switch',\n imports: [\n StateComponent\n ],\n templateUrl: './switch.html',\n styleUrl: './switch.scss',\n})\nexport class Switch {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n\n private stateComponent = viewChild<StateComponent>(StateComponent);\n private input = contentChild(InputElement);\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n \n public disableStateLayer = input<boolean, unknown>(false, {\n alias: 'disable-state-layer',\n transform: booleanAttribute\n });\n\n public state = signal<boolean>(false);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n private inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n private inputDisabledState = signal<boolean>(false);\n public isDisabled = computed<boolean>(() => {\n console.log('Switch disabled');\n return this.inputDisabledState();\n });\n\n constructor() {\n effect(() => {\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n input.setAttribute('role', 'switch');\n this.syncInitialState(input);\n this.syncNativeInputState(input);\n\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromState(this.state());\n this.syncNativeInputState(input);\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => {\n if (!this.formControl()) {\n this.syncStateFromInput(input);\n }\n\n this.syncNativeInputState(input);\n });\n observer?.observe(input, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'required'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncControlError(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private updateState(state: boolean = false): void {\n this.state.set(state);\n }\n\n private syncStateFromInput(input: HTMLInputElement): void {\n this.updateState(input.checked);\n }\n\n private syncInputFromState(state: boolean = false): void {\n const input = this.input()?.nativeElement;\n if (input && input.checked !== state) {\n input.checked = state;\n }\n }\n\n private syncControlFromState(state: boolean = false): void {\n const control = this.formControl();\n if (!control || control.value === state) {\n return;\n }\n\n control.setValue(state);\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n const controlState = control.value === true;\n\n this.updateState(controlState);\n this.syncInputFromState(controlState);\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.nativeInputError.set(this.hasNativeInputError(input));\n this.inputDisabledState.set(input.disabled);\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n return !input.validity.valid || input.ariaInvalid === 'true';\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n const value = this.inputError() ? 'true' : 'false';\n if (input && input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div md3-state-component class=\"md3-track-container\">\n <div class=\"md3-track\">\n <div class=\"md3-handle-container\">\n <div class=\"md3-handle\">\n <ng-content select=\"[md3-icon-element]\"></ng-content>\n </div>\n </div>\n </div>\n</div>\n","import { Component, computed, contentChild, effect, ElementRef, input, signal } from '@angular/core';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent, merge } from 'rxjs';\nimport { InputElement } from '../common/input-element';\nimport { TypeBody } from '../../styles/typography/type-body';\nimport { SliderSize } from '../../types/slider-size.type';\n\n@Component({\n selector: 'md3-slider',\n imports: [\n TypeBody,\n ],\n templateUrl: './slider.html',\n styleUrl: './slider.scss',\n})\nexport class Slider {\n public control = input<AbstractControl | undefined>(undefined, {\n alias: 'control',\n });\n public sliderSize = input<SliderSize>('x-small', {\n alias: 'slider-size',\n });\n public showValueLabel = input<boolean>(false, {\n alias: 'show-value-label'\n });\n\n private input = contentChild<InputElement>(InputElement);\n private controlName = contentChild<FormControlName>(FormControlName);\n\n public value = signal<number>(0);\n public min = signal<number>(0);\n public max = signal<number>(100);\n public progress = signal<number>(0);\n\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\n\n constructor(private el: ElementRef<HTMLElement>) {\n effect((onCleanup) => {\n const size = 'md3-' + this.sliderSize();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n\n effect(() => {\n this.element.style.setProperty('--slider-progress', `${this.progress()}%`);\n });\n\n effect((onCleanup) => {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n this.syncInitialState(input);\n\n const inputEvents = merge(\n fromEvent(input, 'input'),\n fromEvent(input, 'change'),\n ).subscribe(() => {\n this.syncStateFromInput(input);\n this.syncControlFromState(this.value());\n });\n\n onCleanup(() => inputEvents.unsubscribe());\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n return;\n }\n\n this.syncStateFromControl(control);\n this.syncInputDisabledState(control);\n\n const controlEvents = control.events.subscribe(() => {\n this.syncStateFromControl(control);\n this.syncInputDisabledState(control);\n });\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n private syncInitialState(input: HTMLInputElement): void {\n const control = this.formControl();\n if (control) {\n this.syncStateFromControl(control);\n return;\n }\n\n this.syncStateFromInput(input);\n }\n\n private updateState(value: number = 0): void {\n let min = this.min();\n let max = this.max();\n let range = max - min;\n let nextValue = Number.isFinite(value) ? value : min;\n let progress = range === 0\n ? 0\n : ((nextValue - min) / range) * 100;\n\n this.value.set(nextValue);\n this.progress.set(Math.min(100, Math.max(0, progress)));\n }\n\n private syncLimitsFromInput(input: HTMLInputElement | undefined = this.input()?.nativeElement): void {\n if (!input) {\n return;\n }\n\n let min = input.min === ''\n ? 0\n : Number(input.min);\n let max = input.max === ''\n ? 100\n : Number(input.max);\n\n this.min.set(Number.isFinite(min) ? min : 0);\n this.max.set(Number.isFinite(max) ? max : 100);\n }\n\n private syncStateFromInput(input: HTMLInputElement | undefined = this.input()?.nativeElement): void {\n if (!input) {\n return;\n }\n\n this.syncLimitsFromInput(input);\n this.updateState(input.valueAsNumber);\n }\n\n private syncInputFromState(value: number = 0): void {\n const input = this.input()?.nativeElement;\n if (!input) {\n return;\n }\n\n input.valueAsNumber = value;\n }\n\n private syncControlFromState(value: number = 0): void {\n const control = this.formControl();\n if (!control || control.value === value) {\n return;\n }\n\n control.setValue(value);\n }\n\n private syncStateFromControl(control: AbstractControl): void {\n let controlValue = Number(control.value ?? this.min());\n\n this.syncLimitsFromInput();\n this.updateState(controlValue);\n this.syncInputFromState(controlValue);\n }\n\n private syncInputDisabledState(control: AbstractControl): void {\n const input = this.input()?.nativeElement;\n if (input && input.disabled !== control.disabled) {\n input.disabled = control.disabled;\n }\n }\n}\n","<ng-content select=\"[md3-input-element]\"></ng-content>\n<div class=\"md3-slider-container\">\n <div class=\"md3-slider-track\">\n <div class=\"md3-active-track\">\n <div class=\"md3-track-bar\">\n <div class=\"md3-icon-container\">\n <ng-content select=\"[md3-icon-element]\"></ng-content>\n </div>\n </div>\n </div>\n <div class=\"md3-inactive-track\">\n <div class=\"md3-track-bar\"></div>\n </div>\n </div>\n <div class=\"md3-slider-handle\">\n @if (showValueLabel()) {\n <div class=\"md3-value-label\">\n <md3-type-body size=\"medium\">{{ value() }}</md3-type-body>\n </div>\n }\n </div>\n</div>\n","import { Component, effect, ElementRef, input } from '@angular/core';\n\n@Component({\n selector: 'md3-list',\n templateUrl: './list.html',\n styleUrl: './list.scss',\n})\nexport class List {\n public variant = input<'expressive' | 'baseline'>('expressive');\n public type = input<'standard' | 'segmented'>('standard');\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const variant = 'md3-' + this.variant();\n this.element.classList.add(variant);\n\n onCleanup(() => {\n this.element.classList.remove(variant);\n });\n });\n\n effect((onCleanup) => {\n const type = 'md3-' + this.type();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content></ng-content>","import { AfterViewInit, booleanAttribute, Component, computed, contentChild, Directive, effect, ElementRef, HostListener, input } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { Checkbox } from '../../selection-controls/checkbox/checkbox';\nimport { RadioButton } from '../../selection-controls/radio-button/radio-button';\nimport { Switch } from '../../selection-controls/switch/switch';\n\n@Directive({\n selector: 'button[md3-item-primary-action], a[md3-item-primary-action]',\n host: {\n 'class': 'md3-item-primary-action',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class ListItemPrimaryAction {\n}\n\n@Component({\n selector: 'md3-list-item, label[md3-list-item], button[md3-list-item], a[md3-list-item]',\n templateUrl: './list-item.html',\n styleUrl: './list-item.scss',\n host: {\n '[class.md3-selected]': 'isSelected()',\n },\n hostDirectives: [\n StateComponent\n ],\n})\nexport class ListItem implements AfterViewInit {\n public slotsAlignment = input<'start' | 'center' | 'end'>('center', {\n alias: 'slots-alignment',\n });\n public selected = input<boolean, unknown>(false, {\n transform: booleanAttribute,\n });\n\n public isActionTag: boolean = false;\n private isLabelTag: boolean = false;\n private checkbox = contentChild(Checkbox);\n private radioButton = contentChild(RadioButton);\n private switch = contentChild(Switch);\n\n public isSelected = computed(() => {\n const checkbox = this.checkbox();\n const radioButton = this.radioButton();\n\n if (checkbox || radioButton) {\n return (checkbox?.state() || radioButton?.state()) === true;\n }\n\n return this.selected();\n });\n\n public isInputDisabled = computed(() => {\n return this.checkbox()?.isDisabled() || this.radioButton()?.isDisabled() || this.switch()?.isDisabled();\n });\n\n constructor(\n private el: ElementRef,\n private state: StateComponent\n ) {\n effect((onCleanup) => {\n const alignment = 'md3-slots-alignment-' + this.slotsAlignment();\n this.element.classList.add(alignment);\n\n onCleanup(() => {\n this.element.classList.remove(alignment);\n });\n });\n\n effect(() => {\n if (this.isInputDisabled()) {\n this.state.setStateLayer(false);\n this.element.classList.add('md3-disabled');\n } else {\n this.state.setStateLayer(true);\n this.element.classList.remove('md3-disabled');\n }\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n ngAfterViewInit(): void {\n let tagName = this.element.tagName.toLowerCase();\n\n this.isLabelTag = tagName == 'label';\n\n if (this.isLabelTag) {\n this.element.setAttribute('tabindex', '0');\n this.setLabelInputTabIndex();\n }\n\n this.isActionTag = tagName != 'md3-list-item';\n \n if (!this.isActionTag) {\n this.state.setStateLayer(false);\n }\n }\n\n @HostListener('focusin', ['$event'])\n protected onFocusIn(event: FocusEvent): void {\n if (!this.isLabelTag || event.target === this.element || !this.isInputElement(event.target)) {\n return;\n }\n\n this.focusLabel();\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeyDown(event: KeyboardEvent): void {\n if (!this.isLabelTag || event.target !== this.element || event.defaultPrevented) {\n return;\n }\n\n if (event.key !== ' ' && event.key !== 'Enter') {\n return;\n }\n\n const input = this.getLabelActivationInput();\n\n if (!input) {\n return;\n }\n\n event.preventDefault();\n input.click();\n this.focusLabel();\n }\n\n private setLabelInputTabIndex(): void {\n this.getLabelInputs().forEach((input) => input.tabIndex = -1);\n }\n\n private getLabelActivationInput(): HTMLInputElement | undefined {\n return this.getLabelInputs().find((input) => {\n return !input.disabled && (input.type === 'checkbox' || input.type === 'radio');\n }) ?? this.getLabelInputs().find((input) => !input.disabled);\n }\n\n private getLabelInputs(): HTMLInputElement[] {\n return Array.from(this.element.querySelectorAll<HTMLInputElement>('input'));\n }\n\n private focusLabel(): void {\n this.element.focus({ preventScroll: true });\n }\n\n private isInputElement(target: EventTarget | null): target is HTMLInputElement {\n return target instanceof HTMLInputElement;\n }\n}\n","<ng-content select=\"[md3-item-primary-action]\"></ng-content>\n<ng-content select=\"md3-list-leading\"></ng-content>\n<ng-content select=\"[md3-list-slot=content]\"></ng-content>\n<ng-content select=\"[md3-list-slot=trailing]\"></ng-content>","import { Component, effect, ElementRef, input } from '@angular/core';\nimport { ListLeadingType } from '../../../types/list-leading-type.type';\nimport { ListLeadingSize } from '../../../types/list-leading-size.type';\n\n@Component({\n selector: 'md3-list-leading',\n templateUrl: './list-leading.html',\n styleUrl: './list-leading.scss',\n})\nexport class ListLeading {\n public type = input<ListLeadingType>('icon');\n public size = input<ListLeadingSize>('image');\n\n constructor(\n private el: ElementRef,\n ) {\n effect((onCleanup) => {\n const type = 'md3-type-' + this.type();\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const size = 'md3-size-' + this.size();\n this.element.classList.add(size);\n\n onCleanup(() => {\n this.element.classList.remove(size);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n}\n","<ng-content></ng-content>","import { Directive, ElementRef, input } from '@angular/core';\n\n@Directive({\n selector: '[md3-list-slot]',\n host: {\n '[attr.md3-list-slot]': 'position()',\n },\n})\nexport class ListSlot {\n public position = input.required<'content' | 'trailing'>({\n alias: 'md3-list-slot',\n });\n\n constructor(private el: ElementRef) { }\n\n public get nativeElement(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","import { Component, computed, ElementRef, input, Input } from '@angular/core';\n\n@Component({\n selector: 'md3-loading-indicator',\n imports: [],\n templateUrl: './loading-indicator.html',\n styleUrl: './loading-indicator.scss',\n})\nexport class LoadingIndicator {\n public contained = input<boolean>(false);\n public size = input<number>(48);\n\n public dpSize = computed(() => {\n const fontSize = this.getHostFontSize();\n return Number((this.size() / fontSize).toFixed(4));\n });\n\n constructor(\n private el: ElementRef,\n ) {\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n private getHostFontSize(): number {\n if (typeof getComputedStyle === 'undefined') {\n return 16;\n }\n\n return Number.parseFloat(getComputedStyle(this.element).fontSize) || 16;\n }\n}\n","<div class=\"md3-indicator-indeterminate\" [class.md3-contained]=\"contained()\" [style]=\"'--size: '+dpSize()+'em'\">\n <svg viewBox=\"0 0 48 48\" class=\"md3-indicator-svg\">\n <path class=\"md3-indicator-shape\"></path>\n </svg>\n</div>","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'md3-linear-progress-indicator',\n imports: [],\n templateUrl: './linear-progress-indicator.html',\n styleUrl: './linear-progress-indicator.scss',\n})\nexport class LinearProgressIndicator {\n public indeterminate = input<boolean>(false);\n public thickness = input<4 | 8>(4);\n public progress = input<number>(0);\n\n public progressValue = computed(() => {\n const progress = this.progress();\n if (progress < 0) {\n return 0;\n }\n\n if (progress > 100) {\n return 100;\n }\n\n return progress;\n });\n\n constructor() {\n }\n}\n","<div class=\"md3-linear-indicator\" [class.md3-thickness-8dp]=\"thickness() == 8\" [class.md3-indeterminate]=\"indeterminate()\" [style.--progress]=\"progressValue() + '%'\">\n <div class=\"md3-track\"></div>\n <div class=\"md3-active-indicator\"></div>\n @if (indeterminate()) {\n <div class=\"md3-track-secondary\"></div>\n <div class=\"md3-active-indicator-secondary\"></div>\n }\n</div>","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'md3-circular-progress-indicator',\n imports: [],\n templateUrl: './circular-progress-indicator.html',\n styleUrl: './circular-progress-indicator.scss',\n})\nexport class CircularProgressIndicator {\n public indeterminate = input<boolean>(false);\n public thickness = input<4 | 8>(4);\n public progress = input<number>(0);\n\n public progressValue = computed(() => {\n const progress = this.progress();\n if (progress < 0) {\n return 0;\n }\n\n if (progress > 100) {\n return 100;\n }\n\n return progress;\n });\n\n constructor() {\n }\n}\n","<div class=\"md3-indicator-container\" [class.md3-thickness-8dp]=\"thickness() == 8\" [class.md3-indeterminate]=\"indeterminate()\" [style.--progress]=\"progressValue()\">\n <svg class=\"md3-circlar-indicator\">\n <circle class=\"md3-track\" pathLength=\"100\"></circle>\n <circle class=\"md3-active-indicator\" pathLength=\"100\"></circle>\n </svg>\n</div>","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[md3-app-bar-logo]',\n})\nexport class AppBarLogo {\n}\n","import { booleanAttribute, Component, computed, contentChild, effect, ElementRef, input, Signal, signal } from '@angular/core';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../types/button-size.type';\nimport { Avatar } from '../common/avatar';\nimport { LayoutService } from '../../foundations/layout.service';\nimport { AppBarLogo } from './app-bar-logo';\nimport { TypeDisplay, TypeHeadline, TypeTitle } from '../../../public-api';\n\nexport type AppBarType = 'small' | 'medium' | 'large' | 'search';\nexport type AppBarScrollingStyle = 'none' | 'transparent' | 'elevate';\n\n@Component({\n selector: 'md3-app-bar',\n imports: [\n TypeHeadline,\n TypeTitle,\n TypeDisplay,\n ],\n templateUrl: './app-bar.html',\n styleUrl: './app-bar.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: AppBar,\n },\n ],\n host: {\n role: 'banner',\n '[class.md3-scrolled]': 'mainIsScrolled()',\n '[class.md3-auto-hide]': 'autoHide()',\n '[class.md3-scrolling-down]': 'isScrollingDown()',\n },\n})\nexport class AppBar implements ButtonContext {\n public title = input<string | null>(null, {\n alias: 'bar-title',\n });\n\n public subtitle = input<string | null>(null, {\n alias: 'bar-subtitle',\n });\n\n public appBarType = input<AppBarType>('small', {\n alias: 'bar-type',\n });\n\n public appBarScrollingStyle = input<AppBarScrollingStyle>('elevate', {\n alias: 'scroll-style',\n });\n\n public autoHide = input<boolean, unknown>(false, {\n alias: 'auto-hide',\n transform: booleanAttribute,\n });\n \n public centerAligned = input<boolean, unknown>(false, {\n alias: 'center-aligned',\n transform: booleanAttribute,\n });\n\n private logo = contentChild(AppBarLogo);\n private avatar = contentChild(Avatar);\n\n public hasLogo = computed(() => !!this.logo());\n public hasAvatar = computed(() => !!this.avatar());\n\n public mainIsScrolled = computed(() => this.layoutService.mainIsScrolled());\n public isScrollingDown = signal<boolean>(false);\n\n private scrollPosition = 0;\n private bottomExpandedHeight = computed(() => {\n const type = this.appBarType();\n\n if (!this.hasCollapsibleBottom(type)) {\n return 0;\n }\n\n this.layoutService.viewport();\n\n const fontSize = this.getHostFontSize();\n const hasSubtitle = !!this.subtitle()?.length;\n\n if (type === 'medium') {\n return (hasSubtitle ? 4.5 : 3) * fontSize;\n }\n\n return (hasSubtitle ? 5.5 : 3.5) * fontSize;\n });\n\n private bottomCollapse = computed(() => {\n const expandedHeight = this.bottomExpandedHeight();\n\n if (!expandedHeight) {\n return 0;\n }\n\n return Math.min(expandedHeight, Math.max(0, this.layoutService.mainScrollTop()));\n });\n\n // button context\n public buttonContextSize: Signal<ButtonSize> = signal('small');\n\n constructor(\n private el: ElementRef,\n private layoutService: LayoutService\n ) {\n this.scrollPosition = this.layoutService.mainScrollTop();\n\n effect((onCleanup) => {\n const type = 'md3-' + this.appBarType();\n\n this.element.classList.add(type);\n\n onCleanup(() => {\n this.element.classList.remove(type);\n });\n });\n\n effect((onCleanup) => {\n const scrollingStyle = 'md3-scroll-style-' + this.appBarScrollingStyle();\n\n this.element.classList.add(scrollingStyle);\n\n onCleanup(() => {\n this.element.classList.remove(scrollingStyle);\n });\n });\n\n effect((onCleanup) => {\n const width = 'md3-layout-' + this.layoutService.widthClass();\n this.element.classList.add(width);\n\n onCleanup(() => {\n this.element.classList.remove(width);\n });\n });\n\n effect(() => {\n this.updateScrollDirection(this.layoutService.mainScrollTop());\n });\n\n effect(() => {\n const collapse = this.bottomCollapse();\n const expandedHeight = this.bottomExpandedHeight();\n\n this.element.style.setProperty(\n '--app-bar-bottom-collapse',\n `${collapse}px`\n );\n this.element.style.setProperty(\n '--app-bar-bottom-opacity',\n this.getBottomOpacity(collapse, expandedHeight).toString()\n );\n this.element.classList.toggle(\n 'md3-collapsed',\n this.isBottomCollapsed(collapse, expandedHeight)\n );\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n private getBottomOpacity(collapse: number, expandedHeight: number): number {\n if (!expandedHeight) {\n return 1;\n }\n\n return Math.max(0, Math.min(1, 1 - (collapse / expandedHeight)));\n }\n\n private isBottomCollapsed(collapse: number, expandedHeight: number): boolean {\n return expandedHeight > 0 && collapse >= expandedHeight;\n }\n\n private updateScrollDirection(scrollTop: number): void {\n if (scrollTop === this.scrollPosition) {\n return;\n }\n\n const defaultBarHeight = this.getHostFontSize() * 4;\n const scrollOffset = scrollTop - this.scrollPosition;\n\n if (Math.abs(scrollOffset) <= defaultBarHeight) {\n return;\n }\n\n this.isScrollingDown.set(scrollOffset > 0);\n this.scrollPosition = scrollTop;\n }\n\n private hasCollapsibleBottom(type: AppBarType): boolean {\n return (type === 'medium' || type === 'large') &&\n (!!this.title()?.length || !!this.subtitle()?.length);\n }\n\n private getHostFontSize(): number {\n if (typeof getComputedStyle === 'undefined') {\n return 16;\n }\n\n return Number.parseFloat(getComputedStyle(this.element).fontSize) || 16;\n }\n}\n","<div class=\"md3-app-bar-container\">\n <div class=\"md3-app-bar-leading\">\n <ng-content select=\"[md3-app-bar-leading]\"></ng-content>\n </div>\n\n @if (appBarType() == 'search') {\n <div class=\"md3-app-bar-search\" [class.md3-center]=\"centerAligned()\">\n <div class=\"md3-search-container\">\n <div class=\"md3-leading-buttons\">\n <ng-content select=\"[md3-search-leading]\"></ng-content>\n </div>\n <ng-content select=\"[md3-input-element]\"></ng-content>\n <div class=\"md3-trailing-buttons\">\n <ng-content select=\"[md3-search-trailing]\"></ng-content>\n </div>\n </div>\n </div>\n } @else if (hasLogo()) {\n <div class=\"md3-app-bar-logo\" [class.md3-center]=\"centerAligned()\">\n <ng-content select=\"[md3-app-bar-logo]\"></ng-content>\n </div>\n } @else if (title() || subtitle()) {\n <div class=\"md3-app-bar-title\" [class.md3-center]=\"centerAligned()\">\n @if (title()?.length) {\n <div md3-type-title size=\"large\">{{ title() }}</div>\n }\n @if (subtitle()?.length) {\n <div md3-type-body size=\"small\" emphasized>{{ subtitle() }}</div>\n }\n </div>\n }\n\n <div class=\"md3-app-bar-trailing\">\n <ng-content select=\"[md3-app-bar-trailing]\"></ng-content>\n @if (hasAvatar()) {\n <div class=\"md3-app-bar-avatar\">\n <ng-content select=\"[md3-avatar]\"></ng-content>\n </div>\n }\n </div>\n\n @if ((appBarType() == 'medium' || appBarType() == 'large') && (title() || subtitle())) {\n <div class=\"md3-app-bar-bottom\" [class.md3-center]=\"centerAligned()\">\n <div class=\"md3-app-bar-bottom-content\">\n @if (appBarType() == 'medium') {\n @if (title()?.length) {\n <div md3-type-headline size=\"medium\">{{ title() }}</div>\n }\n @if (subtitle()?.length) {\n <div md3-type-title size=\"small\">{{ subtitle() }}</div>\n }\n }\n @if (appBarType() == 'large') {\n @if (title()?.length) {\n <div md3-type-display size=\"small\">{{ title() }}</div>\n }\n @if (subtitle()?.length) {\n <div md3-type-title size=\"medium\">{{ subtitle() }}</div>\n }\n }\n </div>\n </div>\n }\n</div>\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, ElementRef, HostBinding, inject, input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { IconElement } from '../../common/icon-element';\nimport { Badge } from '../../common/badge';\n\n@Component({\n selector: 'button[md3-nav-item], a[md3-nav-item]',\n exportAs: 'md3NavItem',\n imports: [],\n templateUrl: './navigation-item.html',\n styleUrl: './navigation-item.scss',\n host: {\n '[class.md3-hide-on-collapse]': 'this.hideOnCollapse()',\n },\n hostDirectives: [\n {\n directive: RouterLinkActive,\n inputs: ['routerLinkActiveOptions', 'ariaCurrentWhenActive'],\n }\n ],\n})\nexport class NavigationItem {\n private readonly el = inject(ElementRef<HTMLElement>);\n private routerLinkActive = inject(RouterLinkActive);\n \n public hideOnCollapse = input<boolean, unknown>(false, {\n alias: 'hide-on-collapse',\n transform: booleanAttribute\n });\n\n private icons = contentChildren<IconElement>(IconElement);\n\n public hasIcons = computed(() => this.icons()?.length != 0);\n\n public badge = contentChild<Badge>(Badge);\n\n public get isRouteActive(): boolean {\n return this.routerLinkActive.isActive;\n }\n\n @HostBinding('class.md3-active') get active(): boolean {\n return this.isRouteActive;\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","<div class=\"md3-item-container\">\n @if (hasIcons()) {\n <div class=\"md3-icon-container\">\n <ng-content select=\"[md3-icon-element=active]\"></ng-content>\n <ng-content select=\"[md3-icon-element]\"></ng-content>\n </div>\n }\n <div class=\"md3-label\">\n <ng-content></ng-content>\n </div>\n @if (hasIcons() && badge()) {\n <div class=\"md3-badge-container\" [class.md3-small]=\"badge()?.isSmall()\">\n <ng-content select=\"md3-badge\"></ng-content>\n </div>\n }\n</div>","import { booleanAttribute, Component, ElementRef, inject, input } from '@angular/core';\nimport { TypeLabel } from '../../../../public-api';\n\n@Component({\n selector: 'md3-nav-group',\n imports: [\n TypeLabel,\n ],\n templateUrl: './navigation-group.html',\n styleUrl: './navigation-group.scss',\n host: {\n '[class.md3-hide-on-collapse]': 'hideOnCollapse()',\n },\n})\nexport class NavigationGroup {\n private readonly el = inject(ElementRef<HTMLElement>);\n \n public label = input<string>();\n \n public hideOnCollapse = input<boolean, unknown>(false, {\n alias: 'hide-on-collapse',\n transform: booleanAttribute\n });\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","@if (label()?.length) {\n <div class=\"md3-nav-label\">\n <md3-type-label size=\"large\">{{ label() }}</md3-type-label>\n </div>\n}\n<ng-content select=\"[md3-nav-item]\"></ng-content>","import { Component, ElementRef, Signal, booleanAttribute, computed, contentChild, contentChildren, effect, inject, input, model, signal } from '@angular/core';\nimport { LayoutService } from '../../../foundations/layout.service';\nimport { IconElement } from '../../common/icon-element';\nimport { FloatingActionButton } from '../../buttons/floating-action-button/floating-action-button';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButton } from '../../buttons/icon-button/icon-button';\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\n\ntype ExpandedLayout = 'standard' | 'modal';\ntype CollapsedLayout = 'compact' | 'narrow' | 'hidden';\ntype ContainerStyle = 'none' | 'elevated' | 'divider';\n\n@Component({\n selector: 'md3-navigation-rail',\n imports: [\n IconButton,\n IconElement,\n MaterialIcon,\n ],\n templateUrl: './navigation-rail.html',\n styleUrl: './navigation-rail.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: NavigationRail,\n },\n ],\n host: {\n '[class.md3-expanded]': 'this.expanded()',\n },\n})\nexport class NavigationRail implements ButtonContext {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly layoutService = inject(LayoutService);\n\n public expanded = model(false, {\n alias: 'expanded',\n });\n\n public hideMenuButton = input<boolean, unknown>(false, {\n alias: 'hide-menu-button',\n transform: booleanAttribute\n });\n\n public fullWidthIndicator = input<boolean, unknown>(false, {\n alias: 'full-width-indicator',\n transform: booleanAttribute\n });\n\n public containerStyle = input<ContainerStyle>('none', {\n alias: 'container-style',\n });\n\n public collapsedMode = input<CollapsedLayout>('compact', {\n alias: 'collapsed-layout',\n });\n\n public expandedMode = input<ExpandedLayout>('standard', {\n alias: 'expanded-layout',\n });\n\n private readonly resolvedCollapsedLayout = computed<CollapsedLayout>(() => {\n if (this.layoutService.isCompact()) {\n return 'hidden';\n }\n\n return this.collapsedMode();\n });\n\n private readonly resolvedExpandedLayout = computed<ExpandedLayout>(() => {\n if (this.layoutService.isCompact()) {\n return 'modal';\n }\n\n return this.expandedMode();\n });\n\n private menuIcons = contentChildren<IconElement>(IconElement);\n private floatingActionButton = contentChild<FloatingActionButton>(FloatingActionButton);\n\n public menuExpandIcon = computed(() => this.menuIcons().find((icon) => icon.iconType() == 'expand'));\n public menuCollapseIcon = computed(() => this.menuIcons().find((icon) => icon.iconType() == 'collapse'));\n public hasFab = computed(() => !!this.floatingActionButton());\n \n // context values\n buttonContextSize: Signal<ButtonSize> = signal('small');\n buttonContextExtended: Signal<boolean> = this.expanded;\n\n constructor() {\n effect((onCleanup) => {\n const containerStyle = this.containerStyle();\n if (containerStyle == 'none') {\n return;\n }\n\n const containerClass = 'md3-style-' + containerStyle;\n\n this.element.classList.add(containerClass);\n\n onCleanup(() => {\n this.element.classList.remove(containerClass);\n });\n });\n\n effect((onCleanup) => {\n const collapsed = 'md3-collapsed-' + this.resolvedCollapsedLayout();\n this.element.classList.add(collapsed);\n\n onCleanup(() => {\n this.element.classList.remove(collapsed);\n });\n });\n \n effect((onCleanup) => {\n const expanded = 'md3-expanded-' + this.resolvedExpandedLayout();\n this.element.classList.add(expanded);\n\n onCleanup(() => {\n this.element.classList.remove(expanded);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n\n public toggle(): void {\n const isExpanded = !this.expanded();\n this.expanded.set(isExpanded);\n }\n\n public collapse(): void {\n this.expanded.set(false);\n }\n\n public expand(): void {\n this.expanded.set(true);\n }\n}","<div class=\"md3-nav-scrim\" (click)=\"collapse()\"></div>\n<div class=\"md3-nav-container\">\n <div class=\"md3-nav-header\" [class.md3-hidden]=\"hideMenuButton() && !hasFab()\">\n @if (!hideMenuButton()) {\n <button md3-icon-button button-type=\"standard\" class=\"md3-menu-button\" (click)=\"toggle()\">\n <ng-content select=\"[md3-icon-element=expand]\"></ng-content>\n @if (!menuExpandIcon()) {\n <md3-icon md3-icon-element md3-menu-expand>menu</md3-icon>\n }\n <ng-content select=\"[md3-icon-element=collapse]\"></ng-content>\n @if (!menuCollapseIcon()) {\n <md3-icon md3-icon-element md3-menu-collapse bi-directional>menu_open</md3-icon>\n }\n </button>\n }\n\n <ng-content select=\"[md3-fab]\"></ng-content>\n </div>\n <div class=\"md3-menu-container md3-scrollable\" [class.md3-full-width-indicator]=\"fullWidthIndicator()\">\n <ng-content select=\"[md3-nav-item], md3-nav-group\"></ng-content>\n </div>\n</div>","import { Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { LayoutService } from '../../../foundations/layout.service';\n\ntype NavigationLayout = 'vertical' | 'horizontal';\n\n@Component({\n selector: 'md3-navigation-bar',\n imports: [\n ],\n templateUrl: './navigation-bar.html',\n styleUrl: './navigation-bar.scss',\n})\nexport class NavigationBar {\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly layoutService = inject(LayoutService);\n private readonly resolvedLayout = computed<NavigationLayout>(() => {\n if (this.layoutService.widthClass() === 'compact') {\n return 'vertical';\n }\n\n return 'horizontal';\n });\n\n constructor() {\n effect((onCleanup) => {\n const layout = 'md3-layout-' + this.resolvedLayout();\n this.element.classList.add(layout);\n\n onCleanup(() => {\n this.element.classList.remove(layout);\n });\n });\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","<div class=\"md3-navigation-container\">\n <div class=\"md3-menu-container\">\n <ng-content select=\"[md3-nav-item]\"></ng-content>\n </div>\n</div>","import { Component, computed, contentChild, contentChildren, effect, ElementRef, input, signal, Signal, viewChild } from '@angular/core';\nimport { InputElement } from '../common/input-element';\nimport { IconElement } from '../common/icon-element';\nimport { AbstractControl, FormControlName } from '@angular/forms';\nimport { fromEvent, merge } from 'rxjs';\nimport { IconButton } from '../buttons/icon-button/icon-button';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../types/button-size.type';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'md3-text-field',\n imports: [\n NgClass,\n ],\n templateUrl: './text-field.html',\n styleUrl: './text-field.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: TextField,\n },\n ],\n})\nexport class TextField implements ButtonContext {\n public label = input<string | null>(null, {\n alias: 'label',\n });\n public fieldType = input<'filled' | 'outlined'>('filled', {\n alias: 'field-type',\n });\n public inputCounter = input<boolean | number>(false, {\n alias: 'input-counter',\n });\n public control = input<AbstractControl>(undefined, {\n alias: 'control',\n });\n\n private inputContainer = viewChild<ElementRef>('inputContainer');\n private input = contentChild(InputElement);\n private iconElements = contentChildren(IconElement, { descendants: true });\n private iconButtons = contentChildren(IconButton, { descendants: true });\n private controlName = contentChild(FormControlName);\n private controlError = signal(false);\n private nativeInputError = signal(false);\n // Tracks the last aria-invalid value this component itself wrote, so\n // hasNativeInputError() can tell a self-authored value apart from one set\n // externally. See hasNativeInputError() for why that distinction matters.\n private lastSyncedAriaInvalid: string | null = null;\n\n public formControl = computed<AbstractControl | undefined>(() => {\n if (this.control()) {\n return this.control();\n }\n\n return this.controlName()?.control;\n });\n\n public inputError = computed<boolean>(() => {\n const control = this.formControl();\n if (control) {\n this.controlError();\n return this.hasControlError(control);\n }\n\n const input = this.input()?.nativeElement;\n if (!input) {\n return false;\n }\n\n this.nativeInputError();\n return this.hasNativeInputError(input);\n });\n\n public maxLength = computed<number | undefined>(() => {\n const counter = this.inputCounter();\n\n if (!counter || counter === true) {\n return undefined;\n }\n\n return Number(Number(counter).toFixed(0));\n });\n public valueLength = signal(0);\n \n // context values\n buttonContextSize: Signal<ButtonSize> = signal('small');\n\n constructor() {\n effect((onCleanup) => {\n const input = this.input();\n if (!input) {\n return;\n }\n\n const nativeInput = input.nativeElement;\n const isTextarea = nativeInput.tagName.toLowerCase() === 'textarea';\n \n nativeInput.setAttribute('placeholder', '');\n this.syncNativeInputState(nativeInput);\n\n if (isTextarea) {\n nativeInput.setAttribute('rows', '1');\n }\n\n const inputEvents = merge(\n fromEvent(nativeInput, 'input'),\n fromEvent(nativeInput, 'change'),\n fromEvent(nativeInput, 'blur'),\n fromEvent(nativeInput, 'invalid'),\n ).subscribe(() => {\n this.syncNativeInputState(nativeInput);\n\n if (isTextarea) {\n nativeInput.style.height = 'auto';\n nativeInput.style.height = nativeInput.scrollHeight + 'px';\n }\n });\n\n const observer = typeof MutationObserver === 'undefined'\n ? undefined\n : new MutationObserver(() => this.syncNativeInputState(nativeInput));\n observer?.observe(nativeInput, {\n attributes: true,\n attributeFilter: ['aria-invalid', 'disabled', 'maxlength', 'minlength', 'pattern', 'required'],\n });\n\n onCleanup(() => {\n inputEvents.unsubscribe();\n observer?.disconnect();\n });\n });\n\n effect((onCleanup) => {\n const control = this.formControl();\n if (!control) {\n this.controlError.set(false);\n return;\n }\n\n this.syncControlError(control);\n\n const controlEvents = control.events.subscribe(() => this.syncControlError(control));\n\n onCleanup(() => controlEvents.unsubscribe());\n });\n\n effect(() => {\n const container = this.inputContainer()?.nativeElement;\n if (!container) {\n return;\n }\n\n const hasLeading: boolean = this.iconElements().some(i => i.iconType() === 'leading') ?? false;\n const hasTrailing: boolean = (this.iconElements().some(i => i.iconType() === 'trailing') || !!this.iconButtons().length) ?? false;\n\n container.classList.toggle('md3-has-leading-icon', hasLeading);\n container.classList.toggle('md3-has-trailing-icon', hasTrailing);\n });\n\n effect(() => {\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\n });\n }\n\n private syncNativeInputState(input: HTMLInputElement): void {\n this.valueLength.set(input.value.length);\n this.nativeInputError.set(this.hasNativeInputError(input));\n }\n\n private syncControlError(control: AbstractControl): void {\n this.controlError.set(this.hasControlError(control));\n }\n\n private hasNativeInputError(input: HTMLInputElement): boolean {\n const ariaInvalid = input.getAttribute('aria-invalid');\n\n // aria-invalid is also written by syncAriaInvalidAttribute() below,\n // based on this very computation. Without excluding our own last\n // write, a validity error that gets flagged once can never clear:\n // the native 'input'/'change' handler would keep reading back the\n // (still-true, self-authored) attribute from the previous cycle\n // before the effect that's about to correct it has had a chance to\n // run. Comparing against lastSyncedAriaInvalid means only a value\n // that didn't come from us — i.e. set externally, such as by a\n // consumer's own validation — counts as an error signal here.\n const externallyFlaggedInvalid = ariaInvalid === 'true' && ariaInvalid !== this.lastSyncedAriaInvalid;\n\n return !input.validity.valid || externallyFlaggedInvalid;\n }\n\n private hasControlError(control: AbstractControl): boolean {\n return control.invalid && (control.touched || control.dirty);\n }\n\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\n if (!input) {\n return;\n }\n\n const value = this.inputError() ? 'true' : 'false';\n this.lastSyncedAriaInvalid = value;\n\n if (input.getAttribute('aria-invalid') !== value) {\n input.setAttribute('aria-invalid', value);\n }\n }\n}\n","<label #inputContainer class=\"md3-text-field-container\" [ngClass]=\"{\n 'md3-text-field-filled': fieldType() == 'filled',\n 'md3-text-field-outlined': fieldType() == 'outlined',\n}\">\n <ng-content></ng-content>\n <fieldset aria-hidden=\"true\" class=\"md3-text-field-outline\">\n @if (label() && fieldType() == 'outlined') {\n <legend class=\"md3-label-gap\">{{ label() }}</legend>\n }\n </fieldset>\n @if (label()) {\n <label class=\"md3-text-field-label\">{{ label() }}</label>\n }\n <ng-content select=\"[md3-icon-element=leading]\"></ng-content>\n <ng-content select=\"[md3-icon-button], [md3-icon-element=trailing]\"></ng-content>\n @if (fieldType() != 'outlined') {\n <div class=\"md3-text-field-state\"></div>\n }\n</label>\n<div class=\"md3-supporting-text-container\" [class.md3-has-error]=\"inputError()\">\n <ng-content select=\"[md3-supporting-text]\"></ng-content>\n @if (inputCounter()) {\n <div class=\"md3-text-input-counter\">{{ valueLength() + (maxLength() ? \"/\" + maxLength() : \"\") }}</div>\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[md3-supporting-text]',\n host: {\n 'class': 'md3-supporting-text'\n }\n})\nexport class SupportingText {\n}\n","import { DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, Type } from '@angular/core';\nimport { filter, Observable, Subject, take } from 'rxjs';\nimport { DialogConfig, DialogContainer } from '../../interfaces/dialog-config.interface';\n\nexport const DIALOG_DATA = new InjectionToken<unknown>('MD3_DIALOG_DATA');\nexport const DIALOG_CONFIG = new InjectionToken<DialogConfig>('MD3_DIALOG_CONFIG');\nexport const DIALOG_COMPONENT = new InjectionToken<Type<unknown>>('MD3_DIALOG_COMPONENT');\n\nconst DIALOG_EXIT_ANIMATION_FALLBACK_MS = 300;\nconst HIDDEN_CLASS = 'md3-dialog-hidden';\n\nexport class DialogRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private readonly closing = new Subject<void>();\n private readonly hiddenChanges = new Subject<boolean>();\n private closePromise: Promise<void> | null = null;\n private closeStarted = false;\n private closeSettled = false;\n private hidden = false;\n\n /** Shell hosting the dialog: the regular dialog or the full screen one. */\n public dialogInstance?: DialogContainer;\n /**\n * Filled by DialogService after the user component is attached. Keeping the\n * instance here lets callers imperatively update inputs when that is useful.\n */\n public componentInstance?: T;\n\n /** Overlay hosting the dialog, useful to reach the panel and the scrim. */\n public get overlayRef(): OverlayRef {\n return this.cdkRef.overlayRef;\n }\n\n /** Whether the dialog started closing. Such a dialog cannot be hidden or shown anymore. */\n public get isClosing(): boolean {\n return this.closeStarted;\n }\n\n /** Whether the dialog is currently hidden, on request or behind another dialog. */\n public get isHidden(): boolean {\n return this.hidden;\n }\n\n constructor(\n private readonly cdkRef: CdkDialogRef<R, T>,\n disableCloseEvents: boolean,\n /** Whether this reference belongs to a full screen dialog. */\n public readonly isFullScreen: boolean = false,\n ) {\n // Closing always goes through this reference so the exit animation can\n // run before the CDK disposes the overlay. Detachments triggered from\n // the outside (navigation, scroll strategy) still settle this ref.\n this.cdkRef.closed.pipe(take(1)).subscribe((result) => this.settle(result));\n\n if (!disableCloseEvents) {\n this.connectCloseEvents();\n }\n }\n\n /** Closes the dialog. The promise resolves once the exit animation is done. */\n public close(result?: R): Promise<void> {\n if (this.closePromise) {\n return this.closePromise;\n }\n\n this.startClosing();\n this.closePromise = this.startCloseAnimation().then(() => this.cdkRef.close(result));\n\n return this.closePromise;\n }\n\n /**\n * Hides the dialog with the closing animation while keeping it alive, so\n * its content, form state and subscriptions survive until show() is called.\n * The page underneath becomes usable again while the dialog waits behind it.\n * The promise resolves once the dialog is out of sight.\n */\n public hide(): Promise<void> {\n if (this.hidden || this.closeStarted) {\n return Promise.resolve();\n }\n\n this.hidden = true;\n this.toggleHiddenState(true);\n this.dialogInstance?.setActive(false);\n this.hiddenChanges.next(true);\n\n return this.waitForSurfaceAnimation();\n }\n\n /**\n * Brings a hidden dialog back with the opening animation. Focus moves back\n * into the dialog even when it was never hidden, which is what makes it\n * usable again once the dialog above it closes.\n */\n public show(): void {\n if (this.closeStarted) {\n return;\n }\n\n if (this.hidden) {\n this.hidden = false;\n this.toggleHiddenState(false);\n this.dialogInstance?.setActive(true);\n this.hiddenChanges.next(false);\n }\n\n this.dialogInstance?.recaptureFocus();\n }\n\n /** Emits when the dialog starts closing, before the exit animation runs. */\n public beforeClosed(): Observable<void> {\n return this.closing.asObservable();\n }\n\n /** Emits the new value of `isHidden` every time the dialog is hidden or shown. */\n public hiddenChanged(): Observable<boolean> {\n return this.hiddenChanges.asObservable();\n }\n\n public afterClosed(): Observable<R | undefined> {\n return this.closed.asObservable();\n }\n\n private connectCloseEvents(): void {\n // The CDK config keeps `disableClose` on, so the scrim and Escape key\n // are handled here instead and the dialog can animate out.\n this.cdkRef.backdropClick.pipe(take(1)).subscribe(() => {\n this.cdkRef.containerInstance._closeInteractionType = 'mouse';\n this.close();\n });\n\n // A hidden dialog is not the one the Escape key is meant for, even\n // though the overlay it sits in is still the one receiving the event.\n this.cdkRef.keydownEvents.pipe(\n filter((event) => !this.hidden && event.key === 'Escape' && !hasModifierKey(event)),\n take(1),\n ).subscribe((event) => {\n event.preventDefault();\n this.cdkRef.containerInstance._closeInteractionType = 'keyboard';\n this.close();\n });\n }\n\n private toggleHiddenState(isHidden: boolean): void {\n const overlayRef = this.cdkRef.overlayRef;\n const panel = overlayRef.overlayElement;\n const backdrop = overlayRef.backdropElement;\n\n panel.classList.toggle(HIDDEN_CLASS, isHidden);\n backdrop?.classList.toggle(HIDDEN_CLASS, isHidden);\n\n // `inert` keeps a hidden dialog out of the tab order and away from\n // assistive technology without removing it from the DOM.\n if (isHidden) {\n panel.setAttribute('inert', '');\n } else {\n panel.removeAttribute('inert');\n }\n }\n\n private startClosing(): void {\n if (this.closeStarted) {\n return;\n }\n\n this.closeStarted = true;\n this.closing.next();\n this.closing.complete();\n }\n\n private startCloseAnimation(): Promise<void> {\n const overlayRef = this.cdkRef.overlayRef;\n const wasVisible = !this.hidden;\n\n overlayRef.overlayElement.classList.add('md3-dialog-closing');\n overlayRef.backdropElement?.classList.add('md3-dialog-closing');\n this.dialogInstance?.setActive(false);\n\n // A hidden dialog already played the exit animation, so there is\n // nothing left to transition and it can be disposed right away.\n return wasVisible ? this.waitForSurfaceAnimation() : Promise.resolve();\n }\n\n /** Resolves when the surface finished animating, with a timeout as a safety net. */\n private waitForSurfaceAnimation(): Promise<void> {\n const panel = this.cdkRef.overlayRef.overlayElement;\n const surface = this.dialogInstance?.surfaceElement ?? panel;\n\n return new Promise((resolve) => {\n let isResolved = false;\n let timeoutId = setTimeout(done, DIALOG_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n surface.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === surface) {\n done();\n }\n }\n\n surface.addEventListener('transitionend', onTransitionEnd);\n });\n }\n\n /** Emits the result once the CDK reference is closed. Focus is restored by the container. */\n private settle(result?: R): void {\n if (this.closeSettled) {\n return;\n }\n\n // Covers detachments that did not go through close(), so anything\n // waiting on beforeClosed() is still notified.\n this.startClosing();\n this.closeSettled = true;\n this.hiddenChanges.complete();\n this.closed.next(result);\n this.closed.complete();\n }\n}\n","import { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { Component, ElementRef, inject, signal, viewChild } from '@angular/core';\nimport { DIALOG_CONFIG } from './dialog-ref';\nimport { DialogConfig, DialogContainer } from '../../interfaces/dialog-config.interface';\n\n/**\n * Material 3 dialog shell. It extends the CDK dialog container, so focus\n * trapping, focus restoration and the ARIA attributes are handled by the CDK\n * while this component only owns the MD3 surface and its animation.\n */\n@Component({\n selector: 'md3-dialog',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './dialog.html',\n styleUrl: './dialog.scss',\n})\nexport class Dialog extends CdkDialogContainer implements DialogContainer {\n private readonly surface = viewChild<ElementRef<HTMLElement>>('surface');\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\n\n public get surfaceElement(): HTMLElement | null {\n return this.surface()?.nativeElement ?? null;\n }\n\n /**\n * Started by DialogService, either right after the dialog is created or\n * once the dialog it replaces has had its head start. The animation runs on\n * the next frame so the surface has a real from/to state.\n */\n public startEnterAnimation(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\n }\n\n public setActive(value: boolean): void {\n this.isActive.set(value);\n }\n\n public recaptureFocus(): void {\n this._recaptureFocus();\n }\n}\n","<!-- The role and aria attributes live on the host element, applied by the CDK dialog container. -->\n<section\n #surface\n class=\"md3-dialog-container\"\n [class.md3-active]=\"isActive()\"\n [class.md-scheme-dark]=\"config.scheme == 'dark'\"\n [class.md-scheme-light]=\"config.scheme == 'light'\"\n [attr.dir]=\"config.direction ?? null\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n","import { CdkDialogContainer } from '@angular/cdk/dialog';\nimport { CdkPortalOutlet } from '@angular/cdk/portal';\nimport { AfterViewInit, Component, ElementRef, inject, signal, viewChild } from '@angular/core';\nimport { DIALOG_CONFIG } from '../dialog-ref';\nimport { DialogConfig, DialogContainer } from '../../../interfaces/dialog-config.interface';\nimport { SheetsService } from '../../sheets/sheets.service';\n\n/**\n * Material 3 full screen dialog shell. It covers the viewport and lays its\n * content out like the scaffold does, with a main pane and a side sheet outlet\n * on each side, so side sheets opened while it is up land inside the dialog\n * instead of behind it.\n */\n@Component({\n selector: 'md3-fullscreen-dialog',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './full-screen-dialog.html',\n styleUrl: './full-screen-dialog.scss',\n})\nexport class FullScreenDialog extends CdkDialogContainer implements DialogContainer, AfterViewInit {\n private readonly surface = viewChild<ElementRef<HTMLElement>>('surface');\n private readonly startOutlet = viewChild('startOutlet', { read: CdkPortalOutlet });\n private readonly endOutlet = viewChild('endOutlet', { read: CdkPortalOutlet });\n private readonly sheets = inject(SheetsService);\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\n\n public get surfaceElement(): HTMLElement | null {\n return this.surface()?.nativeElement ?? null;\n }\n\n ngAfterViewInit(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n\n // Taking the outlets over is what sends the next side sheet inside the\n // dialog. The scaffold gets them back when this dialog is destroyed.\n if (startOutlet) {\n this.sheets.registerSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.registerSideSheetOutlet('end', endOutlet);\n }\n }\n\n public override ngOnDestroy(): void {\n const startOutlet = this.startOutlet();\n const endOutlet = this.endOutlet();\n\n if (startOutlet) {\n this.sheets.unregisterSideSheetOutlet('start', startOutlet);\n }\n\n if (endOutlet) {\n this.sheets.unregisterSideSheetOutlet('end', endOutlet);\n }\n\n super.ngOnDestroy();\n }\n\n public startEnterAnimation(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\n }\n\n public setActive(value: boolean): void {\n this.isActive.set(value);\n }\n\n public recaptureFocus(): void {\n this._recaptureFocus();\n }\n}\n","<!-- The role and aria attributes live on the host element, applied by the CDK dialog container. -->\n<section\n #surface\n class=\"md3-fullscreen-dialog-container\"\n [class.md3-active]=\"isActive()\"\n [class.md-scheme-dark]=\"config.scheme == 'dark'\"\n [class.md-scheme-light]=\"config.scheme == 'light'\"\n [attr.dir]=\"config.direction ?? null\">\n <div class=\"md3-panes-container md3-scrollable\">\n <!--\n The CDK attaches the dialog content to the first portal outlet of\n this template, so the main pane has to come first. The panes are\n placed by grid area, which makes the DOM order irrelevant visually.\n -->\n <div class=\"md3-pane md3-pane-main\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n <div class=\"md3-pane md3-pane-start\">\n <ng-template #startOutlet cdkPortalOutlet></ng-template>\n </div>\n <div class=\"md3-pane md3-pane-end\">\n <ng-template #endOutlet cdkPortalOutlet></ng-template>\n </div>\n </div>\n</section>\n","import { Dialog as CdkDialog, DialogRef as CdkDialogRef } from '@angular/cdk/dialog';\nimport { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayContainer } from '@angular/cdk/overlay';\nimport { ComponentRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { Dialog } from './dialog';\nimport { FullScreenDialog } from './full-screen-dialog/full-screen-dialog';\nimport { DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, DialogRef } from './dialog-ref';\nimport { DialogConfig, DialogContainer, PreviousDialog } from '../../interfaces/dialog-config.interface';\nimport { FullScreenDialogConfig } from '../../interfaces/full-screen-dialog-config.interface';\n\ninterface ResolvedDialogConfig<D = unknown> extends DialogConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n disableCloseEvents: boolean;\n previousDialog: PreviousDialog;\n role: 'dialog' | 'alertdialog';\n ariaLabel: string;\n ariaLabelledBy: string;\n ariaDescribedBy: string;\n scheme: 'inherit' | 'dark' | 'light';\n direction: null | 'ltr' | 'rtl';\n viewContainerRef?: ViewContainerRef;\n injector: Injector;\n}\n\nconst PANEL_CLASS = 'md3-dialog-panel';\nconst FULL_SCREEN_PANEL_CLASS = 'md3-fullscreen-dialog-panel';\nconst OPENING_CLASS = 'md3-dialog-opening';\nconst SCRIM_KEPT_CLASS = 'md3-dialog-scrim-kept';\nconst SCRIM_INSTANT_CLASS = 'md3-dialog-scrim-instant';\n\n/**\n * Head start given to a dialog that leaves the screen before the dialog taking\n * its place animates in. Long enough to read as one dialog replacing another,\n * short enough to still feel like a single gesture.\n */\nconst DIALOG_HANDOVER_DELAY_MS = 160;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n private readonly cdkDialog = inject(CdkDialog);\n private readonly overlay = inject(Overlay);\n private readonly overlayContainer = inject(OverlayContainer);\n private readonly injector = inject(Injector);\n private readonly document = inject(DOCUMENT);\n\n /** Open dialogs, from the first one opened to the one currently on top. */\n private readonly refs: DialogRef<any, any>[] = [];\n\n /**\n * Elements the page was made of that the CDK hid from assistive technology,\n * kept here while the dialogs are hidden and the page is given back.\n */\n private readonly pageAriaHidden = new Map<Element, string>();\n\n /**\n * Page scrolling is blocked here instead of per overlay, so stacked dialogs\n * cannot unblock the page while another dialog is still open.\n */\n private readonly scrollBlock = this.overlay.scrollStrategies.block();\n\n /** Element that was focused before the first dialog of the stack opened. */\n private rootTrigger: HTMLElement | null = null;\n\n private pageStateQueued = false;\n\n public get openDialogs(): readonly DialogRef<any, any>[] {\n return this.refs;\n }\n\n /** Open dialogs that are currently on screen, from the bottom one up. */\n public get visibleDialogs(): readonly DialogRef<any, any>[] {\n return this.refs.filter((ref) => !ref.isHidden);\n }\n\n /** The full screen dialog that is open, if there is one. */\n public get fullScreenDialog(): DialogRef<any, any> | undefined {\n return this.refs.find((ref) => ref.isFullScreen && !ref.isClosing);\n }\n\n public open<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: DialogConfig<D> = {},\n ): DialogRef<T, R> {\n const dialogConfig = this.mergeConfig(config);\n\n if (this.refs.length === 0) {\n this.rootTrigger = this.getFocusedElement();\n }\n\n // The dialog that is on screen starts leaving first, so the two dialogs\n // never animate on top of each other. A full screen dialog is not part\n // of this: regular dialogs open on top of it and leave it alone.\n const previousRef = this.topRegularRef();\n\n if (previousRef) {\n this.dismissPrevious(previousRef, dialogConfig.previousDialog);\n }\n\n let dialogRef!: DialogRef<T, R>;\n\n const cdkRef = this.cdkDialog.open<R, D, T>(component, {\n // The MD3 shell replaces the default CDK container, so the overlay,\n // focus trap and focus restoration come from the CDK while the shell\n // only renders the surface.\n container: {\n type: Dialog,\n providers: () => [\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n ],\n },\n // These tokens make the dialog controllable from the dynamic\n // component without coupling that component to the service.\n providers: (cdkDialogRef: CdkDialogRef<R, T>) => {\n dialogRef = new DialogRef<T, R>(cdkDialogRef, dialogConfig.disableCloseEvents);\n\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: dialogConfig.data },\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n { provide: DIALOG_COMPONENT, useValue: component },\n ];\n },\n data: dialogConfig.data,\n role: dialogConfig.role,\n ariaModal: true,\n ariaLabel: dialogConfig.ariaLabel || null,\n ariaLabelledBy: dialogConfig.ariaLabelledBy || null,\n ariaDescribedBy: dialogConfig.ariaDescribedBy || null,\n direction: dialogConfig.direction ?? undefined,\n viewContainerRef: dialogConfig.viewContainerRef,\n injector: dialogConfig.injector,\n hasBackdrop: true,\n backdropClass: ['md3-dialog-scrim', OPENING_CLASS],\n panelClass: [PANEL_CLASS, OPENING_CLASS],\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n // Scrolling is blocked by the service for the whole stack.\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n // Focus goes back to whatever opened the stack, even when the dialog\n // that was open underneath has been closed in the meantime.\n restoreFocus: this.rootTrigger ?? true,\n // Scrim and Escape handling lives in DialogRef so the dialog can\n // play its exit animation before the overlay is disposed.\n disableClose: true,\n });\n\n this.registerDialog(dialogRef, cdkRef, dialogConfig, previousRef);\n\n return dialogRef;\n }\n\n /**\n * Opens a dialog that covers the whole screen. Only one can be open at a\n * time, so it replaces whatever is open, and while it is up the side sheet\n * outlets belong to it: side sheets open inside the dialog, not behind it.\n */\n public openFullScreen<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: FullScreenDialogConfig<D> = {},\n ): DialogRef<T, R> {\n const dialogConfig = this.mergeConfig(config);\n\n if (this.refs.length === 0) {\n this.rootTrigger = this.getFocusedElement();\n }\n\n // A full screen dialog is a context of its own: the dialog it replaces\n // and anything stacked on that dialog goes with it.\n const previousRef = this.topRef();\n\n if (previousRef) {\n // Everything open belongs to the context being replaced, including\n // a full screen dialog that is already up.\n this.closeAll();\n }\n\n let dialogRef!: DialogRef<T, R>;\n\n const cdkRef = this.cdkDialog.open<R, D, T>(component, {\n container: {\n type: FullScreenDialog,\n providers: () => [\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n ],\n },\n providers: (cdkDialogRef: CdkDialogRef<R, T>) => {\n dialogRef = new DialogRef<T, R>(cdkDialogRef, dialogConfig.disableCloseEvents, true);\n\n return [\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: dialogConfig.data },\n { provide: DIALOG_CONFIG, useValue: dialogConfig },\n { provide: DIALOG_COMPONENT, useValue: component },\n ];\n },\n data: dialogConfig.data,\n role: dialogConfig.role,\n ariaModal: true,\n ariaLabel: dialogConfig.ariaLabel || null,\n ariaLabelledBy: dialogConfig.ariaLabelledBy || null,\n ariaDescribedBy: dialogConfig.ariaDescribedBy || null,\n direction: dialogConfig.direction ?? undefined,\n viewContainerRef: dialogConfig.viewContainerRef,\n injector: dialogConfig.injector,\n // The dialog covers the page on its own, so there is nothing left\n // for a scrim to dim.\n hasBackdrop: false,\n panelClass: [FULL_SCREEN_PANEL_CLASS, OPENING_CLASS],\n // The CDK writes the size on the panel and the global strategy then\n // drops its centering margins, which is how the panel ends up\n // covering the whole wrapper.\n width: '100%',\n height: '100%',\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n restoreFocus: this.rootTrigger ?? true,\n disableClose: true,\n });\n\n this.registerDialog(dialogRef, cdkRef, dialogConfig, previousRef);\n\n return dialogRef;\n }\n\n /** Wires a freshly created dialog into the stack and starts its animation. */\n private registerDialog<T, D, R>(\n dialogRef: DialogRef<T, R>,\n cdkRef: CdkDialogRef<R, T>,\n dialogConfig: ResolvedDialogConfig<D>,\n previousRef: DialogRef<any, any> | undefined,\n ): void {\n dialogRef.dialogInstance = cdkRef.containerInstance as unknown as DialogContainer;\n dialogRef.componentInstance = cdkRef.componentInstance ?? undefined;\n\n if (cdkRef.componentRef) {\n this.bindDataToInputs(cdkRef.componentRef, dialogConfig);\n }\n\n this.refs.push(dialogRef);\n this.syncPageState();\n\n if (previousRef) {\n setTimeout(\n () => this.startReplacingAnimation(dialogRef, previousRef),\n DIALOG_HANDOVER_DELAY_MS,\n );\n } else {\n this.startOpenAnimation(dialogRef);\n }\n\n // Restoring starts with the exit animation, so the dialog underneath is\n // already coming back while this one is fading out.\n dialogRef.beforeClosed().subscribe(() => this.restorePreviousDialog(dialogRef));\n dialogRef.afterClosed().subscribe(() => this.removeRef(dialogRef));\n // Hiding and showing can also come straight from the reference, so the\n // page state is driven by what the dialogs report rather than by the\n // calls that went through this service.\n dialogRef.hiddenChanged().subscribe(() => this.syncPageState());\n }\n\n /**\n * Hides every dialog that is on screen, the full screen one included, with\n * the closing animation. They stay alive with their content and state, the\n * page underneath becomes usable, and showAll() puts them back. The promise\n * resolves once they are all out of sight.\n */\n public hideAll(): Promise<void> {\n const visible = this.refs.filter((ref) => !ref.isHidden && !ref.isClosing);\n\n return Promise.all(visible.map((ref) => ref.hide())).then(() => undefined);\n }\n\n /**\n * Brings the dialogs back on screen, whether they were hidden one by one or\n * all at once: the dialog that was on top returns, along with the full\n * screen dialog it sits in. Dialogs hidden behind another dialog stay\n * hidden, since that is where they belong once the stack is back.\n */\n public showAll(): void {\n const topRef = this.topRef();\n\n if (!topRef) {\n return;\n }\n\n const fullScreenRef = this.fullScreenDialog;\n\n // The full screen dialog is the context the top one sits in, so it\n // comes back first and the dialog on top ends up on top, with the focus.\n if (fullScreenRef && fullScreenRef !== topRef && fullScreenRef.isHidden) {\n fullScreenRef.show();\n }\n\n if (topRef.isHidden) {\n topRef.show();\n }\n }\n\n /** Closes every open dialog, including the hidden and the full screen ones. */\n public closeAll(): Promise<void> {\n // Closed from the bottom up so a closing dialog never brings back a\n // hidden dialog that is about to close as well.\n return Promise.all([...this.refs].map((ref) => ref.close())).then(() => undefined);\n }\n\n /** Closes the regular dialogs and leaves a full screen dialog alone. */\n private closeRegularDialogs(): Promise<void> {\n const closing = this.refs\n .filter((ref) => !ref.isFullScreen)\n .map((ref) => ref.close());\n\n return Promise.all(closing).then(() => undefined);\n }\n\n private mergeConfig<D>(config: DialogConfig<D>): ResolvedDialogConfig<D> {\n return {\n data: config.data,\n bindDataToInputs: config.bindDataToInputs ?? false,\n disableCloseEvents: config.disableCloseEvents ?? false,\n previousDialog: config.previousDialog ?? 'close',\n role: config.role ?? 'dialog',\n ariaLabel: config.ariaLabel ?? '',\n ariaLabelledBy: config.ariaLabelledBy ?? '',\n ariaDescribedBy: config.ariaDescribedBy ?? '',\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n /**\n * Hides or closes the dialog that is on screen. Its scrim stays up until\n * the dialog taking over is ready for it, so the page behind never\n * brightens between the two dialogs.\n */\n private dismissPrevious(\n previousRef: DialogRef<any, any>,\n behavior: PreviousDialog,\n ): Promise<void> {\n previousRef.overlayRef.backdropElement?.classList.add(SCRIM_KEPT_CLASS);\n\n return behavior === 'hide' ? previousRef.hide() : this.closeRegularDialogs();\n }\n\n private startOpenAnimation(dialogRef: DialogRef<any, any>): void {\n const overlayRef = dialogRef.overlayRef;\n const panel = overlayRef.overlayElement;\n const backdrop = overlayRef.backdropElement;\n\n // The overlay is inserted already rendered. Keep an initial class for\n // one frame, force style calculation, then remove it so CSS transitions\n // have a real from/to state.\n requestAnimationFrame(() => {\n setTimeout(() => {\n panel.getBoundingClientRect();\n panel.classList.remove(OPENING_CLASS);\n backdrop?.classList.remove(OPENING_CLASS);\n }, 100);\n });\n\n dialogRef.dialogInstance?.startEnterAnimation();\n }\n\n /** Opening animation for a dialog that took the place of another one. */\n private startReplacingAnimation(\n dialogRef: DialogRef<any, any>,\n previousRef: DialogRef<any, any>,\n ): void {\n if (dialogRef.isClosing) {\n return;\n }\n\n const panel = dialogRef.overlayRef.overlayElement;\n const backdrop = dialogRef.overlayRef.backdropElement;\n\n this.beginScrimHandover(previousRef, dialogRef);\n\n panel.getBoundingClientRect();\n panel.classList.remove(OPENING_CLASS);\n backdrop?.classList.remove(OPENING_CLASS);\n\n this.endScrimHandover(previousRef, dialogRef);\n\n dialogRef.dialogInstance?.startEnterAnimation();\n }\n\n /** Opening animation for a dialog coming back from behind a closing one. */\n private startRestoringAnimation(\n closingRef: DialogRef<any, any>,\n previousRef: DialogRef<any, any>,\n ): void {\n if (previousRef.isClosing) {\n return;\n }\n\n this.beginScrimHandover(closingRef, previousRef);\n previousRef.show();\n this.endScrimHandover(closingRef, previousRef);\n }\n\n /**\n * Moves both scrims to their new value in a single frame, without a\n * transition on either side, so the dim behind the dialogs never changes.\n */\n private beginScrimHandover(fromRef: DialogRef<any, any>, toRef: DialogRef<any, any>): void {\n const from = fromRef.overlayRef.backdropElement;\n const to = toRef.overlayRef.backdropElement;\n\n // Nothing to hand the scrim over to, e.g. a full screen dialog: the\n // outgoing scrim fades out on its own instead.\n if (!to) {\n return;\n }\n\n from?.classList.add(SCRIM_INSTANT_CLASS);\n from?.classList.remove(SCRIM_KEPT_CLASS);\n to?.classList.add(SCRIM_INSTANT_CLASS);\n }\n\n /** Gives the scrims their transitions back once the handover is painted. */\n private endScrimHandover(fromRef: DialogRef<any, any>, toRef: DialogRef<any, any>): void {\n const from = fromRef.overlayRef.backdropElement;\n const to = toRef.overlayRef.backdropElement;\n\n requestAnimationFrame(() => {\n from?.classList.remove(SCRIM_INSTANT_CLASS);\n to?.classList.remove(SCRIM_INSTANT_CLASS);\n });\n }\n\n private bindDataToInputs<T, D>(\n componentRef: ComponentRef<T>,\n config: ResolvedDialogConfig<D>,\n ): void {\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\n return;\n }\n\n // setInput runs Angular's normal input pipeline, so input setters,\n // transforms, signal inputs, and change detection are handled for us.\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\n componentRef.setInput(inputName, inputValue);\n });\n }\n\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n }\n\n /** Last dialog of the stack that is not closing yet. */\n private topRef(): DialogRef<any, any> | undefined {\n for (let index = this.refs.length - 1; index >= 0; index--) {\n if (!this.refs[index].isClosing) {\n return this.refs[index];\n }\n }\n\n return undefined;\n }\n\n /**\n * Same, without the full screen dialog: it hosts the dialogs opened on top\n * of it, so it is never the one that gets hidden or closed to make room.\n */\n private topRegularRef(): DialogRef<any, any> | undefined {\n const ref = this.topRef();\n\n return ref?.isFullScreen ? undefined : ref;\n }\n\n private restorePreviousDialog(ref: DialogRef<any, any>): void {\n const index = this.refs.indexOf(ref);\n\n if (index < 1) {\n return;\n }\n\n for (let previousIndex = index - 1; previousIndex >= 0; previousIndex--) {\n const previousRef = this.refs[previousIndex];\n\n if (previousRef.isClosing) {\n continue;\n }\n\n // The closing dialog gets the same head start it was given when it\n // took the screen, and keeps the scrim until then. Nothing to keep\n // when the dialog underneath has no scrim of its own.\n if (previousRef.overlayRef.backdropElement) {\n ref.overlayRef.backdropElement?.classList.add(SCRIM_KEPT_CLASS);\n }\n\n setTimeout(\n () => this.startRestoringAnimation(ref, previousRef),\n DIALOG_HANDOVER_DELAY_MS,\n );\n return;\n }\n }\n\n private removeRef(ref: DialogRef<any, any>): void {\n const index = this.refs.indexOf(ref);\n\n if (index === -1) {\n return;\n }\n\n this.refs.splice(index, 1);\n\n if (this.refs.length === 0) {\n this.rootTrigger = null;\n }\n\n this.syncPageState();\n }\n\n /**\n * State that belongs to the dialogs as a whole rather than to one of them:\n * page scrolling, the page being hidden from assistive technology, and\n * where focus sits. Applied in a task of its own, so a dialog handing the\n * screen over to another one does not give the page back and take it again\n * within the same frame.\n */\n private syncPageState(): void {\n if (this.pageStateQueued) {\n return;\n }\n\n this.pageStateQueued = true;\n\n setTimeout(() => {\n this.pageStateQueued = false;\n this.applyPageState();\n });\n }\n\n private applyPageState(): void {\n const hasVisibleDialog = this.refs.some((ref) => !ref.isHidden);\n\n if (hasVisibleDialog) {\n this.scrollBlock.enable();\n } else {\n this.scrollBlock.disable();\n }\n\n if (this.refs.length === 0) {\n // Nothing is open anymore: the CDK gives the page back to assistive\n // technology on its own, so there is nothing left to restore here.\n this.pageAriaHidden.clear();\n return;\n }\n\n if (hasVisibleDialog) {\n this.hidePageFromAssistiveTechnology();\n return;\n }\n\n this.exposePageToAssistiveTechnology();\n this.releaseFocus();\n }\n\n /**\n * Gives the page back to assistive technology while every dialog is hidden.\n * The CDK hides it for as long as a dialog is open, which would otherwise\n * leave nothing to read at all once the dialogs are out of sight.\n */\n private exposePageToAssistiveTechnology(): void {\n if (this.pageAriaHidden.size > 0) {\n return;\n }\n\n const container = this.overlayContainer.getContainerElement();\n\n Array.from(container.parentElement?.children ?? []).forEach((sibling) => {\n const value = sibling.getAttribute('aria-hidden');\n\n if (sibling === container || value === null) {\n return;\n }\n\n this.pageAriaHidden.set(sibling, value);\n sibling.removeAttribute('aria-hidden');\n });\n }\n\n /** Hides the page again as soon as a dialog is back on screen. */\n private hidePageFromAssistiveTechnology(): void {\n this.pageAriaHidden.forEach((value, element) => {\n element.setAttribute('aria-hidden', value);\n });\n\n this.pageAriaHidden.clear();\n }\n\n /**\n * Focus follows the dialogs off the screen: it goes back to whatever opened\n * the stack, so the page stays usable with the keyboard while the dialogs\n * wait behind it. Focus that already moved somewhere else is left alone.\n */\n private releaseFocus(): void {\n const activeElement = this.document.activeElement;\n\n if (this.rootTrigger && (!activeElement || activeElement === this.document.body)) {\n this.rootTrigger.focus();\n }\n }\n\n private getFocusedElement(): HTMLElement | null {\n const activeElement = this.document.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n }\n}\n","import { Component } from '@angular/core';\nimport { TypeHeadline } from '../../../styles/typography/type-headline';\n\n@Component({\n selector: 'md3-dialog-header',\n imports: [\n TypeHeadline\n ],\n templateUrl: './dialog-header.html',\n styleUrl: './dialog-header.scss',\n})\nexport class DialogHeader {\n}\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\n<div class=\"md3-dialog-title\">\n <md3-type-headline size=\"small\">\n <ng-content></ng-content>\n </md3-type-headline>\n</div>","import { Component } from '@angular/core';\nimport { TypeBody } from '../../../styles/typography/type-body';\n\n@Component({\n selector: 'md3-dialog-body',\n imports: [\n TypeBody\n ],\n templateUrl: './dialog-body.html',\n styleUrl: './dialog-body.scss',\n host: {\n 'class': 'md3-scrollable',\n },\n})\nexport class DialogBody {\n}\n","<md3-type-body size=\"medium\">\n <ng-content></ng-content>\n</md3-type-body>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'md3-dialog-actions',\n imports: [],\n templateUrl: './dialog-actions.html',\n styleUrl: './dialog-actions.scss',\n})\nexport class DialogActions {\n}\n","<div class=\"md3-actions\">\n <ng-content></ng-content>\n</div>","import { Component, input, signal, Signal } from '@angular/core';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\n\n/**\n * Header of a full screen dialog: a leading icon button to leave the dialog,\n * the headline, and a trailing action. It sticks to the top of the dialog while\n * the content scrolls underneath.\n */\n@Component({\n selector: 'md3-fullscreen-dialog-header',\n imports: [\n ],\n templateUrl: './full-screen-dialog-header.html',\n styleUrl: './full-screen-dialog-header.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: FullScreenDialogHeader,\n },\n ],\n})\nexport class FullScreenDialogHeader implements ButtonContext {\n // context values\n buttonContextSize: Signal<ButtonSize> = signal('small');\n buttonContextWidth: Signal<IconButtonWidth> = signal('default');\n}\n","<ng-content select=\"[md3-icon-button][md3-header-leading]\"></ng-content>\n<div class=\"md3-title-container\">\n <ng-content></ng-content>\n</div>\n<div class=\"md3-actions-container\">\n <ng-content select=\"[md3-header-trailing]\"></ng-content>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, Type } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { MenuConfig } from '../../interfaces/menu-config.interface';\nimport { Menu } from './menu';\n\nexport const MENU_DATA = new InjectionToken<unknown>('MD3_MENU_DATA');\nexport const MENU_CONFIG = new InjectionToken<MenuConfig>('MD3_MENU_CONFIG');\nexport const MENU_COMPONENT = new InjectionToken<Type<unknown>>('MD3_MENU_COMPONENT');\n\nconst MENU_EXIT_ANIMATION_FALLBACK_MS = 300;\n\nexport class MenuRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private isClosed = false;\n\n public menuInstance?: Menu;\n /**\n * Filled by MenuService after the user component is attached. Keeping the\n * instance here lets callers imperatively update inputs when that is useful.\n */\n public componentInstance?: T;\n\n constructor(\n private readonly overlayRef: OverlayRef,\n private readonly previouslyFocusedElement: HTMLElement | null\n ) {\n }\n\n public close(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.startCloseAnimation().then(() => {\n // Disposing the overlay removes the wrapper, the backdrop, and the\n // dynamically attached content component in one operation.\n this.overlayRef.dispose();\n\n this.previouslyFocusedElement?.focus();\n\n this.closed.next(result);\n this.closed.complete();\n });\n }\n\n private startCloseAnimation(): Promise<void> {\n let panel = this.overlayRef.overlayElement;\n let animatedElement = panel.querySelector<HTMLElement>('.md3-menu-container') ?? panel;\n\n panel.classList.add('md3-menu-closing');\n this.menuInstance?.showMenu(false);\n\n return new Promise((resolve) => {\n let isResolved = false;\n let timeoutId = setTimeout(done, MENU_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n animatedElement.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === animatedElement) {\n done();\n }\n }\n\n animatedElement.addEventListener('transitionend', onTransitionEnd);\n });\n }\n\n public afterClosed(): Observable<R | undefined> {\n return this.closed.asObservable();\n }\n}\n","import { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\nimport { AfterContentInit, Component, ComponentRef, effect, ElementRef, inject, Injector, signal, Type, viewChild } from '@angular/core';\nimport { MenuConfig } from '../../interfaces/menu-config.interface';\nimport { MENU_CONFIG } from './menu-ref';\n\n@Component({\n selector: 'md3-menu',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './menu.html',\n styleUrl: './menu.scss',\n host: {\n 'class': 'md3-menu-container',\n 'role': 'menu',\n '[class.md3-visible]': 'isVisible()',\n '[class.md3-inactive]': '!isActive()',\n '[class.md-scheme-dark]': 'scheme() == \"dark\"',\n '[class.md-scheme-light]': 'scheme() == \"light\"',\n '[dir]': 'direction()',\n },\n})\nexport class Menu implements AfterContentInit {\n private readonly portalOutlet = viewChild<CdkPortalOutlet>(CdkPortalOutlet);\n\n protected readonly config = inject<MenuConfig>(MENU_CONFIG, { optional: true }) ?? {};\n protected menuColors = signal<'standard' | 'vibrant'>('standard');\n protected isVisible = signal<boolean>(false);\n protected scheme = signal<'inherit' | 'dark' | 'light'>('inherit');\n protected direction = signal<null | 'ltr' | 'rtl'>(null);\n \n public isActive = signal<boolean>(true);\n \n public get element(): HTMLElement {\n return this.el.nativeElement as HTMLElement;\n }\n\n constructor(private el: ElementRef) {\n effect((onCleanup) => {\n const color = 'md3-' + this.menuColors();\n this.element.classList.add(color);\n\n onCleanup(() => {\n this.element.classList.remove(color);\n });\n });\n\n this.menuColors.set(this.config.menuColors ?? 'standard');\n this.scheme.set(this.config.scheme ?? 'inherit');\n this.direction.set(this.config.direction ?? null);\n }\n\n ngAfterContentInit(): void {\n requestAnimationFrame(() => {\n this.showMenu(true);\n });\n }\n\n public showMenu(value: boolean): void {\n this.isVisible.set(value);\n }\n \n /**\n * The service creates this wrapper first, then calls this method to mount\n * the user supplied component into the dialog container.\n */\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\n const portal = new ComponentPortal(component, null, injector);\n\n return this.portalOutlet()!.attachComponentPortal(portal);\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>","import {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, ElementRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { MenuConfig, MenuPositionOrigin, MenuPositionX, MenuPositionY, MenuScrollStrategy } from '../../interfaces/menu-config.interface';\nimport { MENU_COMPONENT, MENU_CONFIG, MENU_DATA, MenuRef } from './menu-ref';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Menu } from './menu';\nimport { filter, take } from 'rxjs';\n\ninterface ResolvedMenuConfig<D = unknown> extends MenuConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n isSubMenu: boolean;\n menuColors: 'standard' | 'vibrant';\n xPosition: MenuPositionX;\n yPosition: MenuPositionY;\n overlapTrigger: boolean;\n offsetX: number;\n offsetY: number;\n viewportMargin: number;\n positions?: ConnectedPosition[];\n scrollStrategy: MenuScrollStrategy;\n scheme: 'inherit' | 'dark' | 'light';\n direction: null | 'ltr' | 'rtl';\n viewContainerRef?: ViewContainerRef;\n injector: Injector;\n}\n\ninterface InternalMenuConfig<D = unknown> extends MenuConfig<D> {\n isSubMenu?: boolean;\n}\n\ninterface CreatedMenuOverlay {\n overlayRef: OverlayRef;\n positionStrategy?: FlexibleConnectedPositionStrategy;\n origin: ResolvedMenuOrigin;\n}\n\ntype ResolvedMenuOrigin = Element | { height?: number; width?: number; x: number; y: number };\ntype ClientRect = Pick<DOMRectReadOnly, 'bottom' | 'height' | 'left' | 'right' | 'top' | 'width' | 'x' | 'y'>;\ntype SubMenuPositionX = Extract<MenuPositionX, 'before' | 'after'>;\ntype SubMenuVerticalAlignment = 'top' | 'bottom';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MenuService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly document = inject(DOCUMENT);\n\n public open<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: MenuConfig<D> = {},\n ): MenuRef<T, R> {\n const menuConfig = this.mergeConfig(config);\n const previouslyFocusedElement = this.getFocusedElement();\n const triggerElement = this.resolveTriggerElement(menuConfig.origin, previouslyFocusedElement);\n const menuOverlay = this.createOverlay(menuConfig, previouslyFocusedElement);\n const overlayRef = menuOverlay.overlayRef;\n const menuRef = new MenuRef<T, R>(\n overlayRef,\n previouslyFocusedElement\n );\n const injector = this.createInjector(component, menuConfig, menuRef);\n\n // The overlay hosts the MD3 menu shell. The shell is responsible for\n // the surface markup and receives the dynamic content through a portal.\n const menuPortal = new ComponentPortal(\n Menu,\n menuConfig.viewContainerRef ?? null,\n injector,\n );\n const menuComponentRef = overlayRef.attach(menuPortal);\n const contentComponentRef = menuComponentRef.instance.attachContent(component, injector);\n\n this.bindDataToInputs(contentComponentRef, menuConfig);\n this.flipPositionIfPushBreaksAnchor(menuOverlay, menuConfig);\n menuRef.componentInstance = contentComponentRef.instance;\n menuRef.menuInstance = menuComponentRef.instance;\n this.bindTriggerActiveState(triggerElement, overlayRef, menuRef);\n this.startOpenAnimation(overlayRef);\n this.connectCloseEvents(overlayRef, menuRef);\n\n return menuRef;\n }\n\n public openSubMenu<T, D = unknown, R = unknown>(\n component: Type<T>,\n config: MenuConfig<D> = {},\n ): MenuRef<T, R> {\n const xPosition = this.getSubMenuXPosition(config.xPosition);\n const yPosition = config.yPosition ?? 'below';\n const offsetX = config.offsetX ?? 0;\n const offsetY = config.offsetY ?? 0;\n\n const subMenuConfig: InternalMenuConfig<D> = {\n ...config,\n isSubMenu: true,\n xPosition,\n yPosition,\n overlapTrigger: config.overlapTrigger ?? true,\n offsetX,\n offsetY,\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n };\n\n return this.open<T, D, R>(component, subMenuConfig);\n }\n\n private mergeConfig<D>(config: MenuConfig<D>): ResolvedMenuConfig<D> {\n const viewportMargin = this.getViewportMargin(config.viewportMargin);\n\n return {\n data: config.data,\n bindDataToInputs: config.bindDataToInputs ?? false,\n isSubMenu: (config as InternalMenuConfig<D>).isSubMenu ?? false,\n menuColors: config.menuColors ?? 'standard',\n xPosition: config.xPosition ?? 'start',\n yPosition: config.yPosition ?? 'below',\n overlapTrigger: config.overlapTrigger ?? false,\n offsetX: config.offsetX ?? 0,\n offsetY: config.offsetY ?? 4,\n viewportMargin,\n positions: config.positions,\n scrollStrategy: config.scrollStrategy ?? 'reposition',\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n private createOverlay(\n config: ResolvedMenuConfig,\n fallbackOrigin: HTMLElement | null,\n ): CreatedMenuOverlay {\n const origin = this.resolveOrigin(config.origin, fallbackOrigin);\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(origin)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(true)\n .withPush(true)\n .withViewportMargin(config.viewportMargin)\n .withPositions(config.positions ?? this.getInitialConnectedPositions(config))\n .withTransformOriginOn('.md3-menu-container');\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['md3-menu-scrim', 'md3-menu-opening'],\n panelClass: ['md3-menu-panel', 'md3-menu-opening'],\n positionStrategy,\n scrollStrategy: this.getScrollStrategy(config.scrollStrategy),\n });\n\n return {\n overlayRef: this.overlay.create(overlayConfig),\n positionStrategy: config.positions ? undefined : positionStrategy,\n origin,\n };\n }\n\n private bindTriggerActiveState<T, R>(\n triggerElement: HTMLElement | null,\n overlayRef: OverlayRef,\n menuRef: MenuRef<T, R>,\n ): void {\n if (!triggerElement) {\n return;\n }\n\n const removeActiveClass = () => triggerElement.classList.remove('md3-menu-active');\n\n triggerElement.classList.add('md3-menu-active');\n menuRef.afterClosed().pipe(take(1)).subscribe(removeActiveClass);\n overlayRef.detachments().pipe(take(1)).subscribe(removeActiveClass);\n }\n\n private resolveOrigin(\n origin: MenuPositionOrigin | undefined,\n fallbackOrigin: HTMLElement | null,\n ): ResolvedMenuOrigin {\n const resolvedOrigin = origin ?? fallbackOrigin;\n\n if (resolvedOrigin) {\n if (this.isMouseEvent(resolvedOrigin)) {\n if (resolvedOrigin.currentTarget instanceof HTMLElement) {\n return resolvedOrigin.currentTarget;\n }\n\n return {\n x: resolvedOrigin.clientX,\n y: resolvedOrigin.clientY,\n };\n }\n\n if (this.isElementRef(resolvedOrigin)) {\n return resolvedOrigin.nativeElement;\n }\n\n return resolvedOrigin as ResolvedMenuOrigin;\n }\n\n const viewport = this.document.defaultView;\n\n return {\n x: (viewport?.innerWidth ?? 0) / 2,\n y: (viewport?.innerHeight ?? 0) / 2,\n };\n }\n\n private resolveTriggerElement(\n origin: MenuPositionOrigin | undefined,\n fallbackOrigin: HTMLElement | null,\n ): HTMLElement | null {\n const resolvedOrigin = origin ?? fallbackOrigin;\n\n if (!resolvedOrigin) {\n return null;\n }\n\n if (this.isMouseEvent(resolvedOrigin)) {\n return resolvedOrigin.currentTarget instanceof HTMLElement\n ? resolvedOrigin.currentTarget\n : null;\n }\n\n if (this.isElementRef(resolvedOrigin)) {\n return resolvedOrigin.nativeElement;\n }\n\n return resolvedOrigin instanceof HTMLElement ? resolvedOrigin : null;\n }\n\n private flipPositionIfPushBreaksAnchor(\n menuOverlay: CreatedMenuOverlay,\n config: ResolvedMenuConfig,\n ): void {\n if (!menuOverlay.positionStrategy) {\n return;\n }\n\n menuOverlay.overlayRef.updatePosition();\n\n const fallbackPosition = this.getFallbackPositionAfterPush(\n config,\n this.getOriginClientRect(menuOverlay.origin),\n menuOverlay.overlayRef.overlayElement.getBoundingClientRect(),\n );\n\n if (!fallbackPosition) {\n return;\n }\n\n menuOverlay.positionStrategy.withPositions([fallbackPosition]);\n menuOverlay.overlayRef.updatePosition();\n }\n\n private getInitialConnectedPositions(config: ResolvedMenuConfig): ConnectedPosition[] {\n return [this.getPreferredConnectedPosition(config)];\n }\n\n private getPreferredConnectedPosition(config: ResolvedMenuConfig): ConnectedPosition {\n if (config.isSubMenu) {\n return this.createSubMenuConnectedPosition(\n this.getSubMenuXPosition(config.xPosition),\n this.getSubMenuVerticalAlignment(config.yPosition),\n config.offsetX,\n config.offsetY,\n );\n }\n\n return this.createConnectedPosition(config.xPosition, config.yPosition, config);\n }\n\n private getFallbackPositionAfterPush(\n config: ResolvedMenuConfig,\n originRect: ClientRect,\n overlayRect: ClientRect,\n ): ConnectedPosition | null {\n const xPosition = this.shouldFlipXPosition(\n config,\n originRect,\n overlayRect,\n )\n ? this.getFallbackXPosition(config.xPosition)\n : config.xPosition;\n const yPosition = this.shouldFlipYPosition(\n config,\n originRect,\n overlayRect,\n )\n ? this.getFallbackYPosition(config.yPosition)\n : config.yPosition;\n\n if (xPosition === config.xPosition && yPosition === config.yPosition) {\n return null;\n }\n\n return this.getPreferredConnectedPosition({\n ...config,\n xPosition,\n yPosition,\n });\n }\n\n private shouldFlipXPosition(\n config: ResolvedMenuConfig,\n originRect: ClientRect,\n overlayRect: ClientRect,\n ): boolean {\n const tolerance = config.viewportMargin;\n\n switch (config.xPosition) {\n case 'before':\n return overlayRect.right > originRect.left + tolerance;\n\n case 'after':\n return overlayRect.left < originRect.right - tolerance;\n\n case 'start':\n return originRect.left < overlayRect.left - tolerance\n || originRect.left > overlayRect.right + tolerance;\n\n case 'end':\n return originRect.right < overlayRect.left - tolerance\n || originRect.right > overlayRect.right + tolerance;\n\n case 'center':\n default:\n return false;\n }\n }\n\n private shouldFlipYPosition(\n config: ResolvedMenuConfig,\n originRect: ClientRect,\n overlayRect: ClientRect,\n ): boolean {\n const tolerance = config.viewportMargin;\n\n if (config.isSubMenu) {\n const anchorY = config.yPosition === 'above' ? originRect.bottom : originRect.top;\n\n return anchorY < overlayRect.top - tolerance\n || anchorY > overlayRect.bottom + tolerance;\n }\n\n if (config.overlapTrigger) {\n const anchorY = config.yPosition === 'above' ? originRect.bottom : originRect.top;\n\n return anchorY < overlayRect.top - tolerance\n || anchorY > overlayRect.bottom + tolerance;\n }\n\n switch (config.yPosition) {\n case 'above':\n return overlayRect.bottom > originRect.top + tolerance;\n\n case 'below':\n return overlayRect.top < originRect.bottom - tolerance;\n\n case 'center':\n default:\n return false;\n }\n }\n\n private createConnectedPosition(\n xPosition: MenuPositionX,\n yPosition: MenuPositionY,\n config: ResolvedMenuConfig,\n ): ConnectedPosition {\n const horizontal = this.getHorizontalPosition(xPosition);\n const vertical = this.getVerticalPosition(yPosition, config.overlapTrigger);\n\n return {\n ...horizontal,\n ...vertical,\n offsetX: config.offsetX,\n offsetY: this.getOffsetY(yPosition, config),\n panelClass: [\n 'md3-menu-position-' + xPosition,\n 'md3-menu-position-' + yPosition,\n ],\n };\n }\n\n private createSubMenuConnectedPosition(\n xPosition: SubMenuPositionX,\n yAlignment: SubMenuVerticalAlignment,\n offsetX: number,\n offsetY: number,\n ): ConnectedPosition {\n const horizontal = this.getHorizontalPosition(xPosition);\n const yPosition = yAlignment === 'top' ? 'below' : 'above';\n\n return {\n ...horizontal,\n originY: yAlignment,\n overlayY: yAlignment,\n offsetX: this.getSubMenuOffsetX(xPosition, offsetX),\n offsetY: this.getSubMenuOffsetY(yAlignment, offsetY),\n panelClass: [\n 'md3-menu-position-' + xPosition,\n 'md3-menu-position-' + yPosition,\n 'md3-menu-position-submenu',\n ],\n };\n }\n\n private getHorizontalPosition(position: MenuPositionX): Pick<ConnectedPosition, 'originX' | 'overlayX'> {\n switch (position) {\n case 'end':\n return {\n originX: 'end',\n overlayX: 'end',\n };\n\n case 'before':\n return {\n originX: 'start',\n overlayX: 'end',\n };\n\n case 'after':\n return {\n originX: 'end',\n overlayX: 'start',\n };\n\n case 'center':\n return {\n originX: 'center',\n overlayX: 'center',\n };\n\n case 'start':\n default:\n return {\n originX: 'start',\n overlayX: 'start',\n };\n }\n }\n\n private getVerticalPosition(\n position: MenuPositionY,\n overlapTrigger: boolean,\n ): Pick<ConnectedPosition, 'originY' | 'overlayY'> {\n switch (position) {\n case 'above':\n return {\n originY: overlapTrigger ? 'bottom' : 'top',\n overlayY: 'bottom',\n };\n\n case 'center':\n return {\n originY: 'center',\n overlayY: 'center',\n };\n\n case 'below':\n default:\n return {\n originY: overlapTrigger ? 'top' : 'bottom',\n overlayY: 'top',\n };\n }\n }\n\n private getFallbackXPosition(position: MenuPositionX): MenuPositionX {\n switch (position) {\n case 'start':\n return 'end';\n\n case 'end':\n return 'start';\n\n case 'before':\n return 'after';\n\n case 'after':\n return 'before';\n\n case 'center':\n default:\n return 'center';\n }\n }\n\n private getSubMenuXPosition(position: MenuPositionX | undefined): SubMenuPositionX {\n return position === 'before' ? 'before' : 'after';\n }\n\n private getFallbackYPosition(position: MenuPositionY): MenuPositionY {\n switch (position) {\n case 'above':\n return 'below';\n\n case 'below':\n return 'above';\n\n case 'center':\n default:\n return 'center';\n }\n }\n\n private getSubMenuVerticalAlignment(position: MenuPositionY): SubMenuVerticalAlignment {\n return position === 'above' ? 'bottom' : 'top';\n }\n\n private getOriginClientRect(origin: ResolvedMenuOrigin): ClientRect {\n if ('getBoundingClientRect' in origin) {\n return origin.getBoundingClientRect();\n }\n\n return {\n x: origin.x,\n y: origin.y,\n top: origin.y,\n right: origin.x,\n bottom: origin.y,\n left: origin.x,\n width: 0,\n height: 0,\n };\n }\n\n private getViewportMargin(configuredMargin: number | undefined): number {\n const minimumMargin = this.getHalfEmInPixels();\n\n return Math.max(configuredMargin ?? minimumMargin, minimumMargin);\n }\n\n private getHalfEmInPixels(): number {\n const viewport = this.document.defaultView;\n const fontSize = viewport?.getComputedStyle(this.document.documentElement).fontSize;\n const pixels = fontSize ? Number.parseFloat(fontSize) * 0.5 : 8;\n\n return Number.isFinite(pixels) ? pixels : 8;\n }\n\n private getOffsetY(position: MenuPositionY, config: ResolvedMenuConfig): number {\n if (config.overlapTrigger || position === 'center') {\n return 0;\n }\n\n return position === 'above'\n ? config.offsetY * -1\n : config.offsetY;\n }\n\n private getSubMenuOffsetX(position: SubMenuPositionX, offsetX: number): number {\n return position === 'before' ? offsetX * -1 : offsetX;\n }\n\n private getSubMenuOffsetY(\n alignment: SubMenuVerticalAlignment,\n offsetY: number,\n ): number {\n return alignment === 'bottom' ? offsetY * -1 : offsetY;\n }\n\n private getScrollStrategy(scrollStrategy: MenuScrollStrategy) {\n switch (scrollStrategy) {\n case 'block':\n return this.overlay.scrollStrategies.block();\n\n case 'close':\n return this.overlay.scrollStrategies.close();\n\n case 'noop':\n return this.overlay.scrollStrategies.noop();\n\n case 'reposition':\n default:\n return this.overlay.scrollStrategies.reposition();\n }\n }\n\n private isMouseEvent(origin: MenuPositionOrigin | HTMLElement): origin is MouseEvent {\n return typeof MouseEvent !== 'undefined' && origin instanceof MouseEvent;\n }\n\n private isElementRef(origin: Exclude<MenuPositionOrigin, MouseEvent>): origin is ElementRef<HTMLElement> {\n return typeof origin === 'object'\n && origin !== null\n && 'nativeElement' in origin\n && origin.nativeElement instanceof HTMLElement;\n }\n\n private startOpenAnimation(overlayRef: OverlayRef): void {\n const panel = overlayRef.overlayElement;\n const backdrop = overlayRef.backdropElement;\n\n // The overlay is inserted already rendered. Keep an initial class for\n // one frame, force style calculation, then remove it so CSS transitions\n // have a real from/to state.\n requestAnimationFrame(() => {\n setTimeout(() => {\n panel.getBoundingClientRect();\n panel.classList.remove('md3-menu-opening');\n backdrop?.classList.remove('md3-menu-opening');\n }, 100);\n });\n }\n\n private createInjector<T, D, R>(\n component: Type<T>,\n config: ResolvedMenuConfig<D>,\n menuRef: MenuRef<T, R>,\n ): Injector {\n return Injector.create({\n parent: config.injector,\n providers: [\n // These tokens make the menu controllable from the dynamic\n // component without coupling that component to the service.\n { provide: MenuRef, useValue: menuRef },\n { provide: MENU_DATA, useValue: config.data },\n { provide: MENU_CONFIG, useValue: config },\n { provide: MENU_COMPONENT, useValue: component },\n ],\n });\n }\n\n private bindDataToInputs<T, D>(\n componentRef: ComponentRef<T>,\n config: ResolvedMenuConfig<D>,\n ): void {\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\n return;\n }\n\n // setInput runs Angular's normal input pipeline, so input setters,\n // transforms, signal inputs, and change detection are handled for us.\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\n componentRef.setInput(inputName, inputValue);\n });\n }\n\n private connectCloseEvents<T, R>(\n overlayRef: OverlayRef,\n menuRef: MenuRef<T, R>,\n ): void {\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => menuRef.close());\n overlayRef.keydownEvents().pipe(\n filter((event) => event.key === 'Escape'),\n take(1),\n ).subscribe(() => menuRef.close());\n }\n\n private getFocusedElement(): HTMLElement | null {\n const activeElement = this.document.activeElement;\n return activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\n }\n}\n","import { booleanAttribute, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'md3-menu-group',\n imports: [],\n templateUrl: './menu-group.html',\n styleUrl: './menu-group.scss',\n host: {\n 'role': 'group',\n },\n})\nexport class MenuGroup {\n}\n","<ng-content></ng-content>\n","import { Component, contentChildren, ElementRef, input, model } from '@angular/core';\nimport { StateComponent } from '../../common/state-component';\nimport { IconElement } from '../../common/icon-element';\nimport { InputElement } from '../../common/input-element';\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\nimport { TypeBody, TypeLabel, TypeTitle } from '../../../../public-api';\n\n@Component({\n selector: 'button[md3-menu-item], a[md3-menu-item]',\n imports: [\n InputElement,\n StateComponent,\n MaterialIcon,\n TypeLabel,\n TypeBody,\n TypeTitle,\n ],\n templateUrl: './menu-item.html',\n styleUrl: './menu-item.scss',\n host: {\n '(click)': 'onHostClick()',\n },\n})\nexport class MenuItem {\n public label = input<string>('', {\n alias: 'label',\n });\n\n public supportingText = input<string | null>(null, {\n alias: 'supporting-text',\n });\n\n public trailingText = input<string | null>(null, {\n alias: 'trailing-text',\n });\n\n public selected = model<boolean | null>(null, {\n alias: 'selected'\n });\n\n private iconElements = contentChildren(IconElement);\n \n public get leading(): IconElement | undefined {\n return this.iconElements().find((icon) => icon.iconType() === 'leading');\n }\n\n public get trailing(): IconElement | undefined {\n return this.iconElements().find((icon) => icon.iconType() === 'trailing');\n }\n\n public get showLeadingIcon(): boolean {\n return (!!this.leading && !this.selected()) || this.selected() == true;\n }\n\n public onHostClick(): void {\n const selected = this.selected();\n if (selected === null) {\n return;\n }\n\n this.selected.set(!selected);\n }\n\n constructor(private el: ElementRef<HTMLElement>) {\n }\n\n public get element(): HTMLElement {\n return this.el.nativeElement;\n }\n}\n","@if (selected() !== null) {\n <input type=\"checkbox\" md3-input-element [checked]=\"selected()\">\n}\n\n<div class=\"md3-menu-item-container\" md3-state-component>\n <div class=\"md3-menu-item-leading\" [class.has-icon]=\"showLeadingIcon\">\n <ng-content select=\"[md3-icon-element=leading]\"></ng-content>\n @if (!leading) {\n <md3-icon>check</md3-icon>\n }\n </div>\n\n <div class=\"md3-menu-item-content\">\n <md3-type-label size=\"large\">{{ label() }}</md3-type-label>\n @if (supportingText()?.length) {\n <md3-type-body size=\"small\">{{ supportingText() }}</md3-type-body>\n }\n </div>\n\n <div class=\"md3-menu-item-trailing\">\n <ng-content select=\"md3-badge\"></ng-content>\n @if (trailingText()?.length) {\n <md3-type-title size=\"small\">{{ trailingText() }}</md3-type-title>\n }\n <ng-content select=\"[md3-icon-element=trailing]\"></ng-content>\n </div>\n</div>","import { Component, input, signal, Signal } from '@angular/core';\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\nimport { TypeTitle } from '../../../styles/typography/type-title';\nimport { ButtonSize } from '../../../types/button-size.type';\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\n\n@Component({\n selector: 'md3-side-sheet-header',\n imports: [\n TypeTitle\n ],\n templateUrl: './side-sheet-header.html',\n styleUrl: './side-sheet-header.scss',\n providers: [\n {\n provide: MD3_BUTTON_CONTEXT,\n useExisting: SideSheetHeader,\n },\n ],\n})\nexport class SideSheetHeader implements ButtonContext {\n public title = input<string>('', {\n alias: 'title',\n });\n \n // context values\n buttonContextSize: Signal<ButtonSize> = signal(\"small\");\n buttonContextWidth: Signal<IconButtonWidth> = signal(\"default\");\n}\n","<ng-content select=\"[md3-icon-button][leading]\"></ng-content>\n<div class=\"md3-title-container\">\n <md3-type-title size=\"large\">{{ title() }}</md3-type-title>\n</div>\n<ng-content select=\"[md3-icon-button][trailing]\"></ng-content>","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'md3-side-sheet-body',\n imports: [],\n templateUrl: './side-sheet-body.html',\n styleUrl: './side-sheet-body.scss',\n host: {\n class: 'md3-scrollable',\n },\n hostDirectives: [\n CdkScrollable\n ],\n})\nexport class SideSheetBody {\n}\n","<ng-content></ng-content>","import { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n selector: 'md3-side-sheet-actions',\n imports: [],\n templateUrl: './side-sheet-actions.html',\n styleUrl: './side-sheet-actions.scss',\n host: {\n '[class.md3-style-divider]': 'showDivider()',\n },\n})\nexport class SideSheetActions {\n public showDivider = input<boolean, unknown>(false, {\n alias: 'show-divider',\n transform: booleanAttribute\n });\n}\n","<ng-content></ng-content>","import { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SnackbarConfig } from '../../interfaces/snackbar-config.interface';\nimport { Snackbar } from './snackbar';\n\nexport const SNACKBAR_MESSAGE = new InjectionToken<string | TemplateRef<unknown>>('MD3_SNACKBAR_MESSAGE');\nexport const SNACKBAR_ACTION_LABEL = new InjectionToken<string | undefined>('MD3_SNACKBAR_ACTION_LABEL');\nexport const SNACKBAR_CONFIG = new InjectionToken<SnackbarConfig>('MD3_SNACKBAR_CONFIG');\n\nconst SNACKBAR_EXIT_ANIMATION_FALLBACK_MS = 300;\n\nexport type SnackbarDismissReason = 'timeout' | 'action' | 'manual';\n\nexport interface SnackbarDismiss<R = unknown> {\n reason: SnackbarDismissReason;\n result?: R;\n}\n\nexport class SnackbarRef<R = unknown> {\n private readonly closed = new Subject<SnackbarDismiss<R>>();\n private readonly actionTriggered = new Subject<void>();\n private isClosed = false;\n private overlayRef?: OverlayRef;\n private timeoutId?: ReturnType<typeof setTimeout>;\n private timerStartedAt = 0;\n private remainingMs: number;\n\n public snackbarInstance?: Snackbar;\n\n constructor(private readonly duration: number) {\n this.remainingMs = duration;\n }\n\n /**\n * Called by SnackbarService once this snackbar is dequeued and actually\n * attached to the overlay. Queued-but-never-shown refs never get one, and\n * close() below handles that case without trying to animate or dispose.\n */\n public attachOverlay(overlayRef: OverlayRef): void {\n this.overlayRef = overlayRef;\n }\n\n public startTimer(): void {\n if (this.isClosed || this.duration <= 0 || this.timeoutId) {\n return;\n }\n\n this.timerStartedAt = Date.now();\n this.timeoutId = setTimeout(() => this.close('timeout'), this.remainingMs);\n }\n\n public pauseTimer(): void {\n if (!this.timeoutId) {\n return;\n }\n\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n this.remainingMs = Math.max(0, this.remainingMs - (Date.now() - this.timerStartedAt));\n }\n\n public resumeTimer(): void {\n if (this.timeoutId || this.isClosed || this.duration <= 0 || this.remainingMs <= 0) {\n return;\n }\n\n this.startTimer();\n }\n\n public triggerAction(result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.actionTriggered.next();\n this.close('action', result);\n }\n\n public close(reason: SnackbarDismissReason = 'manual', result?: R): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n\n if (!this.overlayRef) {\n // Still sitting in the queue — nothing was ever attached, so\n // there's nothing to animate or dispose.\n this.closed.next({ reason, result });\n this.closed.complete();\n this.actionTriggered.complete();\n return;\n }\n\n this.startCloseAnimation().then(() => {\n this.overlayRef!.dispose();\n this.closed.next({ reason, result });\n this.closed.complete();\n this.actionTriggered.complete();\n });\n }\n\n public onAction(): Observable<void> {\n return this.actionTriggered.asObservable();\n }\n\n public afterDismissed(): Observable<SnackbarDismiss<R>> {\n return this.closed.asObservable();\n }\n\n private startCloseAnimation(): Promise<void> {\n const panel = this.overlayRef!.overlayElement;\n const animatedElement = panel.querySelector<HTMLElement>('.md3-snackbar-container') ?? panel;\n\n panel.classList.add('md3-snackbar-closing');\n this.snackbarInstance?.isActive.set(false);\n\n return new Promise((resolve) => {\n let isResolved = false;\n const timeoutId = setTimeout(done, SNACKBAR_EXIT_ANIMATION_FALLBACK_MS);\n\n function done(): void {\n if (isResolved) {\n return;\n }\n\n isResolved = true;\n clearTimeout(timeoutId);\n animatedElement.removeEventListener('transitionend', onTransitionEnd);\n resolve();\n }\n\n function onTransitionEnd(event: TransitionEvent): void {\n if (event.target === animatedElement) {\n done();\n }\n }\n\n animatedElement.addEventListener('transitionend', onTransitionEnd);\n });\n }\n}\n","import { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { Component, ElementRef, HostListener, OnDestroy, OnInit, Signal, TemplateRef, effect, inject, signal } from '@angular/core';\nimport { Button } from '../buttons/button/button';\nimport { IconButton } from '../buttons/icon-button/icon-button';\nimport { MaterialIcon } from '../common/material-icon/material-icon';\nimport { LayoutService } from '../../foundations/layout.service';\nimport { SnackbarConfig } from '../../interfaces/snackbar-config.interface';\nimport { SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, SnackbarRef } from './snackbar-ref';\nimport { IconElement, TypeBody } from '../../../public-api';\n\n@Component({\n selector: 'md3-snackbar',\n imports: [\n NgClass,\n NgTemplateOutlet,\n TypeBody,\n Button,\n IconButton,\n MaterialIcon,\n IconElement,\n ],\n templateUrl: './snackbar.html',\n styleUrl: './snackbar.scss',\n})\nexport class Snackbar implements OnInit, OnDestroy {\n private readonly snackbarRef = inject(SnackbarRef, { optional: true });\n private readonly layout = inject(LayoutService);\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<SnackbarConfig>(SNACKBAR_CONFIG, { optional: true }) ?? {};\n protected readonly message = inject<string | TemplateRef<unknown>>(SNACKBAR_MESSAGE, { optional: true }) ?? '';\n protected readonly actionLabel = inject<string | undefined>(SNACKBAR_ACTION_LABEL, { optional: true });\n\n protected get role(): string {\n return this.config.politeness === 'assertive' ? 'alert' : 'status';\n }\n\n protected get isTemplateMessage(): boolean {\n return this.message instanceof TemplateRef;\n }\n\n protected get templateMessage(): TemplateRef<unknown> {\n return this.message as TemplateRef<unknown>;\n }\n\n protected get textMessage(): string {\n return this.message as string;\n }\n\n protected get templateContext(): unknown {\n return this.config.data ?? null;\n }\n\n protected get isStacked(): boolean {\n return !!this.config.stackedAction && !!this.actionLabel;\n }\n\n constructor(private readonly el: ElementRef<HTMLElement>) {\n effect(() => {\n const inset = this.layout.bottomInset() + (this.config.bottomOffset ?? 0);\n this.el.nativeElement.style.setProperty('--md3-snackbar-bottom-inset', `${inset}px`);\n });\n\n effect(() => {\n if (this.layout.isCompact()) {\n this.el.nativeElement.classList.add('md3-full-width');\n } else {\n this.el.nativeElement.classList.remove('md3-full-width');\n }\n });\n }\n\n @HostListener('pointerenter')\n @HostListener('focusin')\n protected onInteractionStart(): void {\n this.snackbarRef?.pauseTimer();\n }\n\n @HostListener('pointerleave')\n @HostListener('focusout')\n protected onInteractionEnd(): void {\n this.snackbarRef?.resumeTimer();\n }\n\n ngOnInit(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\n\n this.snackbarRef?.startTimer();\n }\n\n ngOnDestroy(): void {\n this.snackbarRef?.pauseTimer();\n }\n\n protected onActionClick(): void {\n this.snackbarRef?.triggerAction();\n }\n\n protected onCloseClick(): void {\n this.snackbarRef?.close('manual');\n }\n}\n","<div\n class=\"md3-snackbar-container\"\n [class.md3-active]=\"isActive()\"\n [class.md3-snackbar-stacked]=\"isStacked\"\n [ngClass]=\"{\n 'md-scheme-light': config.scheme == 'dark',\n 'md-scheme-dark': config.scheme == 'light',\n }\"\n [attr.dir]=\"config.direction ?? null\"\n [attr.role]=\"role\"\n [attr.aria-live]=\"config.politeness ?? 'polite'\"\n [attr.aria-label]=\"config.ariaLabel || null\">\n <div class=\"md3-snackbar-message\">\n @if (isTemplateMessage) {\n <ng-container *ngTemplateOutlet=\"templateMessage; context: templateContext\"></ng-container>\n } @else {\n <div md3-type-body size=\"medium\">{{ textMessage }}</div>\n }\n </div>\n\n @if (actionLabel) {\n <button md3-button type=\"button\" class=\"md3-snackbar-action\" button-type=\"text\" button-size=\"small\" (click)=\"onActionClick()\">\n {{ actionLabel }}\n </button>\n }\n\n @if (config.showCloseIcon) {\n <button md3-icon-button type=\"button\" class=\"md3-snackbar-close\" button-type=\"standard\" button-size=\"small\" aria-label=\"Dismiss\" (click)=\"onCloseClick()\">\n <md3-icon md3-icon-element>close</md3-icon>\n </button>\n }\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Injector, TemplateRef, inject } from '@angular/core';\nimport { SnackbarConfig, SnackbarPoliteness } from '../../interfaces/snackbar-config.interface';\nimport { Snackbar } from './snackbar';\nimport { SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, SnackbarRef } from './snackbar-ref';\n\nconst DEFAULT_DURATION_MS = 4000;\n\ninterface ResolvedSnackbarConfig extends SnackbarConfig {\n showCloseIcon: boolean;\n stackedAction: boolean;\n duration: number;\n politeness: SnackbarPoliteness;\n replaceCurrent: boolean;\n ariaLabel: string;\n scheme: 'inherit' | 'dark' | 'light';\n direction: null | 'ltr' | 'rtl';\n position: 'start' | 'center' | 'end';\n bottomOffset: number;\n injector: Injector;\n}\n\n// Internally every queued snackbar is tracked as SnackbarRef<unknown> — the\n// caller-facing generic <R> only matters for the ref that open() hands back,\n// so it's applied once at that single return point instead of threaded\n// through the queue/active bookkeeping.\ninterface QueuedSnackbar {\n message: string | TemplateRef<unknown>;\n actionLabel: string | undefined;\n config: ResolvedSnackbarConfig;\n ref: SnackbarRef;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SnackbarService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n\n private readonly queue: QueuedSnackbar[] = [];\n private active?: QueuedSnackbar;\n\n /**\n * Opens a snackbar. Only one is ever visible at a time — if another is\n * already showing, this one waits in a FIFO queue unless\n * config.replaceCurrent is set.\n *\n * message can be a plain string, or a TemplateRef for cases like a\n * progress indicator that needs to keep re-rendering as the caller's own\n * state changes. The surrounding surface, action button, close icon,\n * positioning, and animation are always owned by the Snackbar shell —\n * there's no arbitrary custom-component API, since that's how you end up\n * with something that isn't a snackbar anymore per MD3.\n *\n * config.onAction, if provided, is called when the action button (never\n * the close icon) is clicked — an alternative to ref.onAction().subscribe()\n * for callers that don't want to hold onto the returned ref.\n */\n public open<D = unknown, R = unknown>(\n message: string | TemplateRef<D>,\n actionLabel?: string,\n config: SnackbarConfig<D> = {},\n ): SnackbarRef<R> {\n const snackbarConfig = this.mergeConfig(config);\n\n if (snackbarConfig.showCloseIcon && actionLabel) {\n throw new Error(\n 'Snackbar cannot have both an action and a close icon — Material Design 3 snackbars support only one.',\n );\n }\n\n const ref = new SnackbarRef(snackbarConfig.duration);\n const queued: QueuedSnackbar = {\n message,\n actionLabel,\n config: snackbarConfig,\n ref,\n };\n\n ref.afterDismissed().subscribe(() => this.onDismissed(queued));\n\n if (snackbarConfig.onAction) {\n // Only ever fires for the action button — SnackbarRef.actionTriggered\n // is exclusively raised from the action button's click handler, never\n // from the close icon, which just closes without emitting.\n ref.onAction().subscribe(() => snackbarConfig.onAction!());\n }\n\n if (snackbarConfig.replaceCurrent && this.active) {\n this.queue.unshift(queued);\n this.active.ref.close('manual');\n } else if (this.active) {\n this.queue.push(queued);\n } else {\n this.show(queued);\n }\n\n return ref as SnackbarRef<R>;\n }\n\n /** Dismisses whichever snackbar is currently showing, if any. */\n public dismiss<R = unknown>(result?: R): void {\n this.active?.ref.close('manual', result);\n }\n\n /** Dismisses the visible snackbar and clears everything still queued. */\n public dismissAll(): void {\n const stillQueued = this.queue.splice(0, this.queue.length);\n stillQueued.forEach((item) => item.ref.close('manual'));\n this.active?.ref.close('manual');\n }\n\n private show(queued: QueuedSnackbar): void {\n this.active = queued;\n\n const overlayRef = this.createOverlay(queued.config);\n queued.ref.attachOverlay(overlayRef);\n\n const injector = this.createInjector(queued);\n const portal = new ComponentPortal(Snackbar, queued.config.viewContainerRef ?? null, injector);\n const componentRef = overlayRef.attach(portal);\n\n queued.ref.snackbarInstance = componentRef.instance;\n }\n\n private onDismissed(queued: QueuedSnackbar): void {\n if (this.active === queued) {\n this.active = undefined;\n } else {\n const index = this.queue.indexOf(queued);\n\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n\n return;\n }\n\n const next = this.queue.shift();\n\n if (next) {\n this.show(next);\n }\n }\n\n private mergeConfig(config: SnackbarConfig): ResolvedSnackbarConfig {\n return {\n data: config.data,\n showCloseIcon: config.showCloseIcon ?? false,\n stackedAction: config.stackedAction ?? false,\n onAction: config.onAction,\n duration: config.duration ?? DEFAULT_DURATION_MS,\n politeness: config.politeness ?? 'polite',\n replaceCurrent: config.replaceCurrent ?? false,\n ariaLabel: config.ariaLabel ?? '',\n scheme: config.scheme ?? 'inherit',\n direction: config.direction ?? null,\n position: config.position ?? 'start',\n bottomOffset: config.bottomOffset ?? 0,\n viewContainerRef: config.viewContainerRef,\n injector: config.injector ?? this.injector,\n };\n }\n\n private createOverlay(config: ResolvedSnackbarConfig): OverlayRef {\n let panelClass = ['md3-snackbar-panel', 'md3-position-' + config.position];\n if (config.direction !== null) {\n panelClass.push('md3-direction-' + config.direction);\n }\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: false,\n panelClass: panelClass,\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n });\n\n return this.overlay.create(overlayConfig);\n }\n\n private createInjector(queued: QueuedSnackbar): Injector {\n return Injector.create({\n parent: queued.config.injector,\n providers: [\n { provide: SnackbarRef, useValue: queued.ref },\n { provide: SNACKBAR_MESSAGE, useValue: queued.message },\n { provide: SNACKBAR_ACTION_LABEL, useValue: queued.actionLabel },\n { provide: SNACKBAR_CONFIG, useValue: queued.config },\n ],\n });\n }\n}\n","// types\nexport * from './types/text-size.type';\nexport * from './types/text-color.type';\nexport * from './types/card-type.type';\nexport * from './types/button-size.type';\nexport * from './types/button-type.type';\nexport * from './types/icon-button-type.type';\nexport * from './types/icon-button-width.type';\nexport * from './types/split-button-type.type';\nexport * from './types/button-group-type.type';\nexport * from './types/button-group-selection.type';\nexport * from './types/fab-size.type';\nexport * from './types/fab-type.type';\nexport * from './types/slider-size.type';\nexport * from './types/dialog-role.type';\nexport * from './types/chip-type.type';\nexport * from './types/chip-style.type';\nexport * from './types/list-leading-type.type';\nexport * from './types/list-leading-size.type';\n\n// interfaces\nexport * from './interfaces/dialog-config.interface';\nexport * from './interfaces/full-screen-dialog-config.interface';\nexport * from './interfaces/menu-config.interface';\nexport * from './interfaces/side-sheet-config.interface';\nexport * from './interfaces/snackbar-config.interface';\n\n// typography\nexport * from './styles/typography/type-display';\nexport * from './styles/typography/type-headline';\nexport * from './styles/typography/type-title';\nexport * from './styles/typography/type-body';\nexport * from './styles/typography/type-label';\n\n// foundations\nexport * from './foundations/layout.service';\nexport * from './foundations/scaffold/scaffold';\nexport * from './foundations/scaffold-bar';\nexport * from './foundations/scaffold-rail';\nexport * from './foundations/scaffold-pane';\nexport * from './foundations/grid';\nexport * from './foundations/grid-item';\n\n// common components and directives\nexport * from './components/common/input-element';\nexport * from './components/common/state-component';\nexport * from './components/common/icon-element';\nexport * from './components/common/material-icon/material-icon';\nexport * from './components/common/divider';\nexport * from './components/common/badge';\nexport * from './components/common/avatar';\n\n// buttons\nexport * from './components/buttons/button/button';\nexport * from './components/buttons/floating-action-button/floating-action-button';\nexport * from './components/buttons/icon-button/icon-button';\nexport * from './components/buttons/split-button/split-button';\nexport * from './components/buttons/button-group/button-group';\n\n// cards\nexport * from './components/card/card';\n\n// chips\nexport * from './components/chips/chips';\n\n// selection controls\nexport * from './components/selection-controls/checkbox/checkbox';\nexport * from './components/selection-controls/radio-button/radio-button';\nexport * from './components/selection-controls/switch/switch';\n\n// sliders\nexport * from './components/slider/slider';\n\n// list\nexport * from './components/list/list';\nexport * from './components/list/list-item/list-item';\nexport * from './components/list/list-leading/list-leading';\nexport * from './components/list/list-slot';\n\n// loading and progress\nexport * from './components/loading-and-progress/loading-indicator/loading-indicator';\nexport * from './components/loading-and-progress/linear-progress-indicator/linear-progress-indicator';\nexport * from './components/loading-and-progress/circular-progress-indicator/circular-progress-indicator';\n\n// app bar\nexport * from './components/app-bar/app-bar';\nexport * from './components/app-bar/app-bar-logo';\n\n// navigations\nexport * from './components/navigations/navigation-item/navigation-item';\nexport * from './components/navigations/navigation-group/navigation-group';\nexport * from './components/navigations/navigation-rail/navigation-rail';\nexport * from './components/navigations/navigation-bar/navigation-bar';\n\n// text fields\nexport * from './components/text-field/text-field';\nexport * from './components/text-field/supporting-text';\n\n// dialogs\nexport * from './components/dialog/dialog';\nexport * from './components/dialog/dialog-ref';\nexport * from './components/dialog/dialog.service';\nexport * from './components/dialog/dialog-header/dialog-header';\nexport * from './components/dialog/dialog-body/dialog-body';\nexport * from './components/dialog/dialog-actions/dialog-actions';\nexport * from './components/dialog/full-screen-dialog/full-screen-dialog';\nexport * from './components/dialog/full-screen-dialog-header/full-screen-dialog-header';\n\n// menus\nexport * from './components/menu/menu';\nexport * from './components/menu/menu-ref';\nexport * from './components/menu/menu.service';\nexport * from './components/menu/menu-group/menu-group';\nexport * from './components/menu/menu-item/menu-item';\n\n// sheets\nexport * from './components/sheets/side-sheet/side-sheet-ref';\nexport * from './components/sheets/sheets.service';\nexport * from './components/sheets/side-sheet-header/side-sheet-header';\nexport * from './components/sheets/side-sheet-body/side-sheet-body';\nexport * from './components/sheets/side-sheet-actions/side-sheet-actions';\n\n// snackbar\nexport * from './components/snackbar/snackbar';\nexport * from './components/snackbar/snackbar-ref';\nexport * from './components/snackbar/snackbar.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LayoutService","i1.StateComponent","CdkDialog"],"mappings":"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"}