@angular/material 12.0.1 → 12.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/_index.scss +2 -1
  2. package/bottom-sheet/bottom-sheet-container.d.ts +0 -2
  3. package/bottom-sheet/index.metadata.json +1 -1
  4. package/bundles/material-bottom-sheet.umd.js +7 -15
  5. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  6. package/bundles/material-checkbox.umd.js +1 -1
  7. package/bundles/material-checkbox.umd.js.map +1 -1
  8. package/bundles/material-core.umd.js +2 -2
  9. package/bundles/material-core.umd.js.map +1 -1
  10. package/bundles/material-datepicker.umd.js +13 -14
  11. package/bundles/material-datepicker.umd.js.map +1 -1
  12. package/bundles/material-dialog.umd.js +11 -19
  13. package/bundles/material-dialog.umd.js.map +1 -1
  14. package/bundles/material-input.umd.js +7 -1
  15. package/bundles/material-input.umd.js.map +1 -1
  16. package/bundles/material-slide-toggle.umd.js +4 -4
  17. package/bundles/material-slide-toggle.umd.js.map +1 -1
  18. package/bundles/material-tabs.umd.js +4 -2
  19. package/bundles/material-tabs.umd.js.map +1 -1
  20. package/checkbox/index.metadata.json +1 -1
  21. package/core/index.metadata.json +1 -1
  22. package/core/ripple/ripple.d.ts +3 -3
  23. package/datepicker/datepicker-base.d.ts +6 -2
  24. package/datepicker/index.metadata.json +1 -1
  25. package/dialog/dialog-container.d.ts +0 -2
  26. package/dialog/index.metadata.json +1 -1
  27. package/esm2015/bottom-sheet/bottom-sheet-container.js +5 -12
  28. package/esm2015/checkbox/checkbox.js +2 -2
  29. package/esm2015/core/common-behaviors/common-module.js +1 -1
  30. package/esm2015/core/ripple/ripple.js +1 -1
  31. package/esm2015/core/version.js +1 -1
  32. package/esm2015/datepicker/datepicker-base.js +9 -9
  33. package/esm2015/datepicker/datepicker-intl.js +3 -3
  34. package/esm2015/dialog/dialog-container.js +5 -12
  35. package/esm2015/input/input.js +9 -3
  36. package/esm2015/slide-toggle/slide-toggle.js +5 -5
  37. package/esm2015/tabs/tab-group.js +4 -2
  38. package/esm2015/tabs/tab.js +3 -3
  39. package/fesm2015/bottom-sheet.js +4 -11
  40. package/fesm2015/bottom-sheet.js.map +1 -1
  41. package/fesm2015/checkbox.js +1 -1
  42. package/fesm2015/checkbox.js.map +1 -1
  43. package/fesm2015/core.js +2 -2
  44. package/fesm2015/core.js.map +1 -1
  45. package/fesm2015/datepicker.js +10 -10
  46. package/fesm2015/datepicker.js.map +1 -1
  47. package/fesm2015/dialog.js +4 -11
  48. package/fesm2015/dialog.js.map +1 -1
  49. package/fesm2015/input.js +8 -2
  50. package/fesm2015/input.js.map +1 -1
  51. package/fesm2015/slide-toggle.js +4 -4
  52. package/fesm2015/slide-toggle.js.map +1 -1
  53. package/fesm2015/tabs.js +4 -2
  54. package/fesm2015/tabs.js.map +1 -1
  55. package/input/index.metadata.json +1 -1
  56. package/package.json +2 -2
  57. package/schematics/ng-add/index.js +1 -1
  58. package/schematics/ng-add/index.mjs +1 -1
  59. package/slide-toggle/index.metadata.json +1 -1
  60. package/slide-toggle/slide-toggle.d.ts +3 -2
  61. package/tabs/index.metadata.json +1 -1
@@ -55,12 +55,11 @@ class MatSlideToggleBase {
55
55
  const _MatSlideToggleMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase))));
56
56
  /** Represents a slidable "switch" toggle that can be moved between on and off. */
