@angular/material
Version:
Angular Material
1 lines • 17.2 kB
Source Map (JSON)
{"version":3,"file":"progress-bar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/progress-bar/progress-bar-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 {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation,\n ElementRef,\n NgZone,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n OnDestroy,\n ChangeDetectorRef,\n InjectionToken,\n inject,\n numberAttribute,\n Renderer2,\n DOCUMENT,\n} from '@angular/core';\n\nimport {_getAnimationsState, ThemePalette} from '../core';\n\n/** Last animation end data. */\nexport interface ProgressAnimationEnd {\n value: number;\n}\n\n/** Default `mat-progress-bar` options that can be overridden. */\nexport interface MatProgressBarDefaultOptions {\n /**\n * Default theme color of the progress bar. This API is supported in M2 themes only,\n * it has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/progress-bar/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 color?: ThemePalette;\n\n /** Default mode of the progress bar. */\n mode?: ProgressBarMode;\n}\n\n/** Injection token to be used to override the default options for `mat-progress-bar`. */\nexport const MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken<MatProgressBarDefaultOptions>(\n 'MAT_PROGRESS_BAR_DEFAULT_OPTIONS',\n);\n\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nexport const MAT_PROGRESS_BAR_LOCATION = new InjectionToken<MatProgressBarLocation>(\n 'mat-progress-bar-location',\n {\n providedIn: 'root',\n factory: () => {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n },\n },\n);\n\n/**\n * Stubbed out location for `MatProgressBar`.\n * @docs-private\n */\nexport interface MatProgressBarLocation {\n getPathname: () => string;\n}\n\nexport type ProgressBarMode = 'determinate' | 'indeterminate' | 'buffer' | 'query';\n\n@Component({\n selector: 'mat-progress-bar',\n exportAs: 'matProgressBar',\n host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[attr.aria-valuenow]': '_isIndeterminate() ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-mdc-progress-bar mdc-linear-progress',\n '[class]': '\"mat-\" + color',\n '[class._mat-animation-noopable]': '_isNoopAnimation',\n '[class.mdc-linear-progress--animation-ready]': '!_isNoopAnimation',\n '[class.mdc-linear-progress--indeterminate]': '_isIndeterminate()',\n },\n templateUrl: 'progress-bar.html',\n styleUrl: 'progress-bar.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatProgressBar implements AfterViewInit, OnDestroy {\n readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _renderer = inject(Renderer2);\n private _cleanupTransitionEnd: (() => void) | undefined;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const animationsState = _getAnimationsState();\n\n const defaults = inject<MatProgressBarDefaultOptions>(MAT_PROGRESS_BAR_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n this._isNoopAnimation = animationsState === 'di-disabled';\n\n if (animationsState === 'reduced-motion') {\n this._elementRef.nativeElement.classList.add('mat-progress-bar-reduced-motion');\n }\n\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n\n this.mode = defaults.mode || this.mode;\n }\n }\n\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n _isNoopAnimation: boolean;\n\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the progress bar. 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/progress-bar/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()\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value: string | null | undefined) {\n this._color = value;\n }\n private _color: string | null | undefined;\n private _defaultColor: ThemePalette = 'primary';\n\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n @Input({transform: numberAttribute})\n get value(): number {\n return this._value;\n }\n set value(v: number) {\n this._value = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n private _value = 0;\n\n /** Buffer value of the progress bar. Defaults to zero. */\n @Input({transform: numberAttribute})\n get bufferValue(): number {\n return this._bufferValue || 0;\n }\n set bufferValue(v: number) {\n this._bufferValue = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n private _bufferValue = 0;\n\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n @Output() readonly animationEnd = new EventEmitter<ProgressAnimationEnd>();\n\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n @Input()\n get mode(): ProgressBarMode {\n return this._mode;\n }\n set mode(value: ProgressBarMode) {\n // Note that we don't technically need a getter and a setter here,\n // but we use it to match the behavior of the existing mat-progress-bar.\n this._mode = value;\n this._changeDetectorRef.markForCheck();\n }\n private _mode: ProgressBarMode = 'determinate';\n\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = this._renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._transitionendHandler,\n );\n });\n }\n\n ngOnDestroy() {\n this._cleanupTransitionEnd?.();\n }\n\n /** Gets the transform style that should be applied to the primary bar. */\n _getPrimaryBarTransform(): string {\n return `scaleX(${this._isIndeterminate() ? 1 : this.value / 100})`;\n }\n\n /** Gets the `flex-basis` value that should be applied to the buffer bar. */\n _getBufferBarFlexBasis(): string {\n return `${this.mode === 'buffer' ? this.bufferValue : 100}%`;\n }\n\n /** Returns whether the progress bar is indeterminate. */\n _isIndeterminate(): boolean {\n return this.mode === 'indeterminate' || this.mode === 'query';\n }\n\n /** Event handler for `transitionend` events. */\n private _transitionendHandler = (event: TransitionEvent) => {\n if (\n this.animationEnd.observers.length === 0 ||\n !event.target ||\n !(event.target as HTMLElement).classList.contains('mdc-linear-progress__primary-bar')\n ) {\n return;\n }\n\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({value: this.value}));\n }\n };\n}\n\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v: number, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\n}\n","<!--\n All children need to be hidden for screen readers in order to support ChromeVox.\n More context in the issue: https://github.com/angular/components/issues/22165.\n-->\n<div class=\"mdc-linear-progress__buffer\" aria-hidden=\"true\">\n <div\n class=\"mdc-linear-progress__buffer-bar\"\n [style.flex-basis]=\"_getBufferBarFlexBasis()\"></div>\n <!-- Remove the dots outside of buffer mode since they can cause CSP issues (see #28938) -->\n @if (mode === 'buffer') {\n <div class=\"mdc-linear-progress__buffer-dots\"></div>\n }\n</div>\n<div\n class=\"mdc-linear-progress__bar mdc-linear-progress__primary-bar\"\n aria-hidden=\"true\"\n [style.transform]=\"_getPrimaryBarTransform()\">\n <span class=\"mdc-linear-progress__bar-inner\"></span>\n</div>\n<div class=\"mdc-linear-progress__bar mdc-linear-progress__secondary-bar\" aria-hidden=\"true\">\n <span class=\"mdc-linear-progress__bar-inner\"></span>\n</div>\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 {BidiModule} from '@angular/cdk/bidi';\nimport {NgModule} from '@angular/core';\nimport {MatProgressBar} from './progress-bar';\n\n@NgModule({\n imports: [MatProgressBar],\n exports: [MatProgressBar, BidiModule],\n})\nexport class MatProgressBarModule {}\n"],"names":["MAT_PROGRESS_BAR_DEFAULT_OPTIONS","InjectionToken","MAT_PROGRESS_BAR_LOCATION","providedIn","factory","_document","inject","DOCUMENT","_location","location","getPathname","pathname","search","MatProgressBar","_elementRef","ElementRef","_ngZone","NgZone","_changeDetectorRef","ChangeDetectorRef","_renderer","Renderer2","_cleanupTransitionEnd","constructor","animationsState","_getAnimationsState","defaults","optional","_isNoopAnimation","nativeElement","classList","add","color","_defaultColor","mode","_color","value","_value","v","clamp","markForCheck","bufferValue","_bufferValue","animationEnd","EventEmitter","_mode","ngAfterViewInit","runOutsideAngular","listen","_transitionendHandler","ngOnDestroy","_getPrimaryBarTransform","_isIndeterminate","_getBufferBarFlexBasis","event","observers","length","target","contains","run","next","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","numberAttribute","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","exportAs","host","template","Input","transform","Output","min","max","Math","MatProgressBarModule","NgModule","ɵmod","ɵɵngDeclareNgModule","ngImport","imports","exports","BidiModule","ɵinj","ɵɵngDeclareInjector","args"],"mappings":"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"}