@angular/material
Version:
Angular Material
1 lines • 30.9 kB
Source Map (JSON)
{"version":3,"file":"bottom-sheet.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/bottom-sheet/bottom-sheet-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 {CdkDialogContainer} from '@angular/cdk/dialog';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {CdkPortalOutlet} from '@angular/cdk/portal';\nimport {_animationsDisabled} from '../core';\n\nconst ENTER_ANIMATION = '_mat-bottom-sheet-enter';\nconst EXIT_ANIMATION = '_mat-bottom-sheet-exit';\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrl: 'bottom-sheet-container.css',\n // In Ivy embedded views will be change detected from their declaration place, rather than where\n // they were stamped out. This means that we can't have the bottom sheet container be OnPush,\n // because it might cause the sheets that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'mat-bottom-sheet-container',\n '[class.mat-bottom-sheet-container-animations-enabled]': '!_animationsDisabled',\n '[class.mat-bottom-sheet-container-enter]': '_animationState === \"visible\"',\n '[class.mat-bottom-sheet-container-exit]': '_animationState === \"hidden\"',\n 'tabindex': '-1',\n '[attr.role]': '_config.role',\n '[attr.aria-modal]': '_config.ariaModal',\n '[attr.aria-label]': '_config.ariaLabel',\n '(animationstart)': '_handleAnimationEvent(true, $event.animationName, $event.target)',\n '(animationend)': '_handleAnimationEvent(false, $event.animationName, $event.target)',\n '(animationcancel)': '_handleAnimationEvent(false, $event.animationName, $event.target)',\n },\n imports: [CdkPortalOutlet],\n})\nexport class MatBottomSheetContainer extends CdkDialogContainer implements OnDestroy {\n private _breakpointSubscription: Subscription;\n protected _animationsDisabled = _animationsDisabled();\n\n /** The state of the bottom sheet animations. */\n _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n /** Emits whenever the state of the animation changes. */\n _animationStateChanged = new EventEmitter<{\n toState: 'visible' | 'hidden';\n phase: 'start' | 'done';\n }>();\n\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n constructor() {\n super();\n\n const breakpointObserver = inject(BreakpointObserver);\n\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n const classList = (this._elementRef.nativeElement as HTMLElement).classList;\n\n classList.toggle(\n 'mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium),\n );\n classList.toggle(\n 'mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large),\n );\n classList.toggle(\n 'mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge),\n );\n });\n }\n\n /** Begin animation of bottom sheet entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.markForCheck();\n this._changeDetectorRef.detectChanges();\n if (this._animationsDisabled) {\n this._simulateAnimation(ENTER_ANIMATION);\n }\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n if (this._animationsDisabled) {\n this._simulateAnimation(EXIT_ANIMATION);\n }\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n private _simulateAnimation(name: typeof ENTER_ANIMATION | typeof EXIT_ANIMATION) {\n this._ngZone.run(() => {\n this._handleAnimationEvent(true, name, this._elementRef.nativeElement);\n setTimeout(() => this._handleAnimationEvent(false, name, this._elementRef.nativeElement));\n });\n }\n\n protected override _trapFocus(): void {\n // The bottom sheet starts off-screen and animates in, and at the same time we trap focus\n // within it. With some styles this appears to cause the page to jump around. See:\n // https://github.com/angular/components/issues/30774. Preventing the browser from\n // scrolling resolves the issue and isn't really necessary since the bottom sheet\n // normally isn't scrollable.\n super._trapFocus({preventScroll: true});\n }\n\n protected _handleAnimationEvent(\n isStart: boolean,\n animationName: string,\n target: EventTarget | null,\n ) {\n if (target === this._elementRef.nativeElement) {\n const isEnter = animationName === ENTER_ANIMATION;\n const isExit = animationName === EXIT_ANIMATION;\n\n if (isEnter || isExit) {\n this._animationStateChanged.emit({\n toState: isEnter ? 'visible' : 'hidden',\n phase: isStart ? 'start' : 'done',\n });\n }\n }\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>\r\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 {Binding, InjectionToken, Injector, ViewContainerRef} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {RestoreFocusValue} from '@angular/cdk/dialog';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n /** The view container to place the overlay for the bottom sheet into. */\n viewContainerRef?: ViewContainerRef;\n\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector?: Injector;\n\n /** Extra CSS classes to be added to the overlay panel containing the bottom sheet. */\n panelClass?: string | string[];\n\n /** Text layout direction for the bottom sheet. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Whether the bottom sheet has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n disableClose?: boolean = false;\n\n /** Aria label to assign to the bottom sheet element. */\n ariaLabel?: string | null = null;\n\n /**\n * Whether this is a modal dialog. Used to set the `aria-modal` attribute. Off by default,\n * because it can interfere with other overlay-based components (e.g. `mat-select`) and because\n * it is redundant since the dialog marks all outside content as `aria-hidden` anyway.\n */\n ariaModal?: boolean = false;\n\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /**\n * Where the bottom sheet should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\n\n /** Configures the focus restoration behavior. See `RestoreFocusValue` for more information. */\n restoreFocus?: RestoreFocusValue = true;\n\n /** Scroll strategy to be used for the bottom sheet. */\n scrollStrategy?: ScrollStrategy;\n\n /** Height for the bottom sheet. */\n height?: string = '';\n\n /** Minimum height for the bottom sheet. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Maximum height for the bottom sheet. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /**\n * Bindings to apply to the component rendered inside the dialog.\n * Does nothing for template-based dialogs.\n */\n bindings?: Binding[];\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 {ComponentRef} from '@angular/core';\nimport {DialogRef} from '@angular/cdk/dialog';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n /** Instance of the component making up the content of the bottom sheet. */\n get instance(): T {\n return this._ref.componentInstance!;\n }\n\n /**\n * `ComponentRef` of the component opened into the bottom sheet. Will be\n * null when the bottom sheet is opened using a `TemplateRef`.\n */\n get componentRef(): ComponentRef<T> | null {\n return this._ref.componentRef;\n }\n\n /**\n * Instance of the component into which the bottom sheet content is projected.\n * @docs-private\n */\n containerInstance: MatBottomSheetContainer;\n\n /** Whether the user is allowed to close the bottom sheet. */\n disableClose: boolean | undefined;\n\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: ReturnType<typeof setTimeout> | undefined;\n\n constructor(\n private _ref: DialogRef<R, T>,\n config: MatBottomSheetConfig,\n containerInstance: MatBottomSheetContainer,\n ) {\n this.containerInstance = containerInstance;\n this.disableClose = config.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'done' && event.toState === 'visible'),\n take(1),\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'done' && event.toState === 'hidden'),\n take(1),\n )\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._ref.close(this._result);\n });\n\n _ref.overlayRef.detachments().subscribe(() => {\n this._ref.close(this._result);\n });\n\n merge(\n this.backdropClick(),\n this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE)),\n ).subscribe(event => {\n if (\n !this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))\n ) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result?: R): void {\n if (!this.containerInstance) {\n return;\n }\n\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged\n .pipe(\n filter(event => event.phase === 'start'),\n take(1),\n )\n .subscribe(() => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => this._ref.close(this._result), 500);\n this._ref.overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n this.containerInstance = null!;\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._ref.closed;\n }\n\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._ref.backdropClick;\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._ref.keydownEvents;\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 {Dialog} from '@angular/cdk/dialog';\nimport {createBlockScrollStrategy, createGlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentType} from '@angular/cdk/portal';\nimport {Service, TemplateRef, InjectionToken, OnDestroy, inject, Injector} from '@angular/core';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken<MatBottomSheetConfig>(\n 'mat-bottom-sheet-default-options',\n);\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Service()\nexport class MatBottomSheet implements OnDestroy {\n private _injector = inject(Injector);\n private _parentBottomSheet = inject(MatBottomSheet, {optional: true, skipSelf: true});\n private _animationsDisabled = _animationsDisabled();\n private _defaultOptions = inject<MatBottomSheetConfig>(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS, {\n optional: true,\n });\n\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n private _dialog = inject(Dialog);\n\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n\n set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n } else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n\n /**\n * Opens a bottom sheet containing the given component.\n * @param component Type of the component to load into the bottom sheet.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened bottom sheet.\n */\n open<T, D = any, R = any>(\n component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R>;\n\n /**\n * Opens a bottom sheet containing the given template.\n * @param template TemplateRef to instantiate as the bottom sheet content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened bottom sheet.\n */\n open<T, D = any, R = any>(\n template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>,\n ): MatBottomSheetRef<T, R> {\n const _config = {...(this._defaultOptions || new MatBottomSheetConfig()), ...config};\n let ref: MatBottomSheetRef<T, R>;\n\n this._dialog.open<R, D, T>(componentOrTemplateRef, {\n ..._config,\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on detachments so that we can sync up the animation.\n closeOnOverlayDetachments: false,\n maxWidth: '100%',\n container: MatBottomSheetContainer,\n scrollStrategy: _config.scrollStrategy || createBlockScrollStrategy(this._injector),\n positionStrategy: createGlobalPositionStrategy(this._injector)\n .centerHorizontally()\n .bottom('0'),\n disableAnimations: this._animationsDisabled,\n templateContext: () => ({bottomSheetRef: ref}),\n providers: (cdkRef, _cdkConfig, container) => {\n ref = new MatBottomSheetRef(cdkRef, _config, container as MatBottomSheetContainer);\n return [\n {provide: MatBottomSheetRef, useValue: ref},\n {provide: MAT_BOTTOM_SHEET_DATA, useValue: _config.data},\n ];\n },\n });\n\n // When the bottom sheet is dismissed, clear the reference to it.\n ref!.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef === ref) {\n this._openedBottomSheetRef = null;\n }\n });\n\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance?.enter());\n this._openedBottomSheetRef.dismiss();\n } else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref!.containerInstance.enter();\n }\n\n this._openedBottomSheetRef = ref!;\n return ref!;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n * @param result Data to pass to the bottom sheet instance.\n */\n dismiss<R = any>(result?: R): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss(result);\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\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 {DialogModule} from '@angular/cdk/dialog';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheet} from './bottom-sheet';\n\n@NgModule({\n imports: [DialogModule, PortalModule, MatBottomSheetContainer],\n exports: [MatBottomSheetContainer, BidiModule],\n providers: [MatBottomSheet],\n})\nexport class MatBottomSheetModule {}\n"],"names":[],"mappings":"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"}