UNPKG

med-table

Version:
34 lines 4.13 kB
import { FOOTER_SELECTOR, TABLE_SELECTOR, PAGINATOR_SELECTOR, UP_SCROLL_SELECTOR, } from '../constants/selectors'; export class StickyHeader { /** * should call in "ngAfterViewInit" hook */ get tableHeight() { const MARGINS = 20; // 20px margin app in prod const contentHeight = this.headerHeight() + this.footerHeight() + this.paginatorHeight() + this.upScrollHeight() + MARGINS; return `calc(100vh - ${contentHeight}px)`; } headerHeight() { const app = document.querySelector(TABLE_SELECTOR); if (!app) return 0; return app.getBoundingClientRect().top; } paginatorHeight() { return this.getElementHeight(PAGINATOR_SELECTOR); } footerHeight() { return this.getElementHeight(FOOTER_SELECTOR); } upScrollHeight() { return this.getElementHeight(UP_SCROLL_SELECTOR); } getElementHeight(selector) { const block = document.querySelector(selector); if (!block) return 0; return block.offsetHeight; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RpY2t5SGVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkLXRhYmxlL3NyYy9saWIvc2VydmljZXMvU3RpY2t5SGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLDBCQUEwQjtRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtjQUMzRCxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUU3RCxPQUFPLGdCQUFnQixhQUFhLEtBQUssQ0FBQztJQUM1QyxDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFjLGNBQWMsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFbkIsT0FBTyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDekMsQ0FBQztJQUVPLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8sY0FBYztRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFjLFFBQVEsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFFckIsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQzVCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZPT1RFUl9TRUxFQ1RPUixcbiAgVEFCTEVfU0VMRUNUT1IsXG4gIFBBR0lOQVRPUl9TRUxFQ1RPUixcbiAgVVBfU0NST0xMX1NFTEVDVE9SLFxufSBmcm9tICcuLi9jb25zdGFudHMvc2VsZWN0b3JzJztcblxuZXhwb3J0IGNsYXNzIFN0aWNreUhlYWRlciB7XG4gIC8qKlxuICAgKiBzaG91bGQgY2FsbCBpbiBcIm5nQWZ0ZXJWaWV3SW5pdFwiIGhvb2tcbiAgICovXG4gIGdldCB0YWJsZUhlaWdodCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IE1BUkdJTlMgPSAyMDsgLy8gMjBweCBtYXJnaW4gYXBwIGluIHByb2RcbiAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gdGhpcy5oZWFkZXJIZWlnaHQoKSArIHRoaXMuZm9vdGVySGVpZ2h0KClcbiAgICAgICsgdGhpcy5wYWdpbmF0b3JIZWlnaHQoKSArIHRoaXMudXBTY3JvbGxIZWlnaHQoKSArIE1BUkdJTlM7XG5cbiAgICByZXR1cm4gYGNhbGMoMTAwdmggLSAke2NvbnRlbnRIZWlnaHR9cHgpYDtcbiAgfVxuXG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgY29uc3QgYXBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oVEFCTEVfU0VMRUNUT1IpO1xuXG4gICAgaWYgKCFhcHApIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIGFwcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gIH1cblxuICBwcml2YXRlIHBhZ2luYXRvckhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEVsZW1lbnRIZWlnaHQoUEFHSU5BVE9SX1NFTEVDVE9SKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9vdGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudEhlaWdodChGT09URVJfU0VMRUNUT1IpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cFNjcm9sbEhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEVsZW1lbnRIZWlnaHQoVVBfU0NST0xMX1NFTEVDVE9SKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RWxlbWVudEhlaWdodChzZWxlY3Rvcjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBibG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KHNlbGVjdG9yKTtcblxuICAgIGlmICghYmxvY2spIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIGJsb2NrLm9mZnNldEhlaWdodDtcbiAgfVxufVxuIl19