@angular/material 22.1.0-rc.0 → 22.1.1

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.
Files changed (111) hide show
  1. package/_index.scss +2 -2
  2. package/fesm2022/_error-options-chunk.mjs +6 -6
  3. package/fesm2022/_form-field-chunk.mjs +30 -30
  4. package/fesm2022/_form-field-chunk.mjs.map +1 -1
  5. package/fesm2022/_icon-button-chunk.mjs +6 -6
  6. package/fesm2022/_icon-button-chunk.mjs.map +1 -1
  7. package/fesm2022/_icon-registry-chunk.mjs +3 -3
  8. package/fesm2022/_icon-registry-chunk.mjs.map +1 -1
  9. package/fesm2022/_internal-form-field-chunk.mjs +3 -3
  10. package/fesm2022/_internal-form-field-chunk.mjs.map +1 -1
  11. package/fesm2022/_line-chunk.mjs +7 -7
  12. package/fesm2022/_line-chunk.mjs.map +1 -1
  13. package/fesm2022/_option-chunk.mjs +6 -6
  14. package/fesm2022/_option-chunk.mjs.map +1 -1
  15. package/fesm2022/_option-module-chunk.mjs +4 -4
  16. package/fesm2022/_option-module-chunk.mjs.map +1 -1
  17. package/fesm2022/_pseudo-checkbox-chunk.mjs +3 -3
  18. package/fesm2022/_pseudo-checkbox-chunk.mjs.map +1 -1
  19. package/fesm2022/_pseudo-checkbox-module-chunk.mjs +4 -4
  20. package/fesm2022/_pseudo-checkbox-module-chunk.mjs.map +1 -1
  21. package/fesm2022/_ripple-chunk.mjs +6 -6
  22. package/fesm2022/_ripple-chunk.mjs.map +1 -1
  23. package/fesm2022/_ripple-loader-chunk.mjs +3 -3
  24. package/fesm2022/_ripple-module-chunk.mjs +4 -4
  25. package/fesm2022/_ripple-module-chunk.mjs.map +1 -1
  26. package/fesm2022/_structural-styles-chunk.mjs +3 -3
  27. package/fesm2022/_structural-styles-chunk.mjs.map +1 -1
  28. package/fesm2022/_tooltip-chunk.mjs +6 -6
  29. package/fesm2022/_tooltip-chunk.mjs.map +1 -1
  30. package/fesm2022/autocomplete.mjs +13 -13
  31. package/fesm2022/autocomplete.mjs.map +1 -1
  32. package/fesm2022/badge.mjs +10 -10
  33. package/fesm2022/badge.mjs.map +1 -1
  34. package/fesm2022/bottom-sheet.mjs +10 -10
  35. package/fesm2022/button-toggle.mjs +10 -10
  36. package/fesm2022/button-toggle.mjs.map +1 -1
  37. package/fesm2022/button.mjs +13 -13
  38. package/fesm2022/button.mjs.map +1 -1
  39. package/fesm2022/card.mjs +46 -46
  40. package/fesm2022/card.mjs.map +1 -1
  41. package/fesm2022/checkbox.mjs +12 -28
  42. package/fesm2022/checkbox.mjs.map +1 -1
  43. package/fesm2022/chips.mjs +48 -48
  44. package/fesm2022/chips.mjs.map +1 -1
  45. package/fesm2022/core.mjs +12 -12
  46. package/fesm2022/core.mjs.map +1 -1
  47. package/fesm2022/datepicker.mjs +82 -82
  48. package/fesm2022/datepicker.mjs.map +1 -1
  49. package/fesm2022/dialog.mjs +29 -26
  50. package/fesm2022/dialog.mjs.map +1 -1
  51. package/fesm2022/divider.mjs +7 -7
  52. package/fesm2022/divider.mjs.map +1 -1
  53. package/fesm2022/expansion.mjs +25 -25
  54. package/fesm2022/expansion.mjs.map +1 -1
  55. package/fesm2022/form-field.mjs +4 -4
  56. package/fesm2022/form-field.mjs.map +1 -1
  57. package/fesm2022/grid-list.mjs +22 -22
  58. package/fesm2022/grid-list.mjs.map +1 -1
  59. package/fesm2022/icon-testing.mjs +7 -7
  60. package/fesm2022/icon.mjs +7 -7
  61. package/fesm2022/icon.mjs.map +1 -1
  62. package/fesm2022/input.mjs +7 -7
  63. package/fesm2022/input.mjs.map +1 -1
  64. package/fesm2022/list.mjs +49 -49
  65. package/fesm2022/list.mjs.map +1 -1
  66. package/fesm2022/menu.mjs +22 -22
  67. package/fesm2022/menu.mjs.map +1 -1
  68. package/fesm2022/paginator.mjs +10 -10
  69. package/fesm2022/paginator.mjs.map +1 -1
  70. package/fesm2022/progress-bar.mjs +7 -7
  71. package/fesm2022/progress-bar.mjs.map +1 -1
  72. package/fesm2022/progress-spinner.mjs +7 -7
  73. package/fesm2022/progress-spinner.mjs.map +1 -1
  74. package/fesm2022/radio.mjs +10 -10
  75. package/fesm2022/radio.mjs.map +1 -1
  76. package/fesm2022/select.mjs +10 -10
  77. package/fesm2022/select.mjs.map +1 -1
  78. package/fesm2022/sidenav.mjs +22 -22
  79. package/fesm2022/sidenav.mjs.map +1 -1
  80. package/fesm2022/slide-toggle.mjs +7 -7
  81. package/fesm2022/slide-toggle.mjs.map +1 -1
  82. package/fesm2022/slider.mjs +17 -17
  83. package/fesm2022/slider.mjs.map +1 -1
  84. package/fesm2022/snack-bar.mjs +22 -22
  85. package/fesm2022/snack-bar.mjs.map +1 -1
  86. package/fesm2022/sort.mjs +13 -13
  87. package/fesm2022/sort.mjs.map +1 -1
  88. package/fesm2022/stepper.mjs +31 -31
  89. package/fesm2022/stepper.mjs.map +1 -1
  90. package/fesm2022/table.mjs +55 -55
  91. package/fesm2022/table.mjs.map +1 -1
  92. package/fesm2022/tabs.mjs +43 -43
  93. package/fesm2022/tabs.mjs.map +1 -1
  94. package/fesm2022/timepicker.mjs +13 -13
  95. package/fesm2022/timepicker.mjs.map +1 -1
  96. package/fesm2022/toolbar.mjs +10 -10
  97. package/fesm2022/toolbar.mjs.map +1 -1
  98. package/fesm2022/tooltip.mjs +4 -4
  99. package/fesm2022/tooltip.mjs.map +1 -1
  100. package/fesm2022/tree.mjs +25 -25
  101. package/fesm2022/tree.mjs.map +1 -1
  102. package/package.json +6 -6
  103. package/prebuilt-themes/deeppurple-amber.css +3 -3
  104. package/prebuilt-themes/indigo-pink.css +3 -3
  105. package/prebuilt-themes/pink-bluegrey.css +3 -3
  106. package/prebuilt-themes/purple-green.css +3 -3
  107. package/schematics/ng-add/index.js +2 -2
  108. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +7 -5
  109. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.spec.ts.template +1 -1
  110. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +5 -9
  111. package/types/checkbox.d.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"badge.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator, AriaDescriber, InteractivityChecker} from '@angular/cdk/a11y';\n\nimport {\n booleanAttribute,\n Component,\n Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation,\n DOCUMENT,\n AfterViewInit,\n InjectionToken,\n} from '@angular/core';\nimport {_animationsDisabled, ThemePalette} from '../core';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n | 'above after'\n | 'above before'\n | 'below before'\n | 'below after'\n | 'before'\n | 'after'\n | 'above'\n | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\n/** Object that can be used to configure the default options for the badge component. */\nexport interface MatBadgeConfig {\n /** Default position for badges. */\n position?: MatBadgePosition;\n\n /** Default size for badges. */\n size?: MatBadgeSize;\n\n /** Default color to apply to all badges. */\n color?: ThemePalette;\n\n /** Whether badges should overlap by default. */\n overlap?: boolean;\n}\n\n/** Injection token that can be used to configure the default options for the badge component. */\nexport const MAT_BADGE_CONFIG = new InjectionToken<MatBadgeConfig>('MAT_BADGE_CONFIG');\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/**\n * Component used to load the structural styles of the badge.\n * @docs-private\n */\n@Component({\n styleUrl: 'badge.css',\n encapsulation: ViewEncapsulation.None,\n template: '',\n})\nexport class _MatBadgeStyleLoader {}\n\n/** Directive to display a text badge. */\n@Directive({\n selector: '[matBadge]',\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n})\nexport class MatBadge implements OnInit, AfterViewInit, OnDestroy {\n private _ngZone = inject(NgZone);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ariaDescriber = inject(AriaDescriber);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _idGenerator = inject(_IdGenerator);\n\n /**\n * Theme color of the badge. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/badge/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input('matBadgeColor')\n get color(): ThemePalette {\n return this._color;\n }\n set color(value: ThemePalette) {\n this._setColor(value);\n this._color = value;\n }\n private _color: ThemePalette;\n\n /** Whether the badge should overlap its contents or not */\n @Input({alias: 'matBadgeOverlap', transform: booleanAttribute}) overlap: boolean;\n\n /** Whether the badge is disabled. */\n @Input({alias: 'matBadgeDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n @Input('matBadgePosition') position: MatBadgePosition;\n\n /** The content for the badge */\n @Input('matBadge')\n get content(): string | number | undefined | null {\n return this._content;\n }\n set content(newContent: string | number | undefined | null) {\n this._updateRenderedContent(newContent);\n }\n private _content: string | number | undefined | null;\n\n /** Message used to describe the decorated element via aria-describedby */\n @Input('matBadgeDescription')\n get description(): string {\n return this._description;\n }\n set description(newDescription: string) {\n this._updateDescription(newDescription);\n }\n private _description!: string;\n\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n @Input('matBadgeSize') size: MatBadgeSize;\n\n /** Whether the badge is hidden. */\n @Input({alias: 'matBadgeHidden', transform: booleanAttribute}) hidden: boolean = false;\n\n /** Visible badge element. */\n private _badgeElement: HTMLElement | undefined;\n\n /** Inline badge description. Used when the badge is applied to non-interactive host elements. */\n private _inlineBadgeDescription: HTMLElement | undefined;\n\n /** Whether the OnInit lifecycle hook has run yet */\n private _isInitialized = false;\n\n /** InteractivityChecker to determine if the badge host is focusable. */\n private _interactivityChecker = inject(InteractivityChecker);\n\n private _document = inject(DOCUMENT);\n\n constructor() {\n const config = inject(MAT_BADGE_CONFIG, {optional: true});\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_MatBadgeStyleLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n\n this._color = config?.color || 'primary';\n this.overlap = config?.overlap ?? true;\n this.position = config?.position || 'above after';\n this.size = config?.size || 'medium';\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n\n /** Whether the badge is above the host or not */\n isAbove(): boolean {\n return this.position.indexOf('below') === -1;\n }\n\n /** Whether the badge is after the host or not */\n isAfter(): boolean {\n return this.position.indexOf('before') === -1;\n }\n\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement(): HTMLElement | undefined {\n return this._badgeElement;\n }\n\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n\n this._isInitialized = true;\n }\n\n ngAfterViewInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n // Heads-up for developers to avoid putting matBadge on <mat-icon>\n // as it is aria-hidden by default docs mention this at:\n // https://material.angular.dev/components/badge/overview#accessibility\n if (\n nativeElement.tagName.toLowerCase() === 'mat-icon' &&\n nativeElement.getAttribute('aria-hidden') === 'true'\n ) {\n console.warn(\n `Detected a matBadge on an \"aria-hidden\" \"<mat-icon>\". ` +\n `Consider setting aria-hidden=\"false\" in order to surface the information assistive technology.` +\n `\\n${nativeElement.outerHTML}`,\n );\n }\n }\n }\n\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n this._inlineBadgeDescription?.remove();\n }\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n\n /** Gets whether the badge's host element is interactive. */\n private _isHostInteractive(): boolean {\n // Ignore visibility since it requires an expensive style caluclation.\n return this._interactivityChecker.isFocusable(this._elementRef.nativeElement, {\n ignoreVisibility: true,\n });\n }\n\n /** Creates the badge element */\n private _createBadgeElement(): HTMLElement {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n\n badgeElement.setAttribute('id', this._idGenerator.getId('mat-badge-content-'));\n\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n if (this._animationsDisabled) {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n\n this._elementRef.nativeElement.appendChild(badgeElement);\n\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && !this._animationsDisabled) {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n } else {\n badgeElement.classList.add(activeClass);\n }\n\n return badgeElement;\n }\n\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n private _updateRenderedContent(newContent: string | number | undefined | null): void {\n const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n\n this._content = newContentNormalized;\n }\n\n /** Updates the host element's aria description via AriaDescriber. */\n private _updateDescription(newDescription: string): void {\n // Always start by removing the aria-describedby; we will add a new one if necessary.\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n\n // NOTE: We only check whether the host is interactive here, which happens during\n // when then badge content changes. It is possible that the host changes\n // interactivity status separate from one of these. However, watching the interactivity\n // status of the host would require a `MutationObserver`, which is likely more code + overhead\n // than it's worth; from usages inside Google, we see that the vats majority of badges either\n // never change interactivity, or also set `matBadgeHidden` based on the same condition.\n\n if (!newDescription || this._isHostInteractive()) {\n this._removeInlineDescription();\n }\n\n this._description = newDescription;\n\n // We don't add `aria-describedby` for non-interactive hosts elements because we\n // instead insert the description inline.\n if (this._isHostInteractive()) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n } else {\n this._updateInlineDescription();\n }\n }\n\n private _updateInlineDescription() {\n // Create the inline description element if it doesn't exist\n if (!this._inlineBadgeDescription) {\n this._inlineBadgeDescription = this._document.createElement('span');\n this._inlineBadgeDescription.classList.add('cdk-visually-hidden');\n }\n\n this._inlineBadgeDescription.textContent = this.description;\n this._badgeElement?.appendChild(this._inlineBadgeDescription);\n }\n\n private _removeInlineDescription() {\n this._inlineBadgeDescription?.remove();\n this._inlineBadgeDescription = undefined;\n }\n\n /** Adds css theme class given the color to the component host */\n private _setColor(colorPalette: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n\n /** Clears any existing badges that might be left over from server-side rendering. */\n private _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(\n `:scope > .${BADGE_CONTENT_CLASS}`,\n );\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBadge, _MatBadgeStyleLoader} from './badge';\n\n@NgModule({\n // Note: we _shouldn't_ have to import `_MatBadgeStyleLoader`,\n // but it seems to be necessary for tests.\n imports: [A11yModule, MatBadge, _MatBadgeStyleLoader],\n exports: [MatBadge, BidiModule],\n})\nexport class MatBadgeModule {}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"badge.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/badge/badge-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator, AriaDescriber, InteractivityChecker} from '@angular/cdk/a11y';\n\nimport {\n booleanAttribute,\n Component,\n Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Renderer2,\n ViewEncapsulation,\n DOCUMENT,\n AfterViewInit,\n InjectionToken,\n} from '@angular/core';\nimport {_animationsDisabled, ThemePalette} from '../core';\nimport {_CdkPrivateStyleLoader, _VisuallyHiddenLoader} from '@angular/cdk/private';\n\n/** Allowed position options for matBadgePosition */\nexport type MatBadgePosition =\n | 'above after'\n | 'above before'\n | 'below before'\n | 'below after'\n | 'before'\n | 'after'\n | 'above'\n | 'below';\n\n/** Allowed size options for matBadgeSize */\nexport type MatBadgeSize = 'small' | 'medium' | 'large';\n\n/** Object that can be used to configure the default options for the badge component. */\nexport interface MatBadgeConfig {\n /** Default position for badges. */\n position?: MatBadgePosition;\n\n /** Default size for badges. */\n size?: MatBadgeSize;\n\n /** Default color to apply to all badges. */\n color?: ThemePalette;\n\n /** Whether badges should overlap by default. */\n overlap?: boolean;\n}\n\n/** Injection token that can be used to configure the default options for the badge component. */\nexport const MAT_BADGE_CONFIG = new InjectionToken<MatBadgeConfig>('MAT_BADGE_CONFIG');\n\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n\n/**\n * Component used to load the structural styles of the badge.\n * @docs-private\n */\n@Component({\n styleUrl: 'badge.css',\n encapsulation: ViewEncapsulation.None,\n template: '',\n})\nexport class _MatBadgeStyleLoader {}\n\n/** Directive to display a text badge. */\n@Directive({\n selector: '[matBadge]',\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n})\nexport class MatBadge implements OnInit, AfterViewInit, OnDestroy {\n private _ngZone = inject(NgZone);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ariaDescriber = inject(AriaDescriber);\n private _renderer = inject(Renderer2);\n private _animationsDisabled = _animationsDisabled();\n private _idGenerator = inject(_IdGenerator);\n\n /**\n * Theme color of the badge. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/badge/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input('matBadgeColor')\n get color(): ThemePalette {\n return this._color;\n }\n set color(value: ThemePalette) {\n this._setColor(value);\n this._color = value;\n }\n private _color: ThemePalette;\n\n /** Whether the badge should overlap its contents or not */\n @Input({alias: 'matBadgeOverlap', transform: booleanAttribute}) overlap: boolean;\n\n /** Whether the badge is disabled. */\n @Input({alias: 'matBadgeDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n @Input('matBadgePosition') position: MatBadgePosition;\n\n /** The content for the badge */\n @Input('matBadge')\n get content(): string | number | undefined | null {\n return this._content;\n }\n set content(newContent: string | number | undefined | null) {\n this._updateRenderedContent(newContent);\n }\n private _content: string | number | undefined | null;\n\n /** Message used to describe the decorated element via aria-describedby */\n @Input('matBadgeDescription')\n get description(): string {\n return this._description;\n }\n set description(newDescription: string) {\n this._updateDescription(newDescription);\n }\n private _description!: string;\n\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n @Input('matBadgeSize') size: MatBadgeSize;\n\n /** Whether the badge is hidden. */\n @Input({alias: 'matBadgeHidden', transform: booleanAttribute}) hidden: boolean = false;\n\n /** Visible badge element. */\n private _badgeElement: HTMLElement | undefined;\n\n /** Inline badge description. Used when the badge is applied to non-interactive host elements. */\n private _inlineBadgeDescription: HTMLElement | undefined;\n\n /** Whether the OnInit lifecycle hook has run yet */\n private _isInitialized = false;\n\n /** InteractivityChecker to determine if the badge host is focusable. */\n private _interactivityChecker = inject(InteractivityChecker);\n\n private _document = inject(DOCUMENT);\n\n constructor() {\n const config = inject(MAT_BADGE_CONFIG, {optional: true});\n const styleLoader = inject(_CdkPrivateStyleLoader);\n styleLoader.load(_MatBadgeStyleLoader);\n styleLoader.load(_VisuallyHiddenLoader);\n\n this._color = config?.color || 'primary';\n this.overlap = config?.overlap ?? true;\n this.position = config?.position || 'above after';\n this.size = config?.size || 'medium';\n\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n\n /** Whether the badge is above the host or not */\n isAbove(): boolean {\n return this.position.indexOf('below') === -1;\n }\n\n /** Whether the badge is after the host or not */\n isAfter(): boolean {\n return this.position.indexOf('before') === -1;\n }\n\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement(): HTMLElement | undefined {\n return this._badgeElement;\n }\n\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n\n this._isInitialized = true;\n }\n\n ngAfterViewInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = this._elementRef.nativeElement;\n\n // Heads-up for developers to avoid putting matBadge on <mat-icon>\n // as it is aria-hidden by default docs mention this at:\n // https://material.angular.dev/components/badge/overview#accessibility\n if (\n nativeElement.tagName.toLowerCase() === 'mat-icon' &&\n nativeElement.getAttribute('aria-hidden') === 'true'\n ) {\n console.warn(\n `Detected a matBadge on an \"aria-hidden\" \"<mat-icon>\". ` +\n `Consider setting aria-hidden=\"false\" in order to surface the information assistive technology.` +\n `\\n${nativeElement.outerHTML}`,\n );\n }\n }\n }\n\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n this._inlineBadgeDescription?.remove();\n }\n\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n\n /** Gets whether the badge's host element is interactive. */\n private _isHostInteractive(): boolean {\n // Ignore visibility since it requires an expensive style caluclation.\n return this._interactivityChecker.isFocusable(this._elementRef.nativeElement, {\n ignoreVisibility: true,\n });\n }\n\n /** Creates the badge element */\n private _createBadgeElement(): HTMLElement {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n\n badgeElement.setAttribute('id', this._idGenerator.getId('mat-badge-content-'));\n\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n\n if (this._animationsDisabled) {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n\n this._elementRef.nativeElement.appendChild(badgeElement);\n\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && !this._animationsDisabled) {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n } else {\n badgeElement.classList.add(activeClass);\n }\n\n return badgeElement;\n }\n\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n private _updateRenderedContent(newContent: string | number | undefined | null): void {\n const newContentNormalized: string = `${newContent ?? ''}`.trim();\n\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n\n this._content = newContentNormalized;\n }\n\n /** Updates the host element's aria description via AriaDescriber. */\n private _updateDescription(newDescription: string): void {\n // Always start by removing the aria-describedby; we will add a new one if necessary.\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n\n // NOTE: We only check whether the host is interactive here, which happens during\n // when then badge content changes. It is possible that the host changes\n // interactivity status separate from one of these. However, watching the interactivity\n // status of the host would require a `MutationObserver`, which is likely more code + overhead\n // than it's worth; from usages inside Google, we see that the vats majority of badges either\n // never change interactivity, or also set `matBadgeHidden` based on the same condition.\n\n if (!newDescription || this._isHostInteractive()) {\n this._removeInlineDescription();\n }\n\n this._description = newDescription;\n\n // We don't add `aria-describedby` for non-interactive hosts elements because we\n // instead insert the description inline.\n if (this._isHostInteractive()) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n } else {\n this._updateInlineDescription();\n }\n }\n\n private _updateInlineDescription() {\n // Create the inline description element if it doesn't exist\n if (!this._inlineBadgeDescription) {\n this._inlineBadgeDescription = this._document.createElement('span');\n this._inlineBadgeDescription.classList.add('cdk-visually-hidden');\n }\n\n this._inlineBadgeDescription.textContent = this.description;\n this._badgeElement?.appendChild(this._inlineBadgeDescription);\n }\n\n private _removeInlineDescription() {\n this._inlineBadgeDescription?.remove();\n this._inlineBadgeDescription = undefined;\n }\n\n /** Adds css theme class given the color to the component host */\n private _setColor(colorPalette: ThemePalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n\n /** Clears any existing badges that might be left over from server-side rendering. */\n private _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(\n `:scope > .${BADGE_CONTENT_CLASS}`,\n );\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBadge, _MatBadgeStyleLoader} from './badge';\n\n@NgModule({\n // Note: we _shouldn't_ have to import `_MatBadgeStyleLoader`,\n // but it seems to be necessary for tests.\n imports: [A11yModule, MatBadge, _MatBadgeStyleLoader],\n exports: [MatBadge, BidiModule],\n})\nexport class MatBadgeModule {}\n"],"names":[],"mappings":"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"}
@@ -78,7 +78,7 @@ class MatBottomSheetContainer extends CdkDialogContainer {
78
78
  }
79
79
  static ɵfac = i0.ɵɵngDeclareFactory({
80
80
  minVersion: "12.0.0",
81
- version: "22.1.0-next.6",
81
+ version: "22.1.0",
82
82
  ngImport: i0,
83
83
  type: MatBottomSheetContainer,
84
84
  deps: [],
@@ -86,7 +86,7 @@ class MatBottomSheetContainer extends CdkDialogContainer {
86
86
  });
87
87
  static ɵcmp = i0.ɵɵngDeclareComponent({
88
88
  minVersion: "14.0.0",
89
- version: "22.1.0-next.6",
89
+ version: "22.1.0",
90
90
  type: MatBottomSheetContainer,
91
91
  isStandalone: true,
92
92
  selector: "mat-bottom-sheet-container",
@@ -127,7 +127,7 @@ class MatBottomSheetContainer extends CdkDialogContainer {
127
127
  }
128
128
  i0.ɵɵngDeclareClassMetadata({
129
129
  minVersion: "12.0.0",
130
- version: "22.1.0-next.6",
130
+ version: "22.1.0",
131
131
  ngImport: i0,
132
132
  type: MatBottomSheetContainer,
133
133
  decorators: [{
@@ -319,7 +319,7 @@ class MatBottomSheet {
319
319
  }
320
320
  static ɵfac = i0.ɵɵngDeclareFactory({
321
321
  minVersion: "12.0.0",
322
- version: "22.1.0-next.6",
322
+ version: "22.1.0",
323
323
  ngImport: i0,
324
324
  type: MatBottomSheet,
325
325
  deps: [],
@@ -327,14 +327,14 @@ class MatBottomSheet {
327
327
  });
328
328
  static ɵprov = i0.ɵɵngDeclareService({
329
329
  minVersion: "22.0.0",
330
- version: "22.1.0-next.6",
330
+ version: "22.1.0",
331
331
  ngImport: i0,
332
332
  type: MatBottomSheet
333
333
  });
334
334
  }
335
335
  i0.ɵɵngDeclareClassMetadata({
336
336
  minVersion: "12.0.0",
337
- version: "22.1.0-next.6",
337
+ version: "22.1.0",
338
338
  ngImport: i0,
339
339
  type: MatBottomSheet,
340
340
  decorators: [{
@@ -345,7 +345,7 @@ i0.ɵɵngDeclareClassMetadata({
345
345
  class MatBottomSheetModule {
346
346
  static ɵfac = i0.ɵɵngDeclareFactory({
347
347
  minVersion: "12.0.0",
348
- version: "22.1.0-next.6",
348
+ version: "22.1.0",
349
349
  ngImport: i0,
350
350
  type: MatBottomSheetModule,
351
351
  deps: [],
@@ -353,7 +353,7 @@ class MatBottomSheetModule {
353
353
  });
354
354
  static ɵmod = i0.ɵɵngDeclareNgModule({
355
355
  minVersion: "14.0.0",
356
- version: "22.1.0-next.6",
356
+ version: "22.1.0",
357
357
  ngImport: i0,
358
358
  type: MatBottomSheetModule,
359
359
  imports: [DialogModule, PortalModule, MatBottomSheetContainer],
@@ -361,7 +361,7 @@ class MatBottomSheetModule {
361
361
  });
362
362
  static ɵinj = i0.ɵɵngDeclareInjector({
363
363
  minVersion: "12.0.0",
364
- version: "22.1.0-next.6",
364
+ version: "22.1.0",
365
365
  ngImport: i0,
366
366
  type: MatBottomSheetModule,
367
367
  providers: [MatBottomSheet],
@@ -370,7 +370,7 @@ class MatBottomSheetModule {
370
370
  }
371
371
  i0.ɵɵngDeclareClassMetadata({
372
372
  minVersion: "12.0.0",
373
- version: "22.1.0-next.6",
373
+ version: "22.1.0",
374
374
  ngImport: i0,
375
375
  type: MatBottomSheetModule,
376
376
  decorators: [{
@@ -304,7 +304,7 @@ class MatButtonToggleGroup {
304
304
  }
305
305
  static ɵfac = i0.ɵɵngDeclareFactory({
306
306
  minVersion: "12.0.0",
307
- version: "22.1.0-next.6",
307
+ version: "22.1.0",
308
308
  ngImport: i0,
309
309
  type: MatButtonToggleGroup,
310
310
  deps: [],
@@ -312,7 +312,7 @@ class MatButtonToggleGroup {
312
312
  });
313
313
  static ɵdir = i0.ɵɵngDeclareDirective({
314
314
  minVersion: "16.1.0",
315
- version: "22.1.0-next.6",
315
+ version: "22.1.0",
316
316
  type: MatButtonToggleGroup,
317
317
  isStandalone: true,
318
318
  selector: "mat-button-toggle-group",
@@ -358,7 +358,7 @@ class MatButtonToggleGroup {
358
358
  }
359
359
  i0.ɵɵngDeclareClassMetadata({
360
360
  minVersion: "12.0.0",
361
- version: "22.1.0-next.6",
361
+ version: "22.1.0",
362
362
  ngImport: i0,
363
363
  type: MatButtonToggleGroup,
364
364
  decorators: [{
@@ -582,7 +582,7 @@ class MatButtonToggle {
582
582
  }
583
583
  static ɵfac = i0.ɵɵngDeclareFactory({
584
584
  minVersion: "12.0.0",
585
- version: "22.1.0-next.6",
585
+ version: "22.1.0",
586
586
  ngImport: i0,
587
587
  type: MatButtonToggle,
588
588
  deps: [],
@@ -590,7 +590,7 @@ class MatButtonToggle {
590
590
  });
591
591
  static ɵcmp = i0.ɵɵngDeclareComponent({
592
592
  minVersion: "17.0.0",
593
- version: "22.1.0-next.6",
593
+ version: "22.1.0",
594
594
  type: MatButtonToggle,
595
595
  isStandalone: true,
596
596
  selector: "mat-button-toggle",
@@ -657,7 +657,7 @@ class MatButtonToggle {
657
657
  }
658
658
  i0.ɵɵngDeclareClassMetadata({
659
659
  minVersion: "12.0.0",
660
- version: "22.1.0-next.6",
660
+ version: "22.1.0",
661
661
  ngImport: i0,
662
662
  type: MatButtonToggle,
663
663
  decorators: [{
@@ -747,7 +747,7 @@ i0.ɵɵngDeclareClassMetadata({
747
747
  class MatButtonToggleModule {
748
748
  static ɵfac = i0.ɵɵngDeclareFactory({
749
749
  minVersion: "12.0.0",
750
- version: "22.1.0-next.6",
750
+ version: "22.1.0",
751
751
  ngImport: i0,
752
752
  type: MatButtonToggleModule,
753
753
  deps: [],
@@ -755,7 +755,7 @@ class MatButtonToggleModule {
755
755
  });
756
756
  static ɵmod = i0.ɵɵngDeclareNgModule({
757
757
  minVersion: "14.0.0",
758
- version: "22.1.0-next.6",
758
+ version: "22.1.0",
759
759
  ngImport: i0,
760
760
  type: MatButtonToggleModule,
761
761
  imports: [MatRippleModule, MatButtonToggleGroup, MatButtonToggle],
@@ -763,7 +763,7 @@ class MatButtonToggleModule {
763
763
  });
764
764
  static ɵinj = i0.ɵɵngDeclareInjector({
765
765
  minVersion: "12.0.0",
766
- version: "22.1.0-next.6",
766
+ version: "22.1.0",
767
767
  ngImport: i0,
768
768
  type: MatButtonToggleModule,
769
769
  imports: [MatRippleModule, MatButtonToggle, BidiModule]
@@ -771,7 +771,7 @@ class MatButtonToggleModule {
771
771
  }
772
772
  i0.ɵɵngDeclareClassMetadata({
773
773
  minVersion: "12.0.0",
774
- version: "22.1.0-next.6",
774
+ version: "22.1.0",
775
775
  ngImport: i0,
776
776
  type: MatButtonToggleModule,
777
777
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"button-toggle.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator, FocusMonitor} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n DOWN_ARROW,\n ENTER,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {_animationsDisabled, _StructuralStylesLoader, MatPseudoCheckbox, MatRipple} from '../core';\n\n/**\n * @deprecated No longer used.\n * @breaking-change 11.0.0\n */\nexport type ToggleType = 'checkbox' | 'radio';\n\n/** Possible appearance styles for the button toggle. */\nexport type MatButtonToggleAppearance = 'legacy' | 'standard';\n\n/**\n * Represents the default options for the button toggle that can be configured\n * using the `MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatButtonToggleDefaultOptions {\n /**\n * Default appearance to be used by button toggles. Can be overridden by explicitly\n * setting an appearance on a button toggle or group.\n */\n appearance?: MatButtonToggleAppearance;\n /** Whether icon indicators should be hidden for single-selection button toggle groups. */\n hideSingleSelectionIndicator?: boolean;\n /** Whether icon indicators should be hidden for multiple-selection button toggle groups. */\n hideMultipleSelectionIndicator?: boolean;\n /** Whether disabled toggle buttons should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nexport const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken<MatButtonToggleDefaultOptions>(\n 'MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS',\n {\n providedIn: 'root',\n factory: () => ({\n hideSingleSelectionIndicator: false,\n hideMultipleSelectionIndicator: false,\n disabledInteractive: false,\n }),\n },\n);\n\n/**\n * Injection token that can be used to reference instances of `MatButtonToggleGroup`.\n * It serves as alternative token to the actual `MatButtonToggleGroup` class which\n * could cause unnecessary retention of the class and its component metadata.\n */\nexport const MAT_BUTTON_TOGGLE_GROUP = new InjectionToken<MatButtonToggleGroup>(\n 'MatButtonToggleGroup',\n);\n\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true,\n};\n\n/** Change event object emitted by button toggle. */\nexport class MatButtonToggleChange {\n constructor(\n /** The button toggle that emits the event. */\n public source: MatButtonToggle,\n\n /** The value assigned to the button toggle. */\n public value: any,\n ) {}\n}\n\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\n@Directive({\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n {provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup},\n ],\n host: {\n 'class': 'mat-button-toggle-group',\n '(keydown)': '_keydown($event)',\n '[attr.role]': \"multiple ? 'group' : 'radiogroup'\",\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n})\nexport class MatButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit {\n private _changeDetector = inject(ChangeDetectorRef);\n private _dir = inject(Directionality, {optional: true});\n\n private _multiple = false;\n private _disabled = false;\n private _disabledInteractive = false;\n private _selectionModel!: SelectionModel<MatButtonToggle>;\n\n /**\n * Reference to the raw value that the consumer tried to assign. The real\n * value will exclude any values from this one that don't correspond to a\n * toggle. Useful for the cases where the value is assigned before the toggles\n * have been initialized or at the same that they're being swapped out.\n */\n private _rawValue: any;\n\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n _onTouched: () => any = () => {};\n\n /** Child button toggle buttons. */\n @ContentChildren(forwardRef(() => MatButtonToggle), {\n // Note that this would technically pick up toggles\n // from nested groups, but that's not a case that we support.\n descendants: true,\n })\n _buttonToggles!: QueryList<MatButtonToggle>;\n\n /** The appearance for all the buttons in the group. */\n @Input() appearance: MatButtonToggleAppearance;\n\n /** `name` attribute for the underlying `input` element. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._markButtonsForCheck();\n }\n private _name = inject(_IdGenerator).getId('mat-button-toggle-group-');\n\n /** Whether the toggle group is vertical. */\n @Input({transform: booleanAttribute}) vertical: boolean = false;\n\n /** Value of the toggle group. */\n @Input()\n get value(): any {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue: any) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n @Output() readonly valueChange = new EventEmitter<any>();\n\n /** Selected button toggles in the group. */\n get selected(): MatButtonToggle | MatButtonToggle[] {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : selected[0] || null;\n }\n\n /** Whether multiple button toggles can be selected. */\n @Input({transform: booleanAttribute})\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = value;\n this._markButtonsForCheck();\n }\n\n /** Whether multiple button toggle group is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._markButtonsForCheck();\n }\n\n /** Whether buttons in the group should be interactive while they're disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return this._disabledInteractive;\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n this._markButtonsForCheck();\n }\n\n /** The layout direction of the toggle button group. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Event emitted when the group's value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n /** Whether checkmark indicator for single-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideSingleSelectionIndicator(): boolean {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value: boolean) {\n this._hideSingleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideSingleSelectionIndicator: boolean;\n\n /** Whether checkmark indicator for multiple-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideMultipleSelectionIndicator(): boolean {\n return this._hideMultipleSelectionIndicator;\n }\n set hideMultipleSelectionIndicator(value: boolean) {\n this._hideMultipleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideMultipleSelectionIndicator: boolean;\n\n constructor() {\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._hideSingleSelectionIndicator = defaultOptions?.hideSingleSelectionIndicator ?? false;\n this._hideMultipleSelectionIndicator = defaultOptions?.hideMultipleSelectionIndicator ?? false;\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatButtonToggle>(this.multiple, undefined, false);\n }\n\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n if (!this.multiple) {\n this._initializeTabIndex();\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Handle keydown event calling to single-select button toggle. */\n protected _keydown(event: KeyboardEvent) {\n if (this.multiple || this.disabled || hasModifierKey(event)) {\n return;\n }\n\n const target = event.target as HTMLButtonElement;\n const buttonId = target.id;\n const index = this._buttonToggles.toArray().findIndex(toggle => {\n return toggle.buttonId === buttonId;\n });\n\n let nextButton: MatButtonToggle | null = null;\n switch (event.keyCode) {\n case SPACE:\n case ENTER:\n nextButton = this._buttonToggles.get(index) || null;\n break;\n case UP_ARROW:\n nextButton = this._getNextButton(index, -1);\n break;\n case LEFT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? -1 : 1);\n break;\n case DOWN_ARROW:\n nextButton = this._getNextButton(index, 1);\n break;\n case RIGHT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? 1 : -1);\n break;\n default:\n return;\n }\n\n if (nextButton) {\n event.preventDefault();\n nextButton._onButtonClick();\n nextButton.focus();\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(toggle: MatButtonToggle): void {\n const event = new MatButtonToggleChange(toggle, this.value);\n this._rawValue = event.value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(\n toggle: MatButtonToggle,\n select: boolean,\n isUserInput = false,\n deferEvents = false,\n ) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n (this.selected as MatButtonToggle).checked = false;\n }\n\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n } else {\n this._selectionModel.deselect(toggle);\n }\n } else {\n deferEvents = true;\n }\n\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve().then(() => this._updateModelValue(toggle, isUserInput));\n } else {\n this._updateModelValue(toggle, isUserInput);\n }\n }\n\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle: MatButtonToggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle: MatButtonToggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n\n return toggle.value === this._rawValue;\n }\n\n /** Initializes the tabindex attribute using the radio pattern. */\n private _initializeTabIndex() {\n this._buttonToggles.forEach(toggle => {\n toggle.tabIndex = -1;\n });\n if (this.selected) {\n (this.selected as MatButtonToggle).tabIndex = 0;\n } else {\n for (let i = 0; i < this._buttonToggles.length; i++) {\n const toggle = this._buttonToggles.get(i)!;\n\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Obtain the subsequent toggle to which the focus shifts. */\n private _getNextButton(startIndex: number, offset: number): MatButtonToggle | null {\n const items = this._buttonToggles;\n\n for (let i = 1; i <= items.length; i++) {\n const index = (startIndex + offset * i + items.length) % items.length;\n const item = items.get(index);\n\n if (item && !item.disabled) {\n return item;\n }\n }\n\n return null;\n }\n\n /** Updates the selection state of the toggles in the group based on a value. */\n private _setSelectionByValue(value: any | any[]) {\n this._rawValue = value;\n\n if (!this._buttonToggles) {\n return;\n }\n\n const toggles = this._buttonToggles.toArray();\n\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n\n this._clearSelection();\n value.forEach((currentValue: any) => this._selectValue(currentValue, toggles));\n } else {\n this._clearSelection();\n this._selectValue(value, toggles);\n }\n\n // In single selection mode we need at least one enabled toggle to always be focusable.\n if (!this.multiple && toggles.every(toggle => toggle.tabIndex === -1)) {\n for (const toggle of toggles) {\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Clears the selected toggles. */\n private _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => {\n toggle.checked = false;\n // If the button toggle is in single select mode, initialize the tabIndex.\n if (!this.multiple) {\n toggle.tabIndex = -1;\n }\n });\n }\n\n /** Selects a value if there's a toggle that corresponds to it. */\n private _selectValue(value: any, toggles: MatButtonToggle[]) {\n for (const toggle of toggles) {\n if (toggle.value === value) {\n toggle.checked = true;\n this._selectionModel.select(toggle);\n if (!this.multiple) {\n // If the button toggle is in single select mode, reset the tabIndex.\n toggle.tabIndex = 0;\n }\n break;\n }\n }\n }\n\n /** Syncs up the group's value with the model and emits the change event. */\n private _updateModelValue(toggle: MatButtonToggle, isUserInput: boolean) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent(toggle);\n }\n\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n\n /** Marks all of the child button toggles to be checked. */\n private _markButtonsForCheck() {\n this._buttonToggles?.forEach(toggle => toggle._markForCheck());\n }\n}\n\n/** Single button inside of a toggle group. */\n@Component({\n selector: 'mat-button-toggle',\n templateUrl: 'button-toggle.html',\n styleUrl: 'button-toggle.css',\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matButtonToggle',\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-disabled-interactive]': 'disabledInteractive',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n 'role': 'presentation',\n },\n imports: [MatRipple, MatPseudoCheckbox],\n})\nexport class MatButtonToggle implements OnInit, AfterViewInit, OnDestroy {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n private _idGenerator = inject(_IdGenerator);\n private _animationDisabled = _animationsDisabled();\n private _checked = false;\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel!: string;\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Underlying native `button` element. */\n @ViewChild('button') _buttonElement!: ElementRef<HTMLButtonElement>;\n\n /** The parent button toggle group (exclusive selection). Optional. */\n buttonToggleGroup: MatButtonToggleGroup;\n\n /** Unique ID for the underlying `button` element. */\n get buttonId(): string {\n return `${this.id}-button`;\n }\n\n /** The unique ID for this button toggle. */\n @Input() id!: string;\n\n /** HTML's 'name' attribute used to group radios for unique selection. */\n @Input() name!: string;\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input() value: any;\n\n /** Tabindex of the toggle. */\n @Input()\n get tabIndex(): number | null {\n return this._tabIndex();\n }\n set tabIndex(value: number | null) {\n this._tabIndex.set(value);\n }\n private _tabIndex: WritableSignal<number | null>;\n\n /** Whether ripples are disabled on the button toggle. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** The appearance style of the button. */\n @Input()\n get appearance(): MatButtonToggleAppearance {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value: MatButtonToggleAppearance) {\n this._appearance = value;\n }\n private _appearance: MatButtonToggleAppearance;\n\n /** Whether the button is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Whether the button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled: boolean = false;\n\n /** Whether the button should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return (\n this._disabledInteractive ||\n (this.buttonToggleGroup !== null && this.buttonToggleGroup.disabledInteractive)\n );\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n }\n private _disabledInteractive: boolean;\n\n /** Event emitted when the group value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const toggleGroup = inject<MatButtonToggleGroup>(MAT_BUTTON_TOGGLE_GROUP, {optional: true})!;\n const defaultTabIndex = inject(new HostAttributeToken('tabindex'), {optional: true}) || '';\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this._tabIndex = signal<number | null>(parseInt(defaultTabIndex) || 0);\n this.buttonToggleGroup = toggleGroup;\n this._appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._disabledInteractive = defaultOptions?.disabledInteractive ?? false;\n }\n\n ngOnInit() {\n const group = this.buttonToggleGroup;\n this.id = this.id || this._idGenerator.getId('mat-button-toggle-');\n\n if (group) {\n if (group._isPrechecked(this)) {\n this.checked = true;\n } else if (group._isSelected(this) !== this._checked) {\n // As side effect of the circular dependency between the toggle group and the button,\n // we may end up in a state where the button is supposed to be checked on init, but it\n // isn't, because the checked value was assigned too early. This can happen when Ivy\n // assigns the static input value before the `ngOnInit` has run.\n group._syncButtonToggle(this, this._checked);\n }\n }\n }\n\n ngAfterViewInit() {\n // This serves two purposes:\n // 1. We don't want the animation to fire on the first render for pre-checked toggles so we\n // delay adding the class until the view is rendered.\n // 2. We don't want to animate if animations are disabled.\n if (!this._animationDisabled) {\n this._elementRef.nativeElement.classList.add('mat-button-toggle-animations-enabled');\n }\n\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n\n this._focusMonitor.stopMonitoring(this._elementRef);\n\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n\n /** Focuses the button. */\n focus(options?: FocusOptions): void {\n this._buttonElement.nativeElement.focus(options);\n }\n\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n if (this.disabled) {\n return;\n }\n\n const newChecked = this.isSingleSelector() ? true : !this._checked;\n\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n\n if (this.isSingleSelector()) {\n const focusable = this.buttonToggleGroup._buttonToggles.find(toggle => {\n return toggle.tabIndex === 0;\n });\n // Modify the tabindex attribute of the last focusable button toggle to -1.\n if (focusable) {\n focusable.tabIndex = -1;\n }\n // Modify the tabindex attribute of the presently selected button toggle to 0.\n this.tabIndex = 0;\n }\n\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\n this._changeDetectorRef.markForCheck();\n }\n\n /** Gets the name that should be assigned to the inner DOM node. */\n _getButtonName(): string | null {\n if (this.isSingleSelector()) {\n return this.buttonToggleGroup.name;\n }\n return this.name || null;\n }\n\n /** Whether the toggle is in single selection mode. */\n isSingleSelector(): boolean {\n return this.buttonToggleGroup && !this.buttonToggleGroup.multiple;\n }\n}\n","<button #button class=\"mat-button-toggle-button mat-focus-indicator\"\n type=\"button\"\n [id]=\"buttonId\"\n [attr.role]=\"isSingleSelector() ? 'radio' : 'button'\"\n [attr.tabindex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n [attr.aria-pressed]=\"!isSingleSelector() ? checked : null\"\n [attr.aria-checked]=\"isSingleSelector() ? checked : null\"\n [disabled]=\"(disabled && !disabledInteractive) || null\"\n [attr.name]=\"_getButtonName()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (click)=\"_onButtonClick()\">\n @if (buttonToggleGroup && (\n !buttonToggleGroup.multiple && !buttonToggleGroup.hideSingleSelectionIndicator ||\n buttonToggleGroup.multiple && !buttonToggleGroup.hideMultipleSelectionIndicator)\n ) {\n <div class=\"mat-button-toggle-checkbox-wrapper\">\n <mat-pseudo-checkbox\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\"/>\n </div>\n }\n\n <span class=\"mat-button-toggle-label-content\">\n <ng-content></ng-content>\n </span>\n</button>\n\n<span class=\"mat-button-toggle-focus-overlay\"></span>\n<span class=\"mat-button-toggle-ripple\" matRipple\n [matRippleTrigger]=\"button\"\n [matRippleDisabled]=\"disableRipple || disabled\">\n</span>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatRippleModule} from '../core';\nimport {MatButtonToggle, MatButtonToggleGroup} from './button-toggle';\n\n@NgModule({\n imports: [MatRippleModule, MatButtonToggleGroup, MatButtonToggle],\n exports: [BidiModule, MatButtonToggleGroup, MatButtonToggle],\n})\nexport class MatButtonToggleModule {}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"button-toggle.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/button-toggle/button-toggle-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator, FocusMonitor} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n DOWN_ARROW,\n ENTER,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {_CdkPrivateStyleLoader} from '@angular/cdk/private';\nimport {\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n ViewChild,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {_animationsDisabled, _StructuralStylesLoader, MatPseudoCheckbox, MatRipple} from '../core';\n\n/**\n * @deprecated No longer used.\n * @breaking-change 11.0.0\n */\nexport type ToggleType = 'checkbox' | 'radio';\n\n/** Possible appearance styles for the button toggle. */\nexport type MatButtonToggleAppearance = 'legacy' | 'standard';\n\n/**\n * Represents the default options for the button toggle that can be configured\n * using the `MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatButtonToggleDefaultOptions {\n /**\n * Default appearance to be used by button toggles. Can be overridden by explicitly\n * setting an appearance on a button toggle or group.\n */\n appearance?: MatButtonToggleAppearance;\n /** Whether icon indicators should be hidden for single-selection button toggle groups. */\n hideSingleSelectionIndicator?: boolean;\n /** Whether icon indicators should be hidden for multiple-selection button toggle groups. */\n hideMultipleSelectionIndicator?: boolean;\n /** Whether disabled toggle buttons should be interactive. */\n disabledInteractive?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the\n * default options for all button toggles within an app.\n */\nexport const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken<MatButtonToggleDefaultOptions>(\n 'MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS',\n {\n providedIn: 'root',\n factory: () => ({\n hideSingleSelectionIndicator: false,\n hideMultipleSelectionIndicator: false,\n disabledInteractive: false,\n }),\n },\n);\n\n/**\n * Injection token that can be used to reference instances of `MatButtonToggleGroup`.\n * It serves as alternative token to the actual `MatButtonToggleGroup` class which\n * could cause unnecessary retention of the class and its component metadata.\n */\nexport const MAT_BUTTON_TOGGLE_GROUP = new InjectionToken<MatButtonToggleGroup>(\n 'MatButtonToggleGroup',\n);\n\n/**\n * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nexport const MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatButtonToggleGroup),\n multi: true,\n};\n\n/** Change event object emitted by button toggle. */\nexport class MatButtonToggleChange {\n constructor(\n /** The button toggle that emits the event. */\n public source: MatButtonToggle,\n\n /** The value assigned to the button toggle. */\n public value: any,\n ) {}\n}\n\n/** Exclusive selection button toggle group that behaves like a radio-button group. */\n@Directive({\n selector: 'mat-button-toggle-group',\n providers: [\n MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,\n {provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup},\n ],\n host: {\n 'class': 'mat-button-toggle-group',\n '(keydown)': '_keydown($event)',\n '[attr.role]': \"multiple ? 'group' : 'radiogroup'\",\n '[attr.aria-disabled]': 'disabled',\n '[class.mat-button-toggle-vertical]': 'vertical',\n '[class.mat-button-toggle-group-appearance-standard]': 'appearance === \"standard\"',\n },\n exportAs: 'matButtonToggleGroup',\n})\nexport class MatButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit {\n private _changeDetector = inject(ChangeDetectorRef);\n private _dir = inject(Directionality, {optional: true});\n\n private _multiple = false;\n private _disabled = false;\n private _disabledInteractive = false;\n private _selectionModel!: SelectionModel<MatButtonToggle>;\n\n /**\n * Reference to the raw value that the consumer tried to assign. The real\n * value will exclude any values from this one that don't correspond to a\n * toggle. Useful for the cases where the value is assigned before the toggles\n * have been initialized or at the same that they're being swapped out.\n */\n private _rawValue: any;\n\n /**\n * The method to be called in order to update ngModel.\n * Now `ngModel` binding is not supported in multiple selection mode.\n */\n _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n _onTouched: () => any = () => {};\n\n /** Child button toggle buttons. */\n @ContentChildren(forwardRef(() => MatButtonToggle), {\n // Note that this would technically pick up toggles\n // from nested groups, but that's not a case that we support.\n descendants: true,\n })\n _buttonToggles!: QueryList<MatButtonToggle>;\n\n /** The appearance for all the buttons in the group. */\n @Input() appearance: MatButtonToggleAppearance;\n\n /** `name` attribute for the underlying `input` element. */\n @Input()\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n this._name = value;\n this._markButtonsForCheck();\n }\n private _name = inject(_IdGenerator).getId('mat-button-toggle-group-');\n\n /** Whether the toggle group is vertical. */\n @Input({transform: booleanAttribute}) vertical: boolean = false;\n\n /** Value of the toggle group. */\n @Input()\n get value(): any {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n\n if (this.multiple) {\n return selected.map(toggle => toggle.value);\n }\n\n return selected[0] ? selected[0].value : undefined;\n }\n set value(newValue: any) {\n this._setSelectionByValue(newValue);\n this.valueChange.emit(this.value);\n }\n\n /**\n * Event that emits whenever the value of the group changes.\n * Used to facilitate two-way data binding.\n * @docs-private\n */\n @Output() readonly valueChange = new EventEmitter<any>();\n\n /** Selected button toggles in the group. */\n get selected(): MatButtonToggle | MatButtonToggle[] {\n const selected = this._selectionModel ? this._selectionModel.selected : [];\n return this.multiple ? selected : selected[0] || null;\n }\n\n /** Whether multiple button toggles can be selected. */\n @Input({transform: booleanAttribute})\n get multiple(): boolean {\n return this._multiple;\n }\n set multiple(value: boolean) {\n this._multiple = value;\n this._markButtonsForCheck();\n }\n\n /** Whether multiple button toggle group is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n this._markButtonsForCheck();\n }\n\n /** Whether buttons in the group should be interactive while they're disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return this._disabledInteractive;\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n this._markButtonsForCheck();\n }\n\n /** The layout direction of the toggle button group. */\n get dir(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Event emitted when the group's value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n /** Whether checkmark indicator for single-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideSingleSelectionIndicator(): boolean {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value: boolean) {\n this._hideSingleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideSingleSelectionIndicator: boolean;\n\n /** Whether checkmark indicator for multiple-selection button toggle groups is hidden. */\n @Input({transform: booleanAttribute})\n get hideMultipleSelectionIndicator(): boolean {\n return this._hideMultipleSelectionIndicator;\n }\n set hideMultipleSelectionIndicator(value: boolean) {\n this._hideMultipleSelectionIndicator = value;\n this._markButtonsForCheck();\n }\n private _hideMultipleSelectionIndicator: boolean;\n\n constructor() {\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this.appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._hideSingleSelectionIndicator = defaultOptions?.hideSingleSelectionIndicator ?? false;\n this._hideMultipleSelectionIndicator = defaultOptions?.hideMultipleSelectionIndicator ?? false;\n }\n\n ngOnInit() {\n this._selectionModel = new SelectionModel<MatButtonToggle>(this.multiple, undefined, false);\n }\n\n ngAfterContentInit() {\n this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));\n if (!this.multiple) {\n this._initializeTabIndex();\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value Value to be set to the model.\n */\n writeValue(value: any) {\n this.value = value;\n this._changeDetector.markForCheck();\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void) {\n this._controlValueAccessorChangeFn = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: any) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Handle keydown event calling to single-select button toggle. */\n protected _keydown(event: KeyboardEvent) {\n if (this.multiple || this.disabled || hasModifierKey(event)) {\n return;\n }\n\n const target = event.target as HTMLButtonElement;\n const buttonId = target.id;\n const index = this._buttonToggles.toArray().findIndex(toggle => {\n return toggle.buttonId === buttonId;\n });\n\n let nextButton: MatButtonToggle | null = null;\n switch (event.keyCode) {\n case SPACE:\n case ENTER:\n nextButton = this._buttonToggles.get(index) || null;\n break;\n case UP_ARROW:\n nextButton = this._getNextButton(index, -1);\n break;\n case LEFT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? -1 : 1);\n break;\n case DOWN_ARROW:\n nextButton = this._getNextButton(index, 1);\n break;\n case RIGHT_ARROW:\n nextButton = this._getNextButton(index, this.dir === 'ltr' ? 1 : -1);\n break;\n default:\n return;\n }\n\n if (nextButton) {\n event.preventDefault();\n nextButton._onButtonClick();\n nextButton.focus();\n }\n }\n\n /** Dispatch change event with current selection and group value. */\n _emitChangeEvent(toggle: MatButtonToggle): void {\n const event = new MatButtonToggleChange(toggle, this.value);\n this._rawValue = event.value;\n this._controlValueAccessorChangeFn(event.value);\n this.change.emit(event);\n }\n\n /**\n * Syncs a button toggle's selected state with the model value.\n * @param toggle Toggle to be synced.\n * @param select Whether the toggle should be selected.\n * @param isUserInput Whether the change was a result of a user interaction.\n * @param deferEvents Whether to defer emitting the change events.\n */\n _syncButtonToggle(\n toggle: MatButtonToggle,\n select: boolean,\n isUserInput = false,\n deferEvents = false,\n ) {\n // Deselect the currently-selected toggle, if we're in single-selection\n // mode and the button being toggled isn't selected at the moment.\n if (!this.multiple && this.selected && !toggle.checked) {\n (this.selected as MatButtonToggle).checked = false;\n }\n\n if (this._selectionModel) {\n if (select) {\n this._selectionModel.select(toggle);\n } else {\n this._selectionModel.deselect(toggle);\n }\n } else {\n deferEvents = true;\n }\n\n // We need to defer in some cases in order to avoid \"changed after checked errors\", however\n // the side-effect is that we may end up updating the model value out of sequence in others\n // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.\n if (deferEvents) {\n Promise.resolve().then(() => this._updateModelValue(toggle, isUserInput));\n } else {\n this._updateModelValue(toggle, isUserInput);\n }\n }\n\n /** Checks whether a button toggle is selected. */\n _isSelected(toggle: MatButtonToggle) {\n return this._selectionModel && this._selectionModel.isSelected(toggle);\n }\n\n /** Determines whether a button toggle should be checked on init. */\n _isPrechecked(toggle: MatButtonToggle) {\n if (typeof this._rawValue === 'undefined') {\n return false;\n }\n\n if (this.multiple && Array.isArray(this._rawValue)) {\n return this._rawValue.some(value => toggle.value != null && value === toggle.value);\n }\n\n return toggle.value === this._rawValue;\n }\n\n /** Initializes the tabindex attribute using the radio pattern. */\n private _initializeTabIndex() {\n this._buttonToggles.forEach(toggle => {\n toggle.tabIndex = -1;\n });\n if (this.selected) {\n (this.selected as MatButtonToggle).tabIndex = 0;\n } else {\n for (let i = 0; i < this._buttonToggles.length; i++) {\n const toggle = this._buttonToggles.get(i)!;\n\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Obtain the subsequent toggle to which the focus shifts. */\n private _getNextButton(startIndex: number, offset: number): MatButtonToggle | null {\n const items = this._buttonToggles;\n\n for (let i = 1; i <= items.length; i++) {\n const index = (startIndex + offset * i + items.length) % items.length;\n const item = items.get(index);\n\n if (item && !item.disabled) {\n return item;\n }\n }\n\n return null;\n }\n\n /** Updates the selection state of the toggles in the group based on a value. */\n private _setSelectionByValue(value: any | any[]) {\n this._rawValue = value;\n\n if (!this._buttonToggles) {\n return;\n }\n\n const toggles = this._buttonToggles.toArray();\n\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Value must be an array in multiple-selection mode.');\n }\n\n this._clearSelection();\n value.forEach((currentValue: any) => this._selectValue(currentValue, toggles));\n } else {\n this._clearSelection();\n this._selectValue(value, toggles);\n }\n\n // In single selection mode we need at least one enabled toggle to always be focusable.\n if (!this.multiple && toggles.every(toggle => toggle.tabIndex === -1)) {\n for (const toggle of toggles) {\n if (!toggle.disabled) {\n toggle.tabIndex = 0;\n break;\n }\n }\n }\n }\n\n /** Clears the selected toggles. */\n private _clearSelection() {\n this._selectionModel.clear();\n this._buttonToggles.forEach(toggle => {\n toggle.checked = false;\n // If the button toggle is in single select mode, initialize the tabIndex.\n if (!this.multiple) {\n toggle.tabIndex = -1;\n }\n });\n }\n\n /** Selects a value if there's a toggle that corresponds to it. */\n private _selectValue(value: any, toggles: MatButtonToggle[]) {\n for (const toggle of toggles) {\n if (toggle.value === value) {\n toggle.checked = true;\n this._selectionModel.select(toggle);\n if (!this.multiple) {\n // If the button toggle is in single select mode, reset the tabIndex.\n toggle.tabIndex = 0;\n }\n break;\n }\n }\n }\n\n /** Syncs up the group's value with the model and emits the change event. */\n private _updateModelValue(toggle: MatButtonToggle, isUserInput: boolean) {\n // Only emit the change event for user input.\n if (isUserInput) {\n this._emitChangeEvent(toggle);\n }\n\n // Note: we emit this one no matter whether it was a user interaction, because\n // it is used by Angular to sync up the two-way data binding.\n this.valueChange.emit(this.value);\n }\n\n /** Marks all of the child button toggles to be checked. */\n private _markButtonsForCheck() {\n this._buttonToggles?.forEach(toggle => toggle._markForCheck());\n }\n}\n\n/** Single button inside of a toggle group. */\n@Component({\n selector: 'mat-button-toggle',\n templateUrl: 'button-toggle.html',\n styleUrl: 'button-toggle.css',\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matButtonToggle',\n host: {\n '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',\n '[class.mat-button-toggle-checked]': 'checked',\n '[class.mat-button-toggle-disabled]': 'disabled',\n '[class.mat-button-toggle-disabled-interactive]': 'disabledInteractive',\n '[class.mat-button-toggle-appearance-standard]': 'appearance === \"standard\"',\n 'class': 'mat-button-toggle',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.id]': 'id',\n '[attr.name]': 'null',\n '(focus)': 'focus()',\n 'role': 'presentation',\n },\n imports: [MatRipple, MatPseudoCheckbox],\n})\nexport class MatButtonToggle implements OnInit, AfterViewInit, OnDestroy {\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n private _idGenerator = inject(_IdGenerator);\n private _animationDisabled = _animationsDisabled();\n private _checked = false;\n\n /**\n * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n * take precedence so this may be omitted.\n */\n @Input('aria-label') ariaLabel!: string;\n\n /**\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Underlying native `button` element. */\n @ViewChild('button') _buttonElement!: ElementRef<HTMLButtonElement>;\n\n /** The parent button toggle group (exclusive selection). Optional. */\n buttonToggleGroup: MatButtonToggleGroup;\n\n /** Unique ID for the underlying `button` element. */\n get buttonId(): string {\n return `${this.id}-button`;\n }\n\n /** The unique ID for this button toggle. */\n @Input() id!: string;\n\n /** HTML's 'name' attribute used to group radios for unique selection. */\n @Input() name!: string;\n\n /** MatButtonToggleGroup reads this to assign its own value. */\n @Input() value: any;\n\n /** Tabindex of the toggle. */\n @Input()\n get tabIndex(): number | null {\n return this._tabIndex();\n }\n set tabIndex(value: number | null) {\n this._tabIndex.set(value);\n }\n private _tabIndex: WritableSignal<number | null>;\n\n /** Whether ripples are disabled on the button toggle. */\n @Input({transform: booleanAttribute}) disableRipple: boolean = false;\n\n /** The appearance style of the button. */\n @Input()\n get appearance(): MatButtonToggleAppearance {\n return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;\n }\n set appearance(value: MatButtonToggleAppearance) {\n this._appearance = value;\n }\n private _appearance: MatButtonToggleAppearance;\n\n /** Whether the button is checked. */\n @Input({transform: booleanAttribute})\n get checked(): boolean {\n return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;\n }\n set checked(value: boolean) {\n if (value !== this._checked) {\n this._checked = value;\n\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Whether the button is disabled. */\n @Input({transform: booleanAttribute})\n get disabled(): boolean {\n return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled: boolean = false;\n\n /** Whether the button should remain interactive when it is disabled. */\n @Input({transform: booleanAttribute})\n get disabledInteractive(): boolean {\n return (\n this._disabledInteractive ||\n (this.buttonToggleGroup !== null && this.buttonToggleGroup.disabledInteractive)\n );\n }\n set disabledInteractive(value: boolean) {\n this._disabledInteractive = value;\n }\n private _disabledInteractive: boolean;\n\n /** Event emitted when the group value changes. */\n @Output() readonly change: EventEmitter<MatButtonToggleChange> =\n new EventEmitter<MatButtonToggleChange>();\n\n constructor() {\n inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);\n const toggleGroup = inject<MatButtonToggleGroup>(MAT_BUTTON_TOGGLE_GROUP, {optional: true})!;\n const defaultTabIndex = inject(new HostAttributeToken('tabindex'), {optional: true}) || '';\n const defaultOptions = inject<MatButtonToggleDefaultOptions>(\n MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,\n {optional: true},\n );\n\n this._tabIndex = signal<number | null>(parseInt(defaultTabIndex) || 0);\n this.buttonToggleGroup = toggleGroup;\n this._appearance =\n defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';\n this._disabledInteractive = defaultOptions?.disabledInteractive ?? false;\n }\n\n ngOnInit() {\n const group = this.buttonToggleGroup;\n this.id = this.id || this._idGenerator.getId('mat-button-toggle-');\n\n if (group) {\n if (group._isPrechecked(this)) {\n this.checked = true;\n } else if (group._isSelected(this) !== this._checked) {\n // As side effect of the circular dependency between the toggle group and the button,\n // we may end up in a state where the button is supposed to be checked on init, but it\n // isn't, because the checked value was assigned too early. This can happen when Ivy\n // assigns the static input value before the `ngOnInit` has run.\n group._syncButtonToggle(this, this._checked);\n }\n }\n }\n\n ngAfterViewInit() {\n // This serves two purposes:\n // 1. We don't want the animation to fire on the first render for pre-checked toggles so we\n // delay adding the class until the view is rendered.\n // 2. We don't want to animate if animations are disabled.\n if (!this._animationDisabled) {\n this._elementRef.nativeElement.classList.add('mat-button-toggle-animations-enabled');\n }\n\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy() {\n const group = this.buttonToggleGroup;\n\n this._focusMonitor.stopMonitoring(this._elementRef);\n\n // Remove the toggle from the selection once it's destroyed. Needs to happen\n // on the next tick in order to avoid \"changed after checked\" errors.\n if (group && group._isSelected(this)) {\n group._syncButtonToggle(this, false, false, true);\n }\n }\n\n /** Focuses the button. */\n focus(options?: FocusOptions): void {\n this._buttonElement.nativeElement.focus(options);\n }\n\n /** Checks the button toggle due to an interaction with the underlying native button. */\n _onButtonClick() {\n if (this.disabled) {\n return;\n }\n\n const newChecked = this.isSingleSelector() ? true : !this._checked;\n\n if (newChecked !== this._checked) {\n this._checked = newChecked;\n if (this.buttonToggleGroup) {\n this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);\n this.buttonToggleGroup._onTouched();\n }\n }\n\n if (this.isSingleSelector()) {\n const focusable = this.buttonToggleGroup._buttonToggles.find(toggle => {\n return toggle.tabIndex === 0;\n });\n // Modify the tabindex attribute of the last focusable button toggle to -1.\n if (focusable) {\n focusable.tabIndex = -1;\n }\n // Modify the tabindex attribute of the presently selected button toggle to 0.\n this.tabIndex = 0;\n }\n\n // Emit a change event when it's the single selector\n this.change.emit(new MatButtonToggleChange(this, this.value));\n }\n\n /**\n * Marks the button toggle as needing checking for change detection.\n * This method is exposed because the parent button toggle group will directly\n * update bound properties of the radio button.\n */\n _markForCheck() {\n // When the group value changes, the button will not be notified.\n // Use `markForCheck` to explicit update button toggle's status.\n this._changeDetectorRef.markForCheck();\n }\n\n /** Gets the name that should be assigned to the inner DOM node. */\n _getButtonName(): string | null {\n if (this.isSingleSelector()) {\n return this.buttonToggleGroup.name;\n }\n return this.name || null;\n }\n\n /** Whether the toggle is in single selection mode. */\n isSingleSelector(): boolean {\n return this.buttonToggleGroup && !this.buttonToggleGroup.multiple;\n }\n}\n","<button #button class=\"mat-button-toggle-button mat-focus-indicator\"\n type=\"button\"\n [id]=\"buttonId\"\n [attr.role]=\"isSingleSelector() ? 'radio' : 'button'\"\n [attr.tabindex]=\"disabled && !disabledInteractive ? -1 : tabIndex\"\n [attr.aria-pressed]=\"!isSingleSelector() ? checked : null\"\n [attr.aria-checked]=\"isSingleSelector() ? checked : null\"\n [disabled]=\"(disabled && !disabledInteractive) || null\"\n [attr.name]=\"_getButtonName()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-disabled]=\"disabled && disabledInteractive ? 'true' : null\"\n (click)=\"_onButtonClick()\">\n @if (buttonToggleGroup && (\n !buttonToggleGroup.multiple && !buttonToggleGroup.hideSingleSelectionIndicator ||\n buttonToggleGroup.multiple && !buttonToggleGroup.hideMultipleSelectionIndicator)\n ) {\n <div class=\"mat-button-toggle-checkbox-wrapper\">\n <mat-pseudo-checkbox\n [disabled]=\"disabled\"\n state=\"checked\"\n aria-hidden=\"true\"\n appearance=\"minimal\"/>\n </div>\n }\n\n <span class=\"mat-button-toggle-label-content\">\n <ng-content></ng-content>\n </span>\n</button>\n\n<span class=\"mat-button-toggle-focus-overlay\"></span>\n<span class=\"mat-button-toggle-ripple\" matRipple\n [matRippleTrigger]=\"button\"\n [matRippleDisabled]=\"disableRipple || disabled\">\n</span>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatRippleModule} from '../core';\nimport {MatButtonToggle, MatButtonToggleGroup} from './button-toggle';\n\n@NgModule({\n imports: [MatRippleModule, MatButtonToggleGroup, MatButtonToggle],\n exports: [BidiModule, MatButtonToggleGroup, MatButtonToggle],\n})\nexport class MatButtonToggleModule {}\n"],"names":[],"mappings":"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"}