@almoamendev/ngx-md3 0.0.12 → 0.0.13
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/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/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 private readonly states = new Map<SideSheetSide, SideSheetOutletState>();\n\n public registerSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const currentState = this.states.get(side);\n\n if (currentState?.outlet === outlet) {\n return;\n }\n\n if (currentState) {\n this.disposeOutletState(currentState);\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 this.states.set(side, {\n outlet,\n stackComponentRef,\n refs: [],\n });\n }\n\n public unregisterSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const state = this.states.get(side);\n\n if (!state || state.outlet !== outlet) {\n return;\n }\n\n this.disposeOutletState(state);\n this.states.delete(side);\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.states.get(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.states.get(side))?.close(result);\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 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\" [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 { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, Type } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\nimport { Dialog } from './dialog';\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;\n\nexport class DialogRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private isClosed = false;\n\n public dialogInstance?: Dialog;\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 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 backdrop = this.overlayRef.backdropElement;\n let animatedElement = panel.querySelector<HTMLElement>('.md3-dialog-container') ?? panel;\n\n panel.classList.add('md3-dialog-closing');\n backdrop?.classList.add('md3-dialog-closing');\n this.dialogInstance?.isActive.set(false);\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 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 { AfterContentInit, Component, ComponentRef, inject, Injector, signal, Type, viewChild } from '@angular/core';\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { DIALOG_CONFIG } from './dialog-ref';\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\n\n@Component({\n selector: 'md3-dialog',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './dialog.html',\n styleUrl: './dialog.scss',\n})\nexport class Dialog implements AfterContentInit {\n private readonly portalOutlet = viewChild<CdkPortalOutlet>(CdkPortalOutlet);\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\n\n protected get role(): string {\n return this.config.role ?? 'dialog';\n }\n\n ngAfterContentInit(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\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","<section\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 tabindex=\"-1\"\n [attr.role]=\"role\"\n [attr.aria-modal]=\"true\"\n [attr.aria-label]=\"config.ariaLabel ?? null\"\n [attr.aria-labelledby]=\"config.ariaLabelledBy ?? null\"\n [attr.aria-describedby]=\"config.ariaDescribedBy ?? null\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n","import { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { filter, take } from 'rxjs';\nimport { Dialog } from './dialog';\nimport { DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, DialogRef } from './dialog-ref';\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\n\ninterface ResolvedDialogConfig<D = unknown> extends DialogConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n disableCloseEvents: boolean;\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\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\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: DialogConfig<D> = {},\n ): DialogRef<T, R> {\n const dialogConfig = this.mergeConfig(config);\n const previouslyFocusedElement = this.getFocusedElement();\n const overlayRef = this.createOverlay();\n const dialogRef = new DialogRef<T, R>(\n overlayRef,\n previouslyFocusedElement\n );\n const injector = this.createInjector(component, dialogConfig, dialogRef);\n\n // The overlay hosts the MD3 dialog shell. The shell is responsible for\n // the surface markup and receives the dynamic content through a portal.\n const dialogPortal = new ComponentPortal(\n Dialog,\n dialogConfig.viewContainerRef ?? null,\n injector,\n );\n const dialogComponentRef = overlayRef.attach(dialogPortal);\n const contentComponentRef = dialogComponentRef.instance.attachContent(component, injector);\n\n this.bindDataToInputs(contentComponentRef, dialogConfig);\n dialogRef.componentInstance = contentComponentRef.instance;\n dialogRef.dialogInstance = dialogComponentRef.instance;\n this.startOpenAnimation(overlayRef);\n this.connectCloseEvents(overlayRef, dialogRef, dialogConfig);\n this.focusDialog(overlayRef);\n\n return dialogRef;\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 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 private createOverlay(): OverlayRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['md3-dialog-scrim', 'md3-dialog-opening'],\n panelClass: ['md3-dialog-panel', 'md3-dialog-opening'],\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n return this.overlay.create(overlayConfig);\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-dialog-opening');\n backdrop?.classList.remove('md3-dialog-opening');\n }, 100);\n });\n }\n\n private createInjector<T, D, R>(\n component: Type<T>,\n config: ResolvedDialogConfig<D>,\n dialogRef: DialogRef<T, R>,\n ): Injector {\n return Injector.create({\n parent: config.injector,\n providers: [\n // These tokens make the dialog controllable from the dynamic\n // component without coupling that component to the service.\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n { provide: DIALOG_CONFIG, useValue: config },\n { provide: DIALOG_COMPONENT, useValue: component },\n ],\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 connectCloseEvents<T, R>(\n overlayRef: OverlayRef,\n dialogRef: DialogRef<T, R>,\n config: ResolvedDialogConfig,\n ): void {\n if (config.disableCloseEvents) {\n return;\n }\n\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => dialogRef.close());\n overlayRef.keydownEvents().pipe(\n filter((event) => event.key === 'Escape'),\n take(1),\n ).subscribe(() => dialogRef.close());\n }\n\n private focusDialog(overlayRef: OverlayRef): void {\n queueMicrotask(() => {\n const surface = overlayRef.overlayElement.querySelector<HTMLElement>('.md3-dialog-container');\n const focusTarget = surface?.querySelector<HTMLElement>([\n 'button:not([disabled])',\n '[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', '));\n\n (focusTarget ?? surface)?.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 private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\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})\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 { 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/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';\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"],"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/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/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 private readonly states = new Map<SideSheetSide, SideSheetOutletState>();\n\n public registerSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const currentState = this.states.get(side);\n\n if (currentState?.outlet === outlet) {\n return;\n }\n\n if (currentState) {\n this.disposeOutletState(currentState);\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 this.states.set(side, {\n outlet,\n stackComponentRef,\n refs: [],\n });\n }\n\n public unregisterSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\n const state = this.states.get(side);\n\n if (!state || state.outlet !== outlet) {\n return;\n }\n\n this.disposeOutletState(state);\n this.states.delete(side);\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.states.get(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.states.get(side))?.close(result);\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\" [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 { OverlayRef } from '@angular/cdk/overlay';\nimport { InjectionToken, Type } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\nimport { Dialog } from './dialog';\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;\n\nexport class DialogRef<T = unknown, R = unknown> {\n private readonly closed = new Subject<R | undefined>();\n private isClosed = false;\n\n public dialogInstance?: Dialog;\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 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 backdrop = this.overlayRef.backdropElement;\n let animatedElement = panel.querySelector<HTMLElement>('.md3-dialog-container') ?? panel;\n\n panel.classList.add('md3-dialog-closing');\n backdrop?.classList.add('md3-dialog-closing');\n this.dialogInstance?.isActive.set(false);\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 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 { AfterContentInit, Component, ComponentRef, inject, Injector, signal, Type, viewChild } from '@angular/core';\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { DIALOG_CONFIG } from './dialog-ref';\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\n\n@Component({\n selector: 'md3-dialog',\n imports: [\n CdkPortalOutlet,\n ],\n templateUrl: './dialog.html',\n styleUrl: './dialog.scss',\n})\nexport class Dialog implements AfterContentInit {\n private readonly portalOutlet = viewChild<CdkPortalOutlet>(CdkPortalOutlet);\n\n public isActive = signal<boolean>(false);\n\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\n\n protected get role(): string {\n return this.config.role ?? 'dialog';\n }\n\n ngAfterContentInit(): void {\n requestAnimationFrame(() => {\n this.isActive.set(true);\n });\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","<section\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 tabindex=\"-1\"\n [attr.role]=\"role\"\n [attr.aria-modal]=\"true\"\n [attr.aria-label]=\"config.ariaLabel ?? null\"\n [attr.aria-labelledby]=\"config.ariaLabelledBy ?? null\"\n [attr.aria-describedby]=\"config.ariaDescribedBy ?? null\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n","import { DOCUMENT } from '@angular/common';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { filter, take } from 'rxjs';\nimport { Dialog } from './dialog';\nimport { DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, DialogRef } from './dialog-ref';\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\n\ninterface ResolvedDialogConfig<D = unknown> extends DialogConfig<D> {\n data: D | undefined;\n bindDataToInputs: boolean;\n disableCloseEvents: boolean;\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\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\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: DialogConfig<D> = {},\n ): DialogRef<T, R> {\n const dialogConfig = this.mergeConfig(config);\n const previouslyFocusedElement = this.getFocusedElement();\n const overlayRef = this.createOverlay();\n const dialogRef = new DialogRef<T, R>(\n overlayRef,\n previouslyFocusedElement\n );\n const injector = this.createInjector(component, dialogConfig, dialogRef);\n\n // The overlay hosts the MD3 dialog shell. The shell is responsible for\n // the surface markup and receives the dynamic content through a portal.\n const dialogPortal = new ComponentPortal(\n Dialog,\n dialogConfig.viewContainerRef ?? null,\n injector,\n );\n const dialogComponentRef = overlayRef.attach(dialogPortal);\n const contentComponentRef = dialogComponentRef.instance.attachContent(component, injector);\n\n this.bindDataToInputs(contentComponentRef, dialogConfig);\n dialogRef.componentInstance = contentComponentRef.instance;\n dialogRef.dialogInstance = dialogComponentRef.instance;\n this.startOpenAnimation(overlayRef);\n this.connectCloseEvents(overlayRef, dialogRef, dialogConfig);\n this.focusDialog(overlayRef);\n\n return dialogRef;\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 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 private createOverlay(): OverlayRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['md3-dialog-scrim', 'md3-dialog-opening'],\n panelClass: ['md3-dialog-panel', 'md3-dialog-opening'],\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n scrollStrategy: this.overlay.scrollStrategies.block(),\n });\n\n return this.overlay.create(overlayConfig);\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-dialog-opening');\n backdrop?.classList.remove('md3-dialog-opening');\n }, 100);\n });\n }\n\n private createInjector<T, D, R>(\n component: Type<T>,\n config: ResolvedDialogConfig<D>,\n dialogRef: DialogRef<T, R>,\n ): Injector {\n return Injector.create({\n parent: config.injector,\n providers: [\n // These tokens make the dialog controllable from the dynamic\n // component without coupling that component to the service.\n { provide: DialogRef, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n { provide: DIALOG_CONFIG, useValue: config },\n { provide: DIALOG_COMPONENT, useValue: component },\n ],\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 connectCloseEvents<T, R>(\n overlayRef: OverlayRef,\n dialogRef: DialogRef<T, R>,\n config: ResolvedDialogConfig,\n ): void {\n if (config.disableCloseEvents) {\n return;\n }\n\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => dialogRef.close());\n overlayRef.keydownEvents().pipe(\n filter((event) => event.key === 'Escape'),\n take(1),\n ).subscribe(() => dialogRef.close());\n }\n\n private focusDialog(overlayRef: OverlayRef): void {\n queueMicrotask(() => {\n const surface = overlayRef.overlayElement.querySelector<HTMLElement>('.md3-dialog-container');\n const focusTarget = surface?.querySelector<HTMLElement>([\n 'button:not([disabled])',\n '[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', '));\n\n (focusTarget ?? surface)?.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 private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\n return typeof data === 'object' && data !== null && !Array.isArray(data);\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})\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 { 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/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';\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"],"mappings":"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"}
|