57
57
  class MatSlideToggle extends _MatSlideToggleMixinBase {
58
- constructor(elementRef, _focusMonitor, _changeDetectorRef, tabIndex, defaults, _animationMode) {
58
+ constructor(elementRef, _focusMonitor, _changeDetectorRef, tabIndex, defaults, animationMode) {
59
59
  super(elementRef);
60
60
  this._focusMonitor = _focusMonitor;
61
61
  this._changeDetectorRef = _changeDetectorRef;
62
62
  this.defaults = defaults;
63
- this._animationMode = _animationMode;
64
63
  this._onChange = (_) => { };
65
64
  this._onTouched = () => { };
66
65
  this._uniqueId = `mat-slide-toggle-${++nextUniqueId}`;
@@ -86,6 +85,7 @@ class MatSlideToggle extends _MatSlideToggleMixinBase {
86
85
  this.toggleChange = new EventEmitter();
87
86
  this.tabIndex = parseInt(tabIndex) || 0;
88
87
  this.color = this.defaultColor = defaults.color || 'accent';
88
+ this._noopAnimations = animationMode === 'NoopAnimations';
89
89
  }
90
90
  /** Whether the slide-toggle is required. */
91
91
  get required() { return this._required; }
@@ -215,9 +215,9 @@ MatSlideToggle.decorators = [
215
215
  '[class.mat-checked]': 'checked',
216
216
  '[class.mat-disabled]': 'disabled',
217
217
  '[class.mat-slide-toggle-label-before]': 'labelPosition == "before"',
218
- '[class._mat-animation-noopable]': '_animationMode === "NoopAnimations"',
218
+ '[class._mat-animation-noopable]': '_noopAnimations',
219
219
  },
220
- template: "<label [attr.for]=\"inputId\" class=\"mat-slide-toggle-label\" #label>\n <div #toggleBar class=\"mat-slide-toggle-bar\"\n [class.mat-slide-toggle-bar-no-side-margin]=\"!labelContent.textContent || !labelContent.textContent.trim()\">\n\n <input #input class=\"mat-slide-toggle-input cdk-visually-hidden\" type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.aria-checked]=\"checked.toString()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n (change)=\"_onChangeEvent($event)\"\n (click)=\"_onInputClick($event)\">\n\n <div class=\"mat-slide-toggle-thumb-container\" #thumbContainer>\n <div class=\"mat-slide-toggle-thumb\"></div>\n <div class=\"mat-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n [matRippleTrigger]=\"label\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"\n [matRippleRadius]=\"20\"\n [matRippleAnimation]=\"{enterDuration: 150}\">\n\n <div class=\"mat-ripple-element mat-slide-toggle-persistent-ripple\"></div>\n </div>\n </div>\n\n </div>\n\n <span class=\"mat-slide-toggle-content\" #labelContent (cdkObserveContent)=\"_onLabelTextChange()\">\n <!-- Add an invisible span so JAWS can read the label -->\n <span style=\"display:none\">&nbsp;</span>\n <ng-content></ng-content>\n </span>\n</label>\n",
220
+ template: "<label [attr.for]=\"inputId\" class=\"mat-slide-toggle-label\" #label>\n <div #toggleBar class=\"mat-slide-toggle-bar\"\n [class.mat-slide-toggle-bar-no-side-margin]=\"!labelContent.textContent || !labelContent.textContent.trim()\">\n\n <input #input class=\"mat-slide-toggle-input cdk-visually-hidden\" type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.aria-checked]=\"checked.toString()\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n (change)=\"_onChangeEvent($event)\"\n (click)=\"_onInputClick($event)\">\n\n <div class=\"mat-slide-toggle-thumb-container\" #thumbContainer>\n <div class=\"mat-slide-toggle-thumb\"></div>\n <div class=\"mat-slide-toggle-ripple mat-focus-indicator\" mat-ripple\n [matRippleTrigger]=\"label\"\n [matRippleDisabled]=\"disableRipple || disabled\"\n [matRippleCentered]=\"true\"\n [matRippleRadius]=\"20\"\n [matRippleAnimation]=\"{enterDuration: _noopAnimations ? 0 : 150}\">\n\n <div class=\"mat-ripple-element mat-slide-toggle-persistent-ripple\"></div>\n </div>\n </div>\n\n </div>\n\n <span class=\"mat-slide-toggle-content\" #labelContent (cdkObserveContent)=\"_onLabelTextChange()\">\n <!-- Add an invisible span so JAWS can read the label -->\n <span style=\"display:none\">&nbsp;</span>\n <ng-content></ng-content>\n </span>\n</label>\n",
221
221
  providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],
222
222
  inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],
223
223
  encapsulation: ViewEncapsulation.None,
@@ -1 +1 @@
1
- {"version":3,"file":"slide-toggle.js","sources":["../../../../../../src/material/slide-toggle/slide-toggle-config.ts","../../../../../../src/material/slide-toggle/slide-toggle.ts","../../../../../../src/material/slide-toggle/slide-toggle-required-validator.ts","../../../../../../src/material/slide-toggle/slide-toggle-module.ts","../../../../../../src/material/slide-toggle/public-api.ts","../../../../../../src/material/slide-toggle/index.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 */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '@angular/material/core';\n\n\n/** Default `mat-slide-toggle` options that can be overridden. */\nexport interface MatSlideToggleDefaultOptions {\n /** Whether toggle action triggers value changes in slide toggle. */\n disableToggleValue?: boolean;\n\n /** Default color for slide toggles. */\n color?: ThemePalette;\n}\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nexport const MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS =\n new InjectionToken<MatSlideToggleDefaultOptions>('mat-slide-toggle-default-options', {\n providedIn: 'root',\n factory: () => ({disableToggleValue: false})\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation,\n Optional,\n Inject,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor, CanColorCtor,\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n HasTabIndex, HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,\n MatSlideToggleDefaultOptions\n} from './slide-toggle-config';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nlet nextUniqueId = 0;\n\n/** @docs-private */\nexport const MAT_SLIDE_TOGGLE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true\n};\n\n/** Change event object emitted by a MatSlideToggle. */\nexport class MatSlideToggleChange {\n constructor(\n /** The source MatSlideToggle of the event. */\n public source: MatSlideToggle,\n /** The new `checked` value of the MatSlideToggle. */\n public checked: boolean) { }\n}\n\n// Boilerplate for applying mixins to MatSlideToggle.\n/** @docs-private */\nclass MatSlideToggleBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatSlideToggleMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableRippleCtor &\n CanDisableCtor &\n typeof MatSlideToggleBase =\n mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase))));\n\n/** Represents a slidable \"switch\" toggle that can be moved between on and off. */\n@Component({\n selector: 'mat-slide-toggle',\n exportAs: 'matSlideToggle',\n host: {\n 'class': 'mat-slide-toggle',\n '[id]': 'id',\n // Needs to be `-1` so it can still receive programmatic focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n },\n templateUrl: 'slide-toggle.html',\n styleUrls: ['slide-toggle.css'],\n providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSlideToggle extends _MatSlideToggleMixinBase implements OnDestroy, AfterContentInit,\n ControlValueAccessor,\n CanDisable, CanColor,\n HasTabIndex,\n CanDisableRipple {\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n\n private _uniqueId: string = `mat-slide-toggle-${++nextUniqueId}`;\n private _required: boolean = false;\n private _checked: boolean = false;\n\n /** Reference to the thumb HTMLElement. */\n @ViewChild('thumbContainer') _thumbEl: ElementRef;\n\n /** Reference to the thumb bar HTMLElement. */\n @ViewChild('toggleBar') _thumbBarEl: ElementRef;\n\n /** Name value will be applied to the input element if present. */\n @Input() name: string | null = null;\n\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n @Input() id: string = this._uniqueId;\n\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Used to set the aria-label attribute on the underlying input element. */\n @Input('aria-label') ariaLabel: string | null = null;\n\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Whether the slide-toggle is required. */\n @Input()\n get required(): boolean { return this._required; }\n set required(value) { this._required = coerceBooleanProperty(value); }\n\n /** Whether the slide-toggle element is checked or not. */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value) {\n this._checked = coerceBooleanProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n /** An event will be dispatched each time the slide-toggle changes its value. */\n @Output() readonly change: EventEmitter<MatSlideToggleChange> =\n new EventEmitter<MatSlideToggleChange>();\n\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed.\n */\n @Output() readonly toggleChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string { return `${this.id || this._uniqueId}-input`; }\n\n /** Reference to the underlying input element. */\n @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\n\n constructor(elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') tabIndex: string,\n @Inject(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS)\n public defaults: MatSlideToggleDefaultOptions,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) public _animationMode?: string) {\n super(elementRef);\n this.tabIndex = parseInt(tabIndex) || 0;\n this.color = this.defaultColor = defaults.color || 'accent';\n }\n\n ngAfterContentInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe(focusOrigin => {\n // Only forward focus manually when it was received programmatically or through the\n // keyboard. We should not do this for mouse/touch focus for two reasons:\n // 1. It can prevent clicks from landing in Chrome (see #18269).\n // 2. They're already handled by the wrapping `label` element.\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._inputElement.nativeElement.focus();\n } else if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's 'ng-touched') will cause a changed-after-checked\n // error. See https://github.com/angular/angular/issues/17793. To work around this,\n // we defer telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => this._onTouched());\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Method being called whenever the underlying input emits a change event. */\n _onChangeEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the component's `change` output.\n event.stopPropagation();\n this.toggleChange.emit();\n\n // When the slide toggle's config disables toggle change event by setting\n // `disableToggleValue: true`, the slide toggle's value does not change, and the\n // checked state of the underlying input needs to be changed back.\n if (this.defaults.disableToggleValue) {\n this._inputElement.nativeElement.checked = this.checked;\n return;\n }\n\n // Sync the value from the underlying input element with the component instance.\n this.checked = this._inputElement.nativeElement.checked;\n\n // Emit our custom change event only if the underlying input emitted one. This ensures that\n // there is no change event, when the checked state changes programmatically.\n this._emitChangeEvent();\n }\n\n /** Method being called whenever the slide-toggle has been clicked. */\n _onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `slide-toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the slide-toggle. */\n focus(options?: FocusOptions, origin?: FocusOrigin): void {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n } else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle(): void {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n private _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the\n // slide-toggle component will be only marked for check, but no actual change detection runs\n // automatically. Instead of going back into the zone in order to trigger a change detection\n // which causes *all* components to be checked (if explicitly marked or not using OnPush),\n // we only trigger an explicit change detection for the slide-toggle view and its children.\n this._changeDetectorRef.detectChanges();\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_checked: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\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 Directive,\n forwardRef,\n Provider,\n} from '@angular/core';\nimport {\n CheckboxRequiredValidator,\n NG_VALIDATORS,\n} from '@angular/forms';\n\nexport const MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatSlideToggleRequiredValidator),\n multi: true\n};\n\n/**\n * Validator for Material slide-toggle components with the required attribute in a\n * template-driven form. The default validator for required form controls asserts\n * that the control value is not undefined but that is not appropriate for a slide-toggle\n * where the value is always defined.\n *\n * Required slide-toggle form controls are valid when checked.\n */\n@Directive({\n selector: `mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]`,\n providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR],\n})\nexport class MatSlideToggleRequiredValidator extends CheckboxRequiredValidator {}\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 {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatSlideToggle} from './slide-toggle';\nimport {MatSlideToggleRequiredValidator} from './slide-toggle-required-validator';\n\n/** This module is used by both original and MDC-based slide-toggle implementations. */\n@NgModule({\n exports: [MatSlideToggleRequiredValidator],\n declarations: [MatSlideToggleRequiredValidator],\n})\nexport class _MatSlideToggleRequiredValidatorModule {}\n\n@NgModule({\n imports: [\n _MatSlideToggleRequiredValidatorModule,\n MatRippleModule,\n MatCommonModule,\n ObserversModule,\n ],\n exports: [\n _MatSlideToggleRequiredValidatorModule,\n MatSlideToggle,\n MatCommonModule\n ],\n declarations: [MatSlideToggle],\n})\nexport class MatSlideToggleModule {}\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\nexport * from './slide-toggle-module';\nexport * from './slide-toggle';\nexport * from './slide-toggle-config';\nexport * from './slide-toggle-required-validator';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slide-toggle.js","sources":["../../../../../../src/material/slide-toggle/slide-toggle-config.ts","../../../../../../src/material/slide-toggle/slide-toggle.ts","../../../../../../src/material/slide-toggle/slide-toggle-required-validator.ts","../../../../../../src/material/slide-toggle/slide-toggle-module.ts","../../../../../../src/material/slide-toggle/public-api.ts","../../../../../../src/material/slide-toggle/index.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 */\nimport {InjectionToken} from '@angular/core';\nimport {ThemePalette} from '@angular/material/core';\n\n\n/** Default `mat-slide-toggle` options that can be overridden. */\nexport interface MatSlideToggleDefaultOptions {\n /** Whether toggle action triggers value changes in slide toggle. */\n disableToggleValue?: boolean;\n\n /** Default color for slide toggles. */\n color?: ThemePalette;\n}\n\n/** Injection token to be used to override the default options for `mat-slide-toggle`. */\nexport const MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS =\n new InjectionToken<MatSlideToggleDefaultOptions>('mat-slide-toggle-default-options', {\n providedIn: 'root',\n factory: () => ({disableToggleValue: false})\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 {FocusMonitor, FocusOrigin} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty, NumberInput} from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewEncapsulation,\n Optional,\n Inject,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n CanColor, CanColorCtor,\n CanDisable, CanDisableCtor,\n CanDisableRipple, CanDisableRippleCtor,\n HasTabIndex, HasTabIndexCtor,\n mixinColor,\n mixinDisabled,\n mixinDisableRipple,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {\n MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS,\n MatSlideToggleDefaultOptions\n} from './slide-toggle-config';\n\n// Increasing integer for generating unique ids for slide-toggle components.\nlet nextUniqueId = 0;\n\n/** @docs-private */\nexport const MAT_SLIDE_TOGGLE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlideToggle),\n multi: true\n};\n\n/** Change event object emitted by a MatSlideToggle. */\nexport class MatSlideToggleChange {\n constructor(\n /** The source MatSlideToggle of the event. */\n public source: MatSlideToggle,\n /** The new `checked` value of the MatSlideToggle. */\n public checked: boolean) { }\n}\n\n// Boilerplate for applying mixins to MatSlideToggle.\n/** @docs-private */\nclass MatSlideToggleBase {\n constructor(public _elementRef: ElementRef) {}\n}\nconst _MatSlideToggleMixinBase:\n HasTabIndexCtor &\n CanColorCtor &\n CanDisableRippleCtor &\n CanDisableCtor &\n typeof MatSlideToggleBase =\n mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase))));\n\n/** Represents a slidable \"switch\" toggle that can be moved between on and off. */\n@Component({\n selector: 'mat-slide-toggle',\n exportAs: 'matSlideToggle',\n host: {\n 'class': 'mat-slide-toggle',\n '[id]': 'id',\n // Needs to be `-1` so it can still receive programmatic focus.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n '[class._mat-animation-noopable]': '_noopAnimations',\n },\n templateUrl: 'slide-toggle.html',\n styleUrls: ['slide-toggle.css'],\n providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MatSlideToggle extends _MatSlideToggleMixinBase implements OnDestroy, AfterContentInit,\n ControlValueAccessor,\n CanDisable, CanColor,\n HasTabIndex,\n CanDisableRipple {\n private _onChange = (_: any) => {};\n private _onTouched = () => {};\n\n private _uniqueId: string = `mat-slide-toggle-${++nextUniqueId}`;\n private _required: boolean = false;\n private _checked: boolean = false;\n\n /** Whether noop animations are enabled. */\n _noopAnimations: boolean;\n\n /** Reference to the thumb HTMLElement. */\n @ViewChild('thumbContainer') _thumbEl: ElementRef;\n\n /** Reference to the thumb bar HTMLElement. */\n @ViewChild('toggleBar') _thumbBarEl: ElementRef;\n\n /** Name value will be applied to the input element if present. */\n @Input() name: string | null = null;\n\n /** A unique id for the slide-toggle input. If none is supplied, it will be auto-generated. */\n @Input() id: string = this._uniqueId;\n\n /** Whether the label should appear after or before the slide-toggle. Defaults to 'after'. */\n @Input() labelPosition: 'before' | 'after' = 'after';\n\n /** Used to set the aria-label attribute on the underlying input element. */\n @Input('aria-label') ariaLabel: string | null = null;\n\n /** Used to set the aria-labelledby attribute on the underlying input element. */\n @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n /** Whether the slide-toggle is required. */\n @Input()\n get required(): boolean { return this._required; }\n set required(value) { this._required = coerceBooleanProperty(value); }\n\n /** Whether the slide-toggle element is checked or not. */\n @Input()\n get checked(): boolean { return this._checked; }\n set checked(value) {\n this._checked = coerceBooleanProperty(value);\n this._changeDetectorRef.markForCheck();\n }\n /** An event will be dispatched each time the slide-toggle changes its value. */\n @Output() readonly change: EventEmitter<MatSlideToggleChange> =\n new EventEmitter<MatSlideToggleChange>();\n\n /**\n * An event will be dispatched each time the slide-toggle input is toggled.\n * This event is always emitted when the user toggles the slide toggle, but this does not mean\n * the slide toggle's value has changed.\n */\n @Output() readonly toggleChange: EventEmitter<void> = new EventEmitter<void>();\n\n /** Returns the unique id for the visual hidden input. */\n get inputId(): string { return `${this.id || this._uniqueId}-input`; }\n\n /** Reference to the underlying input element. */\n @ViewChild('input') _inputElement: ElementRef<HTMLInputElement>;\n\n constructor(elementRef: ElementRef,\n private _focusMonitor: FocusMonitor,\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') tabIndex: string,\n @Inject(MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS)\n public defaults: MatSlideToggleDefaultOptions,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) animationMode?: string) {\n super(elementRef);\n this.tabIndex = parseInt(tabIndex) || 0;\n this.color = this.defaultColor = defaults.color || 'accent';\n this._noopAnimations = animationMode === 'NoopAnimations';\n }\n\n ngAfterContentInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .subscribe(focusOrigin => {\n // Only forward focus manually when it was received programmatically or through the\n // keyboard. We should not do this for mouse/touch focus for two reasons:\n // 1. It can prevent clicks from landing in Chrome (see #18269).\n // 2. They're already handled by the wrapping `label` element.\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this._inputElement.nativeElement.focus();\n } else if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state\n // change (such as a form control's 'ng-touched') will cause a changed-after-checked\n // error. See https://github.com/angular/angular/issues/17793. To work around this,\n // we defer telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => this._onTouched());\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Method being called whenever the underlying input emits a change event. */\n _onChangeEvent(event: Event) {\n // We always have to stop propagation on the change event.\n // Otherwise the change event, from the input element, will bubble up and\n // emit its event object to the component's `change` output.\n event.stopPropagation();\n this.toggleChange.emit();\n\n // When the slide toggle's config disables toggle change event by setting\n // `disableToggleValue: true`, the slide toggle's value does not change, and the\n // checked state of the underlying input needs to be changed back.\n if (this.defaults.disableToggleValue) {\n this._inputElement.nativeElement.checked = this.checked;\n return;\n }\n\n // Sync the value from the underlying input element with the component instance.\n this.checked = this._inputElement.nativeElement.checked;\n\n // Emit our custom change event only if the underlying input emitted one. This ensures that\n // there is no change event, when the checked state changes programmatically.\n this._emitChangeEvent();\n }\n\n /** Method being called whenever the slide-toggle has been clicked. */\n _onInputClick(event: Event) {\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `slide-toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n }\n\n /** Implemented as part of ControlValueAccessor. */\n writeValue(value: any): void {\n this.checked = !!value;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /** Implemented as part of ControlValueAccessor. */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /** Implemented as a part of ControlValueAccessor. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n }\n\n /** Focuses the slide-toggle. */\n focus(options?: FocusOptions, origin?: FocusOrigin): void {\n if (origin) {\n this._focusMonitor.focusVia(this._inputElement, origin, options);\n } else {\n this._inputElement.nativeElement.focus(options);\n }\n }\n\n /** Toggles the checked state of the slide-toggle. */\n toggle(): void {\n this.checked = !this.checked;\n this._onChange(this.checked);\n }\n\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n */\n private _emitChangeEvent() {\n this._onChange(this.checked);\n this.change.emit(new MatSlideToggleChange(this, this.checked));\n }\n\n /** Method being called whenever the label text changes. */\n _onLabelTextChange() {\n // Since the event of the `cdkObserveContent` directive runs outside of the zone, the\n // slide-toggle component will be only marked for check, but no actual change detection runs\n // automatically. Instead of going back into the zone in order to trigger a change detection\n // which causes *all* components to be checked (if explicitly marked or not using OnPush),\n // we only trigger an explicit change detection for the slide-toggle view and its children.\n this._changeDetectorRef.detectChanges();\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_checked: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n static ngAcceptInputType_tabIndex: NumberInput;\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 Directive,\n forwardRef,\n Provider,\n} from '@angular/core';\nimport {\n CheckboxRequiredValidator,\n NG_VALIDATORS,\n} from '@angular/forms';\n\nexport const MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatSlideToggleRequiredValidator),\n multi: true\n};\n\n/**\n * Validator for Material slide-toggle components with the required attribute in a\n * template-driven form. The default validator for required form controls asserts\n * that the control value is not undefined but that is not appropriate for a slide-toggle\n * where the value is always defined.\n *\n * Required slide-toggle form controls are valid when checked.\n */\n@Directive({\n selector: `mat-slide-toggle[required][formControlName],\n mat-slide-toggle[required][formControl], mat-slide-toggle[required][ngModel]`,\n providers: [MAT_SLIDE_TOGGLE_REQUIRED_VALIDATOR],\n})\nexport class MatSlideToggleRequiredValidator extends CheckboxRequiredValidator {}\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 {ObserversModule} from '@angular/cdk/observers';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule, MatRippleModule} from '@angular/material/core';\nimport {MatSlideToggle} from './slide-toggle';\nimport {MatSlideToggleRequiredValidator} from './slide-toggle-required-validator';\n\n/** This module is used by both original and MDC-based slide-toggle implementations. */\n@NgModule({\n exports: [MatSlideToggleRequiredValidator],\n declarations: [MatSlideToggleRequiredValidator],\n})\nexport class _MatSlideToggleRequiredValidatorModule {}\n\n@NgModule({\n imports: [\n _MatSlideToggleRequiredValidatorModule,\n MatRippleModule,\n MatCommonModule,\n ObserversModule,\n ],\n exports: [\n _MatSlideToggleRequiredValidatorModule,\n MatSlideToggle,\n MatCommonModule\n ],\n declarations: [MatSlideToggle],\n})\nexport class MatSlideToggleModule {}\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\nexport * from './slide-toggle-module';\nexport * from './slide-toggle';\nexport * from './slide-toggle-config';\nexport * from './slide-toggle-required-validator';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/fesm2015/tabs.js CHANGED
@@ -242,7 +242,7 @@ MatTab.decorators = [
242
242
  ];
243
243
  MatTab.ctorParameters = () => [
244
244
  { type: ViewContainerRef },
245
- { type: undefined, decorators: [{ type: Inject, args: [MAT_TAB_GROUP,] }] }
245
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_TAB_GROUP,] }, { type: Optional }] }
246
246
  ];
247
247
  MatTab.propDecorators = {
248
248
  templateLabel: [{ type: ContentChild, args: [MAT_TAB_LABEL,] }],
@@ -662,7 +662,9 @@ class _MatTabGroupBase extends _MatTabGroupMixinBase {
662
662
  this._allTabs.changes
663
663
  .pipe(startWith(this._allTabs))
664
664
  .subscribe((tabs) => {
665
- this._tabs.reset(tabs.filter(tab => tab._closestTabGroup === this));
665
+ this._tabs.reset(tabs.filter(tab => {
666
+ return tab._closestTabGroup === this || !tab._closestTabGroup;
667
+ }));
666
668
  this._tabs.notifyOnChanges();
667
669
  });
668
670
  }