UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

75 lines (71 loc) 5.37 kB
import { isPlatformBrowser } from '@angular/common'; import * as i0 from '@angular/core'; import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, PLATFORM_ID, Directive, Input } from '@angular/core'; import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom'; import { tuiWithStyles } from '@taiga-ui/cdk/utils/miscellaneous'; class TuiShimmerStyles { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmerStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiShimmerStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-shimmer-styles" }, ngImport: i0, template: '', isInline: true, styles: ["@keyframes tuiShimmer{0%{-webkit-mask-position:top left,-100rem;mask-position:top left,-100rem}to{-webkit-mask-position:top left,300rem;mask-position:top left,300rem}}[tuiShimmer]._shimmer{-webkit-mask-image:linear-gradient(black,black),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);mask-image:linear-gradient(#000,#000),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);-webkit-mask-size:100%,6rem 100%;mask-size:100%,6rem 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-out;mask-composite:subtract;animation:tuiShimmer 8s infinite linear;pointer-events:none;-webkit-user-select:none;user-select:none}[tuiShimmer]._disabled{animation:none;-webkit-mask:none;mask:none;opacity:var(--tui-disabled-opacity)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmerStyles, decorators: [{ type: Component, args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'tui-shimmer-styles', }, styles: ["@keyframes tuiShimmer{0%{-webkit-mask-position:top left,-100rem;mask-position:top left,-100rem}to{-webkit-mask-position:top left,300rem;mask-position:top left,300rem}}[tuiShimmer]._shimmer{-webkit-mask-image:linear-gradient(black,black),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);mask-image:linear-gradient(#000,#000),linear-gradient(-70deg,transparent,rgba(0,0,0,.5),transparent);-webkit-mask-size:100%,6rem 100%;mask-size:100%,6rem 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-composite:source-out;mask-composite:subtract;animation:tuiShimmer 8s infinite linear;pointer-events:none;-webkit-user-select:none;user-select:none}[tuiShimmer]._disabled{animation:none;-webkit-mask:none;mask:none;opacity:var(--tui-disabled-opacity)}\n"] }] }] }); class TuiShimmer { constructor() { this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID)); this.el = tuiInjectElement(); this.disabled = false; this.nothing = tuiWithStyles(TuiShimmerStyles); this.shimmer = false; } ngOnChanges() { if (!this.isBrowser) { return; } this.disabled = !parseFloat(getComputedStyle(this.el).getPropertyValue('--tui-duration')); if (this.disabled) { return; } this.animation?.commitStyles(); this.animation?.cancel(); if (this.shimmer) { this.animation = this.el.animate({ opacity: [0.5, 0.25, 0.5, 0.5] }, { duration: 1500, iterations: Infinity }); } else { this.animation = this.el.animate([{ opacity: 0, offset: 0.5 }, { opacity: 1 }], { duration: 800, }); this.animation.finished .then(() => { this.el.style.opacity = ''; }) .catch(() => { }); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiShimmer, isStandalone: true, selector: "[tuiShimmer]", inputs: { shimmer: ["tuiShimmer", "shimmer"] }, host: { attributes: { "tuiShimmer": "" }, properties: { "class._shimmer": "shimmer", "class._disabled": "shimmer && disabled", "attr.inert": "shimmer || null" } }, usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiShimmer, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[tuiShimmer]', host: { tuiShimmer: '', '[class._shimmer]': 'shimmer', '[class._disabled]': 'shimmer && disabled', '[attr.inert]': 'shimmer || null', }, }] }], propDecorators: { shimmer: [{ type: Input, args: ['tuiShimmer'] }] } }); /** * Generated bundle index. Do not edit. */ export { TuiShimmer }; //# sourceMappingURL=taiga-ui-kit-directives-shimmer.mjs.map