UNPKG

@neocomplexx/ngx-neo-directives

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.5.

108 lines 7.4 kB
/** * @fileoverview added by tsickle * Generated from: lib/neo-matchheight.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, Input, HostListener } from '@angular/core'; var NeoMatchHeightDirective = /** @class */ (function () { function NeoMatchHeightDirective(el) { this.el = el; } /** * @return {?} */ NeoMatchHeightDirective.prototype.onResize = /** * @return {?} */ function () { this.matchHeight(this.el.nativeElement, this.matchHeightClassName); }; /** * @return {?} */ NeoMatchHeightDirective.prototype.ngAfterViewChecked = /** * @return {?} */ function () { this.matchHeight(this.el.nativeElement, this.matchHeightClassName); }; /** * @param {?} parent * @param {?} className * @return {?} */ NeoMatchHeightDirective.prototype.matchHeight = /** * @param {?} parent * @param {?} className * @return {?} */ function (parent, className) { if (!parent) { return; } // step 1: find all the child elements with the selected class name /** @type {?} */ var children = parent.getElementsByClassName(className); if (!children) { return; } // step 1b: reset all children height Array.from(children).forEach((/** * @param {?} x * @return {?} */ function (x) { x.style.height = 'initial'; })); // step 2a: get all the child elements heights /** @type {?} */ var itemHeights = Array.from(children) .map((/** * @param {?} x * @return {?} */ function (x) { return x.getBoundingClientRect().height; })); // step 2b: find out the tallest /** @type {?} */ var maxHeight = itemHeights.reduce((/** * @param {?} prev * @param {?} curr * @return {?} */ function (prev, curr) { return curr > prev ? curr : prev; }), 0); // step 3: update all the child elements to the tallest height Array.from(children) .forEach((/** * @param {?} x * @return {?} */ function (x) { return x.style.height = maxHeight + "px"; })); }; NeoMatchHeightDirective.decorators = [ { type: Directive, args: [{ selector: '[neoMatchHeight]' },] } ]; /** @nocollapse */ NeoMatchHeightDirective.ctorParameters = function () { return [ { type: ElementRef } ]; }; NeoMatchHeightDirective.propDecorators = { matchHeightClassName: [{ type: Input, args: ['neoMatchHeight',] }], onResize: [{ type: HostListener, args: ['window:resize',] }] }; return NeoMatchHeightDirective; }()); export { NeoMatchHeightDirective }; if (false) { /** @type {?} */ NeoMatchHeightDirective.prototype.matchHeightClassName; /** * @type {?} * @private */ NeoMatchHeightDirective.prototype.el; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVvLW1hdGNoaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZW9jb21wbGV4eC9uZ3gtbmVvLWRpcmVjdGl2ZXMvIiwic291cmNlcyI6WyJsaWIvbmVvLW1hdGNoaGVpZ2h0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQUUsVUFBVSxFQUNyQixLQUFLLEVBQUUsWUFBWSxFQUN0QixNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQVVJLGlDQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUNsQyxDQUFDOzs7O0lBTDhCLDBDQUFROzs7SUFBdkM7UUFDSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Ozs7SUFLRCxvREFBa0I7OztJQUFsQjtRQUNJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdkUsQ0FBQzs7Ozs7O0lBRU0sNkNBQVc7Ozs7O0lBQWxCLFVBQW1CLE1BQW1CLEVBQUUsU0FBaUI7UUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUFFLE9BQU87U0FBRTs7O1lBR2xCLFFBQVEsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDO1FBRXpELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFMUIscUNBQXFDO1FBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsQ0FBYztZQUN4QyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDL0IsQ0FBQyxFQUFDLENBQUM7OztZQUdHLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNuQyxHQUFHOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEVBQWhDLENBQWdDLEVBQUM7OztZQUd6QyxTQUFTLEdBQUcsV0FBVyxDQUFDLE1BQU07Ozs7O1FBQUMsVUFBQyxJQUFJLEVBQUUsSUFBSTtZQUM1QyxPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JDLENBQUMsR0FBRSxDQUFDLENBQUM7UUFFTCw4REFBOEQ7UUFDOUQsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDZixPQUFPOzs7O1FBQUMsVUFBQyxDQUFjLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBTSxTQUFTLE9BQUksRUFBakMsQ0FBaUMsRUFBQyxDQUFDO0lBQ3hFLENBQUM7O2dCQTFDSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtpQkFDL0I7Ozs7Z0JBTmMsVUFBVTs7O3VDQVFwQixLQUFLLFNBQUMsZ0JBQWdCOzJCQUV0QixZQUFZLFNBQUMsZUFBZTs7SUFxQ2pDLDhCQUFDO0NBQUEsQUEzQ0QsSUEyQ0M7U0F4Q1ksdUJBQXVCOzs7SUFDaEMsdURBQXNEOzs7OztJQU0xQyxxQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBJbnB1dCwgSG9zdExpc3RlbmVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tuZW9NYXRjaEhlaWdodF0nXG59KVxuZXhwb3J0IGNsYXNzIE5lb01hdGNoSGVpZ2h0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gICAgQElucHV0KCduZW9NYXRjaEhlaWdodCcpIG1hdGNoSGVpZ2h0Q2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJykgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMubWF0Y2hIZWlnaHQodGhpcy5lbC5uYXRpdmVFbGVtZW50LCB0aGlzLm1hdGNoSGVpZ2h0Q2xhc3NOYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLm1hdGNoSGVpZ2h0KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgdGhpcy5tYXRjaEhlaWdodENsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoSGVpZ2h0KHBhcmVudDogSFRNTEVsZW1lbnQsIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghcGFyZW50KSB7IHJldHVybjsgfVxuXG4gICAgICAgIC8vIHN0ZXAgMTogZmluZCBhbGwgdGhlIGNoaWxkIGVsZW1lbnRzIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzIG5hbWVcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpO1xuXG4gICAgICAgIGlmICghY2hpbGRyZW4pIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgLy8gc3RlcCAxYjogcmVzZXQgYWxsIGNoaWxkcmVuIGhlaWdodFxuICAgICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKS5mb3JFYWNoKCh4OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgeC5zdHlsZS5oZWlnaHQgPSAnaW5pdGlhbCc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHN0ZXAgMmE6IGdldCBhbGwgdGhlIGNoaWxkIGVsZW1lbnRzIGhlaWdodHNcbiAgICAgICAgY29uc3QgaXRlbUhlaWdodHMgPSBBcnJheS5mcm9tKGNoaWxkcmVuKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcblxuICAgICAgICAvLyBzdGVwIDJiOiBmaW5kIG91dCB0aGUgdGFsbGVzdFxuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSBpdGVtSGVpZ2h0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyID4gcHJldiA/IGN1cnIgOiBwcmV2O1xuICAgICAgICB9LCAwKTtcblxuICAgICAgICAvLyBzdGVwIDM6IHVwZGF0ZSBhbGwgdGhlIGNoaWxkIGVsZW1lbnRzIHRvIHRoZSB0YWxsZXN0IGhlaWdodFxuICAgICAgICBBcnJheS5mcm9tKGNoaWxkcmVuKVxuICAgICAgICAgICAgLmZvckVhY2goKHg6IEhUTUxFbGVtZW50KSA9PiB4LnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGApO1xuICAgIH1cbn0iXX0=