@almoamendev/ngx-md3 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/fesm2022/almoamendev-ngx-md3.mjs +4368 -0
- package/fesm2022/almoamendev-ngx-md3.mjs.map +1 -0
- package/package.json +40 -0
- package/src/lib/styles/md3.scss +523 -0
- package/src/lib/styles/tokens/md-border-radius.scss +12 -0
- package/src/lib/styles/tokens/md-elevation.scss +25 -0
- package/src/lib/styles/tokens/md-grid.scss +24 -0
- package/src/lib/styles/tokens/md-motion.scss +47 -0
- package/src/lib/styles/tokens/md-scheme.scss +143 -0
- package/src/lib/styles/typography/type-body.spec.ts +28 -0
- package/src/lib/styles/typography/type-body.ts +42 -0
- package/src/lib/styles/typography/type-display.spec.ts +28 -0
- package/src/lib/styles/typography/type-display.ts +42 -0
- package/src/lib/styles/typography/type-headline.spec.ts +28 -0
- package/src/lib/styles/typography/type-headline.ts +42 -0
- package/src/lib/styles/typography/type-label.spec.ts +28 -0
- package/src/lib/styles/typography/type-label.ts +42 -0
- package/src/lib/styles/typography/type-title.spec.ts +28 -0
- package/src/lib/styles/typography/type-title.ts +42 -0
- package/types/almoamendev-ngx-md3.d.ts +1298 -0
|
@@ -0,0 +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';\r\nimport { TextColor } from '../../types/text-color.type';\r\nimport { TextSize } from '../../types/text-size.type';\r\n\r\n@Directive({\r\n selector: 'md3-type-display, [md3-type-display]',\r\n host: {\r\n 'class': 'md3-text-display',\r\n '[class.md3-emphasized]': 'emphasized()',\r\n }\r\n})\r\nexport class TypeDisplay {\r\n public size = input<TextSize | 'default'>('default');\r\n public color = input<TextColor | 'default'>('default');\r\n public emphasized = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n constructor(public el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-text-' + this.size();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const color = 'md3-color-' + this.color();\r\n this.element.classList.add(color);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(color);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\r\nimport { TextColor } from '../../types/text-color.type';\r\nimport { TextSize } from '../../types/text-size.type';\r\n\r\n@Directive({\r\n selector: 'md3-type-headline, [md3-type-headline]',\r\n host: {\r\n 'class': 'md3-text-headline',\r\n '[class.md3-emphasized]': 'emphasized()',\r\n }\r\n})\r\nexport class TypeHeadline {\r\n public size = input<TextSize | 'default'>('default');\r\n public color = input<TextColor | 'default'>('default');\r\n public emphasized = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n constructor(public el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-text-' + this.size();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const color = 'md3-color-' + this.color();\r\n this.element.classList.add(color);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(color);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\r\nimport { TextColor } from '../../types/text-color.type';\r\nimport { TextSize } from '../../types/text-size.type';\r\n\r\n@Directive({\r\n selector: 'md3-type-title, [md3-type-title]',\r\n host: {\r\n 'class': 'md3-text-title',\r\n '[class.md3-emphasized]': 'emphasized()',\r\n }\r\n})\r\nexport class TypeTitle {\r\n public size = input<TextSize | 'default'>('default');\r\n public color = input<TextColor | 'default'>('default');\r\n public emphasized = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n constructor(public el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-text-' + this.size();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const color = 'md3-color-' + this.color();\r\n this.element.classList.add(color);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(color);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\r\nimport { TextColor } from '../../types/text-color.type';\r\nimport { TextSize } from '../../types/text-size.type';\r\n\r\n@Directive({\r\n selector: 'md3-type-body, [md3-type-body]',\r\n host: {\r\n 'class': 'md3-text-body',\r\n '[class.md3-emphasized]': 'emphasized()',\r\n }\r\n})\r\nexport class TypeBody {\r\n public size = input<TextSize | 'default'>('default');\r\n public color = input<TextColor | 'default'>('default');\r\n public emphasized = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n constructor(public el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-text-' + this.size();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const color = 'md3-color-' + this.color();\r\n this.element.classList.add(color);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(color);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { booleanAttribute, Directive, effect, ElementRef, input } from '@angular/core';\r\nimport { TextColor } from '../../types/text-color.type';\r\nimport { TextSize } from '../../types/text-size.type';\r\n\r\n@Directive({\r\n selector: 'md3-type-label, [md3-type-label]',\r\n host: {\r\n 'class': 'md3-text-label',\r\n '[class.md3-emphasized]': 'emphasized()',\r\n }\r\n})\r\nexport class TypeLabel {\r\n public size = input<TextSize | 'default'>('default');\r\n public color = input<TextColor | 'default'>('default');\r\n public emphasized = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n constructor(public el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-text-' + this.size();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const color = 'md3-color-' + this.color();\r\n this.element.classList.add(color);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(color);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { BreakpointObserver } from '@angular/cdk/layout';\r\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\r\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter, fromEvent, map, startWith, Subscription } from 'rxjs';\r\nimport { ViewportWidth } from '../types/viewport-width.type';\r\nimport { ViewportHeight } from '../types/viewport-height.type';\r\n\r\nexport type Md3NavigationMode = 'none' | 'navigation-bar' | 'navigation-rail' | 'standard-drawer' | 'modal-drawer';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LayoutService {\r\n private readonly document = inject(DOCUMENT);\r\n private readonly breakpointObserver = inject(BreakpointObserver);\r\n // Optional — LayoutService (and anything built on Scaffold) shouldn't\r\n // hard-require the Router, only benefit from it when it's present.\r\n private readonly router = inject(Router, { optional: true });\r\n\r\n private readonly widthQueries: Record<ViewportWidth, string> = {\r\n 'compact': '(max-width: 37.499em)', // < 600\r\n 'medium': '(min-width: 37.5em) and (max-width: 52.499em)', // 600-839\r\n 'expanded': '(min-width: 52.5em) and (max-width: 74.999em)', // 840-1199\r\n 'large': '(min-width: 75em) and (max-width: 99.999em)', // 1200-1599\r\n 'extra-large': '(min-width: 100em)' // >=1600\r\n } as const;\r\n\r\n private readonly heightQueries: Record<ViewportHeight, string> = {\r\n 'compact': '(max-height: 29.999em)',\r\n 'medium': '(min-height: 30em) and (max-height: 56.249em)',\r\n 'expanded': '(min-height: 56.25em)'\r\n } as const;\r\n\r\n private mainPaneSub?: Subscription;\r\n private mainPaneEl?: HTMLElement;\r\n private panesContainerResizeObserver?: ResizeObserver;\r\n private panesContainerResizeListener?: () => void;\r\n\r\n readonly mainScrollTop = signal<number>(0);\r\n readonly mainIsScrolled = computed<boolean>(() => this.mainScrollTop() > 0);\r\n\r\n /**\r\n * Distance, in pixels, between the viewport bottom and the bottom edge of\r\n * the scaffold's .md3-panes-container — i.e. whatever the bottom scaffold\r\n * bar (nav bar) currently reserves, or 0 when there is none. Overlay-based\r\n * components anchored to the viewport bottom (like Snackbar) read this so\r\n * they never render lower than the panes container.\r\n */\r\n readonly bottomInset = signal<number>(0);\r\n\r\n public readonly viewport = toSignal(\r\n fromEvent(window, 'resize').pipe(\r\n startWith(null),\r\n map(() => ({\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n }))\r\n ),\r\n {\r\n initialValue: {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n }\r\n }\r\n );\r\n\r\n public readonly widthClass = toSignal(\r\n this.breakpointObserver.observe(Object.values(this.widthQueries)).pipe(\r\n map((state): ViewportWidth => {\r\n if (state.breakpoints[this.widthQueries.compact]) {\r\n return 'compact';\r\n }\r\n\r\n if (state.breakpoints[this.widthQueries.medium]) {\r\n return 'medium';\r\n }\r\n\r\n if (state.breakpoints[this.widthQueries.expanded]) {\r\n return 'expanded';\r\n }\r\n\r\n if (state.breakpoints[this.widthQueries.large]) {\r\n return 'large';\r\n }\r\n\r\n return 'extra-large';\r\n })\r\n ),\r\n { initialValue: 'expanded' as ViewportWidth }\r\n );\r\n\r\n public readonly heightClass = toSignal(\r\n this.breakpointObserver.observe(Object.values(this.heightQueries)).pipe(\r\n map((state): ViewportHeight => {\r\n if (state.breakpoints[this.heightQueries.compact]) {\r\n return 'compact';\r\n }\r\n\r\n if (state.breakpoints[this.heightQueries.medium]) {\r\n return 'medium';\r\n }\r\n\r\n return 'expanded';\r\n })\r\n ),\r\n { initialValue: 'expanded' as ViewportHeight }\r\n );\r\n\r\n public readonly direction = signal<'ltr' | 'rtl'>(\r\n (this.document.documentElement.dir as 'ltr' | 'rtl') || 'ltr'\r\n );\r\n\r\n public readonly isCompact = computed(() => this.widthClass() === 'compact');\r\n public readonly isMedium = computed(() => this.widthClass() === 'medium');\r\n public readonly isExpanded = computed(() => this.widthClass() === 'expanded');\r\n public readonly isLarge = computed(() => this.widthClass() === 'large');\r\n public readonly isExtraLarge = computed(() => this.widthClass() === 'extra-large');\r\n\r\n public readonly isPortrait = computed(() => {\r\n const viewport = this.viewport();\r\n return viewport.height >= viewport.width;\r\n });\r\n\r\n public readonly isLandscape = computed(() => !this.isPortrait());\r\n\r\n public readonly preferredNavigationMode = computed(() => {\r\n switch (this.widthClass()) {\r\n case 'compact':\r\n return 'navigation-bar';\r\n\r\n case 'medium':\r\n return 'navigation-rail';\r\n\r\n case 'expanded':\r\n case 'large':\r\n case 'extra-large':\r\n return 'standard-drawer';\r\n }\r\n });\r\n\r\n public darkMode = signal<boolean>(true);\r\n\r\n constructor() {\r\n effect(() => {\r\n const darkMode = this.darkMode();\r\n this.document.body.classList.toggle('md-scheme-dark', darkMode);\r\n this.document.body.classList.toggle('md-scheme-light', !darkMode);\r\n });\r\n\r\n // Reset the scaffold's main pane to the top after every completed\r\n // navigation — otherwise a scrolled-down list page leaves the next\r\n // page's content scrolled down too, since the pane itself never\r\n // remounts on route change.\r\n this.router?.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntilDestroyed(),\r\n )\r\n .subscribe(() => this.scrollMainPaneToTop());\r\n }\r\n\r\n public setDirection(direction: 'ltr' | 'rtl'): void {\r\n this.document.documentElement.dir = direction;\r\n this.direction.set(direction);\r\n }\r\n\r\n private scrollMainPaneToTop(): void {\r\n this.mainPaneEl?.scrollTo({ top: 0 });\r\n this.mainScrollTop.set(0);\r\n }\r\n\r\n public registerMainPane(element: HTMLElement): void {\r\n this.mainPaneSub?.unsubscribe();\r\n this.mainPaneEl = element;\r\n\r\n const update = () => {\r\n const scrollTop = element.scrollTop;\r\n\r\n this.mainScrollTop.set(scrollTop);\r\n };\r\n\r\n update();\r\n\r\n this.mainPaneSub = new Subscription();\r\n\r\n element.addEventListener('scroll', update, { passive: true });\r\n\r\n this.mainPaneSub.add(() => {\r\n element.removeEventListener('scroll', update);\r\n });\r\n }\r\n\r\n public unregisterMainPane(element: HTMLElement): void {\r\n this.mainPaneSub?.unsubscribe();\r\n this.mainPaneSub = undefined;\r\n\r\n if (this.mainPaneEl === element) {\r\n this.mainPaneEl = undefined;\r\n }\r\n\r\n this.mainScrollTop.set(0);\r\n }\r\n\r\n public registerPanesContainer(element: HTMLElement): void {\r\n this.unregisterPanesContainer();\r\n\r\n const update = () => {\r\n const rect = element.getBoundingClientRect();\r\n this.bottomInset.set(Math.max(0, Math.round(window.innerHeight - rect.bottom)));\r\n };\r\n\r\n update();\r\n\r\n this.panesContainerResizeObserver = new ResizeObserver(update);\r\n this.panesContainerResizeObserver.observe(element);\r\n\r\n this.panesContainerResizeListener = update;\r\n window.addEventListener('resize', update, { passive: true });\r\n }\r\n\r\n public unregisterPanesContainer(): void {\r\n this.panesContainerResizeObserver?.disconnect();\r\n this.panesContainerResizeObserver = undefined;\r\n\r\n if (this.panesContainerResizeListener) {\r\n window.removeEventListener('resize', this.panesContainerResizeListener);\r\n this.panesContainerResizeListener = undefined;\r\n }\r\n\r\n this.bottomInset.set(0);\r\n }\r\n}\r\n","import { ComponentRef, InjectionToken, Type } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { SideSheetConfig, SideSheetContainer, SideSheetSide, SideSheetType } from '../../../interfaces/side-sheet-config.interface';\r\nimport { SideSheet } from './side-sheet';\r\n\r\nexport const SIDE_SHEET_DATA = new InjectionToken<unknown>('MD3_SIDE_SHEET_DATA');\r\nexport const SIDE_SHEET_CONFIG = new InjectionToken<SideSheetConfig>('MD3_SIDE_SHEET_CONFIG');\r\nexport const SIDE_SHEET_COMPONENT = new InjectionToken<Type<unknown>>('MD3_SIDE_SHEET_COMPONENT');\r\n\r\nconst SIDE_SHEET_EXIT_ANIMATION_FALLBACK_MS = 300;\r\n\r\nexport class SideSheetRef<T = unknown, R = unknown> {\r\n private readonly closed = new Subject<R | undefined>();\r\n private isClosed = false;\r\n private isHidden = false;\r\n private sheetComponentRef?: ComponentRef<SideSheet>;\r\n\r\n public componentInstance?: T;\r\n public sheetInstance?: SideSheetContainer;\r\n\r\n constructor(\r\n public readonly side: SideSheetSide,\r\n private readonly onClosed: () => void,\r\n ) {\r\n }\r\n\r\n public attachSheetComponentRef(sheetComponentRef: ComponentRef<SideSheet>): void {\r\n this.sheetComponentRef = sheetComponentRef;\r\n this.sheetInstance = sheetComponentRef.instance as SideSheetContainer;\r\n }\r\n\r\n public setSide(side: SideSheetSide): void {\r\n this.sheetComponentRef?.instance?.side.set(side);\r\n }\r\n\r\n public setSheetType(type: SideSheetType): void {\r\n this.sheetComponentRef?.instance?.sheetType.set(type);\r\n }\r\n\r\n public setInset(isInset: boolean): void {\r\n this.sheetComponentRef?.instance?.isInset.set(isInset);\r\n }\r\n\r\n public setDivider(showDivider: boolean): void {\r\n this.sheetComponentRef?.instance?.showDivider.set(showDivider);\r\n }\r\n\r\n public hide(): void {\r\n this.isHidden = true;\r\n this.sheetInstance?.setHidden(true);\r\n }\r\n\r\n public show(): void {\r\n this.isHidden = false;\r\n this.sheetInstance?.setHidden(false);\r\n this.sheetInstance?.showSheet(true);\r\n }\r\n\r\n public close(result?: R): void {\r\n if (this.isClosed) {\r\n return;\r\n }\r\n\r\n this.isClosed = true;\r\n this.startCloseAnimation().then(() => {\r\n this.destroySheet();\r\n this.onClosed();\r\n this.closed.next(result);\r\n this.closed.complete();\r\n });\r\n }\r\n\r\n public dispose(result?: R): void {\r\n if (this.isClosed) {\r\n return;\r\n }\r\n\r\n this.isClosed = true;\r\n this.destroySheet();\r\n this.onClosed();\r\n this.closed.next(result);\r\n this.closed.complete();\r\n }\r\n\r\n public afterClosed(): Observable<R | undefined> {\r\n return this.closed.asObservable();\r\n }\r\n\r\n private destroySheet(): void {\r\n this.sheetComponentRef?.destroy();\r\n this.sheetComponentRef = undefined;\r\n this.sheetInstance = undefined;\r\n }\r\n\r\n private startCloseAnimation(): Promise<void> {\r\n const animatedElement = this.sheetInstance?.element;\r\n\r\n if (this.isHidden) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.sheetInstance?.setHidden(false);\r\n this.sheetInstance?.showSheet(false);\r\n\r\n return new Promise((resolve) => {\r\n if (!animatedElement) {\r\n resolve();\r\n return;\r\n }\r\n\r\n let isResolved = false;\r\n const timeoutId = setTimeout(done, SIDE_SHEET_EXIT_ANIMATION_FALLBACK_MS);\r\n\r\n function done(): void {\r\n if (isResolved) {\r\n return;\r\n }\r\n\r\n isResolved = true;\r\n clearTimeout(timeoutId);\r\n animatedElement!.removeEventListener('transitionend', onTransitionEnd);\r\n resolve();\r\n }\r\n\r\n function onTransitionEnd(event: TransitionEvent): void {\r\n if (event.target === animatedElement) {\r\n done();\r\n }\r\n }\r\n\r\n animatedElement.addEventListener('transitionend', onTransitionEnd);\r\n });\r\n }\r\n}\r\n","import { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AfterContentInit, Component, ComponentRef, computed, effect, ElementRef, inject, Injector, signal, Type, ViewChild } from '@angular/core';\r\nimport { SIDE_SHEET_CONFIG, SideSheetRef } from './side-sheet-ref';\r\nimport { SideSheetConfig, SideSheetSide, SideSheetType } from '../../../interfaces/side-sheet-config.interface';\r\nimport { LayoutService } from '../../../foundations/layout.service';\r\n\r\n@Component({\r\n selector: 'md3-side-sheet',\r\n imports: [\r\n CdkPortalOutlet,\r\n ],\r\n templateUrl: './side-sheet.html',\r\n styleUrl: './side-sheet.scss',\r\n host: {\r\n '[class.md3-active]': 'isActive()',\r\n '[class.md3-hidden]': 'isHidden()',\r\n '[class.md3-start]': 'side() === \"start\"',\r\n '[class.md3-end]': 'side() === \"end\"',\r\n '[class.md3-inset]': 'isInset()',\r\n '[class.md3-show-divider]': 'showDivider()',\r\n },\r\n})\r\nexport class SideSheet implements AfterContentInit {\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n private readonly portalOutlet!: CdkPortalOutlet;\r\n\r\n protected readonly config = inject<SideSheetConfig>(SIDE_SHEET_CONFIG, { optional: true }) ?? {};\r\n private readonly sideSheetRef = inject<SideSheetRef>(SideSheetRef, { optional: true });\r\n\r\n public readonly isActive = signal<boolean>(false);\r\n public readonly isHidden = signal<boolean>(false);\r\n public readonly side = signal<SideSheetSide>(this.config.side ?? 'end');\r\n public readonly sheetType = signal<SideSheetType>(this.config.type ?? 'default');\r\n public readonly isInset = signal<boolean>(this.config.inset ?? false);\r\n public readonly showDivider = signal<boolean>(this.config.divider ?? false);\r\n private readonly resolvedSheetType = computed<SideSheetType>(() => {\r\n if (this.layoutService.isMedium() || this.layoutService.isCompact()) {\r\n return 'modal';\r\n }\r\n \r\n return this.sheetType();\r\n });\r\n\r\n constructor(\r\n private layoutService: LayoutService,\r\n private el: ElementRef<HTMLElement>\r\n ) {\r\n effect((onCleanUp) => {\r\n const type = 'md3-style-' + this.resolvedSheetType();\r\n this.element.classList.add(type);\r\n\r\n onCleanUp(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n requestAnimationFrame(() => {\r\n this.showSheet(true);\r\n });\r\n }\r\n\r\n public showSheet(value: boolean): void {\r\n this.isActive.set(value);\r\n }\r\n\r\n public setHidden(value: boolean): void {\r\n this.isHidden.set(value);\r\n }\r\n\r\n public close(): void {\r\n this.sideSheetRef?.close();\r\n }\r\n\r\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\r\n const portal = new ComponentPortal(component, this.config.viewContainerRef ?? null, injector);\r\n\r\n return this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n}\r\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';\r\nimport { SideSheet } from './side-sheet';\r\n\r\nexport interface SideSheetStackItem<T> {\r\n sheetComponentRef: ComponentRef<SideSheet>;\r\n contentComponentRef: ComponentRef<T>;\r\n}\r\n\r\n@Component({\r\n selector: 'md3-side-sheet-stack',\r\n template: '<ng-container #container></ng-container>',\r\n styles: [`\r\n :host {\r\n display: grid;\r\n min-width: 0;\r\n min-height: 0;\r\n height: 100%;\r\n }\r\n\r\n :host ::ng-deep md3-side-sheet {\r\n grid-area: 1 / 1;\r\n }\r\n `],\r\n})\r\nexport class SideSheetStack {\r\n @ViewChild('container', { read: ViewContainerRef, static: true })\r\n private readonly container!: ViewContainerRef;\r\n\r\n public createSheet<T>(component: Type<T>, injector: Injector): SideSheetStackItem<T> {\r\n const sheetComponentRef = this.container.createComponent(SideSheet, {\r\n injector: injector,\r\n });\r\n\r\n sheetComponentRef.changeDetectorRef.detectChanges();\r\n\r\n const contentComponentRef = sheetComponentRef.instance.attachContent(component, injector);\r\n\r\n sheetComponentRef.changeDetectorRef.detectChanges();\r\n\r\n return {\r\n sheetComponentRef,\r\n contentComponentRef,\r\n };\r\n }\r\n}\r\n","import { ComponentRef, inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\r\nimport { SideSheetStack } from './side-sheet/side-sheet-stack';\r\nimport {\r\n SIDE_SHEET_COMPONENT,\r\n SIDE_SHEET_CONFIG,\r\n SIDE_SHEET_DATA,\r\n SideSheetRef,\r\n} from './side-sheet/side-sheet-ref';\r\nimport { SideSheetConfig, SideSheetSide, SideSheetType } from '../../interfaces/side-sheet-config.interface';\r\n\r\ninterface ResolvedSideSheetConfig<D = unknown> extends SideSheetConfig<D> {\r\n data: D | undefined;\r\n bindDataToInputs: boolean;\r\n side: SideSheetSide;\r\n type: SideSheetType;\r\n inset: boolean;\r\n divider: boolean;\r\n closeExisting: boolean;\r\n injector: Injector;\r\n}\r\n\r\ninterface SideSheetOutletState<T = unknown, R = unknown> {\r\n outlet: CdkPortalOutlet;\r\n stackComponentRef: ComponentRef<SideSheetStack>;\r\n refs: SideSheetRef<T, R>[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SheetsService {\r\n private readonly injector = inject(Injector);\r\n private readonly states = new Map<SideSheetSide, SideSheetOutletState>();\r\n\r\n public registerSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\r\n const currentState = this.states.get(side);\r\n\r\n if (currentState?.outlet === outlet) {\r\n return;\r\n }\r\n\r\n if (currentState) {\r\n this.disposeOutletState(currentState);\r\n }\r\n\r\n if (outlet.hasAttached()) {\r\n outlet.detach();\r\n }\r\n\r\n const stackPortal = new ComponentPortal(SideSheetStack, null, this.injector);\r\n const stackComponentRef = outlet.attachComponentPortal(stackPortal);\r\n\r\n this.states.set(side, {\r\n outlet,\r\n stackComponentRef,\r\n refs: [],\r\n });\r\n }\r\n\r\n public unregisterSideSheetOutlet(side: SideSheetSide, outlet: CdkPortalOutlet): void {\r\n const state = this.states.get(side);\r\n\r\n if (!state || state.outlet !== outlet) {\r\n return;\r\n }\r\n\r\n this.disposeOutletState(state);\r\n this.states.delete(side);\r\n }\r\n\r\n public openSideSheet<T = unknown, D = unknown, R = unknown>(\r\n component: Type<T>,\r\n config: SideSheetConfig<D> = {},\r\n ): SideSheetRef<T, R> {\r\n const sheetConfig = this.mergeConfig(config);\r\n const state = this.states.get(sheetConfig.side);\r\n\r\n if (!state) {\r\n throw new Error(`No ${sheetConfig.side} side sheet outlet is registered.`);\r\n }\r\n\r\n if (sheetConfig.closeExisting) {\r\n this.disposeSideSheetRefs(state);\r\n } else {\r\n this.getVisibleRef(state)?.hide();\r\n }\r\n\r\n const sheetRef = new SideSheetRef<T, R>(\r\n sheetConfig.side,\r\n () => this.removeSideSheetRef(state, sheetRef as SideSheetRef),\r\n );\r\n const injector = this.createInjector(component, sheetConfig, sheetRef);\r\n const { sheetComponentRef, contentComponentRef } = state.stackComponentRef.instance.createSheet(\r\n component,\r\n injector,\r\n );\r\n\r\n sheetRef.attachSheetComponentRef(sheetComponentRef);\r\n this.bindDataToInputs(contentComponentRef, sheetConfig);\r\n sheetRef.componentInstance = contentComponentRef.instance;\r\n state.refs.push(sheetRef as SideSheetRef);\r\n\r\n return sheetRef;\r\n }\r\n\r\n public closeSideSheet<R = unknown>(side: SideSheetSide = 'end', result?: R): void {\r\n this.getVisibleRef(this.states.get(side))?.close(result);\r\n }\r\n\r\n private mergeConfig<D>(config: SideSheetConfig<D>): ResolvedSideSheetConfig<D> {\r\n return {\r\n data: config.data,\r\n bindDataToInputs: config.bindDataToInputs ?? false,\r\n side: config.side ?? 'end',\r\n type: config.type ?? 'default',\r\n inset: config.inset ?? false,\r\n divider: config.divider ?? false,\r\n closeExisting: config.closeExisting ?? false,\r\n viewContainerRef: config.viewContainerRef,\r\n injector: config.injector ?? this.injector,\r\n };\r\n }\r\n\r\n private createInjector<T, D, R>(\r\n component: Type<T>,\r\n config: ResolvedSideSheetConfig<D>,\r\n sheetRef: SideSheetRef<T, R>,\r\n ): Injector {\r\n return Injector.create({\r\n parent: config.injector,\r\n providers: [\r\n { provide: SideSheetRef, useValue: sheetRef },\r\n { provide: SIDE_SHEET_DATA, useValue: config.data },\r\n { provide: SIDE_SHEET_CONFIG, useValue: config },\r\n { provide: SIDE_SHEET_COMPONENT, useValue: component },\r\n ],\r\n });\r\n }\r\n\r\n private bindDataToInputs<T, D>(\r\n componentRef: ComponentRef<T>,\r\n config: ResolvedSideSheetConfig<D>,\r\n ): void {\r\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\r\n return;\r\n }\r\n\r\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\r\n componentRef.setInput(inputName, inputValue);\r\n });\r\n }\r\n\r\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\r\n return typeof data === 'object' && data !== null && !Array.isArray(data);\r\n }\r\n\r\n private disposeOutletState(state: SideSheetOutletState): void {\r\n this.disposeSideSheetRefs(state);\r\n\r\n if (state.outlet.hasAttached()) {\r\n state.outlet.detach();\r\n }\r\n }\r\n\r\n private disposeSideSheetRefs(state: SideSheetOutletState): void {\r\n const refs = [...state.refs];\r\n\r\n state.refs.length = 0;\r\n\r\n refs.forEach((ref) => {\r\n ref.dispose();\r\n });\r\n }\r\n\r\n private removeSideSheetRef(state: SideSheetOutletState, sheetRef: SideSheetRef): void {\r\n const index = state.refs.indexOf(sheetRef);\r\n\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n state.refs.splice(index, 1);\r\n this.getVisibleRef(state)?.show();\r\n }\r\n\r\n private getVisibleRef(state: SideSheetOutletState | undefined): SideSheetRef | undefined {\r\n if (!state || state.refs.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return state.refs[state.refs.length - 1];\r\n }\r\n}\r\n","import { CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { AfterViewInit, Component, ElementRef, inject, OnDestroy, viewChild } from '@angular/core';\r\nimport { SheetsService } from '../../components/sheets/sheets.service';\r\nimport { LayoutService } from '../layout.service';\r\n\r\n@Component({\r\n selector: 'md3-scaffold',\r\n imports: [\r\n CdkPortalOutlet,\r\n ],\r\n templateUrl: './scaffold.html',\r\n styleUrl: './scaffold.scss',\r\n})\r\nexport class Scaffold implements AfterViewInit, OnDestroy {\r\n private startOutlet = viewChild('startOutlet', { read: CdkPortalOutlet });\r\n private endOutlet = viewChild('endOutlet', { read: CdkPortalOutlet });\r\n private panesContainer = viewChild<ElementRef<HTMLElement>>('panesContainer');\r\n private sheets = inject(SheetsService);\r\n private layout = inject(LayoutService);\r\n\r\n ngAfterViewInit(): void {\r\n const startOutlet = this.startOutlet();\r\n const endOutlet = this.endOutlet();\r\n const panesContainer = this.panesContainer();\r\n\r\n if (startOutlet) {\r\n this.sheets.registerSideSheetOutlet('start', startOutlet);\r\n }\r\n\r\n if (endOutlet) {\r\n this.sheets.registerSideSheetOutlet('end', endOutlet);\r\n }\r\n\r\n if (panesContainer) {\r\n this.layout.registerPanesContainer(panesContainer.nativeElement);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const startOutlet = this.startOutlet();\r\n const endOutlet = this.endOutlet();\r\n\r\n if (startOutlet) {\r\n this.sheets.unregisterSideSheetOutlet('start', startOutlet);\r\n }\r\n\r\n if (endOutlet) {\r\n this.sheets.unregisterSideSheetOutlet('end', endOutlet);\r\n }\r\n\r\n this.layout.unregisterPanesContainer();\r\n }\r\n}\r\n","<ng-content select=\"[md3-scaffold-bar=top]\"></ng-content>\r\n<ng-content select=\"[md3-scaffold-rail=leading]\"></ng-content>\r\n\r\n<div class=\"md3-panes-container\" #panesContainer>\r\n <div class=\"md3-pane md3-pane-start\">\r\n <ng-content select=\"[md3-scaffold-pane=start]\"></ng-content>\r\n <ng-template #startOutlet cdkPortalOutlet></ng-template>\r\n </div>\r\n <div class=\"md3-pane md3-pane-main\">\r\n <ng-content select=\"[md3-scaffold-pane=main]\"></ng-content>\r\n </div>\r\n <div class=\"md3-pane md3-pane-end\">\r\n <ng-content select=\"[md3-scaffold-pane=end]\"></ng-content>\r\n <ng-template #endOutlet cdkPortalOutlet></ng-template>\r\n </div>\r\n</div>\r\n\r\n<ng-content select=\"[md3-scaffold-rail=trailing]\"></ng-content>\r\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';\r\nimport { Directive, effect, ElementRef, input, OnDestroy } from '@angular/core';\r\nimport { LayoutService } from './layout.service';\r\n\r\n@Directive({\r\n selector: '[md3-scaffold-pane]',\r\n host: {\r\n class: 'md3-scrollable',\r\n },\r\n hostDirectives: [\r\n CdkScrollable,\r\n ],\r\n})\r\nexport class ScaffoldPane implements OnDestroy {\r\n public role = input.required<'main' | 'start' | 'end'>({\r\n alias: 'md3-scaffold-pane',\r\n });\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private layout: LayoutService\r\n ) {\r\n effect(() => {\r\n if (this.role() == 'main') {\r\n this.layout.registerMainPane(this.el.nativeElement);\r\n } else {\r\n this.layout.unregisterMainPane(this.el.nativeElement);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.role() == 'main') {\r\n this.layout.unregisterMainPane(this.el.nativeElement);\r\n }\r\n }\r\n}\r\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';\r\n\r\n@Directive({\r\n selector: '[md3-input-element]',\r\n host: {\r\n 'class': 'md3-input-element'\r\n }\r\n})\r\nexport class InputElement {\r\n constructor(private el: ElementRef<HTMLInputElement>) { }\r\n\r\n public get nativeElement(): HTMLInputElement {\r\n return this.el.nativeElement;\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, HostListener, Input, OnInit, Renderer2, signal } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[md3-state-component]',\r\n host: {\r\n class: 'md3-state-component',\r\n },\r\n})\r\nexport class StateComponent implements OnInit {\r\n private stateLayer?: HTMLDivElement;\r\n private stateLayerSignal = signal<boolean>(true);\r\n\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private renderer: Renderer2\r\n ) {\r\n effect(() => {\r\n if (this.stateLayerSignal()) {\r\n this.enable();\r\n } else {\r\n this.disable();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n if (!this.stateLayerSignal() || this.stateLayer) {\r\n return;\r\n }\r\n\r\n let layer = this.el.nativeElement.querySelector(\r\n ':scope > .md3-state-layer'\r\n ) as HTMLDivElement | null;\r\n\r\n if (!layer) {\r\n // Create the state layer and insert as the first child\r\n layer = this.renderer.createElement('div') as HTMLDivElement;\r\n this.renderer.addClass(layer, 'md3-state-layer');\r\n\r\n this.renderer.appendChild(\r\n this.el.nativeElement,\r\n layer\r\n );\r\n\r\n }\r\n\r\n this.stateLayer = layer;\r\n }\r\n\r\n public setStateLayer(value: boolean) {\r\n this.stateLayerSignal.set(value);\r\n }\r\n\r\n private enable(): void {\r\n this.el.nativeElement.classList.add('md3-state-component');\r\n this.init();\r\n }\r\n\r\n private disable(): void {\r\n this.el.nativeElement.classList.remove('md3-state-component');\r\n this.stateLayer?.remove();\r\n this.stateLayer = undefined;\r\n }\r\n\r\n @HostListener('pointerdown', ['$event'])\r\n onPointerDown(event: PointerEvent): void {\r\n if (!this.stateLayer) {\r\n return;\r\n }\r\n\r\n const rect = this.el.nativeElement.getBoundingClientRect();\r\n const w = Math.max(rect.width, rect.height);\r\n const x = event.clientX - rect.left;\r\n const y = event.clientY - rect.top;\r\n\r\n this.stateLayer.style.setProperty('--ripple-w', `${w}px`);\r\n this.stateLayer.style.setProperty('--ripple-x', `${x}px`);\r\n this.stateLayer.style.setProperty('--ripple-y', `${y}px`);\r\n }\r\n}\r\n","import { Directive, ElementRef, input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[md3-icon-element]',\r\n host: {\r\n 'class': 'md3-icon-element'\r\n }\r\n})\r\nexport class IconElement {\r\n public iconType = input<string | null>(null, {\r\n alias: 'md3-icon-element',\r\n });\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { Component, ElementRef, input, booleanAttribute, effect } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-icon',\r\n imports: [],\r\n templateUrl: './material-icon.html',\r\n styleUrl: './material-icon.scss',\r\n host: {\r\n '[class.md3-filled]': 'isFilled()',\r\n '[class.md3-bi-directional]': 'biDirectional()',\r\n },\r\n})\r\nexport class MaterialIcon {\r\n public iconVersion = input<'MaterialIcons' | 'MaterialSymbols'>('MaterialSymbols', {\r\n alias: 'icon-version',\r\n });\r\n public isFilled = input<boolean, unknown>(false, {\r\n alias: 'filled',\r\n transform: booleanAttribute\r\n });\r\n public iconStyle = input<'normal' | 'outlined' | 'rounded' | 'sharp' | 'two-tone'>('normal', {\r\n alias: 'icon-style',\r\n });\r\n public iconSize = input<48 | 36 | 24 | 18>(24, {\r\n alias: 'icon-size',\r\n });\r\n public biDirectional = input<boolean, unknown>(false, {\r\n alias: 'bi-directional',\r\n transform: booleanAttribute\r\n });\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const iconSize = 'md3-' + this.iconSize().toString();\r\n this.element.classList.add(iconSize);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(iconSize);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n let iconStyle = this.iconStyle() == 'normal' ? null : this.iconStyle();\r\n\r\n if (this.iconVersion() == 'MaterialSymbols') {\r\n this.element.classList.add('md3-symbol');\r\n\r\n if (iconStyle == 'two-tone') {\r\n iconStyle = null;\r\n }\r\n }\r\n\r\n if (iconStyle !== null) {\r\n this.element.classList.add('md3-' + iconStyle);\r\n }\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove('md3-symbol', 'md3-' + iconStyle);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","<ng-content></ng-content>","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'md3-divider'\r\n})\r\nexport class Divider {\r\n public dividerType = input<string | null>(null, {\r\n alias: 'type',\r\n });\r\n}\r\n","import { booleanAttribute, Directive, ElementRef, input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'md3-badge',\r\n host: {\r\n '[class.md3-small]': 'isSmall()',\r\n },\r\n})\r\nexport class Badge {\r\n public isSmall = input<boolean, unknown>(false, {\r\n alias: 'small',\r\n transform: booleanAttribute,\r\n });\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { StateComponent } from './state-component';\r\n\r\n@Directive({\r\n selector: '[md3-avatar]',\r\n hostDirectives: [\r\n StateComponent,\r\n ],\r\n})\r\nexport class Avatar {\r\n constructor() { }\r\n}\r\n","import { InjectionToken, Signal } from \"@angular/core\";\r\nimport { IconButtonWidth } from \"../types/icon-button-width.type\";\r\nimport { ButtonSize } from \"../types/button-size.type\";\r\nimport { SplitButtonType } from \"../types/split-button-type.type\";\r\n\r\nexport interface ButtonContext {\r\n buttonContextSize?: Signal<ButtonSize>;\r\n buttonContextType?: Signal<SplitButtonType>;\r\n buttonContextWidth?: Signal<IconButtonWidth>;\r\n buttonContextSquared?: Signal<boolean>;\r\n buttonContextExtended?: Signal<boolean>;\r\n}\r\n\r\nexport const MD3_BUTTON_CONTEXT = new InjectionToken<ButtonContext>('MD3_BUTTON_CONTEXT');","import { booleanAttribute, Component, computed, effect, ElementRef, HostListener, inject, input, model } from '@angular/core';\r\nimport { StateComponent } from '../../common/state-component';\r\nimport { ButtonSize } from '../../../types/button-size.type';\r\nimport { ButtonType } from '../../../types/button-type.type';\r\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\r\n\r\n@Component({\r\n selector: 'button[md3-button], a[md3-button]',\r\n imports: [],\r\n templateUrl: './button.html',\r\n styleUrl: './button.scss',\r\n host: {\r\n '[class.md3-square]': 'effectiveSquared()',\r\n },\r\n hostDirectives: [\r\n StateComponent\r\n ],\r\n})\r\nexport class Button {\r\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\r\n \r\n @HostListener('click', ['$event']) onClick(event: Event): void {\r\n if (this.isSelected() === null) {\r\n return;\r\n }\r\n\r\n this.isSelected.update((value) => {\r\n return !value;\r\n });\r\n }\r\n\r\n public buttonSize = input<ButtonSize>('small', {\r\n alias: 'button-size',\r\n });\r\n public buttonType = input<ButtonType>('filled', {\r\n alias: 'button-type',\r\n });\r\n public isSquared = input<boolean, unknown>(false, {\r\n alias: 'button-squared',\r\n transform: booleanAttribute,\r\n });\r\n public isSelected = model<boolean | null>(null, {\r\n alias: 'selected',\r\n });\r\n\r\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\r\n public effectiveType = computed(() => this.context?.buttonContextType?.() ?? this.buttonType());\r\n public effectiveSquared = computed(() => this.context?.buttonContextSquared?.() ?? this.isSquared());\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-' + this.effectiveSize();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.effectiveType();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n\r\n effect(() => {\r\n const toggle = this.isSelected() !== null;\r\n\r\n if (toggle) {\r\n this.element.classList.add('md3-toggle');\r\n this.element.classList.toggle('md3-selected', this.isSelected() ?? false);\r\n } else {\r\n this.element.classList.remove('md3-toggle', 'md3-selected');\r\n }\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n public enableSelection() {\r\n this.isSelected.update((current) => {\r\n if (current !== null) {\r\n return current;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\r\n<div class=\"md3-label\">\r\n <ng-content></ng-content>\r\n</div>","import { booleanAttribute, Component, computed, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { StateComponent } from '../../common/state-component';\r\nimport { FabType } from '../../../types/fab-type.type';\r\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\r\nimport { FabSize } from '../../../types/fab-size.type';\r\n\r\n@Component({\r\n selector: 'button[md3-fab], a[md3-fab]',\r\n imports: [],\r\n templateUrl: './floating-action-button.html',\r\n styleUrl: './floating-action-button.scss',\r\n host: {\r\n '[class.md3-extended-fab]': 'effectiveExtended()',\r\n },\r\n hostDirectives: [\r\n StateComponent\r\n ],\r\n})\r\nexport class FloatingActionButton {\r\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\r\n \r\n public buttonSize = input<FabSize>('small', {\r\n alias: 'button-size',\r\n });\r\n public buttonType = input<FabType>('tonal-primary', {\r\n alias: 'button-type',\r\n });\r\n public isExtended = input<boolean, unknown>(false, {\r\n alias: 'extended',\r\n transform: booleanAttribute,\r\n });\r\n\r\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\r\n public effectiveExtended = computed(() => this.context?.buttonContextExtended?.() ?? this.isExtended());\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const buttonSize = 'md3-' + this.effectiveSize();\r\n this.element.classList.add(buttonSize);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(buttonSize);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const buttonType = 'md3-' + this.buttonType();\r\n this.element.classList.add(buttonType);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(buttonType);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\r\n<div class=\"md3-icon-label-space\"></div>\r\n<div class=\"md3-label\">\r\n <ng-content></ng-content>\r\n</div>","import { booleanAttribute, Component, computed, effect, ElementRef, HostListener, inject, input, model } from '@angular/core';\r\nimport { StateComponent } from '../../common/state-component';\r\nimport { ButtonSize } from '../../../types/button-size.type';\r\nimport { IconButtonType } from '../../../types/icon-button-type.type';\r\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\r\nimport { MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\r\n\r\n@Component({\r\n selector: 'button[md3-icon-button], a[md3-icon-button]',\r\n imports: [],\r\n templateUrl: './icon-button.html',\r\n styleUrl: './icon-button.scss',\r\n host: {\r\n '[class.md3-square]': 'effectiveSquared()',\r\n },\r\n hostDirectives: [\r\n StateComponent\r\n ],\r\n})\r\nexport class IconButton {\r\n private context = inject(MD3_BUTTON_CONTEXT, { optional: true });\r\n \r\n @HostListener('click', ['$event']) onClick(event: Event): void {\r\n if (this.isSelected() === null) {\r\n return;\r\n }\r\n\r\n this.isSelected.update((value) => {\r\n return !value;\r\n });\r\n }\r\n\r\n public buttonSize = input<ButtonSize>('small', {\r\n alias: 'button-size',\r\n });\r\n public buttonType = input<IconButtonType>('filled', {\r\n alias: 'button-type',\r\n });\r\n public buttonWidth = input<IconButtonWidth>('default', {\r\n alias: 'button-width',\r\n });\r\n public isSquared = input<boolean, unknown>(false, {\r\n alias: 'button-squared',\r\n transform: booleanAttribute\r\n });\r\n public isSelected = model<boolean | null>(null, {\r\n alias: 'selected',\r\n });\r\n\r\n public effectiveSize = computed(() => this.context?.buttonContextSize?.() ?? this.buttonSize());\r\n public effectiveType = computed(() => {\r\n const contextType = this.context?.buttonContextType?.();\r\n if (contextType) {\r\n return contextType == 'elevated' ? 'standard' : contextType;\r\n }\r\n \r\n return this.buttonType();\r\n });\r\n public effectiveWidth = computed(() => this.context?.buttonContextWidth?.() ?? this.buttonWidth());\r\n public effectiveSquared = computed(() => this.context?.buttonContextSquared?.() ?? this.isSquared());\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-' + this.effectiveSize();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.effectiveType();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const width = 'md3-' + this.effectiveWidth();\r\n this.element.classList.add(width);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(width);\r\n });\r\n });\r\n\r\n effect(() => {\r\n const toggle = this.isSelected() !== null;\r\n\r\n if (toggle) {\r\n this.element.classList.add('md3-toggle');\r\n this.element.classList.toggle('md3-selected', this.isSelected() ?? false);\r\n } else {\r\n this.element.classList.remove('md3-toggle', 'md3-selected');\r\n }\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n public enableSelection() {\r\n this.isSelected.update((current) => {\r\n if (current !== null) {\r\n return current;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\r\n<ng-content></ng-content>","import { booleanAttribute, Component, contentChild, contentChildren, effect, ElementRef, input, signal, Signal } from '@angular/core';\r\nimport { ButtonSize } from '../../../types/button-size.type';\r\nimport { SplitButtonType } from '../../../types/split-button-type.type';\r\nimport { Button } from '../button/button';\r\nimport { IconButton } from '../icon-button/icon-button';\r\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\r\nimport { IconButtonWidth } from '../../../types/icon-button-width.type';\r\n\r\n@Component({\r\n selector: 'md3-split-button',\r\n imports: [\r\n ],\r\n templateUrl: './split-button.html',\r\n styleUrl: './split-button.scss',\r\n host: {\r\n 'role': 'group',\r\n },\r\n providers: [\r\n {\r\n provide: MD3_BUTTON_CONTEXT,\r\n useExisting: SplitButton,\r\n },\r\n ],\r\n})\r\nexport class SplitButton implements ButtonContext {\r\n public buttonSize = input<ButtonSize>('small', {\r\n alias: 'button-size',\r\n });\r\n public buttonType = input<SplitButtonType>('filled', {\r\n alias: 'button-type',\r\n });\r\n\r\n public flipTrailingIcon = input<boolean, unknown>(true, {\r\n alias: 'flip-trailing-icon',\r\n transform: booleanAttribute,\r\n });\r\n\r\n private button = contentChild<Button>(Button);\r\n private iconButtons = contentChildren<IconButton>(IconButton);\r\n\r\n // context values\r\n buttonContextSize: Signal<ButtonSize> = this.buttonSize;\r\n buttonContextType: Signal<SplitButtonType> = this.buttonType;\r\n buttonContextWidth: Signal<IconButtonWidth> = signal('default');\r\n buttonContextSquared?: Signal<boolean> = signal(false);\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-' + this.buttonSize();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.buttonType();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n \r\n effect(() => {\r\n this.button()?.isSelected.set(null);\r\n });\r\n \r\n effect(() => {\r\n this.iconButtons().forEach((iconButton) => {\r\n iconButton.isSelected.set(null);\r\n \r\n if (iconButton?.element.hasAttribute('md3-main-action')) {\r\n return;\r\n }\r\n\r\n iconButton.element.classList.toggle('md3-flip-icon', this.flipTrailingIcon());\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\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>\r\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';\r\nimport { Button } from '../button/button';\r\nimport { IconButton } from '../icon-button/icon-button';\r\nimport { ButtonSize } from '../../../types/button-size.type';\r\nimport { ButtonGroupSelection } from '../../../types/button-group-selection.type';\r\nimport { ButtonGroupType } from '../../../types/button-group-type.type';\r\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\r\n\r\n@Component({\r\n selector: 'md3-button-group',\r\n templateUrl: './button-group.html',\r\n styleUrl: './button-group.scss',\r\n host: {\r\n 'role': 'group',\r\n },\r\n providers: [\r\n {\r\n provide: MD3_BUTTON_CONTEXT,\r\n useExisting: ButtonGroup,\r\n },\r\n ],\r\n})\r\nexport class ButtonGroup implements ButtonContext {\r\n @HostListener('click', ['$event']) onClick(event: PointerEvent): void {\r\n if (this.groupSelection() !== 'single') {\r\n return;\r\n }\r\n\r\n const selectedItem = this.findEventButton(event);\r\n\r\n if (selectedItem?.isSelected()) {\r\n this.clearOtherSelections(selectedItem);\r\n }\r\n }\r\n \r\n public buttonSize: InputSignal<ButtonSize> = input<ButtonSize>('small', {\r\n alias: 'button-size',\r\n });\r\n public groupType: InputSignal<ButtonGroupType> = input<ButtonGroupType>('standard', {\r\n alias: 'group-type',\r\n });\r\n public groupSelection: InputSignal<ButtonGroupSelection> = input<ButtonGroupSelection>('none', {\r\n alias: 'selection',\r\n });\r\n\r\n private buttons = contentChildren<Button>(Button, { descendants: true });\r\n private iconButtons = contentChildren<IconButton>(IconButton, { descendants: true });\r\n \r\n // context values\r\n buttonContextSize: Signal<ButtonSize> = this.buttonSize;\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const size = 'md3-' + this.buttonSize();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const groupType = 'md3-' + this.groupType();\r\n this.element.classList.add(groupType);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(groupType);\r\n });\r\n });\r\n\r\n effect(() => {\r\n const selection = this.groupSelection();\r\n\r\n if (selection == 'none') {\r\n this.allButtons().forEach((item) => {\r\n item.isSelected.set(null);\r\n });\r\n } else {\r\n this.allButtons().forEach((item) => {\r\n item.enableSelection();\r\n });\r\n\r\n if (selection == 'single') {\r\n this.normalizeSingleSelection();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n private findEventButton(event: PointerEvent): Button | IconButton | undefined {\r\n const target = event.target;\r\n\r\n if (!(target instanceof Node)) {\r\n return undefined;\r\n }\r\n\r\n return this.allButtons().find((item) => {\r\n return item.element.contains(target);\r\n });\r\n }\r\n\r\n private normalizeSingleSelection(): void {\r\n const selectedItem = this.allButtons().find((item) => {\r\n return item.isSelected();\r\n });\r\n\r\n if (selectedItem) {\r\n this.clearOtherSelections(selectedItem);\r\n }\r\n }\r\n\r\n private clearOtherSelections(selectedItem: Button | IconButton): void {\r\n this.allButtons().forEach((item) => {\r\n if (item != selectedItem) {\r\n item.isSelected.set(false);\r\n }\r\n });\r\n }\r\n\r\n private allButtons(): (Button | IconButton)[] {\r\n return [\r\n ...this.buttons(),\r\n ...this.iconButtons(),\r\n ];\r\n }\r\n}\r\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';\r\nimport { StateComponent } from '../common/state-component';\r\nimport { CardType } from '../../types/card-type.type';\r\n\r\n@Component({\r\n selector: 'md3-card, button[md3-card], a[md3-card]',\r\n imports: [],\r\n templateUrl: './card.html',\r\n styleUrl: './card.scss',\r\n // host: {\r\n // tabindex: '0',\r\n // },\r\n hostDirectives: [\r\n StateComponent\r\n ],\r\n})\r\nexport class Card implements AfterViewInit {\r\n public cardType = input<CardType>('elevated', {\r\n alias: 'card-type',\r\n });\r\n\r\n public isInteractive = input<boolean, unknown>(false, {\r\n alias: 'interactive',\r\n transform: booleanAttribute,\r\n });\r\n\r\n private isActionTag = signal<boolean>(false);\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private state: StateComponent,\r\n ) {\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.cardType();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n\r\n effect(() => {\r\n if (this.isInteractive() || this.isActionTag()) {\r\n this.element.classList.add('md3-interactive');\r\n this.state.setStateLayer(true);\r\n\r\n if (!this.isActionTag()) {\r\n this.element.setAttribute('tabindex', '0');\r\n }\r\n } else {\r\n this.element.classList.remove('md3-interactive');\r\n this.state.setStateLayer(false);\r\n this.element.removeAttribute('tabindex');\r\n }\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const tagName = this.element.tagName.toLowerCase();\r\n this.isActionTag.set(tagName != 'md3-card');\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, Directive, effect, ElementRef, input, Input, output } from '@angular/core';\r\nimport { MaterialIcon } from '../common/material-icon/material-icon';\r\nimport { StateComponent } from '../common/state-component';\r\nimport { ChipType } from '../../types/chip-type.type';\r\nimport { IconElement } from '../common/icon-element';\r\nimport { ChipStyle } from '../../types/chip-style.type';\r\n\r\n@Directive({\r\n selector: '[md3-chip-avatar]'\r\n})\r\nexport class ChipAvatar {}\r\n\r\n@Component({\r\n selector: 'button[md3-chip], a[md3-chip], label[md3-chip]',\r\n imports: [\r\n StateComponent,\r\n MaterialIcon,\r\n ],\r\n templateUrl: './chips.html',\r\n styleUrl: './chips.scss',\r\n})\r\nexport class Chips {\r\n public chipType = input<ChipType>('assist', {\r\n alias: 'chip-type',\r\n });\r\n\r\n public chipStyle = input<ChipStyle>('default', {\r\n alias: 'chip-style',\r\n });\r\n\r\n public trailingFunction = output<void>({\r\n alias: 'on-trailing',\r\n });\r\n\r\n protected onTrailingClick(event: Event): void {\r\n event.stopPropagation();\r\n this.trailingFunction.emit();\r\n }\r\n\r\n private avatar = contentChild(ChipAvatar);\r\n private iconElements = contentChildren(IconElement);\r\n\r\n public hasSurface = input<boolean, unknown>(false, {\r\n alias: 'surface',\r\n transform: booleanAttribute,\r\n });\r\n\r\n public isElevated = input<boolean, unknown>(false, {\r\n alias: 'elevated',\r\n transform: booleanAttribute,\r\n });\r\n\r\n public leading = computed(() => this.iconElements().find((icon) => icon.iconType() === 'leading'));\r\n public trailing = computed(() => this.iconElements().find((icon) => icon.iconType() === 'trailing'));\r\n public isSelectable = computed(() => this.chipType() != 'assist');\r\n public showCheckIcon = computed(() => !this.leading() && this.chipType() == 'filter');\r\n public hasAvatar = computed(() => this.avatar() != undefined && this.chipType() == 'input');\r\n public hasRemove = computed(() => this.chipType() == 'input');\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.chipType();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const style = 'md3-' + this.chipStyle();\r\n this.element.classList.add(style);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(style);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}","@if (isSelectable()) {\r\n <ng-content select=\"[md3-input-element]\"></ng-content>\r\n}\r\n<div class=\"md3-chip-container\" md3-state-component>\r\n <div class=\"md3-chip-leading\" [class.has-icon]=\"leading()\" [class.has-avatar]=\"hasAvatar()\">\r\n <ng-content select=\"[md3-icon-element=leading], [md3-chip-avatar]\"></ng-content>\r\n @if (showCheckIcon()) {\r\n <md3-icon [icon-size]=\"18\" md3-icon-element=\"leading\">check</md3-icon>\r\n }\r\n </div>\r\n <div class=\"md3-chip-label\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (hasRemove() || trailing()) {\r\n <button class=\"md3-chip-trailing\" md3-state-component [class.has-icon]=\"trailing()\" (click)=\"onTrailingClick($event)\">\r\n <ng-content select=\"[md3-icon-element=trailing]\"></ng-content>\r\n\r\n @if (hasRemove() && !trailing()) {\r\n <md3-icon [icon-size]=\"18\" md3-icon-element=\"trailing\">close</md3-icon>\r\n }\r\n </button>\r\n }\r\n</div>","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, Signal, viewChild } from '@angular/core';\r\nimport { AbstractControl, FormControlName } from '@angular/forms';\r\nimport { fromEvent } from 'rxjs';\r\nimport { InputElement } from '../../common/input-element';\r\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\r\nimport { StateComponent } from '../../common/state-component';\r\n\r\n@Component({\r\n selector: 'md3-checkbox',\r\n imports: [\r\n MaterialIcon,\r\n StateComponent,\r\n ],\r\n templateUrl: './checkbox.html',\r\n styleUrl: './checkbox.scss',\r\n})\r\nexport class Checkbox {\r\n public control = input<AbstractControl | undefined>(undefined, {\r\n alias: 'control',\r\n });\r\n\r\n private stateComponent = viewChild<StateComponent>(StateComponent);\r\n private input = contentChild(InputElement);\r\n private controlName = contentChild(FormControlName);\r\n private controlError = signal(false);\r\n private nativeInputError = signal(false);\r\n\r\n public disableStateLayer = input<boolean, unknown>(false, {\r\n alias: 'disable-state-layer',\r\n transform: booleanAttribute\r\n });\r\n\r\n protected checkboxIcon: 'check_small' | 'check_indeterminate_small' = 'check_small';\r\n public state = signal<boolean | null>(false);\r\n\r\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\r\n\r\n private inputError = computed<boolean>(() => {\r\n const control = this.formControl();\r\n if (control) {\r\n this.controlError();\r\n return this.hasControlError(control);\r\n }\r\n\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return false;\r\n }\r\n\r\n this.nativeInputError();\r\n return this.hasNativeInputError(input);\r\n });\r\n\r\n private inputDisabledState = signal<boolean>(false);\r\n public isDisabled = computed<boolean>(() => this.inputDisabledState());\r\n\r\n constructor() {\r\n effect(() => {\r\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n this.syncInitialState(input);\r\n this.syncNativeInputState(input);\r\n\r\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\r\n this.syncStateFromInput(input);\r\n this.syncControlFromState(this.state());\r\n this.syncNativeInputState(input);\r\n });\r\n\r\n const observer = typeof MutationObserver === 'undefined'\r\n ? undefined\r\n : new MutationObserver(() => {\r\n if (!this.formControl()) {\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n this.syncNativeInputState(input);\r\n });\r\n observer?.observe(input, {\r\n attributes: true,\r\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'required'],\r\n });\r\n\r\n onCleanup(() => {\r\n inputEvents.unsubscribe();\r\n observer?.disconnect();\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const control = this.formControl();\r\n if (!control) {\r\n this.controlError.set(false);\r\n return;\r\n }\r\n\r\n this.syncStateFromControl(control);\r\n this.syncControlError(control);\r\n this.syncInputDisabledState(control);\r\n\r\n const controlEvents = control.events.subscribe(() => {\r\n this.syncStateFromControl(control);\r\n this.syncControlError(control);\r\n this.syncInputDisabledState(control);\r\n });\r\n\r\n onCleanup(() => controlEvents.unsubscribe());\r\n });\r\n\r\n effect(() => {\r\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\r\n });\r\n }\r\n\r\n private syncInitialState(input: HTMLInputElement): void {\r\n const control = this.formControl();\r\n if (control) {\r\n this.syncStateFromControl(control);\r\n return;\r\n }\r\n\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n private updateState(state: boolean | null = false): void {\r\n this.checkboxIcon = state === null\r\n ? 'check_indeterminate_small'\r\n : 'check_small';\r\n\r\n this.state.set(state);\r\n }\r\n\r\n private syncStateFromInput(input: HTMLInputElement): void {\r\n this.updateState(input.indeterminate ? null : input.checked);\r\n }\r\n\r\n private syncInputFromState(state: boolean | null = false): void {\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n const indeterminate = state === null;\r\n const checked = state === true;\r\n\r\n if (input.indeterminate !== indeterminate) {\r\n input.indeterminate = indeterminate;\r\n }\r\n\r\n if (input.checked !== checked) {\r\n input.checked = checked;\r\n }\r\n }\r\n\r\n private syncControlFromState(state: boolean | null = false): void {\r\n const control = this.formControl();\r\n if (!control || control.value === state) {\r\n return;\r\n }\r\n\r\n control.setValue(state);\r\n }\r\n\r\n private syncStateFromControl(control: AbstractControl): void {\r\n const controlState = control.value === null\r\n ? null\r\n : control.value === true;\r\n\r\n this.updateState(controlState);\r\n this.syncInputFromState(controlState);\r\n }\r\n\r\n private syncNativeInputState(input: HTMLInputElement): void {\r\n this.nativeInputError.set(this.hasNativeInputError(input));\r\n this.inputDisabledState.set(input.disabled);\r\n }\r\n\r\n private syncControlError(control: AbstractControl): void {\r\n this.controlError.set(this.hasControlError(control));\r\n }\r\n\r\n private syncInputDisabledState(control: AbstractControl): void {\r\n const input = this.input()?.nativeElement;\r\n if (input && input.disabled !== control.disabled) {\r\n input.disabled = control.disabled;\r\n }\r\n }\r\n\r\n private hasNativeInputError(input: HTMLInputElement): boolean {\r\n return !input.validity.valid || input.ariaInvalid === 'true';\r\n }\r\n\r\n private hasControlError(control: AbstractControl): boolean {\r\n return control.invalid && (control.touched || control.dirty);\r\n }\r\n\r\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\r\n const value = this.inputError() ? 'true' : 'false';\r\n if (input && input.getAttribute('aria-invalid') !== value) {\r\n input.setAttribute('aria-invalid', value);\r\n }\r\n }\r\n\r\n}\r\n","<ng-content select=\"[md3-input-element]\"></ng-content>\r\n<div md3-state-component class=\"md3-checkbox-container\">\r\n <div class=\"md3-checkbox-icon\">\r\n <md3-icon>{{ checkboxIcon }}</md3-icon>\r\n </div>\r\n</div>\r\n","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, viewChild } from '@angular/core';\r\nimport { AbstractControl, FormControlName } from '@angular/forms';\r\nimport { fromEvent } from 'rxjs';\r\nimport { InputElement } from '../../common/input-element';\r\nimport { StateComponent } from '../../common/state-component';\r\n\r\n@Component({\r\n selector: 'md3-radio-button',\r\n imports: [\r\n StateComponent\r\n ],\r\n templateUrl: './radio-button.html',\r\n styleUrl: './radio-button.scss',\r\n})\r\nexport class RadioButton {\r\n public control = input<AbstractControl | undefined>(undefined, {\r\n alias: 'control',\r\n });\r\n\r\n private stateComponent = viewChild<StateComponent>(StateComponent);\r\n private input = contentChild(InputElement);\r\n private controlName = contentChild(FormControlName);\r\n private controlError = signal(false);\r\n private nativeInputError = signal(false);\r\n\r\n public disableStateLayer = input<boolean, unknown>(false, {\r\n alias: 'disable-state-layer',\r\n transform: booleanAttribute\r\n });\r\n\r\n public state = signal<boolean>(false);\r\n\r\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\r\n\r\n private inputError = computed<boolean>(() => {\r\n const control = this.formControl();\r\n if (control) {\r\n this.controlError();\r\n return this.hasControlError(control);\r\n }\r\n\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return false;\r\n }\r\n\r\n this.nativeInputError();\r\n return this.hasNativeInputError(input);\r\n });\r\n\r\n private inputDisabledState = signal<boolean>(false);\r\n public isDisabled = computed<boolean>(() => this.inputDisabledState());\r\n\r\n constructor() {\r\n effect(() => {\r\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n this.syncInitialState(input);\r\n this.syncNativeInputState(input);\r\n\r\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\r\n this.syncStateFromInput(input);\r\n this.syncControlFromInput(input);\r\n this.syncNativeInputState(input);\r\n });\r\n\r\n const documentEvents = fromEvent(input.ownerDocument, 'change').subscribe((event) => {\r\n if (this.isSameRadioGroup(input, event.target)) {\r\n this.syncStateFromInput(input);\r\n this.syncNativeInputState(input);\r\n }\r\n });\r\n\r\n const observer = typeof MutationObserver === 'undefined'\r\n ? undefined\r\n : new MutationObserver(() => {\r\n if (!this.formControl()) {\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n this.syncNativeInputState(input);\r\n });\r\n observer?.observe(input, {\r\n attributes: true,\r\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'name', 'required', 'value'],\r\n });\r\n\r\n onCleanup(() => {\r\n inputEvents.unsubscribe();\r\n documentEvents.unsubscribe();\r\n observer?.disconnect();\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const control = this.formControl();\r\n if (!control) {\r\n this.controlError.set(false);\r\n return;\r\n }\r\n\r\n this.syncStateFromControl(control);\r\n this.syncControlError(control);\r\n this.syncInputDisabledState(control);\r\n\r\n const controlEvents = control.events.subscribe(() => {\r\n this.syncStateFromControl(control);\r\n this.syncControlError(control);\r\n this.syncInputDisabledState(control);\r\n });\r\n\r\n onCleanup(() => controlEvents.unsubscribe());\r\n });\r\n\r\n effect(() => {\r\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\r\n });\r\n }\r\n\r\n private syncInitialState(input: HTMLInputElement): void {\r\n const control = this.formControl();\r\n if (control) {\r\n this.syncStateFromControl(control);\r\n return;\r\n }\r\n\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n private getInputValue(input: HTMLInputElement | undefined = this.input()?.nativeElement): unknown {\r\n return input?.value ?? true;\r\n }\r\n\r\n private updateState(state: boolean = false): void {\r\n this.state.set(state);\r\n }\r\n\r\n private syncStateFromInput(input: HTMLInputElement): void {\r\n this.updateState(input.checked);\r\n }\r\n\r\n private syncInputFromState(state: boolean = false): void {\r\n const input = this.input()?.nativeElement;\r\n if (input && input.checked !== state) {\r\n input.checked = state;\r\n }\r\n }\r\n\r\n private syncControlFromInput(input: HTMLInputElement): void {\r\n const control = this.formControl();\r\n if (!control || !input.checked) {\r\n return;\r\n }\r\n\r\n const inputValue = this.getInputValue(input);\r\n if (control.value !== inputValue) {\r\n control.setValue(inputValue);\r\n }\r\n }\r\n\r\n private syncStateFromControl(control: AbstractControl): void {\r\n const controlState = control.value === this.getInputValue();\r\n\r\n this.updateState(controlState);\r\n this.syncInputFromState(controlState);\r\n }\r\n\r\n private isSameRadioGroup(input: HTMLInputElement, target: EventTarget | null): boolean {\r\n return target instanceof HTMLInputElement\r\n && target.type === 'radio'\r\n && target.name === input.name\r\n && target.form === input.form;\r\n }\r\n\r\n private syncNativeInputState(input: HTMLInputElement): void {\r\n this.nativeInputError.set(this.hasNativeInputError(input));\r\n this.inputDisabledState.set(input.disabled);\r\n }\r\n\r\n private syncControlError(control: AbstractControl): void {\r\n this.controlError.set(this.hasControlError(control));\r\n }\r\n\r\n private syncInputDisabledState(control: AbstractControl): void {\r\n const input = this.input()?.nativeElement;\r\n if (input && input.disabled !== control.disabled) {\r\n input.disabled = control.disabled;\r\n }\r\n }\r\n\r\n private hasNativeInputError(input: HTMLInputElement): boolean {\r\n return !input.validity.valid || input.ariaInvalid === 'true';\r\n }\r\n\r\n private hasControlError(control: AbstractControl): boolean {\r\n return control.invalid && (control.touched || control.dirty);\r\n }\r\n\r\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\r\n const value = this.inputError() ? 'true' : 'false';\r\n if (input && input.getAttribute('aria-invalid') !== value) {\r\n input.setAttribute('aria-invalid', value);\r\n }\r\n }\r\n}\r\n","<ng-content select=\"[md3-input-element]\"></ng-content>\r\n<div md3-state-component class=\"md3-radio-button-container\">\r\n <div class=\"md3-radio-button-icon\"></div>\r\n</div>\r\n","import { booleanAttribute, Component, computed, contentChild, effect, input, signal, viewChild } from '@angular/core';\r\nimport { AbstractControl, FormControlName } from '@angular/forms';\r\nimport { fromEvent } from 'rxjs';\r\nimport { InputElement } from '../../common/input-element';\r\nimport { StateComponent } from '../../common/state-component';\r\n\r\n@Component({\r\n selector: 'md3-switch',\r\n imports: [\r\n StateComponent\r\n ],\r\n templateUrl: './switch.html',\r\n styleUrl: './switch.scss',\r\n})\r\nexport class Switch {\r\n public control = input<AbstractControl | undefined>(undefined, {\r\n alias: 'control',\r\n });\r\n\r\n private stateComponent = viewChild<StateComponent>(StateComponent);\r\n private input = contentChild(InputElement);\r\n private controlName = contentChild(FormControlName);\r\n private controlError = signal(false);\r\n private nativeInputError = signal(false);\r\n \r\n public disableStateLayer = input<boolean, unknown>(false, {\r\n alias: 'disable-state-layer',\r\n transform: booleanAttribute\r\n });\r\n\r\n public state = signal<boolean>(false);\r\n\r\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\r\n\r\n private inputError = computed<boolean>(() => {\r\n const control = this.formControl();\r\n if (control) {\r\n this.controlError();\r\n return this.hasControlError(control);\r\n }\r\n\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return false;\r\n }\r\n\r\n this.nativeInputError();\r\n return this.hasNativeInputError(input);\r\n });\r\n\r\n private inputDisabledState = signal<boolean>(false);\r\n public isDisabled = computed<boolean>(() => {\r\n console.log('Switch disabled');\r\n return this.inputDisabledState();\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n this.stateComponent()?.setStateLayer(!this.disableStateLayer());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n input.setAttribute('role', 'switch');\r\n this.syncInitialState(input);\r\n this.syncNativeInputState(input);\r\n\r\n const inputEvents = fromEvent(input, 'change').subscribe(() => {\r\n this.syncStateFromInput(input);\r\n this.syncControlFromState(this.state());\r\n this.syncNativeInputState(input);\r\n });\r\n\r\n const observer = typeof MutationObserver === 'undefined'\r\n ? undefined\r\n : new MutationObserver(() => {\r\n if (!this.formControl()) {\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n this.syncNativeInputState(input);\r\n });\r\n observer?.observe(input, {\r\n attributes: true,\r\n attributeFilter: ['aria-invalid', 'checked', 'disabled', 'required'],\r\n });\r\n\r\n onCleanup(() => {\r\n inputEvents.unsubscribe();\r\n observer?.disconnect();\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const control = this.formControl();\r\n if (!control) {\r\n this.controlError.set(false);\r\n return;\r\n }\r\n\r\n this.syncStateFromControl(control);\r\n this.syncControlError(control);\r\n this.syncInputDisabledState(control);\r\n\r\n const controlEvents = control.events.subscribe(() => {\r\n this.syncStateFromControl(control);\r\n this.syncControlError(control);\r\n this.syncInputDisabledState(control);\r\n });\r\n\r\n onCleanup(() => controlEvents.unsubscribe());\r\n });\r\n\r\n effect(() => {\r\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\r\n });\r\n }\r\n\r\n private syncInitialState(input: HTMLInputElement): void {\r\n const control = this.formControl();\r\n if (control) {\r\n this.syncStateFromControl(control);\r\n return;\r\n }\r\n\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n private updateState(state: boolean = false): void {\r\n this.state.set(state);\r\n }\r\n\r\n private syncStateFromInput(input: HTMLInputElement): void {\r\n this.updateState(input.checked);\r\n }\r\n\r\n private syncInputFromState(state: boolean = false): void {\r\n const input = this.input()?.nativeElement;\r\n if (input && input.checked !== state) {\r\n input.checked = state;\r\n }\r\n }\r\n\r\n private syncControlFromState(state: boolean = false): void {\r\n const control = this.formControl();\r\n if (!control || control.value === state) {\r\n return;\r\n }\r\n\r\n control.setValue(state);\r\n }\r\n\r\n private syncStateFromControl(control: AbstractControl): void {\r\n const controlState = control.value === true;\r\n\r\n this.updateState(controlState);\r\n this.syncInputFromState(controlState);\r\n }\r\n\r\n private syncNativeInputState(input: HTMLInputElement): void {\r\n this.nativeInputError.set(this.hasNativeInputError(input));\r\n this.inputDisabledState.set(input.disabled);\r\n }\r\n\r\n private syncControlError(control: AbstractControl): void {\r\n this.controlError.set(this.hasControlError(control));\r\n }\r\n\r\n private syncInputDisabledState(control: AbstractControl): void {\r\n const input = this.input()?.nativeElement;\r\n if (input && input.disabled !== control.disabled) {\r\n input.disabled = control.disabled;\r\n }\r\n }\r\n\r\n private hasNativeInputError(input: HTMLInputElement): boolean {\r\n return !input.validity.valid || input.ariaInvalid === 'true';\r\n }\r\n\r\n private hasControlError(control: AbstractControl): boolean {\r\n return control.invalid && (control.touched || control.dirty);\r\n }\r\n\r\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\r\n const value = this.inputError() ? 'true' : 'false';\r\n if (input && input.getAttribute('aria-invalid') !== value) {\r\n input.setAttribute('aria-invalid', value);\r\n }\r\n }\r\n}\r\n","<ng-content select=\"[md3-input-element]\"></ng-content>\r\n<div md3-state-component class=\"md3-track-container\">\r\n <div class=\"md3-track\">\r\n <div class=\"md3-handle-container\">\r\n <div class=\"md3-handle\">\r\n <ng-content select=\"[md3-icon-element]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, computed, contentChild, effect, ElementRef, input, signal } from '@angular/core';\r\nimport { AbstractControl, FormControlName } from '@angular/forms';\r\nimport { fromEvent, merge } from 'rxjs';\r\nimport { InputElement } from '../common/input-element';\r\nimport { TypeBody } from '../../styles/typography/type-body';\r\nimport { SliderSize } from '../../types/slider-size.type';\r\n\r\n@Component({\r\n selector: 'md3-slider',\r\n imports: [\r\n TypeBody,\r\n ],\r\n templateUrl: './slider.html',\r\n styleUrl: './slider.scss',\r\n})\r\nexport class Slider {\r\n public control = input<AbstractControl | undefined>(undefined, {\r\n alias: 'control',\r\n });\r\n public sliderSize = input<SliderSize>('x-small', {\r\n alias: 'slider-size',\r\n });\r\n public showValueLabel = input<boolean>(false, {\r\n alias: 'show-value-label'\r\n });\r\n\r\n private input = contentChild<InputElement>(InputElement);\r\n private controlName = contentChild<FormControlName>(FormControlName);\r\n\r\n public value = signal<number>(0);\r\n public min = signal<number>(0);\r\n public max = signal<number>(100);\r\n public progress = signal<number>(0);\r\n\r\n protected formControl = computed<AbstractControl | undefined>(() => this.control() ?? this.controlName()?.control);\r\n\r\n constructor(private el: ElementRef<HTMLElement>) {\r\n effect((onCleanup) => {\r\n const size = 'md3-' + this.sliderSize();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n\r\n effect(() => {\r\n this.element.style.setProperty('--slider-progress', `${this.progress()}%`);\r\n });\r\n\r\n effect((onCleanup) => {\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n this.syncInitialState(input);\r\n\r\n const inputEvents = merge(\r\n fromEvent(input, 'input'),\r\n fromEvent(input, 'change'),\r\n ).subscribe(() => {\r\n this.syncStateFromInput(input);\r\n this.syncControlFromState(this.value());\r\n });\r\n\r\n onCleanup(() => inputEvents.unsubscribe());\r\n });\r\n\r\n effect((onCleanup) => {\r\n const control = this.formControl();\r\n if (!control) {\r\n return;\r\n }\r\n\r\n this.syncStateFromControl(control);\r\n this.syncInputDisabledState(control);\r\n\r\n const controlEvents = control.events.subscribe(() => {\r\n this.syncStateFromControl(control);\r\n this.syncInputDisabledState(control);\r\n });\r\n\r\n onCleanup(() => controlEvents.unsubscribe());\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n\r\n private syncInitialState(input: HTMLInputElement): void {\r\n const control = this.formControl();\r\n if (control) {\r\n this.syncStateFromControl(control);\r\n return;\r\n }\r\n\r\n this.syncStateFromInput(input);\r\n }\r\n\r\n private updateState(value: number = 0): void {\r\n let min = this.min();\r\n let max = this.max();\r\n let range = max - min;\r\n let nextValue = Number.isFinite(value) ? value : min;\r\n let progress = range === 0\r\n ? 0\r\n : ((nextValue - min) / range) * 100;\r\n\r\n this.value.set(nextValue);\r\n this.progress.set(Math.min(100, Math.max(0, progress)));\r\n }\r\n\r\n private syncLimitsFromInput(input: HTMLInputElement | undefined = this.input()?.nativeElement): void {\r\n if (!input) {\r\n return;\r\n }\r\n\r\n let min = input.min === ''\r\n ? 0\r\n : Number(input.min);\r\n let max = input.max === ''\r\n ? 100\r\n : Number(input.max);\r\n\r\n this.min.set(Number.isFinite(min) ? min : 0);\r\n this.max.set(Number.isFinite(max) ? max : 100);\r\n }\r\n\r\n private syncStateFromInput(input: HTMLInputElement | undefined = this.input()?.nativeElement): void {\r\n if (!input) {\r\n return;\r\n }\r\n\r\n this.syncLimitsFromInput(input);\r\n this.updateState(input.valueAsNumber);\r\n }\r\n\r\n private syncInputFromState(value: number = 0): void {\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return;\r\n }\r\n\r\n input.valueAsNumber = value;\r\n }\r\n\r\n private syncControlFromState(value: number = 0): void {\r\n const control = this.formControl();\r\n if (!control || control.value === value) {\r\n return;\r\n }\r\n\r\n control.setValue(value);\r\n }\r\n\r\n private syncStateFromControl(control: AbstractControl): void {\r\n let controlValue = Number(control.value ?? this.min());\r\n\r\n this.syncLimitsFromInput();\r\n this.updateState(controlValue);\r\n this.syncInputFromState(controlValue);\r\n }\r\n\r\n private syncInputDisabledState(control: AbstractControl): void {\r\n const input = this.input()?.nativeElement;\r\n if (input && input.disabled !== control.disabled) {\r\n input.disabled = control.disabled;\r\n }\r\n }\r\n}\r\n","<ng-content select=\"[md3-input-element]\"></ng-content>\r\n<div class=\"md3-slider-container\">\r\n <div class=\"md3-slider-track\">\r\n <div class=\"md3-active-track\">\r\n <div class=\"md3-track-bar\">\r\n <div class=\"md3-icon-container\">\r\n <ng-content select=\"[md3-icon-element]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"md3-inactive-track\">\r\n <div class=\"md3-track-bar\"></div>\r\n </div>\r\n </div>\r\n <div class=\"md3-slider-handle\">\r\n @if (showValueLabel()) {\r\n <div class=\"md3-value-label\">\r\n <md3-type-body size=\"medium\">{{ value() }}</md3-type-body>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, effect, ElementRef, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-list',\r\n templateUrl: './list.html',\r\n styleUrl: './list.scss',\r\n})\r\nexport class List {\r\n public variant = input<'expressive' | 'baseline'>('expressive');\r\n public type = input<'standard' | 'segmented'>('standard');\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const variant = 'md3-' + this.variant();\r\n this.element.classList.add(variant);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(variant);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.type();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","<ng-content></ng-content>","import { AfterViewInit, booleanAttribute, Component, computed, contentChild, Directive, effect, ElementRef, HostListener, input } from '@angular/core';\r\nimport { StateComponent } from '../../common/state-component';\r\nimport { Checkbox } from '../../selection-controls/checkbox/checkbox';\r\nimport { RadioButton } from '../../selection-controls/radio-button/radio-button';\r\nimport { Switch } from '../../selection-controls/switch/switch';\r\n\r\n@Directive({\r\n selector: 'button[md3-item-primary-action], a[md3-item-primary-action]',\r\n host: {\r\n 'class': 'md3-item-primary-action',\r\n },\r\n hostDirectives: [\r\n StateComponent\r\n ],\r\n})\r\nexport class ListItemPrimaryAction {\r\n}\r\n\r\n@Component({\r\n selector: 'md3-list-item, label[md3-list-item], button[md3-list-item], a[md3-list-item]',\r\n templateUrl: './list-item.html',\r\n styleUrl: './list-item.scss',\r\n host: {\r\n '[class.md3-selected]': 'isSelected()',\r\n },\r\n hostDirectives: [\r\n StateComponent\r\n ],\r\n})\r\nexport class ListItem implements AfterViewInit {\r\n public slotsAlignment = input<'start' | 'center' | 'end'>('center', {\r\n alias: 'slots-alignment',\r\n });\r\n public selected = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n\r\n public isActionTag: boolean = false;\r\n private isLabelTag: boolean = false;\r\n private checkbox = contentChild(Checkbox);\r\n private radioButton = contentChild(RadioButton);\r\n private switch = contentChild(Switch);\r\n\r\n public isSelected = computed(() => {\r\n const checkbox = this.checkbox();\r\n const radioButton = this.radioButton();\r\n\r\n if (checkbox || radioButton) {\r\n return (checkbox?.state() || radioButton?.state()) === true;\r\n }\r\n\r\n return this.selected();\r\n });\r\n\r\n public isInputDisabled = computed(() => {\r\n return this.checkbox()?.isDisabled() || this.radioButton()?.isDisabled() || this.switch()?.isDisabled();\r\n });\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private state: StateComponent\r\n ) {\r\n effect((onCleanup) => {\r\n const alignment = 'md3-slots-alignment-' + this.slotsAlignment();\r\n this.element.classList.add(alignment);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(alignment);\r\n });\r\n });\r\n\r\n effect(() => {\r\n if (this.isInputDisabled()) {\r\n this.state.setStateLayer(false);\r\n this.element.classList.add('md3-disabled');\r\n } else {\r\n this.state.setStateLayer(true);\r\n this.element.classList.remove('md3-disabled');\r\n }\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n let tagName = this.element.tagName.toLowerCase();\r\n\r\n this.isLabelTag = tagName == 'label';\r\n\r\n if (this.isLabelTag) {\r\n this.element.setAttribute('tabindex', '0');\r\n this.setLabelInputTabIndex();\r\n }\r\n\r\n this.isActionTag = tagName != 'md3-list-item';\r\n \r\n if (!this.isActionTag) {\r\n this.state.setStateLayer(false);\r\n }\r\n }\r\n\r\n @HostListener('focusin', ['$event'])\r\n protected onFocusIn(event: FocusEvent): void {\r\n if (!this.isLabelTag || event.target === this.element || !this.isInputElement(event.target)) {\r\n return;\r\n }\r\n\r\n this.focusLabel();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n protected onKeyDown(event: KeyboardEvent): void {\r\n if (!this.isLabelTag || event.target !== this.element || event.defaultPrevented) {\r\n return;\r\n }\r\n\r\n if (event.key !== ' ' && event.key !== 'Enter') {\r\n return;\r\n }\r\n\r\n const input = this.getLabelActivationInput();\r\n\r\n if (!input) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n input.click();\r\n this.focusLabel();\r\n }\r\n\r\n private setLabelInputTabIndex(): void {\r\n this.getLabelInputs().forEach((input) => input.tabIndex = -1);\r\n }\r\n\r\n private getLabelActivationInput(): HTMLInputElement | undefined {\r\n return this.getLabelInputs().find((input) => {\r\n return !input.disabled && (input.type === 'checkbox' || input.type === 'radio');\r\n }) ?? this.getLabelInputs().find((input) => !input.disabled);\r\n }\r\n\r\n private getLabelInputs(): HTMLInputElement[] {\r\n return Array.from(this.element.querySelectorAll<HTMLInputElement>('input'));\r\n }\r\n\r\n private focusLabel(): void {\r\n this.element.focus({ preventScroll: true });\r\n }\r\n\r\n private isInputElement(target: EventTarget | null): target is HTMLInputElement {\r\n return target instanceof HTMLInputElement;\r\n }\r\n}\r\n","<ng-content select=\"[md3-item-primary-action]\"></ng-content>\r\n<ng-content select=\"md3-list-leading\"></ng-content>\r\n<ng-content select=\"[md3-list-slot=content]\"></ng-content>\r\n<ng-content select=\"[md3-list-slot=trailing]\"></ng-content>","import { Component, effect, ElementRef, input } from '@angular/core';\r\nimport { ListLeadingType } from '../../../types/list-leading-type.type';\r\nimport { ListLeadingSize } from '../../../types/list-leading-size.type';\r\n\r\n@Component({\r\n selector: 'md3-list-leading',\r\n templateUrl: './list-leading.html',\r\n styleUrl: './list-leading.scss',\r\n})\r\nexport class ListLeading {\r\n public type = input<ListLeadingType>('icon');\r\n public size = input<ListLeadingSize>('image');\r\n\r\n constructor(\r\n private el: ElementRef,\r\n ) {\r\n effect((onCleanup) => {\r\n const type = 'md3-type-' + this.type();\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const size = 'md3-size-' + this.size();\r\n this.element.classList.add(size);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(size);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n}\r\n","<ng-content></ng-content>","import { Directive, ElementRef, input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[md3-list-slot]',\r\n host: {\r\n '[attr.md3-list-slot]': 'position()',\r\n },\r\n})\r\nexport class ListSlot {\r\n public position = input.required<'content' | 'trailing'>({\r\n alias: 'md3-list-slot',\r\n });\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n public get nativeElement(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n}\r\n","import { Component, computed, ElementRef, input, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-loading-indicator',\r\n imports: [],\r\n templateUrl: './loading-indicator.html',\r\n styleUrl: './loading-indicator.scss',\r\n})\r\nexport class LoadingIndicator {\r\n public contained = input<boolean>(false);\r\n public size = input<number>(48);\r\n\r\n public dpSize = computed(() => {\r\n const fontSize = this.getHostFontSize();\r\n return Number((this.size() / fontSize).toFixed(4));\r\n });\r\n\r\n constructor(\r\n private el: ElementRef,\r\n ) {\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n private getHostFontSize(): number {\r\n if (typeof getComputedStyle === 'undefined') {\r\n return 16;\r\n }\r\n\r\n return Number.parseFloat(getComputedStyle(this.element).fontSize) || 16;\r\n }\r\n}\r\n","<div class=\"md3-indicator-indeterminate\" [class.md3-contained]=\"contained()\" [style]=\"'--size: '+dpSize()+'em'\">\r\n <svg viewBox=\"0 0 48 48\" class=\"md3-indicator-svg\">\r\n <path class=\"md3-indicator-shape\"></path>\r\n </svg>\r\n</div>","import { Component, computed, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-linear-progress-indicator',\r\n imports: [],\r\n templateUrl: './linear-progress-indicator.html',\r\n styleUrl: './linear-progress-indicator.scss',\r\n})\r\nexport class LinearProgressIndicator {\r\n public indeterminate = input<boolean>(false);\r\n public thickness = input<4 | 8>(4);\r\n public progress = input<number>(0);\r\n\r\n public progressValue = computed(() => {\r\n const progress = this.progress();\r\n if (progress < 0) {\r\n return 0;\r\n }\r\n\r\n if (progress > 100) {\r\n return 100;\r\n }\r\n\r\n return progress;\r\n });\r\n\r\n constructor() {\r\n }\r\n}\r\n","<div class=\"md3-linear-indicator\" [class.md3-thickness-8dp]=\"thickness() == 8\" [class.md3-indeterminate]=\"indeterminate()\" [style.--progress]=\"progressValue() + '%'\">\r\n <div class=\"md3-track\"></div>\r\n <div class=\"md3-active-indicator\"></div>\r\n @if (indeterminate()) {\r\n <div class=\"md3-track-secondary\"></div>\r\n <div class=\"md3-active-indicator-secondary\"></div>\r\n }\r\n</div>","import { Component, computed, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-circular-progress-indicator',\r\n imports: [],\r\n templateUrl: './circular-progress-indicator.html',\r\n styleUrl: './circular-progress-indicator.scss',\r\n})\r\nexport class CircularProgressIndicator {\r\n public indeterminate = input<boolean>(false);\r\n public thickness = input<4 | 8>(4);\r\n public progress = input<number>(0);\r\n\r\n public progressValue = computed(() => {\r\n const progress = this.progress();\r\n if (progress < 0) {\r\n return 0;\r\n }\r\n\r\n if (progress > 100) {\r\n return 100;\r\n }\r\n\r\n return progress;\r\n });\r\n\r\n constructor() {\r\n }\r\n}\r\n","<div class=\"md3-indicator-container\" [class.md3-thickness-8dp]=\"thickness() == 8\" [class.md3-indeterminate]=\"indeterminate()\" [style.--progress]=\"progressValue()\">\r\n <svg class=\"md3-circlar-indicator\">\r\n <circle class=\"md3-track\" pathLength=\"100\"></circle>\r\n <circle class=\"md3-active-indicator\" pathLength=\"100\"></circle>\r\n </svg>\r\n</div>","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[md3-app-bar-logo]',\r\n})\r\nexport class AppBarLogo {\r\n}\r\n","import { booleanAttribute, Component, computed, contentChild, effect, ElementRef, input, Signal, signal } from '@angular/core';\r\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../interfaces/button-context.interface';\r\nimport { ButtonSize } from '../../types/button-size.type';\r\nimport { Avatar } from '../common/avatar';\r\nimport { LayoutService } from '../../foundations/layout.service';\r\nimport { AppBarLogo } from './app-bar-logo';\r\nimport { TypeDisplay, TypeHeadline, TypeTitle } from '../../../public-api';\r\n\r\nexport type AppBarType = 'small' | 'medium' | 'large' | 'search';\r\nexport type AppBarScrollingStyle = 'none' | 'transparent' | 'elevate';\r\n\r\n@Component({\r\n selector: 'md3-app-bar',\r\n imports: [\r\n TypeHeadline,\r\n TypeTitle,\r\n TypeDisplay,\r\n ],\r\n templateUrl: './app-bar.html',\r\n styleUrl: './app-bar.scss',\r\n providers: [\r\n {\r\n provide: MD3_BUTTON_CONTEXT,\r\n useExisting: AppBar,\r\n },\r\n ],\r\n host: {\r\n role: 'banner',\r\n '[class.md3-scrolled]': 'mainIsScrolled()',\r\n '[class.md3-auto-hide]': 'autoHide()',\r\n '[class.md3-scrolling-down]': 'isScrollingDown()',\r\n },\r\n})\r\nexport class AppBar implements ButtonContext {\r\n public title = input<string | null>(null, {\r\n alias: 'bar-title',\r\n });\r\n\r\n public subtitle = input<string | null>(null, {\r\n alias: 'bar-subtitle',\r\n });\r\n\r\n public appBarType = input<AppBarType>('small', {\r\n alias: 'bar-type',\r\n });\r\n\r\n public appBarScrollingStyle = input<AppBarScrollingStyle>('elevate', {\r\n alias: 'scroll-style',\r\n });\r\n\r\n public autoHide = input<boolean, unknown>(false, {\r\n alias: 'auto-hide',\r\n transform: booleanAttribute,\r\n });\r\n \r\n public centerAligned = input<boolean, unknown>(false, {\r\n alias: 'center-aligned',\r\n transform: booleanAttribute,\r\n });\r\n\r\n private logo = contentChild(AppBarLogo);\r\n private avatar = contentChild(Avatar);\r\n\r\n public hasLogo = computed(() => !!this.logo());\r\n public hasAvatar = computed(() => !!this.avatar());\r\n\r\n public mainIsScrolled = computed(() => this.layoutService.mainIsScrolled());\r\n public isScrollingDown = signal<boolean>(false);\r\n\r\n private scrollPosition = 0;\r\n private bottomExpandedHeight = computed(() => {\r\n const type = this.appBarType();\r\n\r\n if (!this.hasCollapsibleBottom(type)) {\r\n return 0;\r\n }\r\n\r\n this.layoutService.viewport();\r\n\r\n const fontSize = this.getHostFontSize();\r\n const hasSubtitle = !!this.subtitle()?.length;\r\n\r\n if (type === 'medium') {\r\n return (hasSubtitle ? 4.5 : 3) * fontSize;\r\n }\r\n\r\n return (hasSubtitle ? 5.5 : 3.5) * fontSize;\r\n });\r\n\r\n private bottomCollapse = computed(() => {\r\n const expandedHeight = this.bottomExpandedHeight();\r\n\r\n if (!expandedHeight) {\r\n return 0;\r\n }\r\n\r\n return Math.min(expandedHeight, Math.max(0, this.layoutService.mainScrollTop()));\r\n });\r\n\r\n // button context\r\n public buttonContextSize: Signal<ButtonSize> = signal('small');\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private layoutService: LayoutService\r\n ) {\r\n this.scrollPosition = this.layoutService.mainScrollTop();\r\n\r\n effect((onCleanup) => {\r\n const type = 'md3-' + this.appBarType();\r\n\r\n this.element.classList.add(type);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(type);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const scrollingStyle = 'md3-scroll-style-' + this.appBarScrollingStyle();\r\n\r\n this.element.classList.add(scrollingStyle);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(scrollingStyle);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const width = 'md3-layout-' + this.layoutService.widthClass();\r\n this.element.classList.add(width);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(width);\r\n });\r\n });\r\n\r\n effect(() => {\r\n this.updateScrollDirection(this.layoutService.mainScrollTop());\r\n });\r\n\r\n effect(() => {\r\n const collapse = this.bottomCollapse();\r\n const expandedHeight = this.bottomExpandedHeight();\r\n\r\n this.element.style.setProperty(\r\n '--app-bar-bottom-collapse',\r\n `${collapse}px`\r\n );\r\n this.element.style.setProperty(\r\n '--app-bar-bottom-opacity',\r\n this.getBottomOpacity(collapse, expandedHeight).toString()\r\n );\r\n this.element.classList.toggle(\r\n 'md3-collapsed',\r\n this.isBottomCollapsed(collapse, expandedHeight)\r\n );\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n private getBottomOpacity(collapse: number, expandedHeight: number): number {\r\n if (!expandedHeight) {\r\n return 1;\r\n }\r\n\r\n return Math.max(0, Math.min(1, 1 - (collapse / expandedHeight)));\r\n }\r\n\r\n private isBottomCollapsed(collapse: number, expandedHeight: number): boolean {\r\n return expandedHeight > 0 && collapse >= expandedHeight;\r\n }\r\n\r\n private updateScrollDirection(scrollTop: number): void {\r\n if (scrollTop === this.scrollPosition) {\r\n return;\r\n }\r\n\r\n const defaultBarHeight = this.getHostFontSize() * 4;\r\n const scrollOffset = scrollTop - this.scrollPosition;\r\n\r\n if (Math.abs(scrollOffset) <= defaultBarHeight) {\r\n return;\r\n }\r\n\r\n this.isScrollingDown.set(scrollOffset > 0);\r\n this.scrollPosition = scrollTop;\r\n }\r\n\r\n private hasCollapsibleBottom(type: AppBarType): boolean {\r\n return (type === 'medium' || type === 'large') &&\r\n (!!this.title()?.length || !!this.subtitle()?.length);\r\n }\r\n\r\n private getHostFontSize(): number {\r\n if (typeof getComputedStyle === 'undefined') {\r\n return 16;\r\n }\r\n\r\n return Number.parseFloat(getComputedStyle(this.element).fontSize) || 16;\r\n }\r\n}\r\n","<div class=\"md3-app-bar-container\">\r\n <div class=\"md3-app-bar-leading\">\r\n <ng-content select=\"[md3-app-bar-leading]\"></ng-content>\r\n </div>\r\n\r\n @if (appBarType() == 'search') {\r\n <div class=\"md3-app-bar-search\" [class.md3-center]=\"centerAligned()\">\r\n <div class=\"md3-search-container\">\r\n <div class=\"md3-leading-buttons\">\r\n <ng-content select=\"[md3-search-leading]\"></ng-content>\r\n </div>\r\n <ng-content select=\"[md3-input-element]\"></ng-content>\r\n <div class=\"md3-trailing-buttons\">\r\n <ng-content select=\"[md3-search-trailing]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (hasLogo()) {\r\n <div class=\"md3-app-bar-logo\" [class.md3-center]=\"centerAligned()\">\r\n <ng-content select=\"[md3-app-bar-logo]\"></ng-content>\r\n </div>\r\n } @else if (title() || subtitle()) {\r\n <div class=\"md3-app-bar-title\" [class.md3-center]=\"centerAligned()\">\r\n @if (title()?.length) {\r\n <div md3-type-title size=\"large\">{{ title() }}</div>\r\n }\r\n @if (subtitle()?.length) {\r\n <div md3-type-body size=\"small\" emphasized>{{ subtitle() }}</div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"md3-app-bar-trailing\">\r\n <ng-content select=\"[md3-app-bar-trailing]\"></ng-content>\r\n @if (hasAvatar()) {\r\n <div class=\"md3-app-bar-avatar\">\r\n <ng-content select=\"[md3-avatar]\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if ((appBarType() == 'medium' || appBarType() == 'large') && (title() || subtitle())) {\r\n <div class=\"md3-app-bar-bottom\" [class.md3-center]=\"centerAligned()\">\r\n <div class=\"md3-app-bar-bottom-content\">\r\n @if (appBarType() == 'medium') {\r\n @if (title()?.length) {\r\n <div md3-type-headline size=\"medium\">{{ title() }}</div>\r\n }\r\n @if (subtitle()?.length) {\r\n <div md3-type-title size=\"small\">{{ subtitle() }}</div>\r\n }\r\n }\r\n @if (appBarType() == 'large') {\r\n @if (title()?.length) {\r\n <div md3-type-display size=\"small\">{{ title() }}</div>\r\n }\r\n @if (subtitle()?.length) {\r\n <div md3-type-title size=\"medium\">{{ subtitle() }}</div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { booleanAttribute, Component, computed, contentChild, contentChildren, ElementRef, HostBinding, inject, input } from '@angular/core';\r\nimport { RouterLinkActive } from '@angular/router';\r\nimport { IconElement } from '../../common/icon-element';\r\nimport { Badge } from '../../common/badge';\r\n\r\n@Component({\r\n selector: 'button[md3-nav-item], a[md3-nav-item]',\r\n exportAs: 'md3NavItem',\r\n imports: [],\r\n templateUrl: './navigation-item.html',\r\n styleUrl: './navigation-item.scss',\r\n host: {\r\n '[class.md3-hide-on-collapse]': 'this.hideOnCollapse()',\r\n },\r\n hostDirectives: [\r\n {\r\n directive: RouterLinkActive,\r\n inputs: ['routerLinkActiveOptions', 'ariaCurrentWhenActive'],\r\n }\r\n ],\r\n})\r\nexport class NavigationItem {\r\n private readonly el = inject(ElementRef<HTMLElement>);\r\n private routerLinkActive = inject(RouterLinkActive);\r\n \r\n public hideOnCollapse = input<boolean, unknown>(false, {\r\n alias: 'hide-on-collapse',\r\n transform: booleanAttribute\r\n });\r\n\r\n private icons = contentChildren<IconElement>(IconElement);\r\n\r\n public hasIcons = computed(() => this.icons()?.length != 0);\r\n\r\n public badge = contentChild<Badge>(Badge);\r\n\r\n public get isRouteActive(): boolean {\r\n return this.routerLinkActive.isActive;\r\n }\r\n\r\n @HostBinding('class.md3-active') get active(): boolean {\r\n return this.isRouteActive;\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n}\r\n","<div class=\"md3-item-container\">\r\n @if (hasIcons()) {\r\n <div class=\"md3-icon-container\">\r\n <ng-content select=\"[md3-icon-element=active]\"></ng-content>\r\n <ng-content select=\"[md3-icon-element]\"></ng-content>\r\n </div>\r\n }\r\n <div class=\"md3-label\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (hasIcons() && badge()) {\r\n <div class=\"md3-badge-container\" [class.md3-small]=\"badge()?.isSmall()\">\r\n <ng-content select=\"md3-badge\"></ng-content>\r\n </div>\r\n }\r\n</div>","import { booleanAttribute, Component, ElementRef, inject, input } from '@angular/core';\r\nimport { TypeLabel } from '../../../../public-api';\r\n\r\n@Component({\r\n selector: 'md3-nav-group',\r\n imports: [\r\n TypeLabel,\r\n ],\r\n templateUrl: './navigation-group.html',\r\n styleUrl: './navigation-group.scss',\r\n host: {\r\n '[class.md3-hide-on-collapse]': 'hideOnCollapse()',\r\n },\r\n})\r\nexport class NavigationGroup {\r\n private readonly el = inject(ElementRef<HTMLElement>);\r\n \r\n public label = input<string>();\r\n \r\n public hideOnCollapse = input<boolean, unknown>(false, {\r\n alias: 'hide-on-collapse',\r\n transform: booleanAttribute\r\n });\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n}\r\n","@if (label()?.length) {\r\n <div class=\"md3-nav-label\">\r\n <md3-type-label size=\"large\">{{ label() }}</md3-type-label>\r\n </div>\r\n}\r\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';\r\nimport { LayoutService } from '../../../foundations/layout.service';\r\nimport { IconElement } from '../../common/icon-element';\r\nimport { FloatingActionButton } from '../../buttons/floating-action-button/floating-action-button';\r\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../../interfaces/button-context.interface';\r\nimport { ButtonSize } from '../../../types/button-size.type';\r\nimport { IconButton } from '../../buttons/icon-button/icon-button';\r\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\r\n\r\ntype ExpandedLayout = 'standard' | 'modal';\r\ntype CollapsedLayout = 'compact' | 'narrow' | 'hidden';\r\ntype ContainerStyle = 'none' | 'elevated' | 'divider';\r\n\r\n@Component({\r\n selector: 'md3-navigation-rail',\r\n imports: [\r\n IconButton,\r\n IconElement,\r\n MaterialIcon,\r\n ],\r\n templateUrl: './navigation-rail.html',\r\n styleUrl: './navigation-rail.scss',\r\n providers: [\r\n {\r\n provide: MD3_BUTTON_CONTEXT,\r\n useExisting: NavigationRail,\r\n },\r\n ],\r\n host: {\r\n '[class.md3-expanded]': 'this.expanded()',\r\n },\r\n})\r\nexport class NavigationRail implements ButtonContext {\r\n private readonly el = inject(ElementRef<HTMLElement>);\r\n private readonly layoutService = inject(LayoutService);\r\n\r\n public expanded = model(false, {\r\n alias: 'expanded',\r\n });\r\n\r\n public hideMenuButton = input<boolean, unknown>(false, {\r\n alias: 'hide-menu-button',\r\n transform: booleanAttribute\r\n });\r\n\r\n public fullWidthIndicator = input<boolean, unknown>(false, {\r\n alias: 'full-width-indicator',\r\n transform: booleanAttribute\r\n });\r\n\r\n public containerStyle = input<ContainerStyle>('none', {\r\n alias: 'container-style',\r\n });\r\n\r\n public collapsedMode = input<CollapsedLayout>('compact', {\r\n alias: 'collapsed-layout',\r\n });\r\n\r\n public expandedMode = input<ExpandedLayout>('standard', {\r\n alias: 'expanded-layout',\r\n });\r\n\r\n private readonly resolvedCollapsedLayout = computed<CollapsedLayout>(() => {\r\n if (this.layoutService.isCompact()) {\r\n return 'hidden';\r\n }\r\n\r\n return this.collapsedMode();\r\n });\r\n\r\n private readonly resolvedExpandedLayout = computed<ExpandedLayout>(() => {\r\n if (this.layoutService.isCompact()) {\r\n return 'modal';\r\n }\r\n\r\n return this.expandedMode();\r\n });\r\n\r\n private menuIcons = contentChildren<IconElement>(IconElement);\r\n private floatingActionButton = contentChild<FloatingActionButton>(FloatingActionButton);\r\n\r\n public menuExpandIcon = computed(() => this.menuIcons().find((icon) => icon.iconType() == 'expand'));\r\n public menuCollapseIcon = computed(() => this.menuIcons().find((icon) => icon.iconType() == 'collapse'));\r\n public hasFab = computed(() => !!this.floatingActionButton());\r\n \r\n // context values\r\n buttonContextSize: Signal<ButtonSize> = signal('small');\r\n buttonContextExtended: Signal<boolean> = this.expanded;\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const containerStyle = this.containerStyle();\r\n if (containerStyle == 'none') {\r\n return;\r\n }\r\n\r\n const containerClass = 'md3-style-' + containerStyle;\r\n\r\n this.element.classList.add(containerClass);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(containerClass);\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const collapsed = 'md3-collapsed-' + this.resolvedCollapsedLayout();\r\n this.element.classList.add(collapsed);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(collapsed);\r\n });\r\n });\r\n \r\n effect((onCleanup) => {\r\n const expanded = 'md3-expanded-' + this.resolvedExpandedLayout();\r\n this.element.classList.add(expanded);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(expanded);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n\r\n public toggle(): void {\r\n const isExpanded = !this.expanded();\r\n this.expanded.set(isExpanded);\r\n }\r\n\r\n public collapse(): void {\r\n this.expanded.set(false);\r\n }\r\n\r\n public expand(): void {\r\n this.expanded.set(true);\r\n }\r\n}","<div class=\"md3-nav-scrim\" (click)=\"collapse()\"></div>\r\n<div class=\"md3-nav-container\">\r\n <div class=\"md3-nav-header\" [class.md3-hidden]=\"hideMenuButton() && !hasFab()\">\r\n @if (!hideMenuButton()) {\r\n <button md3-icon-button button-type=\"standard\" class=\"md3-menu-button\" (click)=\"toggle()\">\r\n <ng-content select=\"[md3-icon-element=expand]\"></ng-content>\r\n @if (!menuExpandIcon()) {\r\n <md3-icon md3-icon-element md3-menu-expand>menu</md3-icon>\r\n }\r\n <ng-content select=\"[md3-icon-element=collapse]\"></ng-content>\r\n @if (!menuCollapseIcon()) {\r\n <md3-icon md3-icon-element md3-menu-collapse bi-directional>menu_open</md3-icon>\r\n }\r\n </button>\r\n }\r\n\r\n <ng-content select=\"[md3-fab]\"></ng-content>\r\n </div>\r\n <div class=\"md3-menu-container\" [class.md3-full-width-indicator]=\"fullWidthIndicator()\">\r\n <ng-content select=\"[md3-nav-item], md3-nav-group\"></ng-content>\r\n </div>\r\n</div>","import { Component, computed, effect, ElementRef, inject } from '@angular/core';\r\nimport { LayoutService } from '../../../foundations/layout.service';\r\n\r\ntype NavigationLayout = 'vertical' | 'horizontal';\r\n\r\n@Component({\r\n selector: 'md3-navigation-bar',\r\n imports: [\r\n ],\r\n templateUrl: './navigation-bar.html',\r\n styleUrl: './navigation-bar.scss',\r\n})\r\nexport class NavigationBar {\r\n private readonly el = inject(ElementRef<HTMLElement>);\r\n private readonly layoutService = inject(LayoutService);\r\n private readonly resolvedLayout = computed<NavigationLayout>(() => {\r\n if (this.layoutService.widthClass() === 'compact') {\r\n return 'vertical';\r\n }\r\n\r\n return 'horizontal';\r\n });\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const layout = 'md3-layout-' + this.resolvedLayout();\r\n this.element.classList.add(layout);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(layout);\r\n });\r\n });\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n}\r\n","<div class=\"md3-navigation-container\">\r\n <div class=\"md3-menu-container\">\r\n <ng-content select=\"[md3-nav-item]\"></ng-content>\r\n </div>\r\n</div>","import { Component, computed, contentChild, contentChildren, effect, ElementRef, input, signal, Signal, viewChild } from '@angular/core';\r\nimport { InputElement } from '../common/input-element';\r\nimport { IconElement } from '../common/icon-element';\r\nimport { AbstractControl, FormControlName } from '@angular/forms';\r\nimport { fromEvent, merge } from 'rxjs';\r\nimport { IconButton } from '../buttons/icon-button/icon-button';\r\nimport { ButtonContext, MD3_BUTTON_CONTEXT } from '../../interfaces/button-context.interface';\r\nimport { ButtonSize } from '../../types/button-size.type';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'md3-text-field',\r\n imports: [\r\n NgClass,\r\n ],\r\n templateUrl: './text-field.html',\r\n styleUrl: './text-field.scss',\r\n providers: [\r\n {\r\n provide: MD3_BUTTON_CONTEXT,\r\n useExisting: TextField,\r\n },\r\n ],\r\n})\r\nexport class TextField implements ButtonContext {\r\n public label = input<string | null>(null, {\r\n alias: 'label',\r\n });\r\n public fieldType = input<'filled' | 'outlined'>('filled', {\r\n alias: 'field-type',\r\n });\r\n public inputCounter = input<boolean | number>(false, {\r\n alias: 'input-counter',\r\n });\r\n public control = input<AbstractControl>(undefined, {\r\n alias: 'control',\r\n });\r\n\r\n private inputContainer = viewChild<ElementRef>('inputContainer');\r\n private input = contentChild(InputElement);\r\n private iconElements = contentChildren(IconElement, { descendants: true });\r\n private iconButtons = contentChildren(IconButton, { descendants: true });\r\n private controlName = contentChild(FormControlName);\r\n private controlError = signal(false);\r\n private nativeInputError = signal(false);\r\n // Tracks the last aria-invalid value this component itself wrote, so\r\n // hasNativeInputError() can tell a self-authored value apart from one set\r\n // externally. See hasNativeInputError() for why that distinction matters.\r\n private lastSyncedAriaInvalid: string | null = null;\r\n\r\n public formControl = computed<AbstractControl | undefined>(() => {\r\n if (this.control()) {\r\n return this.control();\r\n }\r\n\r\n return this.controlName()?.control;\r\n });\r\n\r\n public inputError = computed<boolean>(() => {\r\n const control = this.formControl();\r\n if (control) {\r\n this.controlError();\r\n return this.hasControlError(control);\r\n }\r\n\r\n const input = this.input()?.nativeElement;\r\n if (!input) {\r\n return false;\r\n }\r\n\r\n this.nativeInputError();\r\n return this.hasNativeInputError(input);\r\n });\r\n\r\n public maxLength = computed<number | undefined>(() => {\r\n const counter = this.inputCounter();\r\n\r\n if (!counter || counter === true) {\r\n return undefined;\r\n }\r\n\r\n return Number(Number(counter).toFixed(0));\r\n });\r\n public valueLength = signal(0);\r\n \r\n // context values\r\n buttonContextSize: Signal<ButtonSize> = signal('small');\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const input = this.input();\r\n if (!input) {\r\n return;\r\n }\r\n\r\n const nativeInput = input.nativeElement;\r\n const isTextarea = nativeInput.tagName.toLowerCase() === 'textarea';\r\n \r\n nativeInput.setAttribute('placeholder', '');\r\n this.syncNativeInputState(nativeInput);\r\n\r\n if (isTextarea) {\r\n nativeInput.setAttribute('rows', '1');\r\n }\r\n\r\n const inputEvents = merge(\r\n fromEvent(nativeInput, 'input'),\r\n fromEvent(nativeInput, 'change'),\r\n fromEvent(nativeInput, 'blur'),\r\n fromEvent(nativeInput, 'invalid'),\r\n ).subscribe(() => {\r\n this.syncNativeInputState(nativeInput);\r\n\r\n if (isTextarea) {\r\n nativeInput.style.height = 'auto';\r\n nativeInput.style.height = nativeInput.scrollHeight + 'px';\r\n }\r\n });\r\n\r\n const observer = typeof MutationObserver === 'undefined'\r\n ? undefined\r\n : new MutationObserver(() => this.syncNativeInputState(nativeInput));\r\n observer?.observe(nativeInput, {\r\n attributes: true,\r\n attributeFilter: ['aria-invalid', 'disabled', 'maxlength', 'minlength', 'pattern', 'required'],\r\n });\r\n\r\n onCleanup(() => {\r\n inputEvents.unsubscribe();\r\n observer?.disconnect();\r\n });\r\n });\r\n\r\n effect((onCleanup) => {\r\n const control = this.formControl();\r\n if (!control) {\r\n this.controlError.set(false);\r\n return;\r\n }\r\n\r\n this.syncControlError(control);\r\n\r\n const controlEvents = control.events.subscribe(() => this.syncControlError(control));\r\n\r\n onCleanup(() => controlEvents.unsubscribe());\r\n });\r\n\r\n effect(() => {\r\n const container = this.inputContainer()?.nativeElement;\r\n if (!container) {\r\n return;\r\n }\r\n\r\n const hasLeading: boolean = this.iconElements().some(i => i.iconType() === 'leading') ?? false;\r\n const hasTrailing: boolean = (this.iconElements().some(i => i.iconType() === 'trailing') || !!this.iconButtons().length) ?? false;\r\n\r\n container.classList.toggle('md3-has-leading-icon', hasLeading);\r\n container.classList.toggle('md3-has-trailing-icon', hasTrailing);\r\n });\r\n\r\n effect(() => {\r\n this.syncAriaInvalidAttribute(this.input()?.nativeElement);\r\n });\r\n }\r\n\r\n private syncNativeInputState(input: HTMLInputElement): void {\r\n this.valueLength.set(input.value.length);\r\n this.nativeInputError.set(this.hasNativeInputError(input));\r\n }\r\n\r\n private syncControlError(control: AbstractControl): void {\r\n this.controlError.set(this.hasControlError(control));\r\n }\r\n\r\n private hasNativeInputError(input: HTMLInputElement): boolean {\r\n const ariaInvalid = input.getAttribute('aria-invalid');\r\n\r\n // aria-invalid is also written by syncAriaInvalidAttribute() below,\r\n // based on this very computation. Without excluding our own last\r\n // write, a validity error that gets flagged once can never clear:\r\n // the native 'input'/'change' handler would keep reading back the\r\n // (still-true, self-authored) attribute from the previous cycle\r\n // before the effect that's about to correct it has had a chance to\r\n // run. Comparing against lastSyncedAriaInvalid means only a value\r\n // that didn't come from us — i.e. set externally, such as by a\r\n // consumer's own validation — counts as an error signal here.\r\n const externallyFlaggedInvalid = ariaInvalid === 'true' && ariaInvalid !== this.lastSyncedAriaInvalid;\r\n\r\n return !input.validity.valid || externallyFlaggedInvalid;\r\n }\r\n\r\n private hasControlError(control: AbstractControl): boolean {\r\n return control.invalid && (control.touched || control.dirty);\r\n }\r\n\r\n private syncAriaInvalidAttribute(input: HTMLInputElement | undefined): void {\r\n if (!input) {\r\n return;\r\n }\r\n\r\n const value = this.inputError() ? 'true' : 'false';\r\n this.lastSyncedAriaInvalid = value;\r\n\r\n if (input.getAttribute('aria-invalid') !== value) {\r\n input.setAttribute('aria-invalid', value);\r\n }\r\n }\r\n}\r\n","<label #inputContainer class=\"md3-text-field-container\" [ngClass]=\"{\r\n 'md3-text-field-filled': fieldType() == 'filled',\r\n 'md3-text-field-outlined': fieldType() == 'outlined',\r\n}\">\r\n <ng-content></ng-content>\r\n <fieldset aria-hidden=\"true\" class=\"md3-text-field-outline\">\r\n @if (label() && fieldType() == 'outlined') {\r\n <legend class=\"md3-label-gap\">{{ label() }}</legend>\r\n }\r\n </fieldset>\r\n @if (label()) {\r\n <label class=\"md3-text-field-label\">{{ label() }}</label>\r\n }\r\n <ng-content select=\"[md3-icon-element=leading]\"></ng-content>\r\n <ng-content select=\"[md3-icon-button], [md3-icon-element=trailing]\"></ng-content>\r\n @if (fieldType() != 'outlined') {\r\n <div class=\"md3-text-field-state\"></div>\r\n }\r\n</label>\r\n<div class=\"md3-supporting-text-container\" [class.md3-has-error]=\"inputError()\">\r\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';\r\n\r\n@Directive({\r\n selector: '[md3-supporting-text]',\r\n host: {\r\n 'class': 'md3-supporting-text'\r\n }\r\n})\r\nexport class SupportingText {\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { InjectionToken, Type } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\r\nimport { Dialog } from './dialog';\r\n\r\nexport const DIALOG_DATA = new InjectionToken<unknown>('MD3_DIALOG_DATA');\r\nexport const DIALOG_CONFIG = new InjectionToken<DialogConfig>('MD3_DIALOG_CONFIG');\r\nexport const DIALOG_COMPONENT = new InjectionToken<Type<unknown>>('MD3_DIALOG_COMPONENT');\r\n\r\nconst DIALOG_EXIT_ANIMATION_FALLBACK_MS = 300;\r\n\r\nexport class DialogRef<T = unknown, R = unknown> {\r\n private readonly closed = new Subject<R | undefined>();\r\n private isClosed = false;\r\n\r\n public dialogInstance?: Dialog;\r\n /**\r\n * Filled by DialogService after the user component is attached. Keeping the\r\n * instance here lets callers imperatively update inputs when that is useful.\r\n */\r\n public componentInstance?: T;\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly previouslyFocusedElement: HTMLElement | null\r\n ) {\r\n }\r\n\r\n public close(result?: R): void {\r\n if (this.isClosed) {\r\n return;\r\n }\r\n\r\n this.isClosed = true;\r\n this.startCloseAnimation().then(() => {\r\n // Disposing the overlay removes the wrapper, the backdrop, and the\r\n // dynamically attached content component in one operation.\r\n this.overlayRef.dispose();\r\n\r\n this.previouslyFocusedElement?.focus();\r\n\r\n this.closed.next(result);\r\n this.closed.complete();\r\n });\r\n }\r\n\r\n private startCloseAnimation(): Promise<void> {\r\n let panel = this.overlayRef.overlayElement;\r\n let backdrop = this.overlayRef.backdropElement;\r\n let animatedElement = panel.querySelector<HTMLElement>('.md3-dialog-container') ?? panel;\r\n\r\n panel.classList.add('md3-dialog-closing');\r\n backdrop?.classList.add('md3-dialog-closing');\r\n this.dialogInstance?.isActive.set(false);\r\n\r\n return new Promise((resolve) => {\r\n let isResolved = false;\r\n let timeoutId = setTimeout(done, DIALOG_EXIT_ANIMATION_FALLBACK_MS);\r\n\r\n function done(): void {\r\n if (isResolved) {\r\n return;\r\n }\r\n\r\n isResolved = true;\r\n clearTimeout(timeoutId);\r\n animatedElement.removeEventListener('transitionend', onTransitionEnd);\r\n resolve();\r\n }\r\n\r\n function onTransitionEnd(event: TransitionEvent): void {\r\n if (event.target === animatedElement) {\r\n done();\r\n }\r\n }\r\n\r\n animatedElement.addEventListener('transitionend', onTransitionEnd);\r\n });\r\n }\r\n\r\n public afterClosed(): Observable<R | undefined> {\r\n return this.closed.asObservable();\r\n }\r\n}\r\n","import { AfterContentInit, Component, ComponentRef, inject, Injector, signal, Type, viewChild } from '@angular/core';\r\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { DIALOG_CONFIG } from './dialog-ref';\r\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\r\n\r\n@Component({\r\n selector: 'md3-dialog',\r\n imports: [\r\n CdkPortalOutlet,\r\n ],\r\n templateUrl: './dialog.html',\r\n styleUrl: './dialog.scss',\r\n})\r\nexport class Dialog implements AfterContentInit {\r\n private readonly portalOutlet = viewChild<CdkPortalOutlet>(CdkPortalOutlet);\r\n\r\n public isActive = signal<boolean>(false);\r\n\r\n protected readonly config = inject<DialogConfig>(DIALOG_CONFIG, { optional: true }) ?? {};\r\n\r\n protected get role(): string {\r\n return this.config.role ?? 'dialog';\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n requestAnimationFrame(() => {\r\n this.isActive.set(true);\r\n });\r\n }\r\n\r\n /**\r\n * The service creates this wrapper first, then calls this method to mount\r\n * the user supplied component into the dialog container.\r\n */\r\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\r\n const portal = new ComponentPortal(component, null, injector);\r\n\r\n return this.portalOutlet()!.attachComponentPortal(portal);\r\n }\r\n}\r\n","<section\r\n class=\"md3-dialog-container\"\r\n [class.md3-active]=\"isActive()\"\r\n [class.md-scheme-dark]=\"config.scheme == 'dark'\"\r\n [class.md-scheme-light]=\"config.scheme == 'light'\"\r\n [attr.dir]=\"config.direction ?? null\"\r\n tabindex=\"-1\"\r\n [attr.role]=\"role\"\r\n [attr.aria-modal]=\"true\"\r\n [attr.aria-label]=\"config.ariaLabel ?? null\"\r\n [attr.aria-labelledby]=\"config.ariaLabelledBy ?? null\"\r\n [attr.aria-describedby]=\"config.ariaDescribedBy ?? null\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n</section>\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { ComponentRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\r\nimport { filter, take } from 'rxjs';\r\nimport { Dialog } from './dialog';\r\nimport { DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, DialogRef } from './dialog-ref';\r\nimport { DialogConfig } from '../../interfaces/dialog-config.interface';\r\n\r\ninterface ResolvedDialogConfig<D = unknown> extends DialogConfig<D> {\r\n data: D | undefined;\r\n bindDataToInputs: boolean;\r\n disableCloseEvents: boolean;\r\n role: 'dialog' | 'alertdialog';\r\n ariaLabel: string;\r\n ariaLabelledBy: string;\r\n ariaDescribedBy: string;\r\n scheme: 'inherit' | 'dark' | 'light';\r\n direction: null | 'ltr' | 'rtl';\r\n viewContainerRef?: ViewContainerRef;\r\n injector: Injector;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DialogService {\r\n private readonly overlay = inject(Overlay);\r\n private readonly injector = inject(Injector);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n public open<T, D = unknown, R = unknown>(\r\n component: Type<T>,\r\n config: DialogConfig<D> = {},\r\n ): DialogRef<T, R> {\r\n const dialogConfig = this.mergeConfig(config);\r\n const previouslyFocusedElement = this.getFocusedElement();\r\n const overlayRef = this.createOverlay();\r\n const dialogRef = new DialogRef<T, R>(\r\n overlayRef,\r\n previouslyFocusedElement\r\n );\r\n const injector = this.createInjector(component, dialogConfig, dialogRef);\r\n\r\n // The overlay hosts the MD3 dialog shell. The shell is responsible for\r\n // the surface markup and receives the dynamic content through a portal.\r\n const dialogPortal = new ComponentPortal(\r\n Dialog,\r\n dialogConfig.viewContainerRef ?? null,\r\n injector,\r\n );\r\n const dialogComponentRef = overlayRef.attach(dialogPortal);\r\n const contentComponentRef = dialogComponentRef.instance.attachContent(component, injector);\r\n\r\n this.bindDataToInputs(contentComponentRef, dialogConfig);\r\n dialogRef.componentInstance = contentComponentRef.instance;\r\n dialogRef.dialogInstance = dialogComponentRef.instance;\r\n this.startOpenAnimation(overlayRef);\r\n this.connectCloseEvents(overlayRef, dialogRef, dialogConfig);\r\n this.focusDialog(overlayRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n private mergeConfig<D>(config: DialogConfig<D>): ResolvedDialogConfig<D> {\r\n return {\r\n data: config.data,\r\n bindDataToInputs: config.bindDataToInputs ?? false,\r\n disableCloseEvents: config.disableCloseEvents ?? false,\r\n role: config.role ?? 'dialog',\r\n ariaLabel: config.ariaLabel ?? '',\r\n ariaLabelledBy: config.ariaLabelledBy ?? '',\r\n ariaDescribedBy: config.ariaDescribedBy ?? '',\r\n scheme: config.scheme ?? 'inherit',\r\n direction: config.direction ?? null,\r\n viewContainerRef: config.viewContainerRef,\r\n injector: config.injector ?? this.injector,\r\n };\r\n }\r\n\r\n private createOverlay(): OverlayRef {\r\n const overlayConfig = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: ['md3-dialog-scrim', 'md3-dialog-opening'],\r\n panelClass: ['md3-dialog-panel', 'md3-dialog-opening'],\r\n positionStrategy: this.overlay.position()\r\n .global()\r\n .centerHorizontally()\r\n .centerVertically(),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n });\r\n\r\n return this.overlay.create(overlayConfig);\r\n }\r\n\r\n private startOpenAnimation(overlayRef: OverlayRef): void {\r\n const panel = overlayRef.overlayElement;\r\n const backdrop = overlayRef.backdropElement;\r\n\r\n // The overlay is inserted already rendered. Keep an initial class for\r\n // one frame, force style calculation, then remove it so CSS transitions\r\n // have a real from/to state.\r\n requestAnimationFrame(() => {\r\n setTimeout(() => {\r\n panel.getBoundingClientRect();\r\n panel.classList.remove('md3-dialog-opening');\r\n backdrop?.classList.remove('md3-dialog-opening');\r\n }, 100);\r\n });\r\n }\r\n\r\n private createInjector<T, D, R>(\r\n component: Type<T>,\r\n config: ResolvedDialogConfig<D>,\r\n dialogRef: DialogRef<T, R>,\r\n ): Injector {\r\n return Injector.create({\r\n parent: config.injector,\r\n providers: [\r\n // These tokens make the dialog controllable from the dynamic\r\n // component without coupling that component to the service.\r\n { provide: DialogRef, useValue: dialogRef },\r\n { provide: DIALOG_DATA, useValue: config.data },\r\n { provide: DIALOG_CONFIG, useValue: config },\r\n { provide: DIALOG_COMPONENT, useValue: component },\r\n ],\r\n });\r\n }\r\n\r\n private bindDataToInputs<T, D>(\r\n componentRef: ComponentRef<T>,\r\n config: ResolvedDialogConfig<D>,\r\n ): void {\r\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\r\n return;\r\n }\r\n\r\n // setInput runs Angular's normal input pipeline, so input setters,\r\n // transforms, signal inputs, and change detection are handled for us.\r\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\r\n componentRef.setInput(inputName, inputValue);\r\n });\r\n }\r\n\r\n private connectCloseEvents<T, R>(\r\n overlayRef: OverlayRef,\r\n dialogRef: DialogRef<T, R>,\r\n config: ResolvedDialogConfig,\r\n ): void {\r\n if (config.disableCloseEvents) {\r\n return;\r\n }\r\n\r\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => dialogRef.close());\r\n overlayRef.keydownEvents().pipe(\r\n filter((event) => event.key === 'Escape'),\r\n take(1),\r\n ).subscribe(() => dialogRef.close());\r\n }\r\n\r\n private focusDialog(overlayRef: OverlayRef): void {\r\n queueMicrotask(() => {\r\n const surface = overlayRef.overlayElement.querySelector<HTMLElement>('.md3-dialog-container');\r\n const focusTarget = surface?.querySelector<HTMLElement>([\r\n 'button:not([disabled])',\r\n '[href]',\r\n 'input:not([disabled])',\r\n 'select:not([disabled])',\r\n 'textarea:not([disabled])',\r\n '[tabindex]:not([tabindex=\"-1\"])',\r\n ].join(', '));\r\n\r\n (focusTarget ?? surface)?.focus();\r\n });\r\n }\r\n\r\n private getFocusedElement(): HTMLElement | null {\r\n const activeElement = this.document.activeElement;\r\n return activeElement instanceof HTMLElement ? activeElement : null;\r\n }\r\n\r\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\r\n return typeof data === 'object' && data !== null && !Array.isArray(data);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { TypeHeadline } from '../../../styles/typography/type-headline';\r\n\r\n@Component({\r\n selector: 'md3-dialog-header',\r\n imports: [\r\n TypeHeadline\r\n ],\r\n templateUrl: './dialog-header.html',\r\n styleUrl: './dialog-header.scss',\r\n})\r\nexport class DialogHeader {\r\n}\r\n","<ng-content select=\"[md3-icon-element]\"></ng-content>\r\n<div class=\"md3-dialog-title\">\r\n <md3-type-headline size=\"small\">\r\n <ng-content></ng-content>\r\n </md3-type-headline>\r\n</div>","import { Component } from '@angular/core';\r\nimport { TypeBody } from '../../../styles/typography/type-body';\r\n\r\n@Component({\r\n selector: 'md3-dialog-body',\r\n imports: [\r\n TypeBody\r\n ],\r\n templateUrl: './dialog-body.html',\r\n styleUrl: './dialog-body.scss',\r\n})\r\nexport class DialogBody {\r\n}\r\n","<md3-type-body size=\"medium\">\r\n <ng-content></ng-content>\r\n</md3-type-body>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-dialog-actions',\r\n imports: [],\r\n templateUrl: './dialog-actions.html',\r\n styleUrl: './dialog-actions.scss',\r\n})\r\nexport class DialogActions {\r\n}\r\n","<div class=\"md3-actions\">\r\n <ng-content></ng-content>\r\n</div>","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { InjectionToken, Type } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { MenuConfig } from '../../interfaces/menu-config.interface';\r\nimport { Menu } from './menu';\r\n\r\nexport const MENU_DATA = new InjectionToken<unknown>('MD3_MENU_DATA');\r\nexport const MENU_CONFIG = new InjectionToken<MenuConfig>('MD3_MENU_CONFIG');\r\nexport const MENU_COMPONENT = new InjectionToken<Type<unknown>>('MD3_MENU_COMPONENT');\r\n\r\nconst MENU_EXIT_ANIMATION_FALLBACK_MS = 300;\r\n\r\nexport class MenuRef<T = unknown, R = unknown> {\r\n private readonly closed = new Subject<R | undefined>();\r\n private isClosed = false;\r\n\r\n public menuInstance?: Menu;\r\n /**\r\n * Filled by MenuService after the user component is attached. Keeping the\r\n * instance here lets callers imperatively update inputs when that is useful.\r\n */\r\n public componentInstance?: T;\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly previouslyFocusedElement: HTMLElement | null\r\n ) {\r\n }\r\n\r\n public close(result?: R): void {\r\n if (this.isClosed) {\r\n return;\r\n }\r\n\r\n this.isClosed = true;\r\n this.startCloseAnimation().then(() => {\r\n // Disposing the overlay removes the wrapper, the backdrop, and the\r\n // dynamically attached content component in one operation.\r\n this.overlayRef.dispose();\r\n\r\n this.previouslyFocusedElement?.focus();\r\n\r\n this.closed.next(result);\r\n this.closed.complete();\r\n });\r\n }\r\n\r\n private startCloseAnimation(): Promise<void> {\r\n let panel = this.overlayRef.overlayElement;\r\n let animatedElement = panel.querySelector<HTMLElement>('.md3-menu-container') ?? panel;\r\n\r\n panel.classList.add('md3-menu-closing');\r\n this.menuInstance?.showMenu(false);\r\n\r\n return new Promise((resolve) => {\r\n let isResolved = false;\r\n let timeoutId = setTimeout(done, MENU_EXIT_ANIMATION_FALLBACK_MS);\r\n\r\n function done(): void {\r\n if (isResolved) {\r\n return;\r\n }\r\n\r\n isResolved = true;\r\n clearTimeout(timeoutId);\r\n animatedElement.removeEventListener('transitionend', onTransitionEnd);\r\n resolve();\r\n }\r\n\r\n function onTransitionEnd(event: TransitionEvent): void {\r\n if (event.target === animatedElement) {\r\n done();\r\n }\r\n }\r\n\r\n animatedElement.addEventListener('transitionend', onTransitionEnd);\r\n });\r\n }\r\n\r\n public afterClosed(): Observable<R | undefined> {\r\n return this.closed.asObservable();\r\n }\r\n}\r\n","import { CdkPortalOutlet, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AfterContentInit, Component, ComponentRef, effect, ElementRef, inject, Injector, signal, Type, viewChild } from '@angular/core';\r\nimport { MenuConfig } from '../../interfaces/menu-config.interface';\r\nimport { MENU_CONFIG } from './menu-ref';\r\n\r\n@Component({\r\n selector: 'md3-menu',\r\n imports: [\r\n CdkPortalOutlet,\r\n ],\r\n templateUrl: './menu.html',\r\n styleUrl: './menu.scss',\r\n host: {\r\n 'class': 'md3-menu-container',\r\n 'role': 'menu',\r\n '[class.md3-visible]': 'isVisible()',\r\n '[class.md3-inactive]': '!isActive()',\r\n '[class.md-scheme-dark]': 'scheme() == \"dark\"',\r\n '[class.md-scheme-light]': 'scheme() == \"light\"',\r\n '[dir]': 'direction()',\r\n },\r\n})\r\nexport class Menu implements AfterContentInit {\r\n private readonly portalOutlet = viewChild<CdkPortalOutlet>(CdkPortalOutlet);\r\n\r\n protected readonly config = inject<MenuConfig>(MENU_CONFIG, { optional: true }) ?? {};\r\n protected menuColors = signal<'standard' | 'vibrant'>('standard');\r\n protected isVisible = signal<boolean>(false);\r\n protected scheme = signal<'inherit' | 'dark' | 'light'>('inherit');\r\n protected direction = signal<null | 'ltr' | 'rtl'>(null);\r\n \r\n public isActive = signal<boolean>(true);\r\n \r\n public get element(): HTMLElement {\r\n return this.el.nativeElement as HTMLElement;\r\n }\r\n\r\n constructor(private el: ElementRef) {\r\n effect((onCleanup) => {\r\n const color = 'md3-' + this.menuColors();\r\n this.element.classList.add(color);\r\n\r\n onCleanup(() => {\r\n this.element.classList.remove(color);\r\n });\r\n });\r\n\r\n this.menuColors.set(this.config.menuColors ?? 'standard');\r\n this.scheme.set(this.config.scheme ?? 'inherit');\r\n this.direction.set(this.config.direction ?? null);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n requestAnimationFrame(() => {\r\n this.showMenu(true);\r\n });\r\n }\r\n\r\n public showMenu(value: boolean): void {\r\n this.isVisible.set(value);\r\n }\r\n \r\n /**\r\n * The service creates this wrapper first, then calls this method to mount\r\n * the user supplied component into the dialog container.\r\n */\r\n public attachContent<T>(component: Type<T>, injector: Injector): ComponentRef<T> {\r\n const portal = new ComponentPortal(component, null, injector);\r\n\r\n return this.portalOutlet()!.attachComponentPortal(portal);\r\n }\r\n}\r\n","<ng-template cdkPortalOutlet></ng-template>","import {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef,\r\n} from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ComponentRef, ElementRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\r\nimport { MenuConfig, MenuPositionOrigin, MenuPositionX, MenuPositionY, MenuScrollStrategy } from '../../interfaces/menu-config.interface';\r\nimport { MENU_COMPONENT, MENU_CONFIG, MENU_DATA, MenuRef } from './menu-ref';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Menu } from './menu';\r\nimport { filter, take } from 'rxjs';\r\n\r\ninterface ResolvedMenuConfig<D = unknown> extends MenuConfig<D> {\r\n data: D | undefined;\r\n bindDataToInputs: boolean;\r\n isSubMenu: boolean;\r\n menuColors: 'standard' | 'vibrant';\r\n xPosition: MenuPositionX;\r\n yPosition: MenuPositionY;\r\n overlapTrigger: boolean;\r\n offsetX: number;\r\n offsetY: number;\r\n viewportMargin: number;\r\n positions?: ConnectedPosition[];\r\n scrollStrategy: MenuScrollStrategy;\r\n scheme: 'inherit' | 'dark' | 'light';\r\n direction: null | 'ltr' | 'rtl';\r\n viewContainerRef?: ViewContainerRef;\r\n injector: Injector;\r\n}\r\n\r\ninterface InternalMenuConfig<D = unknown> extends MenuConfig<D> {\r\n isSubMenu?: boolean;\r\n}\r\n\r\ninterface CreatedMenuOverlay {\r\n overlayRef: OverlayRef;\r\n positionStrategy?: FlexibleConnectedPositionStrategy;\r\n origin: ResolvedMenuOrigin;\r\n}\r\n\r\ntype ResolvedMenuOrigin = Element | { height?: number; width?: number; x: number; y: number };\r\ntype ClientRect = Pick<DOMRectReadOnly, 'bottom' | 'height' | 'left' | 'right' | 'top' | 'width' | 'x' | 'y'>;\r\ntype SubMenuPositionX = Extract<MenuPositionX, 'before' | 'after'>;\r\ntype SubMenuVerticalAlignment = 'top' | 'bottom';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MenuService {\r\n private readonly overlay = inject(Overlay);\r\n private readonly injector = inject(Injector);\r\n private readonly document = inject(DOCUMENT);\r\n\r\n public open<T, D = unknown, R = unknown>(\r\n component: Type<T>,\r\n config: MenuConfig<D> = {},\r\n ): MenuRef<T, R> {\r\n const menuConfig = this.mergeConfig(config);\r\n const previouslyFocusedElement = this.getFocusedElement();\r\n const triggerElement = this.resolveTriggerElement(menuConfig.origin, previouslyFocusedElement);\r\n const menuOverlay = this.createOverlay(menuConfig, previouslyFocusedElement);\r\n const overlayRef = menuOverlay.overlayRef;\r\n const menuRef = new MenuRef<T, R>(\r\n overlayRef,\r\n previouslyFocusedElement\r\n );\r\n const injector = this.createInjector(component, menuConfig, menuRef);\r\n\r\n // The overlay hosts the MD3 menu shell. The shell is responsible for\r\n // the surface markup and receives the dynamic content through a portal.\r\n const menuPortal = new ComponentPortal(\r\n Menu,\r\n menuConfig.viewContainerRef ?? null,\r\n injector,\r\n );\r\n const menuComponentRef = overlayRef.attach(menuPortal);\r\n const contentComponentRef = menuComponentRef.instance.attachContent(component, injector);\r\n\r\n this.bindDataToInputs(contentComponentRef, menuConfig);\r\n this.flipPositionIfPushBreaksAnchor(menuOverlay, menuConfig);\r\n menuRef.componentInstance = contentComponentRef.instance;\r\n menuRef.menuInstance = menuComponentRef.instance;\r\n this.bindTriggerActiveState(triggerElement, overlayRef, menuRef);\r\n this.startOpenAnimation(overlayRef);\r\n this.connectCloseEvents(overlayRef, menuRef);\r\n\r\n return menuRef;\r\n }\r\n\r\n public openSubMenu<T, D = unknown, R = unknown>(\r\n component: Type<T>,\r\n config: MenuConfig<D> = {},\r\n ): MenuRef<T, R> {\r\n const xPosition = this.getSubMenuXPosition(config.xPosition);\r\n const yPosition = config.yPosition ?? 'below';\r\n const offsetX = config.offsetX ?? 0;\r\n const offsetY = config.offsetY ?? 0;\r\n\r\n const subMenuConfig: InternalMenuConfig<D> = {\r\n ...config,\r\n isSubMenu: true,\r\n xPosition,\r\n yPosition,\r\n overlapTrigger: config.overlapTrigger ?? true,\r\n offsetX,\r\n offsetY,\r\n scheme: config.scheme ?? 'inherit',\r\n direction: config.direction ?? null,\r\n };\r\n\r\n return this.open<T, D, R>(component, subMenuConfig);\r\n }\r\n\r\n private mergeConfig<D>(config: MenuConfig<D>): ResolvedMenuConfig<D> {\r\n const viewportMargin = this.getViewportMargin(config.viewportMargin);\r\n\r\n return {\r\n data: config.data,\r\n bindDataToInputs: config.bindDataToInputs ?? false,\r\n isSubMenu: (config as InternalMenuConfig<D>).isSubMenu ?? false,\r\n menuColors: config.menuColors ?? 'standard',\r\n xPosition: config.xPosition ?? 'start',\r\n yPosition: config.yPosition ?? 'below',\r\n overlapTrigger: config.overlapTrigger ?? false,\r\n offsetX: config.offsetX ?? 0,\r\n offsetY: config.offsetY ?? 4,\r\n viewportMargin,\r\n positions: config.positions,\r\n scrollStrategy: config.scrollStrategy ?? 'reposition',\r\n scheme: config.scheme ?? 'inherit',\r\n direction: config.direction ?? null,\r\n viewContainerRef: config.viewContainerRef,\r\n injector: config.injector ?? this.injector,\r\n };\r\n }\r\n\r\n private createOverlay(\r\n config: ResolvedMenuConfig,\r\n fallbackOrigin: HTMLElement | null,\r\n ): CreatedMenuOverlay {\r\n const origin = this.resolveOrigin(config.origin, fallbackOrigin);\r\n const positionStrategy = this.overlay.position()\r\n .flexibleConnectedTo(origin)\r\n .withFlexibleDimensions(false)\r\n .withGrowAfterOpen(true)\r\n .withPush(true)\r\n .withViewportMargin(config.viewportMargin)\r\n .withPositions(config.positions ?? this.getInitialConnectedPositions(config))\r\n .withTransformOriginOn('.md3-menu-container');\r\n\r\n const overlayConfig = new OverlayConfig({\r\n hasBackdrop: true,\r\n backdropClass: ['md3-menu-scrim', 'md3-menu-opening'],\r\n panelClass: ['md3-menu-panel', 'md3-menu-opening'],\r\n positionStrategy,\r\n scrollStrategy: this.getScrollStrategy(config.scrollStrategy),\r\n });\r\n\r\n return {\r\n overlayRef: this.overlay.create(overlayConfig),\r\n positionStrategy: config.positions ? undefined : positionStrategy,\r\n origin,\r\n };\r\n }\r\n\r\n private bindTriggerActiveState<T, R>(\r\n triggerElement: HTMLElement | null,\r\n overlayRef: OverlayRef,\r\n menuRef: MenuRef<T, R>,\r\n ): void {\r\n if (!triggerElement) {\r\n return;\r\n }\r\n\r\n const removeActiveClass = () => triggerElement.classList.remove('md3-menu-active');\r\n\r\n triggerElement.classList.add('md3-menu-active');\r\n menuRef.afterClosed().pipe(take(1)).subscribe(removeActiveClass);\r\n overlayRef.detachments().pipe(take(1)).subscribe(removeActiveClass);\r\n }\r\n\r\n private resolveOrigin(\r\n origin: MenuPositionOrigin | undefined,\r\n fallbackOrigin: HTMLElement | null,\r\n ): ResolvedMenuOrigin {\r\n const resolvedOrigin = origin ?? fallbackOrigin;\r\n\r\n if (resolvedOrigin) {\r\n if (this.isMouseEvent(resolvedOrigin)) {\r\n if (resolvedOrigin.currentTarget instanceof HTMLElement) {\r\n return resolvedOrigin.currentTarget;\r\n }\r\n\r\n return {\r\n x: resolvedOrigin.clientX,\r\n y: resolvedOrigin.clientY,\r\n };\r\n }\r\n\r\n if (this.isElementRef(resolvedOrigin)) {\r\n return resolvedOrigin.nativeElement;\r\n }\r\n\r\n return resolvedOrigin as ResolvedMenuOrigin;\r\n }\r\n\r\n const viewport = this.document.defaultView;\r\n\r\n return {\r\n x: (viewport?.innerWidth ?? 0) / 2,\r\n y: (viewport?.innerHeight ?? 0) / 2,\r\n };\r\n }\r\n\r\n private resolveTriggerElement(\r\n origin: MenuPositionOrigin | undefined,\r\n fallbackOrigin: HTMLElement | null,\r\n ): HTMLElement | null {\r\n const resolvedOrigin = origin ?? fallbackOrigin;\r\n\r\n if (!resolvedOrigin) {\r\n return null;\r\n }\r\n\r\n if (this.isMouseEvent(resolvedOrigin)) {\r\n return resolvedOrigin.currentTarget instanceof HTMLElement\r\n ? resolvedOrigin.currentTarget\r\n : null;\r\n }\r\n\r\n if (this.isElementRef(resolvedOrigin)) {\r\n return resolvedOrigin.nativeElement;\r\n }\r\n\r\n return resolvedOrigin instanceof HTMLElement ? resolvedOrigin : null;\r\n }\r\n\r\n private flipPositionIfPushBreaksAnchor(\r\n menuOverlay: CreatedMenuOverlay,\r\n config: ResolvedMenuConfig,\r\n ): void {\r\n if (!menuOverlay.positionStrategy) {\r\n return;\r\n }\r\n\r\n menuOverlay.overlayRef.updatePosition();\r\n\r\n const fallbackPosition = this.getFallbackPositionAfterPush(\r\n config,\r\n this.getOriginClientRect(menuOverlay.origin),\r\n menuOverlay.overlayRef.overlayElement.getBoundingClientRect(),\r\n );\r\n\r\n if (!fallbackPosition) {\r\n return;\r\n }\r\n\r\n menuOverlay.positionStrategy.withPositions([fallbackPosition]);\r\n menuOverlay.overlayRef.updatePosition();\r\n }\r\n\r\n private getInitialConnectedPositions(config: ResolvedMenuConfig): ConnectedPosition[] {\r\n return [this.getPreferredConnectedPosition(config)];\r\n }\r\n\r\n private getPreferredConnectedPosition(config: ResolvedMenuConfig): ConnectedPosition {\r\n if (config.isSubMenu) {\r\n return this.createSubMenuConnectedPosition(\r\n this.getSubMenuXPosition(config.xPosition),\r\n this.getSubMenuVerticalAlignment(config.yPosition),\r\n config.offsetX,\r\n config.offsetY,\r\n );\r\n }\r\n\r\n return this.createConnectedPosition(config.xPosition, config.yPosition, config);\r\n }\r\n\r\n private getFallbackPositionAfterPush(\r\n config: ResolvedMenuConfig,\r\n originRect: ClientRect,\r\n overlayRect: ClientRect,\r\n ): ConnectedPosition | null {\r\n const xPosition = this.shouldFlipXPosition(\r\n config,\r\n originRect,\r\n overlayRect,\r\n )\r\n ? this.getFallbackXPosition(config.xPosition)\r\n : config.xPosition;\r\n const yPosition = this.shouldFlipYPosition(\r\n config,\r\n originRect,\r\n overlayRect,\r\n )\r\n ? this.getFallbackYPosition(config.yPosition)\r\n : config.yPosition;\r\n\r\n if (xPosition === config.xPosition && yPosition === config.yPosition) {\r\n return null;\r\n }\r\n\r\n return this.getPreferredConnectedPosition({\r\n ...config,\r\n xPosition,\r\n yPosition,\r\n });\r\n }\r\n\r\n private shouldFlipXPosition(\r\n config: ResolvedMenuConfig,\r\n originRect: ClientRect,\r\n overlayRect: ClientRect,\r\n ): boolean {\r\n const tolerance = config.viewportMargin;\r\n\r\n switch (config.xPosition) {\r\n case 'before':\r\n return overlayRect.right > originRect.left + tolerance;\r\n\r\n case 'after':\r\n return overlayRect.left < originRect.right - tolerance;\r\n\r\n case 'start':\r\n return originRect.left < overlayRect.left - tolerance\r\n || originRect.left > overlayRect.right + tolerance;\r\n\r\n case 'end':\r\n return originRect.right < overlayRect.left - tolerance\r\n || originRect.right > overlayRect.right + tolerance;\r\n\r\n case 'center':\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private shouldFlipYPosition(\r\n config: ResolvedMenuConfig,\r\n originRect: ClientRect,\r\n overlayRect: ClientRect,\r\n ): boolean {\r\n const tolerance = config.viewportMargin;\r\n\r\n if (config.isSubMenu) {\r\n const anchorY = config.yPosition === 'above' ? originRect.bottom : originRect.top;\r\n\r\n return anchorY < overlayRect.top - tolerance\r\n || anchorY > overlayRect.bottom + tolerance;\r\n }\r\n\r\n if (config.overlapTrigger) {\r\n const anchorY = config.yPosition === 'above' ? originRect.bottom : originRect.top;\r\n\r\n return anchorY < overlayRect.top - tolerance\r\n || anchorY > overlayRect.bottom + tolerance;\r\n }\r\n\r\n switch (config.yPosition) {\r\n case 'above':\r\n return overlayRect.bottom > originRect.top + tolerance;\r\n\r\n case 'below':\r\n return overlayRect.top < originRect.bottom - tolerance;\r\n\r\n case 'center':\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private createConnectedPosition(\r\n xPosition: MenuPositionX,\r\n yPosition: MenuPositionY,\r\n config: ResolvedMenuConfig,\r\n ): ConnectedPosition {\r\n const horizontal = this.getHorizontalPosition(xPosition);\r\n const vertical = this.getVerticalPosition(yPosition, config.overlapTrigger);\r\n\r\n return {\r\n ...horizontal,\r\n ...vertical,\r\n offsetX: config.offsetX,\r\n offsetY: this.getOffsetY(yPosition, config),\r\n panelClass: [\r\n 'md3-menu-position-' + xPosition,\r\n 'md3-menu-position-' + yPosition,\r\n ],\r\n };\r\n }\r\n\r\n private createSubMenuConnectedPosition(\r\n xPosition: SubMenuPositionX,\r\n yAlignment: SubMenuVerticalAlignment,\r\n offsetX: number,\r\n offsetY: number,\r\n ): ConnectedPosition {\r\n const horizontal = this.getHorizontalPosition(xPosition);\r\n const yPosition = yAlignment === 'top' ? 'below' : 'above';\r\n\r\n return {\r\n ...horizontal,\r\n originY: yAlignment,\r\n overlayY: yAlignment,\r\n offsetX: this.getSubMenuOffsetX(xPosition, offsetX),\r\n offsetY: this.getSubMenuOffsetY(yAlignment, offsetY),\r\n panelClass: [\r\n 'md3-menu-position-' + xPosition,\r\n 'md3-menu-position-' + yPosition,\r\n 'md3-menu-position-submenu',\r\n ],\r\n };\r\n }\r\n\r\n private getHorizontalPosition(position: MenuPositionX): Pick<ConnectedPosition, 'originX' | 'overlayX'> {\r\n switch (position) {\r\n case 'end':\r\n return {\r\n originX: 'end',\r\n overlayX: 'end',\r\n };\r\n\r\n case 'before':\r\n return {\r\n originX: 'start',\r\n overlayX: 'end',\r\n };\r\n\r\n case 'after':\r\n return {\r\n originX: 'end',\r\n overlayX: 'start',\r\n };\r\n\r\n case 'center':\r\n return {\r\n originX: 'center',\r\n overlayX: 'center',\r\n };\r\n\r\n case 'start':\r\n default:\r\n return {\r\n originX: 'start',\r\n overlayX: 'start',\r\n };\r\n }\r\n }\r\n\r\n private getVerticalPosition(\r\n position: MenuPositionY,\r\n overlapTrigger: boolean,\r\n ): Pick<ConnectedPosition, 'originY' | 'overlayY'> {\r\n switch (position) {\r\n case 'above':\r\n return {\r\n originY: overlapTrigger ? 'bottom' : 'top',\r\n overlayY: 'bottom',\r\n };\r\n\r\n case 'center':\r\n return {\r\n originY: 'center',\r\n overlayY: 'center',\r\n };\r\n\r\n case 'below':\r\n default:\r\n return {\r\n originY: overlapTrigger ? 'top' : 'bottom',\r\n overlayY: 'top',\r\n };\r\n }\r\n }\r\n\r\n private getFallbackXPosition(position: MenuPositionX): MenuPositionX {\r\n switch (position) {\r\n case 'start':\r\n return 'end';\r\n\r\n case 'end':\r\n return 'start';\r\n\r\n case 'before':\r\n return 'after';\r\n\r\n case 'after':\r\n return 'before';\r\n\r\n case 'center':\r\n default:\r\n return 'center';\r\n }\r\n }\r\n\r\n private getSubMenuXPosition(position: MenuPositionX | undefined): SubMenuPositionX {\r\n return position === 'before' ? 'before' : 'after';\r\n }\r\n\r\n private getFallbackYPosition(position: MenuPositionY): MenuPositionY {\r\n switch (position) {\r\n case 'above':\r\n return 'below';\r\n\r\n case 'below':\r\n return 'above';\r\n\r\n case 'center':\r\n default:\r\n return 'center';\r\n }\r\n }\r\n\r\n private getSubMenuVerticalAlignment(position: MenuPositionY): SubMenuVerticalAlignment {\r\n return position === 'above' ? 'bottom' : 'top';\r\n }\r\n\r\n private getOriginClientRect(origin: ResolvedMenuOrigin): ClientRect {\r\n if ('getBoundingClientRect' in origin) {\r\n return origin.getBoundingClientRect();\r\n }\r\n\r\n return {\r\n x: origin.x,\r\n y: origin.y,\r\n top: origin.y,\r\n right: origin.x,\r\n bottom: origin.y,\r\n left: origin.x,\r\n width: 0,\r\n height: 0,\r\n };\r\n }\r\n\r\n private getViewportMargin(configuredMargin: number | undefined): number {\r\n const minimumMargin = this.getHalfEmInPixels();\r\n\r\n return Math.max(configuredMargin ?? minimumMargin, minimumMargin);\r\n }\r\n\r\n private getHalfEmInPixels(): number {\r\n const viewport = this.document.defaultView;\r\n const fontSize = viewport?.getComputedStyle(this.document.documentElement).fontSize;\r\n const pixels = fontSize ? Number.parseFloat(fontSize) * 0.5 : 8;\r\n\r\n return Number.isFinite(pixels) ? pixels : 8;\r\n }\r\n\r\n private getOffsetY(position: MenuPositionY, config: ResolvedMenuConfig): number {\r\n if (config.overlapTrigger || position === 'center') {\r\n return 0;\r\n }\r\n\r\n return position === 'above'\r\n ? config.offsetY * -1\r\n : config.offsetY;\r\n }\r\n\r\n private getSubMenuOffsetX(position: SubMenuPositionX, offsetX: number): number {\r\n return position === 'before' ? offsetX * -1 : offsetX;\r\n }\r\n\r\n private getSubMenuOffsetY(\r\n alignment: SubMenuVerticalAlignment,\r\n offsetY: number,\r\n ): number {\r\n return alignment === 'bottom' ? offsetY * -1 : offsetY;\r\n }\r\n\r\n private getScrollStrategy(scrollStrategy: MenuScrollStrategy) {\r\n switch (scrollStrategy) {\r\n case 'block':\r\n return this.overlay.scrollStrategies.block();\r\n\r\n case 'close':\r\n return this.overlay.scrollStrategies.close();\r\n\r\n case 'noop':\r\n return this.overlay.scrollStrategies.noop();\r\n\r\n case 'reposition':\r\n default:\r\n return this.overlay.scrollStrategies.reposition();\r\n }\r\n }\r\n\r\n private isMouseEvent(origin: MenuPositionOrigin | HTMLElement): origin is MouseEvent {\r\n return typeof MouseEvent !== 'undefined' && origin instanceof MouseEvent;\r\n }\r\n\r\n private isElementRef(origin: Exclude<MenuPositionOrigin, MouseEvent>): origin is ElementRef<HTMLElement> {\r\n return typeof origin === 'object'\r\n && origin !== null\r\n && 'nativeElement' in origin\r\n && origin.nativeElement instanceof HTMLElement;\r\n }\r\n\r\n private startOpenAnimation(overlayRef: OverlayRef): void {\r\n const panel = overlayRef.overlayElement;\r\n const backdrop = overlayRef.backdropElement;\r\n\r\n // The overlay is inserted already rendered. Keep an initial class for\r\n // one frame, force style calculation, then remove it so CSS transitions\r\n // have a real from/to state.\r\n requestAnimationFrame(() => {\r\n setTimeout(() => {\r\n panel.getBoundingClientRect();\r\n panel.classList.remove('md3-menu-opening');\r\n backdrop?.classList.remove('md3-menu-opening');\r\n }, 100);\r\n });\r\n }\r\n\r\n private createInjector<T, D, R>(\r\n component: Type<T>,\r\n config: ResolvedMenuConfig<D>,\r\n menuRef: MenuRef<T, R>,\r\n ): Injector {\r\n return Injector.create({\r\n parent: config.injector,\r\n providers: [\r\n // These tokens make the menu controllable from the dynamic\r\n // component without coupling that component to the service.\r\n { provide: MenuRef, useValue: menuRef },\r\n { provide: MENU_DATA, useValue: config.data },\r\n { provide: MENU_CONFIG, useValue: config },\r\n { provide: MENU_COMPONENT, useValue: component },\r\n ],\r\n });\r\n }\r\n\r\n private bindDataToInputs<T, D>(\r\n componentRef: ComponentRef<T>,\r\n config: ResolvedMenuConfig<D>,\r\n ): void {\r\n if (!config.bindDataToInputs || !this.canBindDataToInputs(config.data)) {\r\n return;\r\n }\r\n\r\n // setInput runs Angular's normal input pipeline, so input setters,\r\n // transforms, signal inputs, and change detection are handled for us.\r\n Object.entries(config.data).forEach(([inputName, inputValue]) => {\r\n componentRef.setInput(inputName, inputValue);\r\n });\r\n }\r\n\r\n private connectCloseEvents<T, R>(\r\n overlayRef: OverlayRef,\r\n menuRef: MenuRef<T, R>,\r\n ): void {\r\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => menuRef.close());\r\n overlayRef.keydownEvents().pipe(\r\n filter((event) => event.key === 'Escape'),\r\n take(1),\r\n ).subscribe(() => menuRef.close());\r\n }\r\n\r\n private getFocusedElement(): HTMLElement | null {\r\n const activeElement = this.document.activeElement;\r\n return activeElement instanceof HTMLElement ? activeElement : null;\r\n }\r\n\r\n private canBindDataToInputs(data: unknown): data is Record<string, unknown> {\r\n return typeof data === 'object' && data !== null && !Array.isArray(data);\r\n }\r\n}\r\n","import { booleanAttribute, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-menu-group',\r\n imports: [],\r\n templateUrl: './menu-group.html',\r\n styleUrl: './menu-group.scss',\r\n host: {\r\n 'role': 'group',\r\n },\r\n})\r\nexport class MenuGroup {\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, contentChildren, ElementRef, input, model } from '@angular/core';\r\nimport { StateComponent } from '../../common/state-component';\r\nimport { IconElement } from '../../common/icon-element';\r\nimport { InputElement } from '../../common/input-element';\r\nimport { MaterialIcon } from '../../common/material-icon/material-icon';\r\nimport { TypeBody, TypeLabel, TypeTitle } from '../../../../public-api';\r\n\r\n@Component({\r\n selector: 'button[md3-menu-item], a[md3-menu-item]',\r\n imports: [\r\n InputElement,\r\n StateComponent,\r\n MaterialIcon,\r\n TypeLabel,\r\n TypeBody,\r\n TypeTitle,\r\n ],\r\n templateUrl: './menu-item.html',\r\n styleUrl: './menu-item.scss',\r\n host: {\r\n '(click)': 'onHostClick()',\r\n },\r\n})\r\nexport class MenuItem {\r\n public label = input<string>('', {\r\n alias: 'label',\r\n });\r\n\r\n public supportingText = input<string | null>(null, {\r\n alias: 'supporting-text',\r\n });\r\n\r\n public trailingText = input<string | null>(null, {\r\n alias: 'trailing-text',\r\n });\r\n\r\n public selected = model<boolean | null>(null, {\r\n alias: 'selected'\r\n });\r\n\r\n private iconElements = contentChildren(IconElement);\r\n \r\n public get leading(): IconElement | undefined {\r\n return this.iconElements().find((icon) => icon.iconType() === 'leading');\r\n }\r\n\r\n public get trailing(): IconElement | undefined {\r\n return this.iconElements().find((icon) => icon.iconType() === 'trailing');\r\n }\r\n\r\n public get showLeadingIcon(): boolean {\r\n return (!!this.leading && !this.selected()) || this.selected() == true;\r\n }\r\n\r\n public onHostClick(): void {\r\n const selected = this.selected();\r\n if (selected === null) {\r\n return;\r\n }\r\n\r\n this.selected.set(!selected);\r\n }\r\n\r\n constructor(private el: ElementRef<HTMLElement>) {\r\n }\r\n\r\n public get element(): HTMLElement {\r\n return this.el.nativeElement;\r\n }\r\n}\r\n","@if (selected() !== null) {\r\n <input type=\"checkbox\" md3-input-element [checked]=\"selected()\">\r\n}\r\n\r\n<div class=\"md3-menu-item-container\" md3-state-component>\r\n <div class=\"md3-menu-item-leading\" [class.has-icon]=\"showLeadingIcon\">\r\n <ng-content select=\"[md3-icon-element=leading]\"></ng-content>\r\n @if (!leading) {\r\n <md3-icon>check</md3-icon>\r\n }\r\n </div>\r\n\r\n <div class=\"md3-menu-item-content\">\r\n <md3-type-label size=\"large\">{{ label() }}</md3-type-label>\r\n @if (supportingText()?.length) {\r\n <md3-type-body size=\"small\">{{ supportingText() }}</md3-type-body>\r\n }\r\n </div>\r\n\r\n <div class=\"md3-menu-item-trailing\">\r\n <ng-content select=\"md3-badge\"></ng-content>\r\n @if (trailingText()?.length) {\r\n <md3-type-title size=\"small\">{{ trailingText() }}</md3-type-title>\r\n }\r\n <ng-content select=\"[md3-icon-element=trailing]\"></ng-content>\r\n </div>\r\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';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-side-sheet-body',\r\n imports: [],\r\n templateUrl: './side-sheet-body.html',\r\n styleUrl: './side-sheet-body.scss',\r\n host: {\r\n class: 'md3-scrollable',\r\n },\r\n hostDirectives: [\r\n CdkScrollable\r\n ],\r\n})\r\nexport class SideSheetBody {\r\n}\r\n","<ng-content></ng-content>","import { booleanAttribute, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'md3-side-sheet-actions',\r\n imports: [],\r\n templateUrl: './side-sheet-actions.html',\r\n styleUrl: './side-sheet-actions.scss',\r\n host: {\r\n '[class.md3-style-divider]': 'showDivider()',\r\n },\r\n})\r\nexport class SideSheetActions {\r\n public showDivider = input<boolean, unknown>(false, {\r\n alias: 'show-divider',\r\n transform: booleanAttribute\r\n });\r\n}\r\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';\r\nimport { Component, ElementRef, HostListener, OnDestroy, OnInit, Signal, TemplateRef, effect, inject, signal } from '@angular/core';\r\nimport { Button } from '../buttons/button/button';\r\nimport { IconButton } from '../buttons/icon-button/icon-button';\r\nimport { MaterialIcon } from '../common/material-icon/material-icon';\r\nimport { LayoutService } from '../../foundations/layout.service';\r\nimport { SnackbarConfig } from '../../interfaces/snackbar-config.interface';\r\nimport { SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, SnackbarRef } from './snackbar-ref';\r\nimport { IconElement, TypeBody } from '../../../public-api';\r\n\r\n@Component({\r\n selector: 'md3-snackbar',\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n TypeBody,\r\n Button,\r\n IconButton,\r\n MaterialIcon,\r\n IconElement,\r\n ],\r\n templateUrl: './snackbar.html',\r\n styleUrl: './snackbar.scss',\r\n})\r\nexport class Snackbar implements OnInit, OnDestroy {\r\n private readonly snackbarRef = inject(SnackbarRef, { optional: true });\r\n private readonly layout = inject(LayoutService);\r\n\r\n public isActive = signal<boolean>(false);\r\n\r\n protected readonly config = inject<SnackbarConfig>(SNACKBAR_CONFIG, { optional: true }) ?? {};\r\n protected readonly message = inject<string | TemplateRef<unknown>>(SNACKBAR_MESSAGE, { optional: true }) ?? '';\r\n protected readonly actionLabel = inject<string | undefined>(SNACKBAR_ACTION_LABEL, { optional: true });\r\n\r\n protected get role(): string {\r\n return this.config.politeness === 'assertive' ? 'alert' : 'status';\r\n }\r\n\r\n protected get isTemplateMessage(): boolean {\r\n return this.message instanceof TemplateRef;\r\n }\r\n\r\n protected get templateMessage(): TemplateRef<unknown> {\r\n return this.message as TemplateRef<unknown>;\r\n }\r\n\r\n protected get textMessage(): string {\r\n return this.message as string;\r\n }\r\n\r\n protected get templateContext(): unknown {\r\n return this.config.data ?? null;\r\n }\r\n\r\n protected get isStacked(): boolean {\r\n return !!this.config.stackedAction && !!this.actionLabel;\r\n }\r\n\r\n constructor(private readonly el: ElementRef<HTMLElement>) {\r\n effect(() => {\r\n const inset = this.layout.bottomInset() + (this.config.bottomOffset ?? 0);\r\n this.el.nativeElement.style.setProperty('--md3-snackbar-bottom-inset', `${inset}px`);\r\n });\r\n\r\n effect(() => {\r\n if (this.layout.isCompact()) {\r\n this.el.nativeElement.classList.add('md3-full-width');\r\n } else {\r\n this.el.nativeElement.classList.remove('md3-full-width');\r\n }\r\n });\r\n }\r\n\r\n @HostListener('pointerenter')\r\n @HostListener('focusin')\r\n protected onInteractionStart(): void {\r\n this.snackbarRef?.pauseTimer();\r\n }\r\n\r\n @HostListener('pointerleave')\r\n @HostListener('focusout')\r\n protected onInteractionEnd(): void {\r\n this.snackbarRef?.resumeTimer();\r\n }\r\n\r\n ngOnInit(): void {\r\n requestAnimationFrame(() => {\r\n this.isActive.set(true);\r\n });\r\n\r\n this.snackbarRef?.startTimer();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.snackbarRef?.pauseTimer();\r\n }\r\n\r\n protected onActionClick(): void {\r\n this.snackbarRef?.triggerAction();\r\n }\r\n\r\n protected onCloseClick(): void {\r\n this.snackbarRef?.close('manual');\r\n }\r\n}\r\n","<div\r\n class=\"md3-snackbar-container\"\r\n [class.md3-active]=\"isActive()\"\r\n [class.md3-snackbar-stacked]=\"isStacked\"\r\n [ngClass]=\"{\r\n 'md-scheme-light': config.scheme == 'dark',\r\n 'md-scheme-dark': config.scheme == 'light',\r\n }\"\r\n [attr.dir]=\"config.direction ?? null\"\r\n [attr.role]=\"role\"\r\n [attr.aria-live]=\"config.politeness ?? 'polite'\"\r\n [attr.aria-label]=\"config.ariaLabel || null\">\r\n <div class=\"md3-snackbar-message\">\r\n @if (isTemplateMessage) {\r\n <ng-container *ngTemplateOutlet=\"templateMessage; context: templateContext\"></ng-container>\r\n } @else {\r\n <div md3-type-body size=\"medium\">{{ textMessage }}</div>\r\n }\r\n </div>\r\n\r\n @if (actionLabel) {\r\n <button md3-button type=\"button\" class=\"md3-snackbar-action\" button-type=\"text\" button-size=\"small\" (click)=\"onActionClick()\">\r\n {{ actionLabel }}\r\n </button>\r\n }\r\n\r\n @if (config.showCloseIcon) {\r\n <button md3-icon-button type=\"button\" class=\"md3-snackbar-close\" button-type=\"standard\" button-size=\"small\" aria-label=\"Dismiss\" (click)=\"onCloseClick()\">\r\n <md3-icon md3-icon-element>close</md3-icon>\r\n </button>\r\n }\r\n</div>\r\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Injectable, Injector, TemplateRef, inject } from '@angular/core';\r\nimport { SnackbarConfig, SnackbarPoliteness } from '../../interfaces/snackbar-config.interface';\r\nimport { Snackbar } from './snackbar';\r\nimport { SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, SnackbarRef } from './snackbar-ref';\r\n\r\nconst DEFAULT_DURATION_MS = 4000;\r\n\r\ninterface ResolvedSnackbarConfig extends SnackbarConfig {\r\n showCloseIcon: boolean;\r\n stackedAction: boolean;\r\n duration: number;\r\n politeness: SnackbarPoliteness;\r\n replaceCurrent: boolean;\r\n ariaLabel: string;\r\n scheme: 'inherit' | 'dark' | 'light';\r\n direction: null | 'ltr' | 'rtl';\r\n position: 'start' | 'center' | 'end';\r\n bottomOffset: number;\r\n injector: Injector;\r\n}\r\n\r\n// Internally every queued snackbar is tracked as SnackbarRef<unknown> — the\r\n// caller-facing generic <R> only matters for the ref that open() hands back,\r\n// so it's applied once at that single return point instead of threaded\r\n// through the queue/active bookkeeping.\r\ninterface QueuedSnackbar {\r\n message: string | TemplateRef<unknown>;\r\n actionLabel: string | undefined;\r\n config: ResolvedSnackbarConfig;\r\n ref: SnackbarRef;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SnackbarService {\r\n private readonly overlay = inject(Overlay);\r\n private readonly injector = inject(Injector);\r\n\r\n private readonly queue: QueuedSnackbar[] = [];\r\n private active?: QueuedSnackbar;\r\n\r\n /**\r\n * Opens a snackbar. Only one is ever visible at a time — if another is\r\n * already showing, this one waits in a FIFO queue unless\r\n * config.replaceCurrent is set.\r\n *\r\n * message can be a plain string, or a TemplateRef for cases like a\r\n * progress indicator that needs to keep re-rendering as the caller's own\r\n * state changes. The surrounding surface, action button, close icon,\r\n * positioning, and animation are always owned by the Snackbar shell —\r\n * there's no arbitrary custom-component API, since that's how you end up\r\n * with something that isn't a snackbar anymore per MD3.\r\n *\r\n * config.onAction, if provided, is called when the action button (never\r\n * the close icon) is clicked — an alternative to ref.onAction().subscribe()\r\n * for callers that don't want to hold onto the returned ref.\r\n */\r\n public open<D = unknown, R = unknown>(\r\n message: string | TemplateRef<D>,\r\n actionLabel?: string,\r\n config: SnackbarConfig<D> = {},\r\n ): SnackbarRef<R> {\r\n const snackbarConfig = this.mergeConfig(config);\r\n\r\n if (snackbarConfig.showCloseIcon && actionLabel) {\r\n throw new Error(\r\n 'Snackbar cannot have both an action and a close icon — Material Design 3 snackbars support only one.',\r\n );\r\n }\r\n\r\n const ref = new SnackbarRef(snackbarConfig.duration);\r\n const queued: QueuedSnackbar = {\r\n message,\r\n actionLabel,\r\n config: snackbarConfig,\r\n ref,\r\n };\r\n\r\n ref.afterDismissed().subscribe(() => this.onDismissed(queued));\r\n\r\n if (snackbarConfig.onAction) {\r\n // Only ever fires for the action button — SnackbarRef.actionTriggered\r\n // is exclusively raised from the action button's click handler, never\r\n // from the close icon, which just closes without emitting.\r\n ref.onAction().subscribe(() => snackbarConfig.onAction!());\r\n }\r\n\r\n if (snackbarConfig.replaceCurrent && this.active) {\r\n this.queue.unshift(queued);\r\n this.active.ref.close('manual');\r\n } else if (this.active) {\r\n this.queue.push(queued);\r\n } else {\r\n this.show(queued);\r\n }\r\n\r\n return ref as SnackbarRef<R>;\r\n }\r\n\r\n /** Dismisses whichever snackbar is currently showing, if any. */\r\n public dismiss<R = unknown>(result?: R): void {\r\n this.active?.ref.close('manual', result);\r\n }\r\n\r\n /** Dismisses the visible snackbar and clears everything still queued. */\r\n public dismissAll(): void {\r\n const stillQueued = this.queue.splice(0, this.queue.length);\r\n stillQueued.forEach((item) => item.ref.close('manual'));\r\n this.active?.ref.close('manual');\r\n }\r\n\r\n private show(queued: QueuedSnackbar): void {\r\n this.active = queued;\r\n\r\n const overlayRef = this.createOverlay(queued.config);\r\n queued.ref.attachOverlay(overlayRef);\r\n\r\n const injector = this.createInjector(queued);\r\n const portal = new ComponentPortal(Snackbar, queued.config.viewContainerRef ?? null, injector);\r\n const componentRef = overlayRef.attach(portal);\r\n\r\n queued.ref.snackbarInstance = componentRef.instance;\r\n }\r\n\r\n private onDismissed(queued: QueuedSnackbar): void {\r\n if (this.active === queued) {\r\n this.active = undefined;\r\n } else {\r\n const index = this.queue.indexOf(queued);\r\n\r\n if (index !== -1) {\r\n this.queue.splice(index, 1);\r\n }\r\n\r\n return;\r\n }\r\n\r\n const next = this.queue.shift();\r\n\r\n if (next) {\r\n this.show(next);\r\n }\r\n }\r\n\r\n private mergeConfig(config: SnackbarConfig): ResolvedSnackbarConfig {\r\n return {\r\n data: config.data,\r\n showCloseIcon: config.showCloseIcon ?? false,\r\n stackedAction: config.stackedAction ?? false,\r\n onAction: config.onAction,\r\n duration: config.duration ?? DEFAULT_DURATION_MS,\r\n politeness: config.politeness ?? 'polite',\r\n replaceCurrent: config.replaceCurrent ?? false,\r\n ariaLabel: config.ariaLabel ?? '',\r\n scheme: config.scheme ?? 'inherit',\r\n direction: config.direction ?? null,\r\n position: config.position ?? 'start',\r\n bottomOffset: config.bottomOffset ?? 0,\r\n viewContainerRef: config.viewContainerRef,\r\n injector: config.injector ?? this.injector,\r\n };\r\n }\r\n\r\n private createOverlay(config: ResolvedSnackbarConfig): OverlayRef {\r\n let panelClass = ['md3-snackbar-panel', 'md3-position-' + config.position];\r\n if (config.direction !== null) {\r\n panelClass.push('md3-direction-' + config.direction);\r\n }\r\n\r\n const overlayConfig = new OverlayConfig({\r\n hasBackdrop: false,\r\n panelClass: panelClass,\r\n positionStrategy: this.overlay.position().global(),\r\n scrollStrategy: this.overlay.scrollStrategies.noop(),\r\n });\r\n\r\n return this.overlay.create(overlayConfig);\r\n }\r\n\r\n private createInjector(queued: QueuedSnackbar): Injector {\r\n return Injector.create({\r\n parent: queued.config.injector,\r\n providers: [\r\n { provide: SnackbarRef, useValue: queued.ref },\r\n { provide: SNACKBAR_MESSAGE, useValue: queued.message },\r\n { provide: SNACKBAR_ACTION_LABEL, useValue: queued.actionLabel },\r\n { provide: SNACKBAR_CONFIG, useValue: queued.config },\r\n ],\r\n });\r\n }\r\n}\r\n","// types\r\nexport * from './types/text-size.type';\r\nexport * from './types/text-color.type';\r\nexport * from './types/card-type.type';\r\nexport * from './types/button-size.type';\r\nexport * from './types/button-type.type';\r\nexport * from './types/icon-button-type.type';\r\nexport * from './types/icon-button-width.type';\r\nexport * from './types/split-button-type.type';\r\nexport * from './types/button-group-type.type';\r\nexport * from './types/button-group-selection.type';\r\nexport * from './types/fab-size.type';\r\nexport * from './types/fab-type.type';\r\nexport * from './types/slider-size.type';\r\nexport * from './types/dialog-role.type';\r\nexport * from './types/chip-type.type';\r\nexport * from './types/chip-style.type';\r\nexport * from './types/list-leading-type.type';\r\nexport * from './types/list-leading-size.type';\r\n\r\n// interfaces\r\nexport * from './interfaces/dialog-config.interface';\r\nexport * from './interfaces/menu-config.interface';\r\nexport * from './interfaces/side-sheet-config.interface';\r\nexport * from './interfaces/snackbar-config.interface';\r\n\r\n// typography\r\nexport * from './styles/typography/type-display';\r\nexport * from './styles/typography/type-headline';\r\nexport * from './styles/typography/type-title';\r\nexport * from './styles/typography/type-body';\r\nexport * from './styles/typography/type-label';\r\n\r\n// foundations\r\nexport * from './foundations/layout.service';\r\nexport * from './foundations/scaffold/scaffold';\r\nexport * from './foundations/scaffold-bar';\r\nexport * from './foundations/scaffold-rail';\r\nexport * from './foundations/scaffold-pane';\r\nexport * from './foundations/grid';\r\nexport * from './foundations/grid-item';\r\n\r\n// common components and directives\r\nexport * from './components/common/input-element';\r\nexport * from './components/common/state-component';\r\nexport * from './components/common/icon-element';\r\nexport * from './components/common/material-icon/material-icon';\r\nexport * from './components/common/divider';\r\nexport * from './components/common/badge';\r\nexport * from './components/common/avatar';\r\n\r\n// buttons\r\nexport * from './components/buttons/button/button';\r\nexport * from './components/buttons/floating-action-button/floating-action-button';\r\nexport * from './components/buttons/icon-button/icon-button';\r\nexport * from './components/buttons/split-button/split-button';\r\nexport * from './components/buttons/button-group/button-group';\r\n\r\n// cards\r\nexport * from './components/card/card';\r\n\r\n// chips\r\nexport * from './components/chips/chips';\r\n\r\n// selection controls\r\nexport * from './components/selection-controls/checkbox/checkbox';\r\nexport * from './components/selection-controls/radio-button/radio-button';\r\nexport * from './components/selection-controls/switch/switch';\r\n\r\n// sliders\r\nexport * from './components/slider/slider';\r\n\r\n// list\r\nexport * from './components/list/list';\r\nexport * from './components/list/list-item/list-item';\r\nexport * from './components/list/list-leading/list-leading';\r\nexport * from './components/list/list-slot';\r\n\r\n// loading and progress\r\nexport * from './components/loading-and-progress/loading-indicator/loading-indicator';\r\nexport * from './components/loading-and-progress/linear-progress-indicator/linear-progress-indicator';\r\nexport * from './components/loading-and-progress/circular-progress-indicator/circular-progress-indicator';\r\n\r\n// app bar\r\nexport * from './components/app-bar/app-bar';\r\nexport * from './components/app-bar/app-bar-logo';\r\n\r\n// navigations\r\nexport * from './components/navigations/navigation-item/navigation-item';\r\nexport * from './components/navigations/navigation-group/navigation-group';\r\nexport * from './components/navigations/navigation-rail/navigation-rail';\r\nexport * from './components/navigations/navigation-bar/navigation-bar';\r\n\r\n// text fields\r\nexport * from './components/text-field/text-field';\r\nexport * from './components/text-field/supporting-text';\r\n\r\n// dialogs\r\nexport * from './components/dialog/dialog';\r\nexport * from './components/dialog/dialog-ref';\r\nexport * from './components/dialog/dialog.service';\r\nexport * from './components/dialog/dialog-header/dialog-header';\r\nexport * from './components/dialog/dialog-body/dialog-body';\r\nexport * from './components/dialog/dialog-actions/dialog-actions';\r\n\r\n// menus\r\nexport * from './components/menu/menu';\r\nexport * from './components/menu/menu-ref';\r\nexport * from './components/menu/menu.service';\r\nexport * from './components/menu/menu-group/menu-group';\r\nexport * from './components/menu/menu-item/menu-item';\r\n\r\n// sheets\r\nexport * from './components/sheets/side-sheet/side-sheet-ref';\r\nexport * from './components/sheets/sheets.service';\r\nexport * from './components/sheets/side-sheet-header/side-sheet-header';\r\nexport * from './components/sheets/side-sheet-body/side-sheet-body';\r\nexport * from './components/sheets/side-sheet-actions/side-sheet-actions';\r\n\r\n// snackbar\r\nexport * from './components/snackbar/snackbar';\r\nexport * from './components/snackbar/snackbar-ref';\r\nexport * from './components/snackbar/snackbar.service';\r\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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"}
|