@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
JavaScript
/**
* @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=