UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

1 lines 12.5 kB
{"version":3,"file":"ng-zorro-antd-switch.mjs","sources":["../../components/switch/switch.component.ts","../../components/switch/switch.module.ts","../../components/switch/public-api.ts","../../components/switch/ng-zorro-antd-switch.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { BooleanInput, NzSizeDSType, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'switch';\n\n@Component({\n selector: 'nz-switch',\n exportAs: 'nzSwitch',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzSwitchComponent),\n multi: true\n }\n ],\n template: `\n <button\n nz-wave\n type=\"button\"\n class=\"ant-switch\"\n #switchElement\n [disabled]=\"nzDisabled\"\n [class.ant-switch-checked]=\"isChecked\"\n [class.ant-switch-loading]=\"nzLoading\"\n [class.ant-switch-disabled]=\"nzDisabled\"\n [class.ant-switch-small]=\"nzSize === 'small'\"\n [class.ant-switch-rtl]=\"dir === 'rtl'\"\n [nzWaveExtraNode]=\"true\"\n >\n <span class=\"ant-switch-handle\">\n <i *ngIf=\"nzLoading\" nz-icon nzType=\"loading\" class=\"ant-switch-loading-icon\"></i>\n </span>\n <span class=\"ant-switch-inner\">\n <ng-container *ngIf=\"isChecked; else uncheckTemplate\">\n <ng-container *nzStringTemplateOutlet=\"nzCheckedChildren\">{{ nzCheckedChildren }}</ng-container>\n </ng-container>\n <ng-template #uncheckTemplate>\n <ng-container *nzStringTemplateOutlet=\"nzUnCheckedChildren\">{{ nzUnCheckedChildren }}</ng-container>\n </ng-template>\n </span>\n <div class=\"ant-click-animating-node\"></div>\n </button>\n `\n})\nexport class NzSwitchComponent implements ControlValueAccessor, AfterViewInit, OnDestroy, OnInit {\n readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n static ngAcceptInputType_nzLoading: BooleanInput;\n static ngAcceptInputType_nzDisabled: BooleanInput;\n static ngAcceptInputType_nzControl: BooleanInput;\n\n isChecked = false;\n onChange: OnChangeType = () => {};\n onTouched: OnTouchedType = () => {};\n @ViewChild('switchElement', { static: true }) switchElement!: ElementRef<HTMLElement>;\n @Input() @InputBoolean() nzLoading = false;\n @Input() @InputBoolean() nzDisabled = false;\n @Input() @InputBoolean() nzControl = false;\n @Input() nzCheckedChildren: string | TemplateRef<void> | null = null;\n @Input() nzUnCheckedChildren: string | TemplateRef<void> | null = null;\n @Input() @WithConfig() nzSize: NzSizeDSType = 'default';\n\n dir: Direction = 'ltr';\n\n private destroy$ = new Subject<void>();\n\n updateValue(value: boolean): void {\n if (this.isChecked !== value) {\n this.isChecked = value;\n this.onChange(this.isChecked);\n }\n }\n\n focus(): void {\n this.focusMonitor.focusVia(this.switchElement.nativeElement, 'keyboard');\n }\n\n blur(): void {\n this.switchElement.nativeElement.blur();\n }\n\n constructor(\n public nzConfigService: NzConfigService,\n private host: ElementRef<HTMLElement>,\n private ngZone: NgZone,\n private cdr: ChangeDetectorRef,\n private focusMonitor: FocusMonitor,\n @Optional() private directionality: Directionality\n ) {}\n\n ngOnInit(): void {\n this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n\n this.dir = this.directionality.value;\n\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.host.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n event.preventDefault();\n\n if (this.nzControl || this.nzDisabled || this.nzLoading) {\n return;\n }\n\n this.ngZone.run(() => {\n this.updateValue(!this.isChecked);\n this.cdr.markForCheck();\n });\n });\n\n fromEvent<KeyboardEvent>(this.switchElement.nativeElement, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (this.nzControl || this.nzDisabled || this.nzLoading) {\n return;\n }\n\n const { keyCode } = event;\n if (keyCode !== LEFT_ARROW && keyCode !== RIGHT_ARROW && keyCode !== SPACE && keyCode !== ENTER) {\n return;\n }\n\n event.preventDefault();\n\n this.ngZone.run(() => {\n if (keyCode === LEFT_ARROW) {\n this.updateValue(false);\n } else if (keyCode === RIGHT_ARROW) {\n this.updateValue(true);\n } else if (keyCode === SPACE || keyCode === ENTER) {\n this.updateValue(!this.isChecked);\n }\n\n this.cdr.markForCheck();\n });\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor\n .monitor(this.switchElement!.nativeElement, true)\n .pipe(takeUntil(this.destroy$))\n .subscribe(focusOrigin => {\n if (!focusOrigin) {\n /** https://github.com/angular/angular/issues/17793 **/\n Promise.resolve().then(() => this.onTouched());\n }\n });\n }\n\n ngOnDestroy(): void {\n this.focusMonitor.stopMonitoring(this.switchElement!.nativeElement);\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n writeValue(value: boolean): void {\n this.isChecked = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: OnChangeType): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: OnTouchedType): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.nzDisabled = disabled;\n this.cdr.markForCheck();\n }\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzWaveModule } from 'ng-zorro-antd/core/wave';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NzSwitchComponent } from './switch.component';\n\n@NgModule({\n exports: [NzSwitchComponent],\n declarations: [NzSwitchComponent],\n imports: [BidiModule, CommonModule, NzWaveModule, NzIconModule, NzOutletModule]\n})\nexport class NzSwitchModule {}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './switch.component';\nexport * from './switch.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}