{"version":3,"file":"slide-toggle.es5.js","sources":["../../packages/material/esm5/slide-toggle/slide-toggle.js","../../packages/material/esm5/slide-toggle/slide-toggle-module.js","../../packages/material/esm5/slide-toggle/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. 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 * as tslib_1 from \"tslib\";\nimport { Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Output, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { applyCssTransform, MatRipple, mixinColor, mixinDisabled, mixinDisableRipple, mixinTabIndex, } from '@angular/material/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n// Increasing integer for generating unique ids for slide-toggle components.\nvar /** @type {?} */ nextUniqueId = 0;\nexport var /** @type {?} */ MAT_SLIDE_TOGGLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatSlideToggle; }),\n multi: true\n};\n/**\n * Change event object emitted by a MatSlideToggle.\n */\nvar MatSlideToggleChange = (function () {\n function MatSlideToggleChange() {\n }\n return MatSlideToggleChange;\n}());\nexport { MatSlideToggleChange };\nfunction MatSlideToggleChange_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSlideToggleChange.prototype.source;\n /** @type {?} */\n MatSlideToggleChange.prototype.checked;\n}\n/**\n * \\@docs-private\n */\nvar MatSlideToggleBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSlideToggleBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSlideToggleBase;\n}());\nexport { MatSlideToggleBase };\nfunction MatSlideToggleBase_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSlideToggleBase.prototype._renderer;\n /** @type {?} */\n MatSlideToggleBase.prototype._elementRef;\n}\nexport var /** @type {?} */ _MatSlideToggleMixinBase = mixinTabIndex(mixinColor(mixinDisableRipple(mixinDisabled(MatSlideToggleBase)), 'accent'));\n/**\n * Represents a slidable \"switch\" toggle that can be moved between on and off.\n */\nvar MatSlideToggle = (function (_super) {\n tslib_1.__extends(MatSlideToggle, _super);\n /**\n * @param {?} elementRef\n * @param {?} renderer\n * @param {?} _platform\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n * @param {?} tabIndex\n */\n function MatSlideToggle(elementRef, renderer, _platform, _focusMonitor, _changeDetectorRef, tabIndex) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._platform = _platform;\n _this._focusMonitor = _focusMonitor;\n _this._changeDetectorRef = _changeDetectorRef;\n _this.onChange = function (_) { };\n _this.onTouched = function () { };\n _this._uniqueId = \"mat-slide-toggle-\" + ++nextUniqueId;\n _this._required = false;\n _this._checked = false;\n /**\n * Name value will be applied to the input element if present\n */\n _this.name = null;\n /**\n * A unique id for the slide-toggle input. If none is supplied, it will be auto-generated.\n */\n _this.id = _this._uniqueId;\n /**\n * Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n */\n _this.labelPosition = 'after';\n /**\n * Used to set the aria-label attribute on the underlying input element.\n */\n _this.ariaLabel = null;\n /**\n * Used to set the aria-labelledby attribute on the underlying input element.\n */\n _this.ariaLabelledby = null;\n /**\n * An event will be dispatched each time the slide-toggle changes its value.\n */\n _this.change = new EventEmitter();\n _this.tabIndex = parseInt(tabIndex) || 0;\n return _this;\n }\n Object.defineProperty(MatSlideToggle.prototype, \"required\", {\n /**\n * Whether the slide-toggle is required.\n * @return {?}\n */\n get: function () { return this._required; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._required = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlideToggle.prototype, \"checked\", {\n /**\n * Whether the slide-toggle element is checked or not\n * @return {?}\n */\n get: function () { return this._checked; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._checked = !!value;\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlideToggle.prototype, \"inputId\", {\n /**\n * Returns the unique id for the visual hidden input.\n * @return {?}\n */\n get: function () { return (this.id || this._uniqueId) + \"-input\"; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSlideToggle.prototype.ngAfterContentInit = function () {\n var _this = this;\n this._slideRenderer = new SlideToggleRenderer(this._elementRef, this._platform);\n this._focusMonitor\n .monitor(this._inputElement.nativeElement, this._renderer, false)\n .subscribe(function (focusOrigin) { return _this._onInputFocusChange(focusOrigin); });\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._inputElement.nativeElement);\n };\n /**\n * This function will called if the underlying input changed its value through user interaction.\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onChangeEvent = function (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 // Sync the value from the underlying input element with the slide-toggle component.\n this.checked = this._inputElement.nativeElement.checked;\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because we don't want\n // to trigger a change event, when the `checked` variable changes programmatically.\n this._emitChangeEvent();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onInputClick = function (event) {\n // In some situations the user will release the mouse on the label element. The label element\n // redirects the click to the underlying input element and will result in a value change.\n // Prevent the default behavior if dragging, because the value will be set after drag.\n if (this._slideRenderer.dragging) {\n event.preventDefault();\n }\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 * @param {?} value\n * @return {?}\n */\n MatSlideToggle.prototype.writeValue = function (value) {\n this.checked = !!value;\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn\n * @return {?}\n */\n MatSlideToggle.prototype.registerOnChange = function (fn) {\n this.onChange = fn;\n };\n /**\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn\n * @return {?}\n */\n MatSlideToggle.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Implemented as a part of ControlValueAccessor.\n * @param {?} isDisabled\n * @return {?}\n */\n MatSlideToggle.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n };\n /**\n * Focuses the slide-toggle.\n * @return {?}\n */\n MatSlideToggle.prototype.focus = function () {\n this._focusMonitor.focusVia(this._inputElement.nativeElement, 'keyboard');\n };\n /**\n * Toggles the checked state of the slide-toggle.\n * @return {?}\n */\n MatSlideToggle.prototype.toggle = function () {\n this.checked = !this.checked;\n };\n /**\n * Function is called whenever the focus changes for the input element.\n * @param {?} focusOrigin\n * @return {?}\n */\n MatSlideToggle.prototype._onInputFocusChange = function (focusOrigin) {\n if (!this._focusRipple && focusOrigin === 'keyboard') {\n // For keyboard focus show a persistent ripple as focus indicator.\n this._focusRipple = this._ripple.launch(0, 0, { persistent: true, centered: true });\n }\n else if (!focusOrigin) {\n this.onTouched();\n // Fade out and clear the focus ripple if one is currently present.\n if (this._focusRipple) {\n this._focusRipple.fadeOut();\n this._focusRipple = null;\n }\n }\n };\n /**\n * Emits a change event on the `change` output. Also notifies the FormControl about the change.\n * @return {?}\n */\n MatSlideToggle.prototype._emitChangeEvent = function () {\n var /** @type {?} */ event = new MatSlideToggleChange();\n event.source = this;\n event.checked = this.checked;\n this.onChange(this.checked);\n this.change.emit(event);\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype._onDragStart = function () {\n if (!this.disabled) {\n this._slideRenderer.startThumbDrag(this.checked);\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlideToggle.prototype._onDrag = function (event) {\n if (this._slideRenderer.dragging) {\n this._slideRenderer.updateThumbPosition(event.deltaX);\n }\n };\n /**\n * @return {?}\n */\n MatSlideToggle.prototype._onDragEnd = function () {\n var _this = this;\n if (this._slideRenderer.dragging) {\n var /** @type {?} */ _previousChecked = this.checked;\n this.checked = this._slideRenderer.dragPercentage > 50;\n if (_previousChecked !== this.checked) {\n this._emitChangeEvent();\n }\n // The drag should be stopped outside of the current event handler, because otherwise the\n // click event will be fired before and will revert the drag change.\n setTimeout(function () { return _this._slideRenderer.stopThumbDrag(); });\n }\n };\n /**\n * Method being called whenever the label text changes.\n * @return {?}\n */\n MatSlideToggle.prototype._onLabelTextChange = function () {\n // This method is getting called whenever the label of the slide-toggle changes.\n // Since the slide-toggle uses the OnPush strategy we need to notify it about the change\n // that has been recognized by the cdkObserveContent directive.\n this._changeDetectorRef.markForCheck();\n };\n MatSlideToggle.decorators = [\n { type: Component, args: [{selector: 'mat-slide-toggle',\n host: {\n 'class': 'mat-slide-toggle',\n '[id]': 'id',\n '[class.mat-checked]': 'checked',\n '[class.mat-disabled]': 'disabled',\n '[class.mat-slide-toggle-label-before]': 'labelPosition == \"before\"',\n },\n template: \"\",\n styles: [\".mat-slide-toggle{display:inline-block;height:24px;line-height:24px;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb-container{transform:translate3d(16px,0,0)}.mat-slide-toggle.mat-disabled .mat-slide-toggle-label,.mat-slide-toggle.mat-disabled .mat-slide-toggle-thumb-container{cursor:default}.mat-slide-toggle-label{display:flex;flex:1;flex-direction:row;align-items:center;cursor:pointer}.mat-slide-toggle-label-before .mat-slide-toggle-label{order:1}.mat-slide-toggle-label-before .mat-slide-toggle-bar{order:2}.mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-label-before .mat-slide-toggle-bar{margin-right:8px;margin-left:0}.mat-slide-toggle-label-before .mat-slide-toggle-bar,[dir=rtl] .mat-slide-toggle-bar{margin-left:8px;margin-right:0}.mat-slide-toggle-bar-no-side-margin{margin-left:0;margin-right:0}.mat-slide-toggle-thumb-container{position:absolute;z-index:1;width:20px;height:20px;top:-3px;left:0;transform:translate3d(0,0,0);transition:all 80ms linear;transition-property:transform;cursor:-webkit-grab;cursor:grab}.mat-slide-toggle-thumb-container.mat-dragging,.mat-slide-toggle-thumb-container:active{cursor:-webkit-grabbing;cursor:grabbing;transition-duration:0s}.mat-slide-toggle-thumb{height:20px;width:20px;border-radius:50%;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-thumb{background:#fff;border:solid 1px #000}}.mat-slide-toggle-bar{position:relative;width:36px;height:14px;border-radius:8px}@media screen and (-ms-high-contrast:active){.mat-slide-toggle-bar{background:#fff}}.mat-slide-toggle-input{bottom:0;left:10px}.mat-slide-toggle-bar,.mat-slide-toggle-thumb{transition:all 80ms linear;transition-property:background-color;transition-delay:50ms}.mat-slide-toggle-ripple{position:absolute;top:-13px;left:-13px;height:46px;width:46px;border-radius:50%;z-index:1;pointer-events:none}\"],\n providers: [MAT_SLIDE_TOGGLE_VALUE_ACCESSOR],\n inputs: ['disabled', 'disableRipple', 'color', 'tabIndex'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlideToggle.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: Platform, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Attribute, args: ['tabindex',] },] },\n ]; };\n MatSlideToggle.propDecorators = {\n 'name': [{ type: Input },],\n 'id': [{ type: Input },],\n 'labelPosition': [{ type: Input },],\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'ariaLabelledby': [{ type: Input, args: ['aria-labelledby',] },],\n 'required': [{ type: Input },],\n 'checked': [{ type: Input },],\n 'change': [{ type: Output },],\n '_inputElement': [{ type: ViewChild, args: ['input',] },],\n '_ripple': [{ type: ViewChild, args: [MatRipple,] },],\n };\n return MatSlideToggle;\n}(_MatSlideToggleMixinBase));\nexport { MatSlideToggle };\nfunction MatSlideToggle_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSlideToggle.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSlideToggle.ctorParameters;\n /** @type {?} */\n MatSlideToggle.propDecorators;\n /** @type {?} */\n MatSlideToggle.prototype.onChange;\n /** @type {?} */\n MatSlideToggle.prototype.onTouched;\n /** @type {?} */\n MatSlideToggle.prototype._uniqueId;\n /** @type {?} */\n MatSlideToggle.prototype._slideRenderer;\n /** @type {?} */\n MatSlideToggle.prototype._required;\n /** @type {?} */\n MatSlideToggle.prototype._checked;\n /**\n * Reference to the focus state ripple.\n * @type {?}\n */\n MatSlideToggle.prototype._focusRipple;\n /**\n * Name value will be applied to the input element if present\n * @type {?}\n */\n MatSlideToggle.prototype.name;\n /**\n * A unique id for the slide-toggle input. If none is supplied, it will be auto-generated.\n * @type {?}\n */\n MatSlideToggle.prototype.id;\n /**\n * Whether the label should appear after or before the slide-toggle. Defaults to 'after'\n * @type {?}\n */\n MatSlideToggle.prototype.labelPosition;\n /**\n * Used to set the aria-label attribute on the underlying input element.\n * @type {?}\n */\n MatSlideToggle.prototype.ariaLabel;\n /**\n * Used to set the aria-labelledby attribute on the underlying input element.\n * @type {?}\n */\n MatSlideToggle.prototype.ariaLabelledby;\n /**\n * An event will be dispatched each time the slide-toggle changes its value.\n * @type {?}\n */\n MatSlideToggle.prototype.change;\n /**\n * Reference to the underlying input element.\n * @type {?}\n */\n MatSlideToggle.prototype._inputElement;\n /**\n * Reference to the ripple directive on the thumb container.\n * @type {?}\n */\n MatSlideToggle.prototype._ripple;\n /** @type {?} */\n MatSlideToggle.prototype._platform;\n /** @type {?} */\n MatSlideToggle.prototype._focusMonitor;\n /** @type {?} */\n MatSlideToggle.prototype._changeDetectorRef;\n}\n/**\n * Renderer for the Slide Toggle component, which separates DOM modification in its own class\n */\nvar SlideToggleRenderer = (function () {\n /**\n * @param {?} elementRef\n * @param {?} platform\n */\n function SlideToggleRenderer(elementRef, platform) {\n /**\n * Whether the thumb is currently being dragged.\n */\n this.dragging = false;\n // We only need to interact with these elements when we're on the browser, so only grab\n // the reference in that case.\n if (platform.isBrowser) {\n this._thumbEl = elementRef.nativeElement.querySelector('.mat-slide-toggle-thumb-container');\n this._thumbBarEl = elementRef.nativeElement.querySelector('.mat-slide-toggle-bar');\n }\n }\n /**\n * Initializes the drag of the slide-toggle.\n * @param {?} checked\n * @return {?}\n */\n SlideToggleRenderer.prototype.startThumbDrag = function (checked) {\n if (this.dragging) {\n return;\n }\n this._thumbBarWidth = this._thumbBarEl.clientWidth - this._thumbEl.clientWidth;\n this._thumbEl.classList.add('mat-dragging');\n this._previousChecked = checked;\n this.dragging = true;\n };\n /**\n * Resets the current drag and returns the new checked value.\n * @return {?}\n */\n SlideToggleRenderer.prototype.stopThumbDrag = function () {\n if (!this.dragging) {\n return false;\n }\n this.dragging = false;\n this._thumbEl.classList.remove('mat-dragging');\n // Reset the transform because the component will take care of the thumb position after drag.\n applyCssTransform(this._thumbEl, '');\n return this.dragPercentage > 50;\n };\n /**\n * Updates the thumb containers position from the specified distance.\n * @param {?} distance\n * @return {?}\n */\n SlideToggleRenderer.prototype.updateThumbPosition = function (distance) {\n this.dragPercentage = this._getDragPercentage(distance);\n // Calculate the moved distance based on the thumb bar width.\n var /** @type {?} */ dragX = (this.dragPercentage / 100) * this._thumbBarWidth;\n applyCssTransform(this._thumbEl, \"translate3d(\" + dragX + \"px, 0, 0)\");\n };\n /**\n * Retrieves the percentage of thumb from the moved distance. Percentage as fraction of 100.\n * @param {?} distance\n * @return {?}\n */\n SlideToggleRenderer.prototype._getDragPercentage = function (distance) {\n var /** @type {?} */ percentage = (distance / this._thumbBarWidth) * 100;\n // When the toggle was initially checked, then we have to start the drag at the end.\n if (this._previousChecked) {\n percentage += 100;\n }\n return Math.max(0, Math.min(percentage, 100));\n };\n return SlideToggleRenderer;\n}());\nfunction SlideToggleRenderer_tsickle_Closure_declarations() {\n /**\n * Reference to the thumb HTMLElement.\n * @type {?}\n */\n SlideToggleRenderer.prototype._thumbEl;\n /**\n * Reference to the thumb bar HTMLElement.\n * @type {?}\n */\n SlideToggleRenderer.prototype._thumbBarEl;\n /**\n * Width of the thumb bar of the slide-toggle.\n * @type {?}\n */\n SlideToggleRenderer.prototype._thumbBarWidth;\n /**\n * Previous checked state before drag started.\n * @type {?}\n */\n SlideToggleRenderer.prototype._previousChecked;\n /**\n * Percentage of the thumb while dragging. Percentage as fraction of 100.\n * @type {?}\n */\n SlideToggleRenderer.prototype.dragPercentage;\n /**\n * Whether the thumb is currently being dragged.\n * @type {?}\n */\n SlideToggleRenderer.prototype.dragging;\n}\n//# sourceMappingURL=slide-toggle.js.map","/**\n * @license\n * Copyright Google Inc. 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 { ObserversModule } from '@angular/cdk/observers';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { GestureConfig, MatCommonModule, MatRippleModule, } from '@angular/material/core';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MatSlideToggle } from './slide-toggle';\nvar MatSlideToggleModule = (function () {\n function MatSlideToggleModule() {\n }\n MatSlideToggleModule.decorators = [\n { type: NgModule, args: [{\n imports: [MatRippleModule, MatCommonModule, PlatformModule, ObserversModule, A11yModule],\n exports: [MatSlideToggle, MatCommonModule],\n declarations: [MatSlideToggle],\n providers: [\n { provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig }\n ],\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlideToggleModule.ctorParameters = function () { return []; };\n return MatSlideToggleModule;\n}());\nexport { MatSlideToggleModule };\nfunction MatSlideToggleModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSlideToggleModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSlideToggleModule.ctorParameters;\n}\n//# sourceMappingURL=slide-toggle-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatSlideToggleModule, MAT_SLIDE_TOGGLE_VALUE_ACCESSOR, MatSlideToggleChange, MatSlideToggleBase, _MatSlideToggleMixinBase, MatSlideToggle } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends"],"mappings":"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"}