cfc-ds
Version:
Design System do Conselho Federal de Contabilidade baseado no govbr-ds
76 lines • 10.8 kB
JavaScript
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==