blob: 2bb6ca89d6744a02226b49bdecc23044190cf1e6 [file] [log] [blame]
{"version":3,"file":"material-bottom-sheet.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/material/bottom-sheet/bottom-sheet.ts","../../src/material/bottom-sheet/bottom-sheet-config.ts","../../src/material/bottom-sheet/bottom-sheet-animations.ts","../../src/material/bottom-sheet/bottom-sheet-container.ts","../../src/material/bottom-sheet/bottom-sheet-module.ts","../../src/material/bottom-sheet/bottom-sheet-ref.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\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.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Injectable,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n InjectionToken,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {of as observableOf} from 'rxjs';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetModule} from './bottom-sheet-module';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\n\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS =\n new InjectionToken<MatBottomSheetConfig>('mat-bottom-sheet-default-options');\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: MatBottomSheetModule})\nexport class MatBottomSheet implements OnDestroy {\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\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 constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n @Optional() @SkipSelf() private _parentBottomSheet: MatBottomSheet,\n @Optional() private _location?: Location,\n @Optional() @Inject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS)\n private _defaultOptions?: MatBottomSheetConfig) {}\n\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R> {\n\n const _config =\n _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const ref = new MatBottomSheetRef<T, R>(container, overlayRef, this._location);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(new TemplatePortal<T>(componentOrTemplateRef, null!, {\n $implicit: _config.data,\n bottomSheetRef: ref\n } as any));\n } else {\n const portal = new ComponentPortal(componentOrTemplateRef, undefined,\n this._createInjector(_config, ref));\n const contentRef = container.attachComponentPortal(portal);\n ref.instance = contentRef.instance;\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\n return ref;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n */\n dismiss(): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the bottom sheet container component to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef,\n config: MatBottomSheetConfig): MatBottomSheetContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatBottomSheetConfig, config]\n ]));\n\n const containerPortal =\n new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<MatBottomSheetContainer> = overlayRef.attach(containerPortal);\n return containerRef.instance;\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified bottom sheet config.\n */\n private _createOverlay(config: MatBottomSheetConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: config.hasBackdrop,\n disposeOnNavigation: config.closeOnNavigation,\n maxWidth: '100%',\n scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')\n });\n\n if (config.backdropClass) {\n overlayConfig.backdropClass = config.backdropClass;\n }\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a bottom sheet component.\n * @param config Config that was used to create the bottom sheet.\n * @param bottomSheetRef Reference to the bottom sheet.\n */\n private _createInjector<T>(config: MatBottomSheetConfig,\n bottomSheetRef: MatBottomSheetRef<T>): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens = new WeakMap<any, any>([\n [MatBottomSheetRef, bottomSheetRef],\n [MAT_BOTTOM_SHEET_DATA, config.data]\n ]);\n\n if (config.direction &&\n (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\n });\n }\n\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n}\n\n/**\n * Applies default options to the bottom sheet config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(defaults: MatBottomSheetConfig,\n config?: MatBottomSheetConfig): MatBottomSheetConfig {\n return {...defaults, ...config};\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.io/license\n */\n\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {InjectionToken, ViewContainerRef} from '@angular/core';\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 /** Extra CSS classes to be added to the bottom sheet container. */\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 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 // Note that this is disabled by default, because while the a11y recommendations are to focus\n // the first focusable element, doing so prevents screen readers from reading out the\n // rest of the bottom sheet content.\n /** Whether the bottom sheet should focus the first focusable element on open. */\n autoFocus?: boolean = false;\n\n /**\n * Whether the bottom sheet should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the bottom sheet. */\n scrollStrategy?: ScrollStrategy;\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.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\n/** Animations used by the Material bottom sheet. */\nexport const matBottomSheetAnimations: {\n readonly bottomSheetState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a bottom sheet. */\n bottomSheetState: trigger('state', [\n state('void, hidden', style({transform: 'translateY(100%)'})),\n state('visible', style({transform: 'translateY(0%)'})),\n transition('visible => void, visible => hidden',\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`)),\n transition('void => visible',\n animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`)),\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.io/license\n */\n\nimport {\n Component,\n ComponentRef,\n EmbeddedViewRef,\n ViewChild,\n OnDestroy,\n ElementRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n EventEmitter,\n Inject,\n Optional,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n TemplatePortal,\n CdkPortalOutlet,\n} from '@angular/cdk/portal';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {matBottomSheetAnimations} from './bottom-sheet-animations';\nimport {Subscription} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\n\n// TODO(crisbeto): consolidate some logic between this, MatDialog and MatSnackBar\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrls: ['bottom-sheet-container.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matBottomSheetAnimations.bottomSheetState],\n host: {\n 'class': 'mat-bottom-sheet-container',\n 'tabindex': '-1',\n 'role': 'dialog',\n 'aria-modal': 'true',\n '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',\n '[@state]': '_animationState',\n '(@state.start)': '_onAnimationStart($event)',\n '(@state.done)': '_onAnimationDone($event)'\n },\n})\nexport class MatBottomSheetContainer extends BasePortalOutlet implements OnDestroy {\n private _breakpointSubscription: Subscription;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\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<AnimationEvent>();\n\n /** The class that traps and manages focus within the bottom sheet. */\n private _focusTrap: FocusTrap;\n\n /** Element that was focused before the bottom sheet was opened. */\n private _elementFocusedBeforeOpened: HTMLElement | null = null;\n\n /** Server-side rendering-compatible reference to the global document object. */\n private _document: Document;\n\n /** Whether the component has been destroyed. */\n private _destroyed: boolean;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusTrapFactory: FocusTrapFactory,\n breakpointObserver: BreakpointObserver,\n @Optional() @Inject(DOCUMENT) document: any,\n /** The bottom sheet configuration. */\n public bottomSheetConfig: MatBottomSheetConfig) {\n super();\n\n this._document = document;\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n this._toggleClass('mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium));\n this._toggleClass('mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large));\n this._toggleClass('mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge));\n });\n }\n\n /** Attach a component portal as content to this bottom sheet container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this bottom sheet container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachTemplatePortal(portal);\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.detectChanges();\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'hidden') {\n this._restoreFocus();\n } else if (event.toState === 'visible') {\n this._trapFocus();\n }\n\n this._animationStateChanged.emit(event);\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._animationStateChanged.emit(event);\n }\n\n private _toggleClass(cssClass: string, add: boolean) {\n const classList = this._elementRef.nativeElement.classList;\n add ? classList.add(cssClass) : classList.remove(cssClass);\n }\n\n private _validatePortalAttached() {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach bottom sheet content after content is already attached');\n }\n }\n\n private _setPanelClass() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClass = this.bottomSheetConfig.panelClass;\n\n if (Array.isArray(panelClass)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClass.forEach(cssClass => element.classList.add(cssClass));\n } else if (panelClass) {\n element.classList.add(panelClass);\n }\n }\n\n\n /** Moves the focus inside the focus trap. */\n private _trapFocus() {\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n if (this.bottomSheetConfig.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n }\n }\n\n /** Restores focus to the element that was focused before the bottom sheet was opened. */\n private _restoreFocus() {\n const toFocus = this._elementFocusedBeforeOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Saves a reference to the element that was focused before the bottom sheet was opened. */\n private _savePreviouslyFocusedElement() {\n this._elementFocusedBeforeOpened = this._document.activeElement as HTMLElement;\n\n // The `focus` method isn't available during server-side rendering.\n if (this._elementRef.nativeElement.focus) {\n Promise.resolve().then(() => this._elementRef.nativeElement.focus());\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.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n MatCommonModule,\n PortalModule,\n ],\n exports: [MatBottomSheetContainer, MatCommonModule],\n declarations: [MatBottomSheetContainer],\n entryComponents: [MatBottomSheetContainer],\n})\nexport class MatBottomSheetModule {}\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.io/license\n */\n\nimport {Location} from '@angular/common';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\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 instance: T;\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 been dismissed. */\n private readonly _afterDismissed = new Subject<R | 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: number;\n\n constructor(\n containerInstance: MatBottomSheetContainer,\n private _overlayRef: OverlayRef,\n // @breaking-change 8.0.0 `_location` parameter to be removed.\n _location?: Location) {\n this.containerInstance = containerInstance;\n this.disableClose = containerInstance.bottomSheetConfig.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === '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(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n _overlayRef.dispose();\n });\n\n _overlayRef.detachments().pipe(take(1)).subscribe(() => {\n this._afterDismissed.next(this._result);\n this._afterDismissed.complete();\n });\n\n merge(\n _overlayRef.backdropClick(),\n _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))\n ).subscribe(event => {\n if (!this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))) {\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._afterDismissed.closed) {\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'start'),\n take(1)\n ).subscribe(event => {\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(() => {\n this._overlayRef.dispose();\n }, event.totalTime + 100);\n\n this._overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._afterDismissed.asObservable();\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.asObservable();\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._overlayRef.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._overlayRef.keydownEvents();\n }\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","_applyConfigDefaults","defaults","config","tslib_1.__assign","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__assign","assign","t","s","i","n","arguments","length","call","apply","MAT_BOTTOM_SHEET_DATA","InjectionToken","MatBottomSheetConfig","data","hasBackdrop","disableClose","ariaLabel","closeOnNavigation","autoFocus","restoreFocus","matBottomSheetAnimations","bottomSheetState","trigger","state","style","transform","transition","animate","AnimationDurations","COMPLEX","AnimationCurves","ACCELERATION_CURVE","EXITING","DECELERATION_CURVE","MatBottomSheetContainer","_super","_elementRef","_changeDetectorRef","_focusTrapFactory","breakpointObserver","document","bottomSheetConfig","_this","_animationState","_animationStateChanged","EventEmitter","_elementFocusedBeforeOpened","_document","_breakpointSubscription","observe","Breakpoints","Medium","Large","XLarge","subscribe","_toggleClass","isMatched","tslib_1.__extends","attachComponentPortal","portal","_validatePortalAttached","_setPanelClass","_savePreviouslyFocusedElement","_portalOutlet","attachTemplatePortal","enter","_destroyed","detectChanges","exit","markForCheck","ngOnDestroy","unsubscribe","_onAnimationDone","event","toState","_restoreFocus","_trapFocus","emit","_onAnimationStart","cssClass","add","classList","nativeElement","remove","hasAttached","Error","element","panelClass","isArray","forEach","_focusTrap","focusInitialElementWhenReady","toFocus","focus","destroy","Promise","resolve","then","type","Component","args","selector","template","styles","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","animations","host","class","tabindex","role","aria-modal","[attr.aria-label]","[@state]","(@state.start)","(@state.done)","FocusTrapFactory","BreakpointObserver","undefined","decorators","Optional","Inject","DOCUMENT","propDecorators","MatBottomSheetModule","NgModule","imports","CommonModule","OverlayModule","MatCommonModule","PortalModule","exports","declarations","entryComponents","MatBottomSheetRef","containerInstance","_overlayRef","_location","_afterDismissed","Subject","_afterOpened","pipe","filter","phaseName","take","next","complete","clearTimeout","_closeFallbackTimeout","dispose","detachments","_result","merge","backdropClick","keydownEvents","keyCode","ESCAPE","hasModifierKey","preventDefault","dismiss","result","closed","setTimeout","totalTime","detachBackdrop","afterDismissed","asObservable","afterOpened","MAT_BOTTOM_SHEET_DEFAULT_OPTIONS","MatBottomSheet","_overlay","_injector","_parentBottomSheet","_defaultOptions","_bottomSheetRefAtThisLevel","defineProperty","parent","_openedBottomSheetRef","value","open","componentOrTemplateRef","_config","overlayRef","_createOverlay","container","_attachContainer","ref","TemplateRef","TemplatePortal","$implicit","bottomSheetRef","ComponentPortal","_createInjector","contentRef","instance","userInjector","viewContainerRef","injector","PortalInjector","WeakMap","containerPortal","attach","overlayConfig","OverlayConfig","direction","disposeOnNavigation","maxWidth","scrollStrategy","scrollStrategies","block","positionStrategy","position","global","centerHorizontally","bottom","backdropClass","injectionTokens","get","Directionality","set","change","observableOf","Injectable","providedIn","Overlay","Injector","SkipSelf","Location"],"mappings":"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"}