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, 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