UNPKG

@junte/ui

Version:

Quality Angular UI components kit

153 lines 15.2 kB
import { __decorate, __metadata } from "tslib"; import { Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core'; import { takeWhile } from 'rxjs/operators'; import { PropertyApi } from '../../core/decorators/api'; import { Breakpoint } from '../../core/enums/breakpoint'; import { BreakpointService } from './breakpoint.service'; const breakpoints = [Breakpoint.mobile, Breakpoint.tablet, Breakpoint.desktop, Breakpoint.wide]; export class BreakpointDirective { constructor(breakpoint, templateRef, viewContainerRef) { this.breakpoint = breakpoint; this.templateRef = templateRef; this.viewContainerRef = viewContainerRef; this.destroyed = false; this._target = []; } ngOnInit() { this.matched(this.breakpoint.current); this.breakpoint.changed .pipe(takeWhile(() => !this.destroyed)) .subscribe(b => this.matched(b)); } ngOnDestroy() { this.destroyed = true; } matched(breakpoint) { if (this._target.includes(breakpoint)) { if (!this.view) { this.view = this.viewContainerRef.createEmbeddedView(this.templateRef); } } else { if (!!this.view) { this.viewContainerRef.clear(); this.view = null; } } } } let ForDirective = class ForDirective extends BreakpointDirective { constructor(breakpoint, templateRef, viewContainerRef) { super(breakpoint, templateRef, viewContainerRef); } set target(target) { this._target = [target]; } }; ForDirective.ctorParameters = () => [ { type: BreakpointService }, { type: TemplateRef }, { type: ViewContainerRef } ]; __decorate([ PropertyApi({ name: 'jntFor', description: 'Target break point for rendering', path: 'ui.breakpoints', options: breakpoints }), Input('jntFor'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], ForDirective.prototype, "target", null); ForDirective = __decorate([ Directive({ selector: '[jntFor]' }), __metadata("design:paramtypes", [BreakpointService, TemplateRef, ViewContainerRef]) ], ForDirective); export { ForDirective }; const min = { [Breakpoint.mobile]: [Breakpoint.mobile, Breakpoint.tablet, Breakpoint.desktop, Breakpoint.wide], [Breakpoint.tablet]: [Breakpoint.tablet, Breakpoint.desktop, Breakpoint.wide], [Breakpoint.desktop]: [Breakpoint.desktop, Breakpoint.wide], [Breakpoint.wide]: [Breakpoint.wide] }; let ForMinDirective = class ForMinDirective extends BreakpointDirective { constructor(breakpoint, templateRef, viewContainerRef) { super(breakpoint, templateRef, viewContainerRef); } set target(target) { this._target = min[target]; } }; ForMinDirective.ctorParameters = () => [ { type: BreakpointService }, { type: TemplateRef }, { type: ViewContainerRef } ]; __decorate([ PropertyApi({ name: 'jntMinFor', description: 'Min break point for rendering', path: 'ui.breakpoints', options: breakpoints }), Input('jntMinFor'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], ForMinDirective.prototype, "target", null); ForMinDirective = __decorate([ Directive({ selector: '[jntMinFor]' }), __metadata("design:paramtypes", [BreakpointService, TemplateRef, ViewContainerRef]) ], ForMinDirective); export { ForMinDirective }; const max = { [Breakpoint.mobile]: [Breakpoint.mobile], [Breakpoint.tablet]: [Breakpoint.mobile, Breakpoint.tablet], [Breakpoint.desktop]: [Breakpoint.mobile, Breakpoint.tablet, Breakpoint.desktop], [Breakpoint.wide]: [Breakpoint.mobile, Breakpoint.tablet, Breakpoint.desktop, Breakpoint.wide] }; let ForMaxDirective = class ForMaxDirective extends BreakpointDirective { constructor(breakpoint, templateRef, viewContainerRef) { super(breakpoint, templateRef, viewContainerRef); } set target(target) { this._target = max[target]; } }; ForMaxDirective.ctorParameters = () => [ { type: BreakpointService }, { type: TemplateRef }, { type: ViewContainerRef } ]; __decorate([ PropertyApi({ name: 'jntMaxFor', description: 'Max break point for rendering', path: 'ui.breakpoints', options: breakpoints }), Input('jntMaxFor'), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], ForMaxDirective.prototype, "target", null); ForMaxDirective = __decorate([ Directive({ selector: '[jntMaxFor]' }), __metadata("design:paramtypes", [BreakpointService, TemplateRef, ViewContainerRef]) ], ForMaxDirective); export { ForMaxDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGp1bnRlL3VpLyIsInNvdXJjZXMiOlsibGliL2xheW91dC9yZXNwb25zaXZlL3Jlc3BvbnNpdmUuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU07SUFDcEMsVUFBVSxDQUFDLE1BQU07SUFDakIsVUFBVSxDQUFDLE9BQU87SUFDbEIsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRW5CLE1BQU0sT0FBZ0IsbUJBQW1CO0lBTXZDLFlBQThCLFVBQTZCLEVBQzdCLFdBQTZCLEVBQzdCLGdCQUFrQztRQUZsQyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU54RCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFLdkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPO2FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FB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OztZQU55QixpQkFBaUI7WUFDaEIsV0FBVztZQUNOLGdCQUFnQjs7QUFOOUM7SUFQQyxXQUFXLENBQUM7UUFDWCxJQUFJLEVBQUUsV0FBVztRQUNqQixXQUFXLEVBQUUsK0JBQStCO1FBQzVDLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsT0FBTyxFQUFFLFdBQVc7S0FDckIsQ0FBQztJQUNELEtBQUssQ0FBQyxXQUFXLENBQUM7Ozs2Q0FHbEI7QUFYVSxlQUFlO0lBSDNCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxhQUFhO0tBQ3hCLENBQUM7cUNBY3dCLGlCQUFpQjtRQUNoQixXQUFXO1FBQ04sZ0JBQWdCO0dBZm5DLGVBQWUsQ0FtQjNCO1NBbkJZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUHJvcGVydHlBcGkgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMvYXBpJztcbmltcG9ydCB7IEJyZWFrcG9pbnQgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2JyZWFrcG9pbnQnO1xuaW1wb3J0IHsgQnJlYWtwb2ludFNlcnZpY2UgfSBmcm9tICcuL2JyZWFrcG9pbnQuc2VydmljZSc7XG5cbmNvbnN0IGJyZWFrcG9pbnRzID0gW0JyZWFrcG9pbnQubW9iaWxlLFxuICBCcmVha3BvaW50LnRhYmxldCxcbiAgQnJlYWtwb2ludC5kZXNrdG9wLFxuICBCcmVha3BvaW50LndpZGVdO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQnJlYWtwb2ludERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcml2YXRlIGRlc3Ryb3llZCA9IGZhbHNlO1xuICBwcml2YXRlIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICBwcm90ZWN0ZWQgX3RhcmdldCA9IFtdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tYXRjaGVkKHRoaXMuYnJlYWtwb2ludC5jdXJyZW50KTtcbiAgICB0aGlzLmJyZWFrcG9pbnQuY2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+ICF0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKGIgPT4gdGhpcy5tYXRjaGVkKGIpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hlZChicmVha3BvaW50OiBCcmVha3BvaW50KSB7XG4gICAgaWYgKHRoaXMuX3RhcmdldC5pbmNsdWRlcyhicmVha3BvaW50KSkge1xuICAgICAgaWYgKCF0aGlzLnZpZXcpIHtcbiAgICAgICAgdGhpcy52aWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEhdGhpcy52aWV3KSB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICB0aGlzLnZpZXcgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tqbnRGb3JdJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JEaXJlY3RpdmUgZXh0ZW5kcyBCcmVha3BvaW50RGlyZWN0aXZlIHtcblxuICBAUHJvcGVydHlBcGkoe1xuICAgIG5hbWU6ICdqbnRGb3InLFxuICAgIGRlc2NyaXB0aW9uOiAnVGFyZ2V0IGJyZWFrIHBvaW50IGZvciByZW5kZXJpbmcnLFxuICAgIHBhdGg6ICd1aS5icmVha3BvaW50cycsXG4gICAgb3B0aW9uczogYnJlYWtwb2ludHNcbiAgfSlcbiAgQElucHV0KCdqbnRGb3InKVxuICBzZXQgdGFyZ2V0KHRhcmdldDogQnJlYWtwb2ludCkge1xuICAgIHRoaXMuX3RhcmdldCA9IFt0YXJnZXRdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoYnJlYWtwb2ludDogQnJlYWtwb2ludFNlcnZpY2UsXG4gICAgICAgICAgICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgc3VwZXIoYnJlYWtwb2ludCwgdGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xuICB9XG5cbn1cblxuY29uc3QgbWluID0ge1xuICBbQnJlYWtwb2ludC5tb2JpbGVdOiBbQnJlYWtwb2ludC5tb2JpbGUsIEJyZWFrcG9pbnQudGFibGV0LCBCcmVha3BvaW50LmRlc2t0b3AsIEJyZWFrcG9pbnQud2lkZV0sXG4gIFtCcmVha3BvaW50LnRhYmxldF06IFtCcmVha3BvaW50LnRhYmxldCwgQnJlYWtwb2ludC5kZXNrdG9wLCBCcmVha3BvaW50LndpZGVdLFxuICBbQnJlYWtwb2ludC5kZXNrdG9wXTogW0JyZWFrcG9pbnQuZGVza3RvcCwgQnJlYWtwb2ludC53aWRlXSxcbiAgW0JyZWFrcG9pbnQud2lkZV06IFtCcmVha3BvaW50LndpZGVdXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbam50TWluRm9yXSdcbn0pXG5leHBvcnQgY2xhc3MgRm9yTWluRGlyZWN0aXZlIGV4dGVuZHMgQnJlYWtwb2ludERpcmVjdGl2ZSB7XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBuYW1lOiAnam50TWluRm9yJyxcbiAgICBkZXNjcmlwdGlvbjogJ01pbiBicmVhayBwb2ludCBmb3IgcmVuZGVyaW5nJyxcbiAgICBwYXRoOiAndWkuYnJlYWtwb2ludHMnLFxuICAgIG9wdGlvbnM6IGJyZWFrcG9pbnRzXG4gIH0pXG4gIEBJbnB1dCgnam50TWluRm9yJylcbiAgc2V0IHRhcmdldCh0YXJnZXQ6IEJyZWFrcG9pbnQpIHtcbiAgICB0aGlzLl90YXJnZXQgPSBtaW5bdGFyZ2V0XTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKGJyZWFrcG9pbnQsIHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxuXG59XG5cbmNvbnN0IG1heCA9IHtcbiAgW0JyZWFrcG9pbnQubW9iaWxlXTogW0JyZWFrcG9pbnQubW9iaWxlXSxcbiAgW0JyZWFrcG9pbnQudGFibGV0XTogW0JyZWFrcG9pbnQubW9iaWxlLCBCcmVha3BvaW50LnRhYmxldF0sXG4gIFtCcmVha3BvaW50LmRlc2t0b3BdOiBbQnJlYWtwb2ludC5tb2JpbGUsIEJyZWFrcG9pbnQudGFibGV0LCBCcmVha3BvaW50LmRlc2t0b3BdLFxuICBbQnJlYWtwb2ludC53aWRlXTogW0JyZWFrcG9pbnQubW9iaWxlLCBCcmVha3BvaW50LnRhYmxldCwgQnJlYWtwb2ludC5kZXNrdG9wLCBCcmVha3BvaW50LndpZGVdXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbam50TWF4Rm9yXSdcbn0pXG5leHBvcnQgY2xhc3MgRm9yTWF4RGlyZWN0aXZlIGV4dGVuZHMgQnJlYWtwb2ludERpcmVjdGl2ZSB7XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBuYW1lOiAnam50TWF4Rm9yJyxcbiAgICBkZXNjcmlwdGlvbjogJ01heCBicmVhayBwb2ludCBmb3IgcmVuZGVyaW5nJyxcbiAgICBwYXRoOiAndWkuYnJlYWtwb2ludHMnLFxuICAgIG9wdGlvbnM6IGJyZWFrcG9pbnRzXG4gIH0pXG4gIEBJbnB1dCgnam50TWF4Rm9yJylcbiAgc2V0IHRhcmdldCh0YXJnZXQ6IEJyZWFrcG9pbnQpIHtcbiAgICB0aGlzLl90YXJnZXQgPSBtYXhbdGFyZ2V0XTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKGJyZWFrcG9pbnQsIHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcbiAgfVxuXG59XG4iXX0=