UNPKG

@greg-md/ng-flex-css-layout

Version:

Flex-CSS-Layout is an alternative behaviour of Flex-Layout directives, that will still work with Angular Universal and App Shell.

189 lines (188 loc) 14.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Directive, ElementRef, Input, Renderer2, Optional, Host } from '@angular/core'; import { ReplaySubject } from 'rxjs'; import { FlexCssService } from './flex-css.service'; import { BaseDirective } from './directive'; import { LayoutDirective } from './layout.directive'; export class FlexAlignDirective extends BaseDirective { /** * @param {?} elementRef * @param {?} renderer * @param {?} service * @param {?} layout */ constructor(elementRef, renderer, service, layout) { super(elementRef, renderer); this.service = service; this.fcValues = {}; this.observer$ = new ReplaySubject(1); if (layout && layout.elementRef.nativeElement === this.parentElement) { this.layout = layout; } } /** * @param {?} val * @return {?} */ set align(val) { this.fcValues['all'] = val; } /** * @param {?} val * @return {?} */ set alignXs(val) { this.fcValues['xs'] = val; } /** * @param {?} val * @return {?} */ set alignSm(val) { this.fcValues['sm'] = val; } /** * @param {?} val * @return {?} */ set alignMd(val) { this.fcValues['md'] = val; } /** * @param {?} val * @return {?} */ set alignLg(val) { this.fcValues['lg'] = val; } /** * @param {?} val * @return {?} */ set alignXl(val) { this.fcValues['xl'] = val; } /** * @param {?} val * @return {?} */ set alignGtXs(val) { this.fcValues['gt-xs'] = val; } /** * @param {?} val * @return {?} */ set alignGtSm(val) { this.fcValues['gt-sm'] = val; } /** * @param {?} val * @return {?} */ set alignGtMd(val) { this.fcValues['gt-md'] = val; } /** * @param {?} val * @return {?} */ set alignGtLg(val) { this.fcValues['gt-lg'] = val; } /** * @param {?} val * @return {?} */ set alignLtSm(val) { this.fcValues['lt-sm'] = val; } /** * @param {?} val * @return {?} */ set alignLtMd(val) { this.fcValues['lt-md'] = val; } /** * @param {?} val * @return {?} */ set alignLtLg(val) { this.fcValues['lt-lg'] = val; } /** * @param {?} val * @return {?} */ set alignLtXl(val) { this.fcValues['lt-xl'] = val; } /** * @return {?} */ ngOnInit() { this.dependsOnParentLayout(); } /** * @return {?} */ ngOnChanges() { this.reload(); } /** * @return {?} */ reload() { const /** @type {?} */ classNames = []; this.breakpoints.forEach(breakpoint => { classNames.push(this.service.addFlexAlign(this.fcValues[breakpoint], breakpoint)); }); this.setClassNames(classNames); this.observer$.next(this.fcValues); } /** * @return {?} */ dependsOnParentLayout() { if (this.layout) { this.layout.addNewBreakpoints(this.breakpoints, 'row'); } else { this.breakpoints.forEach(breakpoint => { this.renderer.addClass(this.parentElement, this.service.addLayout('row', breakpoint)); }); } } /** * @return {?} */ get parentElement() { return this.renderer.parentNode(this.elementRef.nativeElement); } /** * @return {?} */ get breakpoints() { return Object.keys(this.fcValues); } } FlexAlignDirective.decorators = [ { type: Directive, args: [{ selector: ` [fcFlexAlign], [fcFlexAlign.xs], [fcFlexAlign.sm], [fcFlexAlign.md], [fcFlexAlign.lg], [fcFlexAlign.xl], [fcFlexAlign.lt-sm], [fcFlexAlign.lt-md], [fcFlexAlign.lt-lg], [fcFlexAlign.lt-xl], [fcFlexAlign.gt-xs], [fcFlexAlign.gt-sm], [fcFlexAlign.gt-md], [fcFlexAlign.gt-lg] `, },] }, ]; /** @nocollapse */ FlexAlignDirective.ctorParameters = () => [ { type: ElementRef }, { type: Renderer2 }, { type: FlexCssService }, { type: LayoutDirective, decorators: [{ type: Optional }, { type: Host }] } ]; FlexAlignDirective.propDecorators = { align: [{ type: Input, args: ['fcFlexAlign',] }], alignXs: [{ type: Input, args: ['fcFlexAlign.xs',] }], alignSm: [{ type: Input, args: ['fcFlexAlign.sm',] }], alignMd: [{ type: Input, args: ['fcFlexAlign.md',] }], alignLg: [{ type: Input, args: ['fcFlexAlign.lg',] }], alignXl: [{ type: Input, args: ['fcFlexAlign.xl',] }], alignGtXs: [{ type: Input, args: ['fcFlexAlign.gt-xs',] }], alignGtSm: [{ type: Input, args: ['fcFlexAlign.gt-sm',] }], alignGtMd: [{ type: Input, args: ['fcFlexAlign.gt-md',] }], alignGtLg: [{ type: Input, args: ['fcFlexAlign.gt-lg',] }], alignLtSm: [{ type: Input, args: ['fcFlexAlign.lt-sm',] }], alignLtMd: [{ type: Input, args: ['fcFlexAlign.lt-md',] }], alignLtLg: [{ type: Input, args: ['fcFlexAlign.lt-lg',] }], alignLtXl: [{ type: Input, args: ['fcFlexAlign.lt-xl',] }] }; function FlexAlignDirective_tsickle_Closure_declarations() { /** @type {?} */ FlexAlignDirective.prototype.fcValues; /** @type {?} */ FlexAlignDirective.prototype.observer$; /** @type {?} */ FlexAlignDirective.prototype.layout; /** @type {?} */ FlexAlignDirective.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1hbGlnbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3JlZy1tZC9uZy1mbGV4LWNzcy1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvZmxleC1hbGlnbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVVyRCxNQUFNLHlCQUEwQixTQUFRLGFBQWE7Ozs7Ozs7SUF3Qm5ELFlBQ0UsVUFBc0IsRUFDdEIsUUFBbUIsRUFDWCxTQUNZLE1BQXVCO1FBRTNDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFIcEIsWUFBTyxHQUFQLE9BQU87d0JBMUJOLEVBQUU7eUJBRUQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBNkI5QixFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7U0FDdEI7S0FDRjs7Ozs7SUE1QkQsSUFBZ0MsS0FBSyxDQUFDLEdBQUcsSUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFOzs7OztJQUM5RSxJQUFnQyxPQUFPLENBQUMsR0FBRyxJQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdB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LENBQUMsQ0FBQzthQUN2RixDQUFDLENBQUM7U0FDSjtLQUNGOzs7O0lBRUQsSUFBSSxhQUFhO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEU7Ozs7SUFFRCxJQUFJLFdBQVc7UUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbkM7OztZQW5GRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFOzs7OztHQUtUO2FBQ0Y7Ozs7WUFkbUIsVUFBVTtZQUFpQixTQUFTO1lBRy9DLGNBQWM7WUFFZCxlQUFlLHVCQXNDbkIsUUFBUSxZQUFJLElBQUk7OztvQkFyQmxCLEtBQUssU0FBQyxhQUFhO3NCQUNuQixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3dCQUV0QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUV6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIElucHV0LCBSZW5kZXJlcjIsIE9wdGlvbmFsLCBIb3N0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmxleENzc1NlcnZpY2UgfSBmcm9tICcuL2ZsZXgtY3NzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlJztcbmltcG9ydCB7IExheW91dERpcmVjdGl2ZSB9IGZyb20gJy4vbGF5b3V0LmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogYFxuICAgIFtmY0ZsZXhBbGlnbl0sXG4gICAgW2ZjRmxleEFsaWduLnhzXSwgW2ZjRmxleEFsaWduLnNtXSwgW2ZjRmxleEFsaWduLm1kXSwgW2ZjRmxleEFsaWduLmxnXSwgW2ZjRmxleEFsaWduLnhsXSxcbiAgICBbZmNGbGV4QWxpZ24ubHQtc21dLCBbZmNGbGV4QWxpZ24ubHQtbWRdLCBbZmNGbGV4QWxpZ24ubHQtbGddLCBbZmNGbGV4QWxpZ24ubHQteGxdLFxuICAgIFtmY0ZsZXhBbGlnbi5ndC14c10sIFtmY0ZsZXhBbGlnbi5ndC1zbV0sIFtmY0ZsZXhBbGlnbi5ndC1tZF0sIFtmY0ZsZXhBbGlnbi5ndC1sZ11cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgRmxleEFsaWduRGlyZWN0aXZlIGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgZmNWYWx1ZXMgPSB7fTtcblxuICBvYnNlcnZlciQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICBwcml2YXRlIGxheW91dDogTGF5b3V0RGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgnZmNGbGV4QWxpZ24nKSAgICAgICBzZXQgYWxpZ24odmFsKSAgICAgeyB0aGlzLmZjVmFsdWVzWydhbGwnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleEFsaWduLnhzJykgICAgc2V0IGFsaWduWHModmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1sneHMnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleEFsaWduLnNtJykgICAgc2V0IGFsaWduU20odmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snc20nXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleEFsaWduLm1kJykgICAgc2V0IGFsaWduTWQodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleEFsaWduLmxnJykgICAgc2V0IGFsaWduTGcodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snbGcnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleEFsaWduLnhsJykgICAgc2V0IGFsaWduWGwodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1sneGwnXSA9IHZhbDsgfVxuXG4gIEBJbnB1dCgnZmNGbGV4QWxpZ24uZ3QteHMnKSBzZXQgYWxpZ25HdFhzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC14cyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4QWxpZ24uZ3Qtc20nKSBzZXQgYWxpZ25HdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4QWxpZ24uZ3QtbWQnKSBzZXQgYWxpZ25HdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1tZCddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4QWxpZ24uZ3QtbGcnKSBzZXQgYWxpZ25HdExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1sZyddID0gdmFsOyB9XG5cbiAgQElucHV0KCdmY0ZsZXhBbGlnbi5sdC1zbScpIHNldCBhbGlnbkx0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXNtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhBbGlnbi5sdC1tZCcpIHNldCBhbGlnbkx0TWQodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LW1kJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhBbGlnbi5sdC1sZycpIHNldCBhbGlnbkx0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LWxnJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhBbGlnbi5sdC14bCcpIHNldCBhbGlnbkx0WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXhsJ10gPSB2YWw7IH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBGbGV4Q3NzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIGxheW91dDogTGF5b3V0RGlyZWN0aXZlLFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlcik7XG5cbiAgICBpZiAobGF5b3V0ICYmIGxheW91dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgPT09IHRoaXMucGFyZW50RWxlbWVudCkge1xuICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZXBlbmRzT25QYXJlbnRMYXlvdXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdO1xuXG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgY2xhc3NOYW1lcy5wdXNoKFxuICAgICAgICB0aGlzLnNlcnZpY2UuYWRkRmxleEFsaWduKHRoaXMuZmNWYWx1ZXNbYnJlYWtwb2ludF0sIGJyZWFrcG9pbnQpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRDbGFzc05hbWVzKGNsYXNzTmFtZXMpO1xuXG4gICAgdGhpcy5vYnNlcnZlciQubmV4dCh0aGlzLmZjVmFsdWVzKTtcbiAgfVxuXG4gIGRlcGVuZHNPblBhcmVudExheW91dCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQpIHtcbiAgICAgIHRoaXMubGF5b3V0LmFkZE5ld0JyZWFrcG9pbnRzKHRoaXMuYnJlYWtwb2ludHMsICdyb3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMucGFyZW50RWxlbWVudCwgdGhpcy5zZXJ2aWNlLmFkZExheW91dCgncm93JywgYnJlYWtwb2ludCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBnZXQgYnJlYWtwb2ludHMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmNWYWx1ZXMpO1xuICB9XG59XG4iXX0=