UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

184 lines 13.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /* * @license * Copyright Akveo. All Rights Reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */ import { ComponentFactoryResolver, Directive, ElementRef, Input, Renderer2, ViewContainerRef, HostBinding, } from '@angular/core'; import { NbSpinnerComponent } from './spinner.component'; /* * Styled spinner directive * * @stacked-example(Spinner Showcase, spinner/spinner-card.component) * * * ```ts * <nb-card [nbSpinner]="loading" nbSpinnerStatus="danger"> * <nb-card-body>Card Content</nb-card-body> * </nb-card> * ``` * * ### Installation * * Import `NbSpinnerModule` to your feature module. * ```ts * @NgModule({ * imports: [ * // ... * NbSpinnerModule, * ], * }) * export class PageModule { } * ``` * ### Usage * * Could be colored using `status` property * * @stacked-example(Spinner Colors, spinner/spinner-colors.component) * * Available in different sizes with `size` property: * * @stacked-example(Spinner Sizes, spinner/spinner-sizes.component) * * It is also possible to place it into the button: * @stacked-example(Buttons with spinner, spinner/spinner-button.component) * * Or tabs: * @stacked-example(Spinner in tabs, spinner/spinner-tabs.component) */ export class NbSpinnerDirective { /** * @param {?} directiveView * @param {?} componentFactoryResolver * @param {?} renderer * @param {?} directiveElement */ constructor(directiveView, componentFactoryResolver, renderer, directiveElement) { this.directiveView = directiveView; this.componentFactoryResolver = componentFactoryResolver; this.renderer = renderer; this.directiveElement = directiveElement; this.isSpinnerExist = false; this.shouldShow = false; } /* * Directive value - show or hide spinner * @param {boolean} val */ /** * @param {?} val * @return {?} */ set nbSpinner(val) { if (this.componentFactory) { if (val) { this.show(); } else { this.hide(); } } else { this.shouldShow = val; } } /** * @return {?} */ ngOnInit() { this.componentFactory = this.componentFactoryResolver.resolveComponentFactory(NbSpinnerComponent); if (this.shouldShow) { this.show(); } } /** * @return {?} */ hide() { if (this.isSpinnerExist) { this.directiveView.remove(); this.isSpinnerExist = false; } } /** * @return {?} */ show() { if (!this.isSpinnerExist) { this.spinner = this.directiveView.createComponent(this.componentFactory); this.setInstanceInputs(this.spinner.instance); this.spinner.changeDetectorRef.detectChanges(); this.renderer.appendChild(this.directiveElement.nativeElement, this.spinner.location.nativeElement); this.isSpinnerExist = true; } } /** * @param {?} instance * @return {?} */ setInstanceInputs(instance) { typeof this.spinnerMessage !== 'undefined' && (instance.message = this.spinnerMessage); typeof this.spinnerStatus !== 'undefined' && (instance.status = this.spinnerStatus); typeof this.spinnerSize !== 'undefined' && (instance.size = this.spinnerSize); } } NbSpinnerDirective.decorators = [ { type: Directive, args: [{ selector: '[nbSpinner]' },] } ]; /** @nocollapse */ NbSpinnerDirective.ctorParameters = () => [ { type: ViewContainerRef }, { type: ComponentFactoryResolver }, { type: Renderer2 }, { type: ElementRef } ]; NbSpinnerDirective.propDecorators = { isSpinnerExist: [{ type: HostBinding, args: ['class.nb-spinner-container',] }], spinnerMessage: [{ type: Input, args: ['nbSpinnerMessage',] }], spinnerStatus: [{ type: Input, args: ['nbSpinnerStatus',] }], spinnerSize: [{ type: Input, args: ['nbSpinnerSize',] }], nbSpinner: [{ type: Input, args: ['nbSpinner',] }] }; if (false) { /** @type {?} */ NbSpinnerDirective.prototype.spinner; /** @type {?} */ NbSpinnerDirective.prototype.componentFactory; /** @type {?} */ NbSpinnerDirective.prototype.isSpinnerExist; /** @type {?} */ NbSpinnerDirective.prototype.spinnerMessage; /** @type {?} */ NbSpinnerDirective.prototype.spinnerStatus; /** @type {?} */ NbSpinnerDirective.prototype.spinnerSize; /** * @type {?} * @private */ NbSpinnerDirective.prototype.shouldShow; /** * @type {?} * @private */ NbSpinnerDirective.prototype.directiveView; /** * @type {?} * @private */ NbSpinnerDirective.prototype.componentFactoryResolver; /** * @type {?} * @private */ NbSpinnerDirective.prototype.renderer; /** * @type {?} * @private */ NbSpinnerDirective.prototype.directiveElement; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9zcGlubmVyL3NwaW5uZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFDTCx3QkFBd0IsRUFHeEIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGdCQUFnQixFQUFFLFdBQVcsR0FDOUIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkN6RCxNQUFNLE9BQU8sa0JBQWtCOzs7Ozs7O0lBNEM3QixZQUFvQixhQUErQixFQUMvQix3QkFBa0QsRUFDbEQsUUFBbUIsRUFDbkIsZ0JBQTRCO1FBSDVCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFZO1FBMUNMLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBcUMxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBTTNCLENBQUM7Ozs7Ozs7OztJQW5CRCxJQUNJLFNBQVMsQ0FBQyxHQUFZO1FBQ3hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzs7OztJQVVELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNiO0lBQ0gsQ0FBQzs7OztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7Ozs7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxRQUE0QjtRQUM1QyxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkYsT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRixDQUFDOzs7WUEvRUYsU0FBUyxTQUFDLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQzs7OztZQTVDbEMsZ0JBQWdCO1lBUmhCLHdCQUF3QjtZQU94QixTQUFTO1lBSFQsVUFBVTs7OzZCQXNEVCxXQUFXLFNBQUMsNEJBQTRCOzZCQU14QyxLQUFLLFNBQUMsa0JBQWtCOzRCQU14QixLQUFLLFNBQUMsaUJBQWlCOzBCQU12QixLQUFLLFNBQUMsZUFBZTt3QkFNckIsS0FBSyxTQUFDLFdBQVc7Ozs7SUEzQmxCLHFDQUEwQzs7SUFDMUMsOENBQXVEOztJQUV2RCw0Q0FBa0U7O0lBTWxFLDRDQUFrRDs7SUFNbEQsMkNBQWdEOztJQU1oRCx5Q0FBNEM7Ozs7O0lBbUI1Qyx3Q0FBMkI7Ozs7O0lBRWYsMkNBQXVDOzs7OztJQUN2QyxzREFBMEQ7Ozs7O0lBQzFELHNDQUEyQjs7Ozs7SUFDM0IsOENBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudEZhY3RvcnksXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVmlld0NvbnRhaW5lclJlZiwgSG9zdEJpbmRpbmcsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5iU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vc3Bpbm5lci5jb21wb25lbnQnO1xyXG5cclxuLypcclxuICogU3R5bGVkIHNwaW5uZXIgZGlyZWN0aXZlXHJcbiAqXHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU3Bpbm5lciBTaG93Y2FzZSwgc3Bpbm5lci9zcGlubmVyLWNhcmQuY29tcG9uZW50KVxyXG4gKlxyXG4gKlxyXG4gKiBgYGB0c1xyXG4gKiA8bmItY2FyZCBbbmJTcGlubmVyXT1cImxvYWRpbmdcIiBuYlNwaW5uZXJTdGF0dXM9XCJkYW5nZXJcIj5cclxuICogICA8bmItY2FyZC1ib2R5PkNhcmQgQ29udGVudDwvbmItY2FyZC1ib2R5PlxyXG4gKiA8L25iLWNhcmQ+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiAjIyMgSW5zdGFsbGF0aW9uXHJcbiAqXHJcbiAqIEltcG9ydCBgTmJTcGlubmVyTW9kdWxlYCB0byB5b3VyIGZlYXR1cmUgbW9kdWxlLlxyXG4gKiBgYGB0c1xyXG4gKiBATmdNb2R1bGUoe1xyXG4gKiAgIGltcG9ydHM6IFtcclxuICogICBcdC8vIC4uLlxyXG4gKiAgICAgTmJTcGlubmVyTW9kdWxlLFxyXG4gKiAgIF0sXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBQYWdlTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICogIyMjIFVzYWdlXHJcbiAqXHJcbiAqIENvdWxkIGJlIGNvbG9yZWQgdXNpbmcgYHN0YXR1c2AgcHJvcGVydHlcclxuICpcclxuICogQHN0YWNrZWQtZXhhbXBsZShTcGlubmVyIENvbG9ycywgc3Bpbm5lci9zcGlubmVyLWNvbG9ycy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEF2YWlsYWJsZSBpbiBkaWZmZXJlbnQgc2l6ZXMgd2l0aCBgc2l6ZWAgcHJvcGVydHk6XHJcbiAqXHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU3Bpbm5lciBTaXplcywgc3Bpbm5lci9zcGlubmVyLXNpemVzLmNvbXBvbmVudClcclxuICpcclxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBwbGFjZSBpdCBpbnRvIHRoZSBidXR0b246XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoQnV0dG9ucyB3aXRoIHNwaW5uZXIsIHNwaW5uZXIvc3Bpbm5lci1idXR0b24uY29tcG9uZW50KVxyXG4gKlxyXG4gKiBPciB0YWJzOlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKFNwaW5uZXIgaW4gdGFicywgc3Bpbm5lci9zcGlubmVyLXRhYnMuY29tcG9uZW50KVxyXG4gKi9cclxuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmJTcGlubmVyXSd9KVxyXG5leHBvcnQgY2xhc3MgTmJTcGlubmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgc3Bpbm5lcjogQ29tcG9uZW50UmVmPE5iU3Bpbm5lckNvbXBvbmVudD47XHJcbiAgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxOYlNwaW5uZXJDb21wb25lbnQ+O1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm5iLXNwaW5uZXItY29udGFpbmVyJykgaXNTcGlubmVyRXhpc3QgPSBmYWxzZTtcclxuXHJcbiAgLypcclxuICAgKiBTcGlubmVyIG1lc3NhZ2Ugc2hvd24gbmV4dCB0byB0aGUgaWNvblxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgQElucHV0KCduYlNwaW5uZXJNZXNzYWdlJykgc3Bpbm5lck1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgLypcclxuICAgKiBTcGlubmVyIHN0YXR1cyBjb2xvciBhY3RpdmUsIGRpc2FibGVkLCBwcmltYXJ5LCBpbmZvLCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXJcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgnbmJTcGlubmVyU3RhdHVzJykgc3Bpbm5lclN0YXR1czogc3RyaW5nO1xyXG5cclxuICAvKlxyXG4gICAqIFNwaW5uZXIgc2l6ZSwgYXZhaWxhYmxlIHNpemVzOiB4eHNtYWxsLCB4c21hbGwsIHNtYWxsLCBtZWRpdW0sIGxhcmdlLCB4bGFyZ2UsIHh4bGFyZ2VcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgnbmJTcGlubmVyU2l6ZScpIHNwaW5uZXJTaXplOiBzdHJpbmc7XHJcblxyXG4gIC8qXHJcbiAgICogRGlyZWN0aXZlIHZhbHVlIC0gc2hvdyBvciBoaWRlIHNwaW5uZXJcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgnbmJTcGlubmVyJylcclxuICBzZXQgbmJTcGlubmVyKHZhbDogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuY29tcG9uZW50RmFjdG9yeSkge1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgdGhpcy5zaG93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvdWxkU2hvdyA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdWxkU2hvdyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpcmVjdGl2ZVZpZXc6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBkaXJlY3RpdmVFbGVtZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KE5iU3Bpbm5lckNvbXBvbmVudCk7XHJcbiAgICBpZiAodGhpcy5zaG91bGRTaG93KSB7XHJcbiAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpIHtcclxuICAgIGlmICh0aGlzLmlzU3Bpbm5lckV4aXN0KSB7XHJcbiAgICAgIHRoaXMuZGlyZWN0aXZlVmlldy5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5pc1NwaW5uZXJFeGlzdCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvdygpIHtcclxuICAgIGlmICghdGhpcy5pc1NwaW5uZXJFeGlzdCkge1xyXG4gICAgICB0aGlzLnNwaW5uZXIgPSB0aGlzLmRpcmVjdGl2ZVZpZXcuY3JlYXRlQ29tcG9uZW50PE5iU3Bpbm5lckNvbXBvbmVudD4odGhpcy5jb21wb25lbnRGYWN0b3J5KTtcclxuICAgICAgdGhpcy5zZXRJbnN0YW5jZUlucHV0cyh0aGlzLnNwaW5uZXIuaW5zdGFuY2UpO1xyXG4gICAgICB0aGlzLnNwaW5uZXIuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZGlyZWN0aXZlRWxlbWVudC5uYXRpdmVFbGVtZW50LCB0aGlzLnNwaW5uZXIubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgIHRoaXMuaXNTcGlubmVyRXhpc3QgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SW5zdGFuY2VJbnB1dHMoaW5zdGFuY2U6IE5iU3Bpbm5lckNvbXBvbmVudCkge1xyXG4gICAgdHlwZW9mIHRoaXMuc3Bpbm5lck1lc3NhZ2UgIT09ICd1bmRlZmluZWQnICYmIChpbnN0YW5jZS5tZXNzYWdlID0gdGhpcy5zcGlubmVyTWVzc2FnZSk7XHJcbiAgICB0eXBlb2YgdGhpcy5zcGlubmVyU3RhdHVzICE9PSAndW5kZWZpbmVkJyAmJiAoaW5zdGFuY2Uuc3RhdHVzID0gdGhpcy5zcGlubmVyU3RhdHVzKTtcclxuICAgIHR5cGVvZiB0aGlzLnNwaW5uZXJTaXplICE9PSAndW5kZWZpbmVkJyAmJiAoaW5zdGFuY2Uuc2l6ZSA9IHRoaXMuc3Bpbm5lclNpemUpO1xyXG4gIH1cclxufVxyXG4iXX0=