UNPKG

cfc-ds

Version:

Design System do Conselho Federal de Contabilidade baseado no govbr-ds

76 lines 10.8 kB
import { Component, Input, ViewChild, HostBinding, } from '@angular/core'; import * as i0 from "@angular/core"; export class FooterComponent { renderer; projectName; projectVersion; root; height = 'max-content'; position = 'absolute'; contentHeight = 0; windowHeight = 0; mutationObserver; resizeObserver; constructor(renderer) { this.renderer = renderer; } ngOnInit() { this.initObservers(); } ngAfterViewInit() { this.checkFooterPosition(); } ngOnDestroy() { this.mutationObserver?.disconnect(); this.resizeObserver?.disconnect(); } /** * INICIALIZA OS OBSERVERS PARA MONITORAR ALTERAÇÕES NA PÁGINA */ initObservers() { this.mutationObserver = new MutationObserver(() => this.checkFooterPosition()); this.mutationObserver.observe(document.body, { childList: true, subtree: true, }); this.resizeObserver = new ResizeObserver(() => this.checkFooterPosition()); this.resizeObserver.observe(document.body); } /** * VERIFICA E AJUSTA A POSIÇÃO DO FOOTER SE NECESSÁRIO */ checkFooterPosition() { if (!this.root) return; const footerHeight = +this.root.nativeElement.offsetHeight; const newContentHeight = document.body.scrollHeight; const newWindowHeight = window.innerHeight; // VERIFICA SE O TAMANHO DA PÁGINA MUDOU if (newContentHeight !== this.contentHeight || newWindowHeight !== this.windowHeight) { this.contentHeight = newContentHeight; this.windowHeight = newWindowHeight; const position = newContentHeight <= (newWindowHeight - footerHeight) ? 'absolute' : 'relative'; this.renderer.setStyle(this.root.nativeElement, 'position', position); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FooterComponent, selector: "cfc-footer", inputs: { projectName: "projectName", projectVersion: "projectVersion" }, host: { properties: { "style.height": "this.position" } }, viewQueries: [{ propertyName: "root", first: true, predicate: ["root"], descendants: true }], ngImport: i0, template: "<footer class=\"footer\">\r\n <p>\r\n Conselho Federal de Contabilidade - {{ projectName }} - Vers\u00E3o: {{ projectVersion }}\r\n </p>\r\n <p>\r\n Todos os direitos reservados.\r\n </p>\r\n</footer>\r\n", styles: [":host{left:0;bottom:0;position:absolute;width:100%}.footer{position:relative;min-width:100%;background-color:#fff;border-top:1px solid rgba(204,204,204,.801);box-shadow:0 0 8px 1px #c1c1c180;padding:1rem 2.5rem;text-align:center}.footer p{font-family:Rawline;font-size:11.67px;font-weight:400;line-height:16.15px;text-align:center;text-underline-position:from-font;text-decoration-skip-ink:none;margin:0;padding:0}\n"] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FooterComponent, decorators: [{ type: Component, args: [{ selector: 'cfc-footer', template: "<footer class=\"footer\">\r\n <p>\r\n Conselho Federal de Contabilidade - {{ projectName }} - Vers\u00E3o: {{ projectVersion }}\r\n </p>\r\n <p>\r\n Todos os direitos reservados.\r\n </p>\r\n</footer>\r\n", styles: [":host{left:0;bottom:0;position:absolute;width:100%}.footer{position:relative;min-width:100%;background-color:#fff;border-top:1px solid rgba(204,204,204,.801);box-shadow:0 0 8px 1px #c1c1c180;padding:1rem 2.5rem;text-align:center}.footer p{font-family:Rawline;font-size:11.67px;font-weight:400;line-height:16.15px;text-align:center;text-underline-position:from-font;text-decoration-skip-ink:none;margin:0;padding:0}\n"] }] }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { projectName: [{ type: Input }], projectVersion: [{ type: Input }], root: [{ type: ViewChild, args: ['root', { static: false }] }], height: [{ type: HostBinding, args: ['style.height'] }], position: [{ type: HostBinding, args: ['style.height'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NmYy1kcy9zcmMvbGliL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZmMtZHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBQ0wsU0FBUyxFQUtULFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFPdkIsTUFBTSxPQUFPLGVBQWU7SUFjTjtJQWJYLFdBQVcsQ0FBVTtJQUNyQixjQUFjLENBQVU7SUFFSyxJQUFJLENBQWM7SUFFM0IsTUFBTSxHQUFHLGFBQWEsQ0FBQztJQUN2QixRQUFRLEdBQUcsVUFBVSxDQUFDO0lBRTNDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDbEIsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixnQkFBZ0IsQ0FBb0I7SUFDcEMsY0FBYyxDQUFrQjtJQUV4QyxZQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQUcsQ0FBQztJQUUzQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQzNDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPO1FBRXZCLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1FBQzNELE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUUzQyx3Q0FBd0M7UUFDeEMsSUFBSSxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsYUFBYSxJQUFJLGVBQWUsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQztZQUVwQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDaEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO3dHQTdEVSxlQUFlOzRGQUFmLGVBQWUscVJDakI1Qix3TkFRQTs7NEZEU2EsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzhFQUtiLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFZ0MsSUFBSTtzQkFBekMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVQLE1BQU07c0JBQWxDLFdBQVc7dUJBQUMsY0FBYztnQkFDRSxRQUFRO3NCQUFwQyxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBSZW5kZXJlcjIsXHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjZmMtZm9vdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb290ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9vdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHByb2plY3ROYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByb2plY3RWZXJzaW9uITogc3RyaW5nO1xyXG5cclxuICBAVmlld0NoaWxkKCdyb290JywgeyBzdGF0aWM6IGZhbHNlIH0pIHJvb3Q/OiBFbGVtZW50UmVmO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpIGhlaWdodCA9ICdtYXgtY29udGVudCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBwb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XHJcblxyXG4gIHByaXZhdGUgY29udGVudEhlaWdodCA9IDA7XHJcbiAgcHJpdmF0ZSB3aW5kb3dIZWlnaHQgPSAwO1xyXG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0T2JzZXJ2ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrRm9vdGVyUG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJTklDSUFMSVpBIE9TIE9CU0VSVkVSUyBQQVJBIE1PTklUT1JBUiBBTFRFUkHDh8OVRVMgTkEgUMOBR0lOQVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdE9ic2VydmVycygpOiB2b2lkIHtcclxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMuY2hlY2tGb290ZXJQb3NpdGlvbigpKTtcclxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHtcclxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLmNoZWNrRm9vdGVyUG9zaXRpb24oKSk7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWRVJJRklDQSBFIEFKVVNUQSBBIFBPU0nDh8ODTyBETyBGT09URVIgU0UgTkVDRVNTw4FSSU9cclxuICAgKi9cclxuICBwcml2YXRlIGNoZWNrRm9vdGVyUG9zaXRpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucm9vdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZvb3RlckhlaWdodCA9ICt0aGlzLnJvb3QubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBuZXdDb250ZW50SGVpZ2h0ID0gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7XHJcbiAgICBjb25zdCBuZXdXaW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcblxyXG4gICAgLy8gVkVSSUZJQ0EgU0UgTyBUQU1BTkhPIERBIFDDgUdJTkEgTVVET1VcclxuICAgIGlmIChuZXdDb250ZW50SGVpZ2h0ICE9PSB0aGlzLmNvbnRlbnRIZWlnaHQgfHwgbmV3V2luZG93SGVpZ2h0ICE9PSB0aGlzLndpbmRvd0hlaWdodCkge1xyXG4gICAgICB0aGlzLmNvbnRlbnRIZWlnaHQgPSBuZXdDb250ZW50SGVpZ2h0O1xyXG4gICAgICB0aGlzLndpbmRvd0hlaWdodCA9IG5ld1dpbmRvd0hlaWdodDtcclxuXHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gbmV3Q29udGVudEhlaWdodCA8PSAobmV3V2luZG93SGVpZ2h0IC0gZm9vdGVySGVpZ2h0KSA/ICdhYnNvbHV0ZScgOiAncmVsYXRpdmUnO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdC5uYXRpdmVFbGVtZW50LCAncG9zaXRpb24nLCBwb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxmb290ZXIgY2xhc3M9XCJmb290ZXJcIj5cclxuICA8cD5cclxuICAgIENvbnNlbGhvIEZlZGVyYWwgZGUgQ29udGFiaWxpZGFkZSAtIHt7IHByb2plY3ROYW1lIH19IC0gVmVyc8Ojbzoge3sgcHJvamVjdFZlcnNpb24gfX1cclxuICA8L3A+XHJcbiAgPHA+XHJcbiAgICBUb2RvcyBvcyBkaXJlaXRvcyByZXNlcnZhZG9zLlxyXG4gIDwvcD5cclxuPC9mb290ZXI+XHJcbiJdfQ==