@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) • 17.6 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 LayoutGapDirective = /** @class */ (function (_super) {
tslib_1.__extends(LayoutGapDirective, _super);
function LayoutGapDirective(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(LayoutGapDirective.prototype, "gap", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['all'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapXs", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['xs'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapSm", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['sm'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapMd", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['md'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapLg", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lg'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapXl", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['xl'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapGtXs", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-xs'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapGtSm", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-sm'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapGtMd", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-md'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapGtLg", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['gt-lg'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapLtSm", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-sm'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapLtMd", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-md'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapLtLg", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-lg'] = val; },
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "gapLtXl", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) { this.fcValues['lt-xl'] = val; },
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
LayoutGapDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.dependsOnLayout();
};
/**
* @return {?}
*/
LayoutGapDirective.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
this.reload();
};
/**
* @return {?}
*/
LayoutGapDirective.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.addLayoutGap(_this.layoutValues[layoutBreakpoint], layoutBreakpoint, _this.fcValues[breakpoint], breakpoint));
});
});
this.setClassNames(classNames);
this.observer$.next(this.fcValues);
};
/**
* @return {?}
*/
LayoutGapDirective.prototype.dependsOnLayout = /**
* @return {?}
*/
function () {
var _this = this;
if (this.layout) {
this.layout.addNewBreakpoints(this.breakpoints);
}
else {
this.breakpoints.forEach(function (breakpoint) {
_this.addClassName(_this.service.addLayout('row', breakpoint));
});
}
};
Object.defineProperty(LayoutGapDirective.prototype, "layoutValues", {
get: /**
* @return {?}
*/
function () {
return this.layout ? this.layout.fcValues : { 'all': '' };
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutGapDirective.prototype, "breakpoints", {
get: /**
* @return {?}
*/
function () {
return Object.keys(this.fcValues);
},
enumerable: true,
configurable: true
});
LayoutGapDirective.decorators = [
{ type: Directive, args: [{
selector: "\n [fcLayoutGap],\n [fcLayoutGap.xs], [fcLayoutGap.sm], [fcLayoutGap.md], [fcLayoutGap.lg], [fcLayoutGap.xl],\n [fcLayoutGap.lt-sm], [fcLayoutGap.lt-md], [fcLayoutGap.lt-lg], [fcLayoutGap.lt-xl],\n [fcLayoutGap.gt-xs], [fcLayoutGap.gt-sm], [fcLayoutGap.gt-md], [fcLayoutGap.gt-lg]\n ",
},] },
];
/** @nocollapse */
LayoutGapDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: Renderer2 },
{ type: FlexCssService },
{ type: LayoutDirective, decorators: [{ type: Optional }, { type: Self }] }
]; };
LayoutGapDirective.propDecorators = {
gap: [{ type: Input, args: ['fcLayoutGap',] }],
gapXs: [{ type: Input, args: ['fcLayoutGap.xs',] }],
gapSm: [{ type: Input, args: ['fcLayoutGap.sm',] }],
gapMd: [{ type: Input, args: ['fcLayoutGap.md',] }],
gapLg: [{ type: Input, args: ['fcLayoutGap.lg',] }],
gapXl: [{ type: Input, args: ['fcLayoutGap.xl',] }],
gapGtXs: [{ type: Input, args: ['fcLayoutGap.gt-xs',] }],
gapGtSm: [{ type: Input, args: ['fcLayoutGap.gt-sm',] }],
gapGtMd: [{ type: Input, args: ['fcLayoutGap.gt-md',] }],
gapGtLg: [{ type: Input, args: ['fcLayoutGap.gt-lg',] }],
gapLtSm: [{ type: Input, args: ['fcLayoutGap.lt-sm',] }],
gapLtMd: [{ type: Input, args: ['fcLayoutGap.lt-md',] }],
gapLtLg: [{ type: Input, args: ['fcLayoutGap.lt-lg',] }],
gapLtXl: [{ type: Input, args: ['fcLayoutGap.lt-xl',] }]
};
return LayoutGapDirective;
}(BaseDirective));
export { LayoutGapDirective };
function LayoutGapDirective_tsickle_Closure_declarations() {
/** @type {?} */
LayoutGapDirective.prototype.fcValues;
/** @type {?} */
LayoutGapDirective.prototype.observer$;
/** @type {?} */
LayoutGapDirective.prototype.service;
/** @type {?} */
LayoutGapDirective.prototype.layout;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWdhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3JlZy1tZC9uZy1mbGV4LWNzcy1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvbGF5b3V0LWdhcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0lBVWIsOENBQWE7SUFzQm5ELDRCQUNFLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ1gsU0FDb0IsTUFBdUI7UUFKckQsWUFNRSxrQkFBTSxVQUFVLEVBQUUsUUFBUSxDQUFDLFNBQzVCO1FBSlMsYUFBTyxHQUFQLE9BQU87UUFDYSxZQUFNLEdBQU4sTUFBTSxDQUFpQjt5QkF6QjFDLEVBQUU7MEJBRUQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDOztLQTBCL0I7SUF4QkQsc0JBQWdDLG1DQUFHOzs7OztRQUFuQyxVQUFvQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDeEUsc0JBQWdDLHFDQUFLOzs7OztRQUFyQyxVQUFzQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDekUsc0JBQWdDLHFDQUFLOzs7OztRQUFyQyxVQUFzQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDekUsc0JBQWdDLHFDQUFLOzs7OztRQUFyQyxVQUFzQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDekUsc0JBQWdDLHFDQUFLOzs7OztRQUFyQyxVQUFzQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDekUsc0JBQWdDLHFDQUFLOzs7OztRQUFyQyxVQUFzQyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFFekUsc0JBQWdDLHVDQUFPOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDOUUsc0JBQWdDLHVDQUFPOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDOUUsc0JBQWdDLHVDQUFPOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDOUUsc0JBQWdDLHVDQUFPOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFFOUUsc0JBQWdDLHVDQUFPOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRTs7O09BQUE7SUFDOUUsc0JBQWdDLHVDQUFPOzs7OztRQUF2QyxVQUF3QyxHQUFHLElBQUksSUFBSSxDQUFD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U0FBQyxtQkFBbUI7MEJBQ3pCLEtBQUssU0FBQyxtQkFBbUI7MEJBQ3pCLEtBQUssU0FBQyxtQkFBbUI7MEJBQ3pCLEtBQUssU0FBQyxtQkFBbUI7OzZCQW5DNUI7RUFld0MsYUFBYTtTQUF4QyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgSW5wdXQsIFJlbmRlcmVyMiwgT3B0aW9uYWwsIFNlbGYsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGbGV4Q3NzU2VydmljZSB9IGZyb20gJy4vZmxleC1jc3Muc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGF5b3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9sYXlvdXQuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgXG4gICAgW2ZjTGF5b3V0R2FwXSxcbiAgICBbZmNMYXlvdXRHYXAueHNdLCBbZmNMYXlvdXRHYXAuc21dLCBbZmNMYXlvdXRHYXAubWRdLCBbZmNMYXlvdXRHYXAubGddLCBbZmNMYXlvdXRHYXAueGxdLFxuICAgIFtmY0xheW91dEdhcC5sdC1zbV0sIFtmY0xheW91dEdhcC5sdC1tZF0sIFtmY0xheW91dEdhcC5sdC1sZ10sIFtmY0xheW91dEdhcC5sdC14bF0sXG4gICAgW2ZjTGF5b3V0R2FwLmd0LXhzXSwgW2ZjTGF5b3V0R2FwLmd0LXNtXSwgW2ZjTGF5b3V0R2FwLmd0LW1kXSwgW2ZjTGF5b3V0R2FwLmd0LWxnXVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRHYXBEaXJlY3RpdmUgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBmY1ZhbHVlcyA9IHt9O1xuXG4gIG9ic2VydmVyJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuXG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAnKSAgICAgICBzZXQgZ2FwKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydhbGwnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLnhzJykgICAgc2V0IGdhcFhzKHZhbCkgeyB0aGlzLmZjVmFsdWVzWyd4cyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAuc20nKSAgICBzZXQgZ2FwU20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3NtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEdhcC5tZCcpICAgIHNldCBnYXBNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmxnJykgICAgc2V0IGdhcExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsZyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAueGwnKSAgICBzZXQgZ2FwWGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ3hsJ10gPSB2YWw7IH1cblxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmd0LXhzJykgc2V0IGdhcEd0WHModmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LXhzJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEdhcC5ndC1zbScpIHNldCBnYXBHdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydndC1zbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAuZ3QtbWQnKSBzZXQgZ2FwR3RNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmd0LWxnJykgc2V0IGdhcEd0TGcodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2d0LWxnJ10gPSB2YWw7IH1cblxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmx0LXNtJykgc2V0IGdhcEx0U20odmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXNtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0xheW91dEdhcC5sdC1tZCcpIHNldCBnYXBMdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1tZCddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNMYXlvdXRHYXAubHQtbGcnKSBzZXQgZ2FwTHRMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snbHQtbGcnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjTGF5b3V0R2FwLmx0LXhsJykgc2V0IGdhcEx0WGwodmFsKSB7IHRoaXMuZmNWYWx1ZXNbJ2x0LXhsJ10gPSB2YWw7IH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBGbGV4Q3NzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbGF5b3V0OiBMYXlvdXREaXJlY3RpdmUsXG4gICkge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYsIHJlbmRlcmVyKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGVwZW5kc09uTGF5b3V0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbXTtcblxuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubGF5b3V0VmFsdWVzKS5mb3JFYWNoKGxheW91dEJyZWFrcG9pbnQgPT4ge1xuICAgICAgICBjbGFzc05hbWVzLnB1c2goXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmFkZExheW91dEdhcCh0aGlzLmxheW91dFZhbHVlc1tsYXlvdXRCcmVha3BvaW50XSwgbGF5b3V0QnJlYWtwb2ludCwgdGhpcy5mY1ZhbHVlc1ticmVha3BvaW50XSwgYnJlYWtwb2ludClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRDbGFzc05hbWVzKGNsYXNzTmFtZXMpO1xuXG4gICAgdGhpcy5vYnNlcnZlciQubmV4dCh0aGlzLmZjVmFsdWVzKTtcbiAgfVxuXG4gIGRlcGVuZHNPbkxheW91dCgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQpIHtcbiAgICAgIHRoaXMubGF5b3V0LmFkZE5ld0JyZWFrcG9pbnRzKHRoaXMuYnJlYWtwb2ludHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJyZWFrcG9pbnRzLmZvckVhY2goYnJlYWtwb2ludCA9PiB7XG4gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHRoaXMuc2VydmljZS5hZGRMYXlvdXQoJ3JvdycsIGJyZWFrcG9pbnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsYXlvdXRWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5b3V0ID8gdGhpcy5sYXlvdXQuZmNWYWx1ZXMgOiB7ICdhbGwnOiAnJyB9O1xuICB9XG5cbiAgZ2V0IGJyZWFrcG9pbnRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZjVmFsdWVzKTtcbiAgfVxufVxuIl19