@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.
261 lines (260 loc) • 18 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, ElementRef, Input, Renderer2, Optional, Self } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { FlexCssService } from './flex-css.service';
import { BaseDirective } from './directive';
import { LayoutDirective } from './layout.directive';
var LayoutAlignDirective = /** @class */ (function (_super) {
tslib_1.__extends(LayoutAlignDirective, _super);
function LayoutAlignDirective(elementRef, renderer, service, layout) {
var _this = _super.call(this, elementRef, renderer) || this;
_this.service = service;
_this.layout = layout;
_this.fcValues = {};
_this.observer$ = new ReplaySubject(1);
return _this;
}
Object.defineProperty(LayoutAlignDirective.prototype, "align", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['all'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignXs", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['xs'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignSm", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['sm'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignMd", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['md'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignLg", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lg'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignXl", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['xl'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignGtXs", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-xs'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignGtSm", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-sm'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignGtMd", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-md'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignGtLg", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-lg'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignLtSm", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-sm'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignLtMd", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-md'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignLtLg", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-lg'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "alignLtXl", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-xl'] = val; },
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
LayoutAlignDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.dependsOnLayout();
};
/**
* @return {?}
*/
LayoutAlignDirective.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
this.reload();
};
/**
* @return {?}
*/
LayoutAlignDirective.prototype.reload = /**
* @return {?}
*/
function () {
var _this = this;
var /** @type {?} */ classNames = [];
this.breakpoints.forEach(function (breakpoint) {
Object.keys(_this.layoutValues).forEach(function (layoutBreakpoint) {
classNames.push(_this.service.addLayoutAlign(_this.layoutValues[layoutBreakpoint], layoutBreakpoint, _this.fcValues[breakpoint], breakpoint));
});
});
this.setClassNames(classNames);
this.observer$.next(this.fcValues);
};
/**
* @return {?}
*/
LayoutAlignDirective.prototype.dependsOnLayout = /**
* @return {?}
*/
function () {
var _this = this;
if (this.layout) {
this.layout.addNewBreakpoints(this.breakpoints, 'row');
}
else {
this.breakpoints.forEach(function (breakpoint) {
_this.addClassName(_this.service.addLayout('row', breakpoint));
});
}
};
Object.defineProperty(LayoutAlignDirective.prototype, "layoutValues", {
get: /**
* @return {?}
*/
function () {
return this.layout ? this.layout.fcValues : { 'all': '' };
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutAlignDirective.prototype, "breakpoints", {
get: /**
* @return {?}
*/
function () {
return Object.keys(this.fcValues);
},
enumerable: true,
configurable: true
});
LayoutAlignDirective.decorators = [
{ type: Directive, args: [{
selector: "\n [fcLayoutAlign],\n [fcLayoutAlign.xs], [fcLayoutAlign.sm], [fcLayoutAlign.md], [fcLayoutAlign.lg],[fcLayoutAlign.xl],\n [fcLayoutAlign.lt-sm], [fcLayoutAlign.lt-md], [fcLayoutAlign.lt-lg], [fcLayoutAlign.lt-xl],\n [fcLayoutAlign.gt-xs], [fcLayoutAlign.gt-sm], [fcLayoutAlign.gt-md], [fcLayoutAlign.gt-lg]\n ",
},] },
];
/** @nocollapse */
LayoutAlignDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: Renderer2 },
{ type: FlexCssService },
{ type: LayoutDirective, decorators: [{ type: Optional }, { type: Self }] }
]; };
LayoutAlignDirective.propDecorators = {
align: [{ type: Input, args: ['fcLayoutAlign',] }],
alignXs: [{ type: Input, args: ['fcLayoutAlign.xs',] }],
alignSm: [{ type: Input, args: ['fcLayoutAlign.sm',] }],
alignMd: [{ type: Input, args: ['fcLayoutAlign.md',] }],
alignLg: [{ type: Input, args: ['fcLayoutAlign.lg',] }],
alignXl: [{ type: Input, args: ['fcLayoutAlign.xl',] }],
alignGtXs: [{ type: Input, args: ['fcLayoutAlign.gt-xs',] }],
alignGtSm: [{ type: Input, args: ['fcLayoutAlign.gt-sm',] }],
alignGtMd: [{ type: Input, args: ['fcLayoutAlign.gt-md',] }],
alignGtLg: [{ type: Input, args: ['fcLayoutAlign.gt-lg',] }],
alignLtSm: [{ type: Input, args: ['fcLayoutAlign.lt-sm',] }],
alignLtMd: [{ type: Input, args: ['fcLayoutAlign.lt-md',] }],
alignLtLg: [{ type: Input, args: ['fcLayoutAlign.lt-lg',] }],
alignLtXl: [{ type: Input, args: ['fcLayoutAlign.lt-xl',] }]
};
return LayoutAlignDirective;
}(BaseDirective));
export { LayoutAlignDirective };
function LayoutAlignDirective_tsickle_Closure_declarations() {
/** @type {?} */
LayoutAlignDirective.prototype.fcValues;
/** @type {?} */
LayoutAlignDirective.prototype.observer$;
/** @type {?} */
LayoutAlignDirective.prototype.service;
/** @type {?} */
LayoutAlignDirective.prototype.layout;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWFsaWduLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BncmVnLW1kL25nLWZsZXgtY3NzLWxheW91dC8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQtYWxpZ24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztJQVVYLGdEQUFhO0lBc0JyRCw4QkFDRSxVQUFzQixFQUN0QixRQUFtQixFQUNYLFNBQ29CLE1BQXVCO1FBSnJELFlBTUUsa0JBQU0sVUFBVSxFQUFFLFFBQVEsQ0FBQyxTQUM1QjtRQUpTLGFBQU8sR0FBUCxPQUFPO1FBQ2EsWUFBTSxHQUFOLE1BQU0sQ0FBaUI7eUJBekIxQyxFQUFFOzBCQUVELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQzs7S0EwQi9CO0lBeEJELHNCQUFrQyx1Q0FBSzs7Ozs7UUFBdkMsVUFBd0MsR0FBRyxJQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQ2hGLHNCQUFrQyx5Q0FBTzs7Ozs7UUFBekMsVUFBMEMsR0FBRyxJQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQy9FLHNCQUFrQyx5Q0FBTzs7Ozs7UUFBekMsVUFBMEMsR0FBRyxJQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQy9FLHNCQUFrQyx5Q0FBTzs7Ozs7UUFBekMsVUFBMEMsR0FBRyxJQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQy9FLHNCQUFrQyx5Q0FBTzs7Ozs7UUFBekMsVUFBMEMsR0FBRyxJQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQy9FLHNCQUFrQyx5Q0FBTzs7Ozs7UUFBekMsVUFBMEMsR0FBRyxJQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBRS9FLHNCQUFrQywyQ0FBUzs7Ozs7UUFBM0MsVUFBNEMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQ2xGLHNCQUFrQywyQ0FBUzs7Ozs7UUFBM0MsVUFBNEMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQ2xGLHNCQUFrQywyQ0FBUzs7Ozs7UUFBM0MsVUFBNEMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQ2xGLHNCQUFrQywyQ0FBUzs7Ozs7UUFBM0MsVUFBNEMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBRWxGLHNCQUFrQywyQ0FBUzs7Ozs7UUFBM0MsVUFBNEMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7OztPQUFBO0lBQ2xGLHNCQUFrQywyQ0FBUzs7Ozs7UUFBM0MsVUFBNEMsR0FBRyxJQUFJLElBQUks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Qjs0QkFFM0IsS0FBSyxTQUFDLHFCQUFxQjs0QkFDM0IsS0FBSyxTQUFDLHFCQUFxQjs0QkFDM0IsS0FBSyxTQUFDLHFCQUFxQjs0QkFDM0IsS0FBSyxTQUFDLHFCQUFxQjs7K0JBbkM5QjtFQWUwQyxhQUFhO1NBQTFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0LCBJbnB1dCwgUmVuZGVyZXIyLCBPcHRpb25hbCwgU2VsZiwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZsZXhDc3NTZXJ2aWNlIH0gZnJvbSAnLi9mbGV4LWNzcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuL2xheW91dC5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IGBcbiAgICBbZmNMYXlvdXRBbGlnbl0sXG4gICAgW2ZjTGF5b3V0QWxpZ24ueHNdLCBbZmNMYXlvdXRBbGlnbi5zbV0sIFtmY0xheW91dEFsaWduLm1kXSwgW2ZjTGF5b3V0QWxpZ24ubGddLFtmY0xheW91dEFsaWduLnhsXSxcbiAgICBbZmNMYXlvdXRBbGlnbi5sdC1zbV0sIFtmY0xheW91dEFsaWduLmx0LW1kXSwgW2ZjTGF5b3V0QWxpZ24ubHQtbGddLCBbZmNMYXlvdXRBbGlnbi5sdC14bF0sXG4gICAgW2ZjTGF5b3V0QWxpZ24uZ3QteHNdLCBbZmNMYXlvdXRBbGlnbi5ndC1zbV0sIFtmY0xheW91dEFsaWduLmd0LW1kXSwgW2ZjTGF5b3V0QWxpZ24uZ3QtbGddXG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIExheW91dEFsaWduRGlyZWN0aXZlIGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgZmNWYWx1ZXMgPSB7fTtcblxuICBvYnNlcnZlciQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcblxuICBASW5wdXQoJ2ZjTGF5b3V0QWxpZ24nKSAgICAgICBzZXQgYWxpZ24odmFsKSAgICAgeyB0aGlzLmZjVmFsdWVzWydhbGwnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0QWxpZ24ueHMnKSAgICBzZXQgYWxpZ25Ycyh2YWwpICAgeyB0aGlzLmZjVmFsdWVzWyd4cyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRBbGlnbi5zbScpICAgIHNldCBhbGlnblNtKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ3NtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEFsaWduLm1kJykgICAgc2V0IGFsaWduTWQodmFsKSAgIHsgdGhpcy5mY1ZhbHVlc1snbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0QWxpZ24ubGcnKSAgICBzZXQgYWxpZ25MZyh2YWwpICAgeyB0aGlzLmZjVmFsdWVzWydsZyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRBbGlnbi54bCcpICAgIHNldCBhbGlnblhsKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ3hsJ10gPSB2YWw7IH1cblxuICBASW5wdXQoJ2ZjTGF5b3V0QWxpZ24uZ3QteHMnKSBzZXQgYWxpZ25HdFhzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC14cyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRBbGlnbi5ndC1zbScpIHNldCBhbGlnbkd0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LXNtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEFsaWduLmd0LW1kJykgc2V0IGFsaWduR3RNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0QWxpZ24uZ3QtbGcnKSBzZXQgYWxpZ25HdExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1sZyddID0gdmFsOyB9XG5cbiAgQElucHV0KCdmY0xheW91dEFsaWduLmx0LXNtJykgc2V0IGFsaWduTHRTbSh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtc20nXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0QWxpZ24ubHQtbWQnKSBzZXQgYWxpZ25MdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1tZCddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRBbGlnbi5sdC1sZycpIHNldCBhbGlnbkx0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LWxnJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEFsaWduLmx0LXhsJykgc2V0IGFsaWduTHRYbCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQteGwnXSA9IHZhbDsgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNlcnZpY2U6IEZsZXhDc3NTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJpdmF0ZSBsYXlvdXQ6IExheW91dERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgcmVuZGVyZXIpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kZXBlbmRzT25MYXlvdXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdO1xuXG4gICAgdGhpcy5icmVha3BvaW50cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgT2JqZWN0LmtleXModGhpcy5sYXlvdXRWYWx1ZXMpLmZvckVhY2gobGF5b3V0QnJlYWtwb2ludCA9PiB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuYWRkTGF5b3V0QWxpZ24odGhpcy5sYXlvdXRWYWx1ZXNbbGF5b3V0QnJlYWtwb2ludF0sIGxheW91dEJyZWFrcG9pbnQsIHRoaXMuZmNWYWx1ZXNbYnJlYWtwb2ludF0sIGJyZWFrcG9pbnQpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Q2xhc3NOYW1lcyhjbGFzc05hbWVzKTtcblxuICAgIHRoaXMub2JzZXJ2ZXIkLm5leHQodGhpcy5mY1ZhbHVlcyk7XG4gIH1cblxuICBkZXBlbmRzT25MYXlvdXQoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0KSB7XG4gICAgICB0aGlzLmxheW91dC5hZGROZXdCcmVha3BvaW50cyh0aGlzLmJyZWFrcG9pbnRzLCAncm93Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5zZXJ2aWNlLmFkZExheW91dCgncm93JywgYnJlYWtwb2ludCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxheW91dFZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXQgPyB0aGlzLmxheW91dC5mY1ZhbHVlcyA6IHsgJ2FsbCc6ICcnIH07XG4gIH1cblxuICBnZXQgYnJlYWtwb2ludHMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmNWYWx1ZXMpO1xuICB9XG59XG4iXX0=