ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
191 lines (185 loc) • 8.18 kB
JavaScript
import { __decorate } from 'tslib';
import { NgTemplateOutlet } from '@angular/common';
import * as i0 from '@angular/core';
import { numberAttribute, booleanAttribute, Component, ViewEncapsulation, Input, NgModule } from '@angular/core';
import { Subject, BehaviorSubject, ReplaySubject, timer } from 'rxjs';
import { startWith, distinctUntilChanged, switchMap, debounce, takeUntil } from 'rxjs/operators';
import * as i1 from 'ng-zorro-antd/core/config';
import { WithConfig } from 'ng-zorro-antd/core/config';
import * as i2 from '@angular/cdk/bidi';
const NZ_CONFIG_MODULE_NAME = 'spin';
class NzSpinComponent {
constructor(nzConfigService, cdr, directionality) {
this.nzConfigService = nzConfigService;
this.cdr = cdr;
this.directionality = directionality;
this._nzModuleName = NZ_CONFIG_MODULE_NAME;
this.nzIndicator = null;
this.nzSize = 'default';
this.nzTip = null;
this.nzDelay = 0;
this.nzSimple = false;
this.nzSpinning = true;
this.destroy$ = new Subject();
this.spinning$ = new BehaviorSubject(this.nzSpinning);
this.delay$ = new ReplaySubject(1);
this.isLoading = false;
this.dir = 'ltr';
}
ngOnInit() {
const loading$ = this.delay$.pipe(startWith(this.nzDelay), distinctUntilChanged(), switchMap(delay => {
if (delay === 0) {
return this.spinning$;
}
return this.spinning$.pipe(debounce(spinning => timer(spinning ? delay : 0)));
}), takeUntil(this.destroy$));
loading$.subscribe(loading => {
this.isLoading = loading;
this.cdr.markForCheck();
});
this.nzConfigService
.getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME)
.pipe(takeUntil(this.destroy$))
.subscribe(() => this.cdr.markForCheck());
this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => {
this.dir = direction;
this.cdr.detectChanges();
});
this.dir = this.directionality.value;
}
ngOnChanges(changes) {
const { nzSpinning, nzDelay } = changes;
if (nzSpinning) {
this.spinning$.next(this.nzSpinning);
}
if (nzDelay) {
this.delay$.next(this.nzDelay);
}
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzSpinComponent, deps: [{ token: i1.NzConfigService }, { token: i0.ChangeDetectorRef }, { token: i2.Directionality }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: NzSpinComponent, isStandalone: true, selector: "nz-spin", inputs: { nzIndicator: "nzIndicator", nzSize: "nzSize", nzTip: "nzTip", nzDelay: ["nzDelay", "nzDelay", numberAttribute], nzSimple: ["nzSimple", "nzSimple", booleanAttribute], nzSpinning: ["nzSpinning", "nzSpinning", booleanAttribute] }, host: { properties: { "class.ant-spin-nested-loading": "!nzSimple" } }, exportAs: ["nzSpin"], usesOnChanges: true, ngImport: i0, template: `
<ng-template #defaultTemplate>
<span class="ant-spin-dot ant-spin-dot-spin">
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
</span>
</ng-template>
(isLoading) {
<div>
<div
class="ant-spin"
[class.ant-spin-rtl]="dir === 'rtl'"
[class.ant-spin-spinning]="isLoading"
[class.ant-spin-lg]="nzSize === 'large'"
[class.ant-spin-sm]="nzSize === 'small'"
[class.ant-spin-show-text]="nzTip"
>
<ng-template [ngTemplateOutlet]="nzIndicator || defaultTemplate"></ng-template>
(nzTip) {
<div class="ant-spin-text">{{ nzTip }}</div>
}
</div>
</div>
}
(!nzSimple) {
<div class="ant-spin-container" [class.ant-spin-blur]="isLoading">
<ng-content></ng-content>
</div>
}
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
__decorate([
WithConfig()
], NzSpinComponent.prototype, "nzIndicator", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzSpinComponent, decorators: [{
type: Component,
args: [{
selector: 'nz-spin',
exportAs: 'nzSpin',
preserveWhitespaces: false,
encapsulation: ViewEncapsulation.None,
template: `
<ng-template #defaultTemplate>
<span class="ant-spin-dot ant-spin-dot-spin">
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
</span>
</ng-template>
(isLoading) {
<div>
<div
class="ant-spin"
[class.ant-spin-rtl]="dir === 'rtl'"
[class.ant-spin-spinning]="isLoading"
[class.ant-spin-lg]="nzSize === 'large'"
[class.ant-spin-sm]="nzSize === 'small'"
[class.ant-spin-show-text]="nzTip"
>
<ng-template [ngTemplateOutlet]="nzIndicator || defaultTemplate"></ng-template>
(nzTip) {
<div class="ant-spin-text">{{ nzTip }}</div>
}
</div>
</div>
}
(!nzSimple) {
<div class="ant-spin-container" [class.ant-spin-blur]="isLoading">
<ng-content></ng-content>
</div>
}
`,
host: {
'[class.ant-spin-nested-loading]': '!nzSimple'
},
imports: [NgTemplateOutlet],
standalone: true
}]
}], ctorParameters: () => [{ type: i1.NzConfigService }, { type: i0.ChangeDetectorRef }, { type: i2.Directionality }], propDecorators: { nzIndicator: [{
type: Input
}], nzSize: [{
type: Input
}], nzTip: [{
type: Input
}], nzDelay: [{
type: Input,
args: [{ transform: numberAttribute }]
}], nzSimple: [{
type: Input,
args: [{ transform: booleanAttribute }]
}], nzSpinning: [{
type: Input,
args: [{ transform: booleanAttribute }]
}] } });
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
class NzSpinModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzSpinModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: NzSpinModule, imports: [NzSpinComponent], exports: [NzSpinComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzSpinModule }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzSpinModule, decorators: [{
type: NgModule,
args: [{
imports: [NzSpinComponent],
exports: [NzSpinComponent]
}]
}] });
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
/**
* Generated bundle index. Do not edit.
*/
export { NzSpinComponent, NzSpinModule };
//# sourceMappingURL=ng-zorro-antd-spin.mjs.map