blob: 8215a37ad60e7e9971fb9a49c6eb74f731ce33b0 [file] [log] [blame]
{"version":3,"file":"material-expansion.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/material/expansion/accordion-base.ts","../../src/material/expansion/expansion-animations.ts","../../src/material/expansion/expansion-panel-content.ts","../../src/material/expansion/expansion-panel.ts","../../src/material/expansion/expansion-panel-header.ts","../../src/material/expansion/accordion.ts","../../src/material/expansion/expansion-module.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 {InjectionToken} from '@angular/core';\nimport {CdkAccordion} from '@angular/cdk/accordion';\n\n/** MatAccordion's display modes. */\nexport type MatAccordionDisplayMode = 'default' | 'flat';\n\n/** MatAccordion's toggle positions. */\nexport type MatAccordionTogglePosition = 'before' | 'after';\n\n/**\n * Base interface for a `MatAccordion`.\n * @docs-private\n */\nexport interface MatAccordionBase extends CdkAccordion {\n /** Whether the expansion indicator should be hidden. */\n hideToggle: boolean;\n\n /** Display mode used for all expansion panels in the accordion. */\n displayMode: MatAccordionDisplayMode;\n\n /** The position of the expansion indicator. */\n togglePosition: MatAccordionTogglePosition;\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown: (event: KeyboardEvent) => void;\n\n /** Handles focus events on the panel headers. */\n _handleHeaderFocus: (header: any) => void;\n}\n\n\n/**\n * Token used to provide a `MatAccordion` to `MatExpansionPanel`.\n * Used primarily to avoid circular imports between `MatAccordion` and `MatExpansionPanel`.\n */\nexport const MAT_ACCORDION = new InjectionToken<MatAccordionBase>('MAT_ACCORDION');\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 animateChild,\n group,\n state,\n style,\n transition,\n trigger,\n query,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/** Time and timing curve for expansion panel animations. */\nexport const EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';\n\n/**\n * Animations used by the Material expansion panel.\n *\n * A bug in angular animation's `state` when ViewContainers are moved using ViewContainerRef.move()\n * causes the animation state of moved components to become `void` upon exit, and not update again\n * upon reentry into the DOM. This can lead a to situation for the expansion panel where the state\n * of the panel is `expanded` or `collapsed` but the animation state is `void`.\n *\n * To correctly handle animating to the next state, we animate between `void` and `collapsed` which\n * are defined to have the same styles. Since angular animates from the current styles to the\n * destination state's style definition, in situations where we are moving from `void`'s styles to\n * `collapsed` this acts a noop since no style values change.\n *\n * In the case where angular's animation state is out of sync with the expansion panel's state, the\n * expansion panel being `expanded` and angular animations being `void`, the animation from the\n * `expanded`'s effective styles (though in a `void` animation state) to the collapsed state will\n * occur as expected.\n *\n * Angular Bug: https://github.com/angular/angular/issues/18847\n *\n * @docs-private\n */\nexport const matExpansionAnimations: {\n readonly indicatorRotate: AnimationTriggerMetadata;\n readonly expansionHeaderHeight: AnimationTriggerMetadata;\n readonly bodyExpansion: AnimationTriggerMetadata;\n} = {\n /** Animation that rotates the indicator arrow. */\n indicatorRotate: trigger('indicatorRotate', [\n state('collapsed, void', style({transform: 'rotate(0deg)'})),\n state('expanded', style({transform: 'rotate(180deg)'})),\n transition('expanded <=> collapsed, void => collapsed',\n animate(EXPANSION_PANEL_ANIMATION_TIMING)),\n ]),\n\n /** Animation that expands and collapses the panel header height. */\n expansionHeaderHeight: trigger('expansionHeight', [\n state('collapsed, void', style({\n height: '{{collapsedHeight}}',\n }), {\n params: {collapsedHeight: '48px'},\n }),\n state('expanded', style({\n height: '{{expandedHeight}}'\n }), {\n params: {expandedHeight: '64px'}\n }),\n transition('expanded <=> collapsed, void => collapsed', group([\n query('@indicatorRotate', animateChild(), {optional: true}),\n animate(EXPANSION_PANEL_ANIMATION_TIMING),\n ])),\n ]),\n\n /** Animation that expands and collapses the panel content. */\n bodyExpansion: trigger('bodyExpansion', [\n state('collapsed, void', style({height: '0px', visibility: 'hidden'})),\n state('expanded', style({height: '*', visibility: 'visible'})),\n transition('expanded <=> collapsed, void => collapsed',\n animate(EXPANSION_PANEL_ANIMATION_TIMING)),\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 {Directive, TemplateRef} from '@angular/core';\n\n/**\n * Expansion panel content that will be rendered lazily\n * after the panel is opened for the first time.\n */\n@Directive({\n selector: 'ng-template[matExpansionPanelContent]'\n})\nexport class MatExpansionPanelContent {\n constructor(public _template: TemplateRef<any>) {}\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 {AnimationEvent} from '@angular/animations';\nimport {CdkAccordionItem} from '@angular/cdk/accordion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {UniqueSelectionDispatcher} from '@angular/cdk/collections';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n EventEmitter,\n ElementRef,\n Input,\n Inject,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n SkipSelf,\n ViewContainerRef,\n ViewEncapsulation,\n ViewChild,\n InjectionToken,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {Subject} from 'rxjs';\nimport {filter, startWith, take, distinctUntilChanged} from 'rxjs/operators';\nimport {matExpansionAnimations} from './expansion-animations';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {MAT_ACCORDION, MatAccordionBase, MatAccordionTogglePosition} from './accordion-base';\n\n/** MatExpansionPanel's states. */\nexport type MatExpansionPanelState = 'expanded' | 'collapsed';\n\n/** Counter for generating unique element ids. */\nlet uniqueId = 0;\n\n/**\n * Object that can be used to override the default options\n * for all of the expansion panels in a module.\n */\nexport interface MatExpansionPanelDefaultOptions {\n /** Height of the header while the panel is expanded. */\n expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n collapsedHeight: string;\n\n /** Whether the toggle indicator should be hidden. */\n hideToggle: boolean;\n}\n\n/**\n * Injection token that can be used to configure the defalt\n * options for the expansion panel component.\n */\nexport const MAT_EXPANSION_PANEL_DEFAULT_OPTIONS =\n new InjectionToken<MatExpansionPanelDefaultOptions>('MAT_EXPANSION_PANEL_DEFAULT_OPTIONS');\n\n/**\n * `<mat-expansion-panel>`\n *\n * This component can be used as a single element to show expandable content, or as one of\n * multiple children of an element with the MatAccordion directive attached.\n */\n@Component({\n moduleId: module.id,\n styleUrls: ['./expansion-panel.css'],\n selector: 'mat-expansion-panel',\n exportAs: 'matExpansionPanel',\n templateUrl: './expansion-panel.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['disabled', 'expanded'],\n outputs: ['opened', 'closed', 'expandedChange'],\n animations: [matExpansionAnimations.bodyExpansion],\n providers: [\n // Provide MatAccordion as undefined to prevent nested expansion panels from registering\n // to the same accordion.\n {provide: MAT_ACCORDION, useValue: undefined},\n ],\n host: {\n 'class': 'mat-expansion-panel',\n '[class.mat-expanded]': 'expanded',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n '[class.mat-expansion-panel-spacing]': '_hasSpacing()',\n }\n})\nexport class MatExpansionPanel extends CdkAccordionItem implements AfterContentInit, OnChanges,\n OnDestroy {\n private _document: Document;\n private _hideToggle = false;\n private _togglePosition: MatAccordionTogglePosition;\n\n /** Whether the toggle indicator should be hidden. */\n @Input()\n get hideToggle(): boolean {\n return this._hideToggle || (this.accordion && this.accordion.hideToggle);\n }\n set hideToggle(value: boolean) {\n this._hideToggle = coerceBooleanProperty(value);\n }\n\n /** Whether the toggle indicator should be hidden. */\n @Input()\n get togglePosition(): MatAccordionTogglePosition {\n return this._togglePosition || (this.accordion && this.accordion.togglePosition);\n }\n set togglePosition(value: MatAccordionTogglePosition) {\n this._togglePosition = value;\n }\n\n /** An event emitted after the body's expansion animation happens. */\n @Output() afterExpand = new EventEmitter<void>();\n\n /** An event emitted after the body's collapse animation happens. */\n @Output() afterCollapse = new EventEmitter<void>();\n\n /** Stream that emits for changes in `@Input` properties. */\n readonly _inputChanges = new Subject<SimpleChanges>();\n\n /** Optionally defined accordion the expansion panel belongs to. */\n accordion: MatAccordionBase;\n\n /** Content that will be rendered lazily. */\n @ContentChild(MatExpansionPanelContent, {static: false}) _lazyContent: MatExpansionPanelContent;\n\n /** Element containing the panel's user-provided content. */\n @ViewChild('body', {static: false}) _body: ElementRef<HTMLElement>;\n\n /** Portal holding the user's content. */\n _portal: TemplatePortal;\n\n /** ID for the associated header element. Used for a11y labelling. */\n _headerId = `mat-expansion-panel-header-${uniqueId++}`;\n\n /** Stream of body animation done events. */\n _bodyAnimationDone = new Subject<AnimationEvent>();\n\n constructor(@Optional() @SkipSelf() @Inject(MAT_ACCORDION) accordion: MatAccordionBase,\n _changeDetectorRef: ChangeDetectorRef,\n _uniqueSelectionDispatcher: UniqueSelectionDispatcher,\n private _viewContainerRef: ViewContainerRef,\n @Inject(DOCUMENT) _document: any,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode: string,\n @Inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS) @Optional()\n defaultOptions?: MatExpansionPanelDefaultOptions) {\n super(accordion, _changeDetectorRef, _uniqueSelectionDispatcher);\n this.accordion = accordion;\n this._document = _document;\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._bodyAnimationDone.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe(event => {\n if (event.fromState !== 'void') {\n if (event.toState === 'expanded') {\n this.afterExpand.emit();\n } else if (event.toState === 'collapsed') {\n this.afterCollapse.emit();\n }\n }\n });\n\n if (defaultOptions) {\n this.hideToggle = defaultOptions.hideToggle;\n }\n }\n\n /** Determines whether the expansion panel should have spacing between it and its siblings. */\n _hasSpacing(): boolean {\n if (this.accordion) {\n // We don't need to subscribe to the `stateChanges` of the parent accordion because each time\n // the [displayMode] input changes, the change detection will also cover the host bindings\n // of this expansion panel.\n return (this.expanded ? this.accordion.displayMode : this._getExpandedState()) === 'default';\n }\n return false;\n }\n\n /** Gets the expanded state string. */\n _getExpandedState(): MatExpansionPanelState {\n return this.expanded ? 'expanded' : 'collapsed';\n }\n\n ngAfterContentInit() {\n if (this._lazyContent) {\n // Render the content as soon as the panel becomes open.\n this.opened.pipe(\n startWith(null!),\n filter(() => this.expanded && !this._portal),\n take(1)\n ).subscribe(() => {\n this._portal = new TemplatePortal(this._lazyContent._template, this._viewContainerRef);\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this._inputChanges.next(changes);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this._bodyAnimationDone.complete();\n this._inputChanges.complete();\n }\n\n /** Checks whether the expansion panel's content contains the currently-focused element. */\n _containsFocus(): boolean {\n if (this._body) {\n const focusedElement = this._document.activeElement;\n const bodyElement = this._body.nativeElement;\n return focusedElement === bodyElement || bodyElement.contains(focusedElement);\n }\n\n return false;\n }\n}\n\n@Directive({\n selector: 'mat-action-row',\n host: {\n class: 'mat-action-row'\n }\n})\nexport class MatExpansionPanelActionRow {}\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 {FocusMonitor, FocusableOption, FocusOrigin} from '@angular/cdk/a11y';\nimport {ENTER, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n ElementRef,\n Host,\n Input,\n OnDestroy,\n ViewEncapsulation,\n Optional,\n Inject,\n} from '@angular/core';\nimport {merge, Subscription, EMPTY} from 'rxjs';\nimport {filter} from 'rxjs/operators';\nimport {matExpansionAnimations} from './expansion-animations';\nimport {\n MatExpansionPanel,\n MatExpansionPanelDefaultOptions,\n MAT_EXPANSION_PANEL_DEFAULT_OPTIONS,\n} from './expansion-panel';\nimport {MatAccordionTogglePosition} from './accordion-base';\n\n\n/**\n * `<mat-expansion-panel-header>`\n *\n * This component corresponds to the header element of an `<mat-expansion-panel>`.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-expansion-panel-header',\n styleUrls: ['./expansion-panel-header.css'],\n templateUrl: './expansion-panel-header.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n matExpansionAnimations.indicatorRotate,\n matExpansionAnimations.expansionHeaderHeight\n ],\n host: {\n 'class': 'mat-expansion-panel-header',\n 'role': 'button',\n '[attr.id]': 'panel._headerId',\n '[attr.tabindex]': 'disabled ? -1 : 0',\n '[attr.aria-controls]': '_getPanelId()',\n '[attr.aria-expanded]': '_isExpanded()',\n '[attr.aria-disabled]': 'panel.disabled',\n '[class.mat-expanded]': '_isExpanded()',\n '[class.mat-expansion-toggle-indicator-after]': `_getTogglePosition() === 'after'`,\n '[class.mat-expansion-toggle-indicator-before]': `_getTogglePosition() === 'before'`,\n '(click)': '_toggle()',\n '(keydown)': '_keydown($event)',\n '[@.disabled]': '_animationsDisabled',\n '(@expansionHeight.start)': '_animationStarted()',\n '[@expansionHeight]': `{\n value: _getExpandedState(),\n params: {\n collapsedHeight: collapsedHeight,\n expandedHeight: expandedHeight\n }\n }`,\n },\n})\nexport class MatExpansionPanelHeader implements OnDestroy, FocusableOption {\n private _parentChangeSubscription = Subscription.EMPTY;\n\n /** Whether Angular animations in the panel header should be disabled. */\n _animationsDisabled = true;\n\n constructor(\n @Host() public panel: MatExpansionPanel,\n private _element: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_EXPANSION_PANEL_DEFAULT_OPTIONS) @Optional()\n defaultOptions?: MatExpansionPanelDefaultOptions) {\n const accordionHideToggleChange = panel.accordion ?\n panel.accordion._stateChanges.pipe(\n filter(changes => !!(changes['hideToggle'] || changes['togglePosition']))) :\n EMPTY;\n\n // Since the toggle state depends on an @Input on the panel, we\n // need to subscribe and trigger change detection manually.\n this._parentChangeSubscription =\n merge(\n panel.opened, panel.closed, accordionHideToggleChange,\n panel._inputChanges.pipe(filter(\n changes => {\n return !!(\n changes['hideToggle'] ||\n changes['disabled'] ||\n changes['togglePosition']);\n })))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n\n // Avoids focus being lost if the panel contained the focused element and was closed.\n panel.closed\n .pipe(filter(() => panel._containsFocus()))\n .subscribe(() => _focusMonitor.focusVia(_element, 'program'));\n\n _focusMonitor.monitor(_element).subscribe(origin => {\n if (origin && panel.accordion) {\n panel.accordion._handleHeaderFocus(this);\n }\n });\n\n if (defaultOptions) {\n this.expandedHeight = defaultOptions.expandedHeight;\n this.collapsedHeight = defaultOptions.collapsedHeight;\n }\n }\n\n _animationStarted() {\n // Currently the `expansionHeight` animation has a `void => collapsed` transition which is\n // there to work around a bug in Angular (see #13088), however this introduces a different\n // issue. The new transition will cause the header to animate in on init (see #16067), if the\n // consumer has set a header height that is different from the default one. We work around it\n // by disabling animations on the header and re-enabling them after the first animation has run.\n // Note that Angular dispatches animation events even if animations are disabled. Ideally this\n // wouldn't be necessary if we remove the `void => collapsed` transition, but we have to wait\n // for https://github.com/angular/angular/issues/18847 to be resolved.\n this._animationsDisabled = false;\n }\n\n /** Height of the header while the panel is expanded. */\n @Input() expandedHeight: string;\n\n /** Height of the header while the panel is collapsed. */\n @Input() collapsedHeight: string;\n\n /**\n * Whether the associated panel is disabled. Implemented as a part of `FocusableOption`.\n * @docs-private\n */\n get disabled() {\n return this.panel.disabled;\n }\n\n /** Toggles the expanded state of the panel. */\n _toggle(): void {\n this.panel.toggle();\n }\n\n /** Gets whether the panel is expanded. */\n _isExpanded(): boolean {\n return this.panel.expanded;\n }\n\n /** Gets the expanded state string of the panel. */\n _getExpandedState(): string {\n return this.panel._getExpandedState();\n }\n\n /** Gets the panel id. */\n _getPanelId(): string {\n return this.panel.id;\n }\n\n /** Gets the toggle position for the header. */\n _getTogglePosition(): MatAccordionTogglePosition {\n return this.panel.togglePosition;\n }\n\n /** Gets whether the expand indicator should be shown. */\n _showToggle(): boolean {\n return !this.panel.hideToggle && !this.panel.disabled;\n }\n\n /** Handle keydown event calling to toggle() if appropriate. */\n _keydown(event: KeyboardEvent) {\n switch (event.keyCode) {\n // Toggle for space and enter keys.\n case SPACE:\n case ENTER:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this._toggle();\n }\n\n break;\n default:\n if (this.panel.accordion) {\n this.panel.accordion._handleHeaderKeydown(event);\n }\n\n return;\n }\n }\n\n /**\n * Focuses the panel header. Implemented as a part of `FocusableOption`.\n * @param origin Origin of the action that triggered the focus.\n * @docs-private\n */\n focus(origin: FocusOrigin = 'program') {\n this._focusMonitor.focusVia(this._element, origin);\n }\n\n ngOnDestroy() {\n this._parentChangeSubscription.unsubscribe();\n this._focusMonitor.stopMonitoring(this._element);\n }\n}\n\n/**\n * `<mat-panel-description>`\n *\n * This directive is to be used inside of the MatExpansionPanelHeader component.\n */\n@Directive({\n selector: 'mat-panel-description',\n host: {\n class: 'mat-expansion-panel-header-description'\n }\n})\nexport class MatExpansionPanelDescription {}\n\n/**\n * `<mat-panel-title>`\n *\n * This directive is to be used inside of the MatExpansionPanelHeader component.\n */\n@Directive({\n selector: 'mat-panel-title',\n host: {\n class: 'mat-expansion-panel-header-title'\n }\n})\nexport class MatExpansionPanelTitle {}\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 {Directive, Input, ContentChildren, QueryList, AfterContentInit} from '@angular/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {CdkAccordion} from '@angular/cdk/accordion';\nimport {FocusKeyManager} from '@angular/cdk/a11y';\nimport {HOME, END, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n MAT_ACCORDION,\n MatAccordionBase,\n MatAccordionDisplayMode,\n MatAccordionTogglePosition\n} from './accordion-base';\nimport {MatExpansionPanelHeader} from './expansion-panel-header';\n\n/**\n * Directive for a Material Design Accordion.\n */\n@Directive({\n selector: 'mat-accordion',\n exportAs: 'matAccordion',\n inputs: ['multi'],\n providers: [{\n provide: MAT_ACCORDION,\n useExisting: MatAccordion\n }],\n host: {\n class: 'mat-accordion'\n }\n})\nexport class MatAccordion extends CdkAccordion implements MatAccordionBase, AfterContentInit {\n private _keyManager: FocusKeyManager<MatExpansionPanelHeader>;\n\n @ContentChildren(MatExpansionPanelHeader, {descendants: true})\n _headers: QueryList<MatExpansionPanelHeader>;\n\n /** Whether the expansion indicator should be hidden. */\n @Input()\n get hideToggle(): boolean { return this._hideToggle; }\n set hideToggle(show: boolean) { this._hideToggle = coerceBooleanProperty(show); }\n private _hideToggle: boolean = false;\n\n /**\n * Display mode used for all expansion panels in the accordion. Currently two display\n * modes exist:\n * default - a gutter-like spacing is placed around any expanded panel, placing the expanded\n * panel at a different elevation from the rest of the accordion.\n * flat - no spacing is placed around expanded panels, showing all panels at the same\n * elevation.\n */\n @Input() displayMode: MatAccordionDisplayMode = 'default';\n\n /** The position of the expansion indicator. */\n @Input() togglePosition: MatAccordionTogglePosition = 'after';\n\n ngAfterContentInit() {\n this._keyManager = new FocusKeyManager(this._headers).withWrap();\n }\n\n /** Handles keyboard events coming in from the panel headers. */\n _handleHeaderKeydown(event: KeyboardEvent) {\n const {keyCode} = event;\n const manager = this._keyManager;\n\n if (keyCode === HOME) {\n if (!hasModifierKey(event)) {\n manager.setFirstItemActive();\n event.preventDefault();\n }\n } else if (keyCode === END) {\n if (!hasModifierKey(event)) {\n manager.setLastItemActive();\n event.preventDefault();\n }\n } else {\n this._keyManager.onKeydown(event);\n }\n }\n\n _handleHeaderFocus(header: MatExpansionPanelHeader) {\n this._keyManager.updateActiveItem(header);\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 {CdkAccordionModule} from '@angular/cdk/accordion';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatAccordion} from './accordion';\nimport {MatExpansionPanel, MatExpansionPanelActionRow} from './expansion-panel';\nimport {MatExpansionPanelContent} from './expansion-panel-content';\nimport {\n MatExpansionPanelDescription,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n} from './expansion-panel-header';\n\n\n@NgModule({\n imports: [CommonModule, CdkAccordionModule, PortalModule],\n exports: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n declarations: [\n MatAccordion,\n MatExpansionPanel,\n MatExpansionPanelActionRow,\n MatExpansionPanelHeader,\n MatExpansionPanelTitle,\n MatExpansionPanelDescription,\n MatExpansionPanelContent,\n ],\n})\nexport class MatExpansionModule {}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","setPrototypeOf","__proto__","Array","p","hasOwnProperty","MAT_ACCORDION","InjectionToken","matExpansionAnimations","indicatorRotate","trigger","state","style","transform","transition","animate","expansionHeaderHeight","height","params","collapsedHeight","expandedHeight","group","query","animateChild","optional","bodyExpansion","visibility","MatExpansionPanelContent","_template","type","Directive","args","selector","TemplateRef","uniqueId","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","_super","accordion","_changeDetectorRef","_uniqueSelectionDispatcher","_viewContainerRef","_document","_animationMode","defaultOptions","_this","call","_hideToggle","afterExpand","EventEmitter","afterCollapse","_inputChanges","Subject","_headerId","_bodyAnimationDone","pipe","distinctUntilChanged","x","y","fromState","toState","subscribe","event","emit","hideToggle","tslib_1.__extends","defineProperty","value","coerceBooleanProperty","_togglePosition","togglePosition","_hasSpacing","expanded","displayMode","_getExpandedState","ngAfterContentInit","_lazyContent","opened","startWith","filter","_portal","take","TemplatePortal","ngOnChanges","changes","next","ngOnDestroy","complete","_containsFocus","_body","focusedElement","activeElement","bodyElement","nativeElement","contains","Component","styles","exportAs","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","inputs","outputs","animations","providers","provide","useValue","undefined","host","class","[class.mat-expanded]","[class._mat-animation-noopable]","[class.mat-expansion-panel-spacing]","UniqueSelectionDispatcher","ViewContainerRef","decorators","Inject","DOCUMENT","String","Optional","ANIMATION_MODULE_TYPE","propDecorators","Output","ContentChild","static","ViewChild","MatExpansionPanelActionRow","MatExpansionPanelHeader","panel","_element","_focusMonitor","_parentChangeSubscription","Subscription","EMPTY","_animationsDisabled","accordionHideToggleChange","_stateChanges","merge","closed","markForCheck","focusVia","monitor","origin","_handleHeaderFocus","_animationStarted","disabled","_toggle","toggle","_isExpanded","_getPanelId","id","_getTogglePosition","_showToggle","_keydown","keyCode","SPACE","ENTER","hasModifierKey","preventDefault","_handleHeaderKeydown","focus","unsubscribe","stopMonitoring","role","[attr.id]","[attr.tabindex]","[attr.aria-controls]","[attr.aria-expanded]","[attr.aria-disabled]","[class.mat-expansion-toggle-indicator-after]","[class.mat-expansion-toggle-indicator-before]","(click)","(keydown)","[@.disabled]","(@expansionHeight.start)","[@expansionHeight]","FocusMonitor","ChangeDetectorRef","MatExpansionPanelDescription","MatExpansionPanelTitle","MatAccordion","apply","arguments","show","_keyManager","FocusKeyManager","_headers","withWrap","manager","HOME","setFirstItemActive","END","setLastItemActive","onKeydown","header","updateActiveItem","useExisting","ContentChildren","descendants","Input","CdkAccordion","MatExpansionModule","NgModule","imports","CommonModule","CdkAccordionModule","PortalModule","exports","declarations"],"mappings":"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"}