blob: 5e36b5f751cfec2f87e38169a70d75191f912a43 [file] [log] [blame]
{"version":3,"file":"material-list.umd.min.js","sources":["../../src/material/list/selection-list.ts","../../src/material/list/list-module.ts","../../node_modules/tslib/tslib.es6.js","../../src/material/list/list.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.io/license\n */\n\nimport {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {\n SPACE,\n ENTER,\n HOME,\n END,\n UP_ARROW,\n DOWN_ARROW,\n A,\n hasModifierKey,\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n SimpleChanges,\n OnChanges,\n} from '@angular/core';\nimport {\n CanDisableRipple, CanDisableRippleCtor,\n MatLine,\n setLines,\n mixinDisableRipple,\n ThemePalette,\n} from '@angular/material/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {MatListAvatarCssMatStyler, MatListIconCssMatStyler} from './list';\n\n\n/** @docs-private */\nclass MatSelectionListBase {}\nconst _MatSelectionListMixinBase: CanDisableRippleCtor & typeof MatSelectionListBase =\n mixinDisableRipple(MatSelectionListBase);\n\n/** @docs-private */\nclass MatListOptionBase {}\nconst _MatListOptionMixinBase: CanDisableRippleCtor & typeof MatListOptionBase =\n mixinDisableRipple(MatListOptionBase);\n\n/** @docs-private */\nexport const MAT_SELECTION_LIST_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSelectionList),\n multi: true\n};\n\n/** Change event that is being fired whenever the selected state of an option changes. */\nexport class MatSelectionListChange {\n constructor(\n /** Reference to the selection list that emitted the event. */\n public source: MatSelectionList,\n /** Reference to the option that has been changed. */\n public option: MatListOption) {}\n}\n\n/**\n * Component for list-options of selection-list. Each list-option can automatically\n * generate a checkbox and can put current item into the selectionModel of selection-list\n * if the current item is selected.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-list-option',\n exportAs: 'matListOption',\n inputs: ['disableRipple'],\n host: {\n 'role': 'option',\n 'class': 'mat-list-item mat-list-option',\n '(focus)': '_handleFocus()',\n '(blur)': '_handleBlur()',\n '(click)': '_handleClick()',\n 'tabindex': '-1',\n '[class.mat-list-item-disabled]': 'disabled',\n '[class.mat-list-item-with-avatar]': '_avatar || _icon',\n // Manually set the \"primary\" or \"warn\" class if the color has been explicitly\n // set to \"primary\" or \"warn\". The pseudo checkbox picks up these classes for\n // its theme. The accent theme palette is the default and doesn't need to be set.\n '[class.mat-primary]': 'color === \"primary\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled',\n },\n templateUrl: 'list-option.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListOption extends _MatListOptionMixinBase\n implements AfterContentInit, OnDestroy, OnInit, FocusableOption, CanDisableRipple {\n\n private _selected = false;\n private _disabled = false;\n private _hasFocus = false;\n\n @ContentChild(MatListAvatarCssMatStyler, {static: false}) _avatar: MatListAvatarCssMatStyler;\n @ContentChild(MatListIconCssMatStyler, {static: false}) _icon: MatListIconCssMatStyler;\n @ContentChildren(MatLine) _lines: QueryList<MatLine>;\n\n /** DOM element containing the item's text. */\n @ViewChild('text', {static: false}) _text: ElementRef;\n\n /** Whether the label should appear before or after the checkbox. Defaults to 'after' */\n @Input() checkboxPosition: 'before' | 'after' = 'after';\n\n /** Theme color of the list option. This sets the color of the checkbox. */\n @Input()\n get color(): ThemePalette { return this._color || this.selectionList.color; }\n set color(newValue: ThemePalette) { this._color = newValue; }\n private _color: ThemePalette;\n\n /** Value of the option */\n @Input()\n get value(): any { return this._value; }\n set value(newValue: any) {\n if (this.selected && newValue !== this.value) {\n this.selected = false;\n }\n\n this._value = newValue;\n }\n private _value: any;\n\n /** Whether the option is disabled. */\n @Input()\n get disabled() { return this._disabled || (this.selectionList && this.selectionList.disabled); }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._changeDetector.markForCheck();\n }\n }\n\n /** Whether the option is selected. */\n @Input()\n get selected(): boolean { return this.selectionList.selectedOptions.isSelected(this); }\n set selected(value: boolean) {\n const isSelected = coerceBooleanProperty(value);\n\n if (isSelected !== this._selected) {\n this._setSelected(isSelected);\n this.selectionList._reportValueChange();\n }\n }\n\n constructor(private _element: ElementRef<HTMLElement>,\n private _changeDetector: ChangeDetectorRef,\n /** @docs-private */\n @Inject(forwardRef(() => MatSelectionList)) public selectionList: MatSelectionList) {\n super();\n }\n\n ngOnInit() {\n const list = this.selectionList;\n\n if (list._value && list._value.some(value => list.compareWith(value, this._value))) {\n this._setSelected(true);\n }\n\n const wasSelected = this._selected;\n\n // List options that are selected at initialization can't be reported properly to the form\n // control. This is because it takes some time until the selection-list knows about all\n // available options. Also it can happen that the ControlValueAccessor has an initial value\n // that should be used instead. Deferring the value change report to the next tick ensures\n // that the form control value is not being overwritten.\n Promise.resolve().then(() => {\n if (this._selected || wasSelected) {\n this.selected = true;\n this._changeDetector.markForCheck();\n }\n });\n }\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n\n ngOnDestroy(): void {\n if (this.selected) {\n // We have to delay this until the next tick in order\n // to avoid changed after checked errors.\n Promise.resolve().then(() => {\n this.selected = false;\n });\n }\n\n const hadFocus = this._hasFocus;\n const newActiveItem = this.selectionList._removeOptionFromList(this);\n\n // Only move focus if this option was focused at the time it was destroyed.\n if (hadFocus && newActiveItem) {\n newActiveItem.focus();\n }\n }\n\n /** Toggles the selection state of the option. */\n toggle(): void {\n this.selected = !this.selected;\n }\n\n /** Allows for programmatic focusing of the option. */\n focus(): void {\n this._element.nativeElement.focus();\n }\n\n /**\n * Returns the list item's text label. Implemented as a part of the FocusKeyManager.\n * @docs-private\n */\n getLabel() {\n return this._text ? (this._text.nativeElement.textContent || '') : '';\n }\n\n /** Whether this list item should show a ripple effect when clicked. */\n _isRippleDisabled() {\n return this.disabled || this.disableRipple || this.selectionList.disableRipple;\n }\n\n _handleClick() {\n if (!this.disabled) {\n this.toggle();\n\n // Emit a change event if the selected state of the option changed through user interaction.\n this.selectionList._emitChangeEvent(this);\n }\n }\n\n _handleFocus() {\n this.selectionList._setFocusedOption(this);\n this._hasFocus = true;\n }\n\n _handleBlur() {\n this.selectionList._onTouched();\n this._hasFocus = false;\n }\n\n /** Retrieves the DOM element of the component host. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n\n /** Sets the selected state of the option. Returns whether the value has changed. */\n _setSelected(selected: boolean): boolean {\n if (selected === this._selected) {\n return false;\n }\n\n this._selected = selected;\n\n if (selected) {\n this.selectionList.selectedOptions.select(this);\n } else {\n this.selectionList.selectedOptions.deselect(this);\n }\n\n this._changeDetector.markForCheck();\n return true;\n }\n\n /**\n * Notifies Angular that the option needs to be checked in the next change detection run. Mainly\n * used to trigger an update of the list option if the disabled state of the selection list\n * changed.\n */\n _markForCheck() {\n this._changeDetector.markForCheck();\n }\n}\n\n\n/**\n * Material Design list component where each item is a selectable option. Behaves as a listbox.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-selection-list',\n exportAs: 'matSelectionList',\n inputs: ['disableRipple'],\n host: {\n 'role': 'listbox',\n '[tabIndex]': 'tabIndex',\n 'class': 'mat-selection-list mat-list-base',\n '(blur)': '_onTouched()',\n '(keydown)': '_keydown($event)',\n 'aria-multiselectable': 'true',\n '[attr.aria-disabled]': 'disabled.toString()',\n },\n template: '<ng-content></ng-content>',\n styleUrls: ['list.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [MAT_SELECTION_LIST_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MatSelectionList extends _MatSelectionListMixinBase implements FocusableOption,\n CanDisableRipple, AfterContentInit, ControlValueAccessor, OnDestroy, OnChanges {\n\n /** The FocusKeyManager which handles focus. */\n _keyManager: FocusKeyManager<MatListOption>;\n\n /** The option components contained within this selection-list. */\n @ContentChildren(MatListOption, {descendants: true}) options: QueryList<MatListOption>;\n\n /** Emits a change event whenever the selected state of an option changes. */\n @Output() readonly selectionChange: EventEmitter<MatSelectionListChange> =\n new EventEmitter<MatSelectionListChange>();\n\n /** Tabindex of the selection list. */\n @Input() tabIndex: number = 0;\n\n /** Theme color of the selection list. This sets the checkbox color for all list options. */\n @Input() color: ThemePalette = 'accent';\n\n /**\n * Function used for comparing an option against the selected value when determining which\n * options should appear as selected. The first argument is the value of an options. The second\n * one is a value from the selected value. A boolean must be returned.\n */\n @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\n\n /** Whether the selection list is disabled. */\n @Input()\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n\n // The `MatSelectionList` and `MatListOption` are using the `OnPush` change detection\n // strategy. Therefore the options will not check for any changes if the `MatSelectionList`\n // changed its state. Since we know that a change to `disabled` property of the list affects\n // the state of the options, we manually mark each option for check.\n this._markOptionsForCheck();\n }\n private _disabled: boolean = false;\n\n /** The currently selected options. */\n selectedOptions: SelectionModel<MatListOption> = new SelectionModel<MatListOption>(true);\n\n /** View to model callback that should be called whenever the selected options change. */\n private _onChange: (value: any) => void = (_: any) => {};\n\n /** Keeps track of the currently-selected value. */\n _value: string[]|null;\n\n /** Emits when the list has been destroyed. */\n private _destroyed = new Subject<void>();\n\n /** View to model callback that should be called if the list or its options lost focus. */\n _onTouched: () => void = () => {};\n\n /** Whether the list has been destroyed. */\n private _isDestroyed: boolean;\n\n constructor(private _element: ElementRef<HTMLElement>, @Attribute('tabindex') tabIndex: string) {\n super();\n this.tabIndex = parseInt(tabIndex) || 0;\n }\n\n ngAfterContentInit(): void {\n this._keyManager = new FocusKeyManager<MatListOption>(this.options)\n .withWrap()\n .withTypeAhead()\n // Allow disabled items to be focusable. For accessibility reasons, there must be a way for\n // screenreader users, that allows reading the different options of the list.\n .skipPredicate(() => false)\n .withAllowedModifierKeys(['shiftKey']);\n\n if (this._value) {\n this._setOptionsFromValues(this._value);\n }\n\n // Sync external changes to the model back to the options.\n this.selectedOptions.onChange.pipe(takeUntil(this._destroyed)).subscribe(event => {\n if (event.added) {\n for (let item of event.added) {\n item.selected = true;\n }\n }\n\n if (event.removed) {\n for (let item of event.removed) {\n item.selected = false;\n }\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const disableRippleChanges = changes['disableRipple'];\n const colorChanges = changes['color'];\n\n if ((disableRippleChanges && !disableRippleChanges.firstChange) ||\n (colorChanges && !colorChanges.firstChange)) {\n this._markOptionsForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._isDestroyed = true;\n }\n\n /** Focuses the selection list. */\n focus() {\n this._element.nativeElement.focus();\n }\n\n /** Selects all of the options. */\n selectAll() {\n this._setAllOptionsSelected(true);\n }\n\n /** Deselects all of the options. */\n deselectAll() {\n this._setAllOptionsSelected(false);\n }\n\n /** Sets the focused option of the selection-list. */\n _setFocusedOption(option: MatListOption) {\n this._keyManager.updateActiveItem(option);\n }\n\n /**\n * Removes an option from the selection list and updates the active item.\n * @returns Currently-active item.\n */\n _removeOptionFromList(option: MatListOption): MatListOption | null {\n const optionIndex = this._getOptionIndex(option);\n\n if (optionIndex > -1 && this._keyManager.activeItemIndex === optionIndex) {\n // Check whether the option is the last item\n if (optionIndex > 0) {\n this._keyManager.updateActiveItem(optionIndex - 1);\n } else if (optionIndex === 0 && this.options.length > 1) {\n this._keyManager.updateActiveItem(Math.min(optionIndex + 1, this.options.length - 1));\n }\n }\n\n return this._keyManager.activeItem;\n }\n\n /** Passes relevant key presses to our key manager. */\n _keydown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n const previousFocusIndex = manager.activeItemIndex;\n const hasModifier = hasModifierKey(event);\n\n switch (keyCode) {\n case SPACE:\n case ENTER:\n if (!hasModifier) {\n this._toggleFocusedOption();\n // Always prevent space from scrolling the page since the list has focus\n event.preventDefault();\n }\n break;\n case HOME:\n case END:\n if (!hasModifier) {\n keyCode === HOME ? manager.setFirstItemActive() : manager.setLastItemActive();\n event.preventDefault();\n }\n break;\n case A:\n if (hasModifierKey(event, 'ctrlKey')) {\n this.options.find(option => !option.selected) ? this.selectAll() : this.deselectAll();\n event.preventDefault();\n }\n break;\n default:\n manager.onKeydown(event);\n }\n\n if ((keyCode === UP_ARROW || keyCode === DOWN_ARROW) && event.shiftKey &&\n manager.activeItemIndex !== previousFocusIndex) {\n this._toggleFocusedOption();\n }\n }\n\n /** Reports a value change to the ControlValueAccessor */\n _reportValueChange() {\n // Stop reporting value changes after the list has been destroyed. This avoids\n // cases where the list might wrongly reset its value once it is removed, but\n // the form control is still live.\n if (this.options && !this._isDestroyed) {\n const value = this._getSelectedOptionValues();\n this._onChange(value);\n this._value = value;\n }\n }\n\n /** Emits a change event if the selected state of an option changed. */\n _emitChangeEvent(option: MatListOption) {\n this.selectionChange.emit(new MatSelectionListChange(this, option));\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(values: string[]): void {\n this._value = values;\n\n if (this.options) {\n this._setOptionsFromValues(values || []);\n }\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /** Sets the selected options based on the specified values. */\n private _setOptionsFromValues(values: string[]) {\n this.options.forEach(option => option._setSelected(false));\n\n values.forEach(value => {\n const correspondingOption = this.options.find(option => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n return option.selected ? false : this.compareWith(option.value, value);\n });\n\n if (correspondingOption) {\n correspondingOption._setSelected(true);\n }\n });\n }\n\n /** Returns the values of the selected options. */\n private _getSelectedOptionValues(): string[] {\n return this.options.filter(option => option.selected).map(option => option.value);\n }\n\n /** Toggles the state of the currently focused option if enabled. */\n private _toggleFocusedOption(): void {\n let focusedIndex = this._keyManager.activeItemIndex;\n\n if (focusedIndex != null && this._isValidIndex(focusedIndex)) {\n let focusedOption: MatListOption = this.options.toArray()[focusedIndex];\n\n if (focusedOption && !focusedOption.disabled) {\n focusedOption.toggle();\n\n // Emit a change event because the focused option changed its state through user\n // interaction.\n this._emitChangeEvent(focusedOption);\n }\n }\n }\n\n /**\n * Sets the selected state on all of the options\n * and emits an event if anything changed.\n */\n private _setAllOptionsSelected(isSelected: boolean) {\n // Keep track of whether anything changed, because we only want to\n // emit the changed event when something actually changed.\n let hasChanged = false;\n\n this.options.forEach(option => {\n if (option._setSelected(isSelected)) {\n hasChanged = true;\n }\n });\n\n if (hasChanged) {\n this._reportValueChange();\n }\n }\n\n /**\n * Utility to ensure all indexes are valid.\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of options.\n */\n private _isValidIndex(index: number): boolean {\n return index >= 0 && index < this.options.length;\n }\n\n /** Returns the index of the specified list option. */\n private _getOptionIndex(option: MatListOption): number {\n return this.options.toArray().indexOf(option);\n }\n\n /** Marks all the options to be checked in the next change detection run. */\n private _markOptionsForCheck() {\n if (this.options) {\n this.options.forEach(option => option._markForCheck());\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 {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n MatCommonModule,\n MatLineModule,\n MatPseudoCheckboxModule,\n MatRippleModule,\n} from '@angular/material/core';\nimport {\n MatList,\n MatNavList,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListItem,\n MatListSubheaderCssMatStyler,\n} from './list';\nimport {MatListOption, MatSelectionList} from './selection-list';\nimport {MatDividerModule} from '@angular/material/divider';\n\n\n@NgModule({\n imports: [MatLineModule, MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, CommonModule],\n exports: [\n MatList,\n MatNavList,\n MatListItem,\n MatListAvatarCssMatStyler,\n MatLineModule,\n MatCommonModule,\n MatListIconCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatPseudoCheckboxModule,\n MatSelectionList,\n MatListOption,\n MatDividerModule\n ],\n declarations: [\n MatList,\n MatNavList,\n MatListItem,\n MatListAvatarCssMatStyler,\n MatListIconCssMatStyler,\n MatListSubheaderCssMatStyler,\n MatSelectionList,\n MatListOption\n ],\n})\nexport class MatListModule {}\n","/*! *****************************************************************************\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 {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n Optional,\n QueryList,\n ViewEncapsulation,\n OnChanges,\n OnDestroy,\n ChangeDetectorRef,\n} from '@angular/core';\nimport {\n CanDisableRipple,\n CanDisableRippleCtor,\n MatLine,\n setLines,\n mixinDisableRipple,\n} from '@angular/material/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n// Boilerplate for applying mixins to MatList.\n/** @docs-private */\nclass MatListBase {}\nconst _MatListMixinBase: CanDisableRippleCtor & typeof MatListBase =\n mixinDisableRipple(MatListBase);\n\n// Boilerplate for applying mixins to MatListItem.\n/** @docs-private */\nclass MatListItemBase {}\nconst _MatListItemMixinBase: CanDisableRippleCtor & typeof MatListItemBase =\n mixinDisableRipple(MatListItemBase);\n\n@Component({\n moduleId: module.id,\n selector: 'mat-nav-list',\n exportAs: 'matNavList',\n host: {\n 'role': 'navigation',\n 'class': 'mat-nav-list mat-list-base'\n },\n templateUrl: 'list.html',\n styleUrls: ['list.css'],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatNavList extends _MatListMixinBase implements CanDisableRipple, OnChanges,\n OnDestroy {\n /** Emits when the state of the list changes. */\n _stateChanges = new Subject<void>();\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-list, mat-action-list',\n exportAs: 'matList',\n templateUrl: 'list.html',\n host: {\n 'class': 'mat-list mat-list-base'\n },\n styleUrls: ['list.css'],\n inputs: ['disableRipple'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatList extends _MatListMixinBase implements CanDisableRipple, OnChanges, OnDestroy {\n /** Emits when the state of the list changes. */\n _stateChanges = new Subject<void>();\n\n constructor(private _elementRef: ElementRef<HTMLElement>) {\n super();\n\n if (this._getListType() === 'action-list') {\n _elementRef.nativeElement.classList.add('mat-action-list');\n }\n }\n\n _getListType(): 'list' | 'action-list' | null {\n const nodeName = this._elementRef.nativeElement.nodeName.toLowerCase();\n\n if (nodeName === 'mat-list') {\n return 'list';\n }\n\n if (nodeName === 'mat-action-list') {\n return 'action-list';\n }\n\n return null;\n }\n\n ngOnChanges() {\n this._stateChanges.next();\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-list-avatar], [matListAvatar]',\n host: {'class': 'mat-list-avatar'}\n})\nexport class MatListAvatarCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-list-icon], [matListIcon]',\n host: {'class': 'mat-list-icon'}\n})\nexport class MatListIconCssMatStyler {}\n\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\n@Directive({\n selector: '[mat-subheader], [matSubheader]',\n host: {'class': 'mat-subheader'}\n})\nexport class MatListSubheaderCssMatStyler {}\n\n/** An item within a Material Design list. */\n@Component({\n moduleId: module.id,\n selector: 'mat-list-item, a[mat-list-item], button[mat-list-item]',\n exportAs: 'matListItem',\n host: {\n 'class': 'mat-list-item',\n // @breaking-change 8.0.0 Remove `mat-list-item-avatar` in favor of `mat-list-item-with-avatar`.\n '[class.mat-list-item-avatar]': '_avatar || _icon',\n '[class.mat-list-item-with-avatar]': '_avatar || _icon',\n },\n inputs: ['disableRipple'],\n templateUrl: 'list-item.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatListItem extends _MatListItemMixinBase implements AfterContentInit,\n CanDisableRipple, OnDestroy {\n private _isInteractiveList: boolean = false;\n private _list?: MatNavList | MatList;\n private _destroyed = new Subject<void>();\n\n @ContentChildren(MatLine, {descendants: true}) _lines: QueryList<MatLine>;\n @ContentChild(MatListAvatarCssMatStyler, {static: false}) _avatar: MatListAvatarCssMatStyler;\n @ContentChild(MatListIconCssMatStyler, {static: false}) _icon: MatListIconCssMatStyler;\n\n constructor(private _element: ElementRef<HTMLElement>,\n _changeDetectorRef: ChangeDetectorRef,\n @Optional() navList?: MatNavList,\n @Optional() list?: MatList) {\n super();\n this._isInteractiveList = !!(navList || (list && list._getListType() === 'action-list'));\n this._list = navList || list;\n\n // If no type attributed is specified for <button>, set it to \"button\".\n // If a type attribute is already specified, do nothing.\n const element = this._getHostElement();\n\n if (element.nodeName.toLowerCase() === 'button' && !element.hasAttribute('type')) {\n element.setAttribute('type', 'button');\n }\n\n if (this._list) {\n // React to changes in the state of the parent list since\n // some of the item's properties depend on it (e.g. `disableRipple`).\n this._list._stateChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\n _changeDetectorRef.markForCheck();\n });\n }\n }\n\n ngAfterContentInit() {\n setLines(this._lines, this._element);\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Whether this list item should show a ripple effect when clicked. */\n _isRippleDisabled() {\n return !this._isInteractiveList || this.disableRipple ||\n !!(this._list && this._list.disableRipple);\n }\n\n /** Retrieves the DOM element of the component host. */\n _getHostElement(): HTMLElement {\n return this._element.nativeElement;\n }\n}\n"],"names":["this","_color","newValue","Object","defineProperty","MatListOption","prototype","_value","selected","value","_disabled","selectionList","disabled","coerceBooleanProperty","_changeDetector","markForCheck","selectedOptions","isSelected","_selected","_setSelected","_reportValueChange","ngOnInit","_this","list","some","compareWith","wasSelected","Promise","resolve","then","ngAfterContentInit","setLines","_lines","_element","ngOnDestroy","hadFocus","_hasFocus","newActiveItem","_removeOptionFromList","focus","toggle","nativeElement","getLabel","_text","textContent","_isRippleDisabled","disableRipple","_handleClick","_emitChangeEvent","_handleFocus","_setFocusedOption","_handleBlur","_onTouched","_getHostElement","select","deselect","_markForCheck","type","Component","args","selector","exportAs","inputs","host","role","class","(focus)","(blur)","(click)","tabindex","[class.mat-list-item-disabled]","[class.mat-list-item-with-avatar]","[attr.aria-selected]","[attr.aria-disabled]","template","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","MatSelectionList","decorators","Inject","forwardRef","propDecorators","ContentChildren","MatLine","ViewChild","static","checkboxPosition","Input","color","tabIndex","_super","call","get","_markOptionsForCheck","enumerable","configurable","withWrap","withTypeAhead","skipPredicate","_setOptionsFromValues","onChange","pipe","takeUntil","_destroyed","subscribe","_i","_a","event","added","length","item","removed","_b","_c","disableRippleChanges","changes","colorChanges","firstChange","complete","_isDestroyed","optionIndex","_getOptionIndex","option","_keyManager","updateActiveItem","options","Math","min","activeItem","keyCode","manager","previousFocusIndex","activeItemIndex","hasModifier","hasModifierKey","SPACE","ENTER","_toggleFocusedOption","preventDefault","HOME","END","setFirstItemActive","setLastItemActive","A","find","onKeydown","UP_ARROW","DOWN_ARROW","shiftKey","_getSelectedOptionValues","values","forEach","correspondingOption","focusedIndex","focusedOption","toArray","hasChanged","[tabIndex]","(keydown)","aria-multiselectable","styles","providers","MAT_SELECTION_LIST_VALUE_ACCESSOR","ctorParameters","ElementRef","descendants","selectionChange","Output","_MatSelectionListMixinBase","MatListModule","NgModule","imports","MatLineModule","MatRippleModule","MatCommonModule","MatPseudoCheckboxModule","CommonModule","exports","MatList","MatNavList","MatListItem","MatListAvatarCssMatStyler","MatListIconCssMatStyler","MatListSubheaderCssMatStyler","MatDividerModule","declarations","__extends","d","b","__","constructor","extendStatics","create","setPrototypeOf","__proto__","Array","p","hasOwnProperty","MatListBase","_MatListMixinBase","mixinDisableRipple","MatListItemBase","_MatListItemMixinBase","apply","arguments","_stateChanges","Subject","tslib_1.__extends","ngOnChanges","next","_elementRef","classList","add","nodeName","toLowerCase","Directive","_isInteractiveList","navList","_getListType","_list","element","_changeDetectorRef","[class.mat-list-item-avatar]","ChangeDetectorRef","Optional","_avatar","ContentChild","_icon","MatSelectionListBase","MatListOptionBase","_MatListOptionMixinBase","provide","NG_VALUE_ACCESSOR","useExisting","multi","MatSelectionListChange","source"],"mappings":"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"}