@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, SkipSelf } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { FlexCssService } from './flex-css.service';
import { BaseDirective } from './directive';
import { LayoutDirective } from './layout.directive';
export class FlexOrderDirective 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 order(val) { this.fcValues['all'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderXs(val) { this.fcValues['xs'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderSm(val) { this.fcValues['sm'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderMd(val) { this.fcValues['md'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderLg(val) { this.fcValues['lg'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderXl(val) { this.fcValues['xl'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderGtXs(val) { this.fcValues['gt-xs'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderGtSm(val) { this.fcValues['gt-sm'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderGtMd(val) { this.fcValues['gt-md'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderGtLg(val) { this.fcValues['gt-lg'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderLtSm(val) { this.fcValues['lt-sm'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderLtMd(val) { this.fcValues['lt-md'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderLtLg(val) { this.fcValues['lt-lg'] = val; }
/**
* @param {?} val
* @return {?}
*/
set orderLtXl(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.addFlexOrder(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);
}
}
FlexOrderDirective.decorators = [
{ type: Directive, args: [{
selector: `
[fcFlexOrder],
[fcFlexOrder.xs], [fcFlexOrder.sm], [fcFlexOrder.md], [fcFlexOrder.lg], [fcFlexOrder.xl],
[fcFlexOrder.lt-sm], [fcFlexOrder.lt-md], [fcFlexOrder.lt-lg], [fcFlexOrder.lt-xl],
[fcFlexOrder.gt-xs], [fcFlexOrder.gt-sm], [fcFlexOrder.gt-md], [fcFlexOrder.gt-lg]
`,
},] },
];
/** @nocollapse */
FlexOrderDirective.ctorParameters = () => [
{ type: ElementRef },
{ type: Renderer2 },
{ type: FlexCssService },
{ type: LayoutDirective, decorators: [{ type: Optional }, { type: Host }, { type: SkipSelf }] }
];
FlexOrderDirective.propDecorators = {
order: [{ type: Input, args: ['fcFlexOrder',] }],
orderXs: [{ type: Input, args: ['fcFlexOrder.xs',] }],
orderSm: [{ type: Input, args: ['fcFlexOrder.sm',] }],
orderMd: [{ type: Input, args: ['fcFlexOrder.md',] }],
orderLg: [{ type: Input, args: ['fcFlexOrder.lg',] }],
orderXl: [{ type: Input, args: ['fcFlexOrder.xl',] }],
orderGtXs: [{ type: Input, args: ['fcFlexOrder.gt-xs',] }],
orderGtSm: [{ type: Input, args: ['fcFlexOrder.gt-sm',] }],
orderGtMd: [{ type: Input, args: ['fcFlexOrder.gt-md',] }],
orderGtLg: [{ type: Input, args: ['fcFlexOrder.gt-lg',] }],
orderLtSm: [{ type: Input, args: ['fcFlexOrder.lt-sm',] }],
orderLtMd: [{ type: Input, args: ['fcFlexOrder.lt-md',] }],
orderLtLg: [{ type: Input, args: ['fcFlexOrder.lt-lg',] }],
orderLtXl: [{ type: Input, args: ['fcFlexOrder.lt-xl',] }]
};
function FlexOrderDirective_tsickle_Closure_declarations() {
/** @type {?} */
FlexOrderDirective.prototype.fcValues;
/** @type {?} */
FlexOrderDirective.prototype.observer$;
/** @type {?} */
FlexOrderDirective.prototype.layout;
/** @type {?} */
FlexOrderDirective.prototype.service;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1vcmRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ3JlZy1tZC9uZy1mbGV4LWNzcy1sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvZmxleC1vcmRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFVckQsTUFBTSx5QkFBMEIsU0FBUSxhQUFhOzs7Ozs7O0lBd0JuRCxZQUNFLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ1gsU0FDd0IsTUFBdUI7UUFFdkQsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUhwQixZQUFPLEdBQVAsT0FBTzt3QkExQk4sRUFBRTt5QkFFRCxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUE2QjlCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUN0QjtLQUNGOzs7OztJQTVCRCxJQUFnQyxLQUFLLENBQUMsR0FBRyxJQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUU7Ozs7O0lBQzlFLElBQWdDLE9BQU8sQ0FBQyxHQUFHLElBQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJ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RSxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQ3ZGLENBQUMsQ0FBQztTQUNKO0tBQ0Y7Ozs7SUFFRCxJQUFJLGFBQWE7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoRTs7OztJQUVELElBQUksV0FBVztRQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNuQzs7O1lBbkZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUU7Ozs7O0dBS1Q7YUFDRjs7OztZQWRtQixVQUFVO1lBQWlCLFNBQVM7WUFHL0MsY0FBYztZQUVkLGVBQWUsdUJBc0NuQixRQUFRLFlBQUksSUFBSSxZQUFJLFFBQVE7OztvQkFyQjlCLEtBQUssU0FBQyxhQUFhO3NCQUNuQixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3NCQUN0QixLQUFLLFNBQUMsZ0JBQWdCO3dCQUV0QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUV6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CO3dCQUN6QixLQUFLLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIElucHV0LCBSZW5kZXJlcjIsIE9wdGlvbmFsLCBIb3N0LCBPbkNoYW5nZXMsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZsZXhDc3NTZXJ2aWNlIH0gZnJvbSAnLi9mbGV4LWNzcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuL2xheW91dC5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IGBcbiAgICBbZmNGbGV4T3JkZXJdLFxuICAgIFtmY0ZsZXhPcmRlci54c10sIFtmY0ZsZXhPcmRlci5zbV0sIFtmY0ZsZXhPcmRlci5tZF0sIFtmY0ZsZXhPcmRlci5sZ10sIFtmY0ZsZXhPcmRlci54bF0sXG4gICAgW2ZjRmxleE9yZGVyLmx0LXNtXSwgW2ZjRmxleE9yZGVyLmx0LW1kXSwgW2ZjRmxleE9yZGVyLmx0LWxnXSwgW2ZjRmxleE9yZGVyLmx0LXhsXSxcbiAgICBbZmNGbGV4T3JkZXIuZ3QteHNdLCBbZmNGbGV4T3JkZXIuZ3Qtc21dLCBbZmNGbGV4T3JkZXIuZ3QtbWRdLCBbZmNGbGV4T3JkZXIuZ3QtbGddXG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZsZXhPcmRlckRpcmVjdGl2ZSBleHRlbmRzIEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIGZjVmFsdWVzID0ge307XG5cbiAgb2JzZXJ2ZXIkID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XG5cbiAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dERpcmVjdGl2ZTtcblxuICBASW5wdXQoJ2ZjRmxleE9yZGVyJykgICAgICAgc2V0IG9yZGVyKHZhbCkgICAgIHsgdGhpcy5mY1ZhbHVlc1snYWxsJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPcmRlci54cycpICAgIHNldCBvcmRlclhzKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ3hzJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPcmRlci5zbScpICAgIHNldCBvcmRlclNtKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ3NtJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPcmRlci5tZCcpICAgIHNldCBvcmRlck1kKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ21kJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPcmRlci5sZycpICAgIHNldCBvcmRlckxnKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ2xnJ10gPSB2YWw7IH1cbiAgQElucHV0KCdmY0ZsZXhPcmRlci54bCcpICAgIHNldCBvcmRlclhsKHZhbCkgICB7IHRoaXMuZmNWYWx1ZXNbJ3hsJ10gPSB2YWw7IH1cblxuICBASW5wdXQoJ2ZjRmxleE9yZGVyLmd0LXhzJykgc2V0IG9yZGVyR3RYcyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QteHMnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9yZGVyLmd0LXNtJykgc2V0IG9yZGVyR3RTbSh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3Qtc20nXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9yZGVyLmd0LW1kJykgc2V0IG9yZGVyR3RNZCh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbWQnXSA9IHZhbDsgfVxuICBASW5wdXQoJ2ZjRmxleE9yZGVyLmd0LWxnJykgc2V0IG9yZGVyR3RMZyh2YWwpIHsgdGhpcy5mY1ZhbHVlc1snZ3QtbGcnXSA9IHZhbDsgfVxuXG4gIEBJbnB1dCgnZmNGbGV4T3JkZXIubHQtc20nKSBzZXQgb3JkZXJMdFNtKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1zbSddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4T3JkZXIubHQtbWQnKSBzZXQgb3JkZXJMdE1kKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1tZCddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4T3JkZXIubHQtbGcnKSBzZXQgb3JkZXJMdExnKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC1sZyddID0gdmFsOyB9XG4gIEBJbnB1dCgnZmNGbGV4T3JkZXIubHQteGwnKSBzZXQgb3JkZXJMdFhsKHZhbCkgeyB0aGlzLmZjVmFsdWVzWydsdC14bCddID0gdmFsOyB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgc2VydmljZTogRmxleENzc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBsYXlvdXQ6IExheW91dERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZiwgcmVuZGVyZXIpO1xuXG4gICAgaWYgKGxheW91dCAmJiBsYXlvdXQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ID09PSB0aGlzLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGVwZW5kc09uUGFyZW50TGF5b3V0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbXTtcblxuICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaChcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmFkZEZsZXhPcmRlcih0aGlzLmZjVmFsdWVzW2JyZWFrcG9pbnRdLCBicmVha3BvaW50KVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Q2xhc3NOYW1lcyhjbGFzc05hbWVzKTtcblxuICAgIHRoaXMub2JzZXJ2ZXIkLm5leHQodGhpcy5mY1ZhbHVlcyk7XG4gIH1cblxuICBkZXBlbmRzT25QYXJlbnRMYXlvdXQoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0KSB7XG4gICAgICB0aGlzLmxheW91dC5hZGROZXdCcmVha3BvaW50cyh0aGlzLmJyZWFrcG9pbnRzLCAncm93Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnJlYWtwb2ludHMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnBhcmVudEVsZW1lbnQsIHRoaXMuc2VydmljZS5hZGRMYXlvdXQoJ3JvdycsIGJyZWFrcG9pbnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgZ2V0IGJyZWFrcG9pbnRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZjVmFsdWVzKTtcbiAgfVxufVxuIl19