@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
JavaScript
/**
* @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=