diff --git a/frontend/src/app/pages/forms/sent/sent.component.html b/frontend/src/app/pages/forms/sent/sent.component.html index 39f928a..cee2fd2 100644 --- a/frontend/src/app/pages/forms/sent/sent.component.html +++ b/frontend/src/app/pages/forms/sent/sent.component.html @@ -6,8 +6,15 @@
-
-

{{ message }}

-
+ + +
+
+

{{ message }}

+
+
+
+
+ diff --git a/frontend/src/app/pages/forms/sent/sent.component.ts b/frontend/src/app/pages/forms/sent/sent.component.ts index 4d02dbd..0708cc8 100644 --- a/frontend/src/app/pages/forms/sent/sent.component.ts +++ b/frontend/src/app/pages/forms/sent/sent.component.ts @@ -1,11 +1,13 @@ import {Component, inject, OnInit} from '@angular/core'; import {Router} from '@angular/router'; +import {FullSizeComponent} from '@shared-components/full-size/full-size.component'; import {HeaderComponent} from '@header/header.component'; @Component({ selector: 'app-sent', imports: [ - HeaderComponent + HeaderComponent, + FullSizeComponent ], templateUrl: './sent.component.html', styleUrl: './sent.component.scss', diff --git a/frontend/src/app/shared-components/full-size/full-size.component.html b/frontend/src/app/shared-components/full-size/full-size.component.html new file mode 100644 index 0000000..27fedd0 --- /dev/null +++ b/frontend/src/app/shared-components/full-size/full-size.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/frontend/src/app/shared-components/full-size/full-size.component.scss b/frontend/src/app/shared-components/full-size/full-size.component.scss new file mode 100644 index 0000000..5ec2ab6 --- /dev/null +++ b/frontend/src/app/shared-components/full-size/full-size.component.scss @@ -0,0 +1,8 @@ +:host { + display: block; +} + +.full-size-container { + display: flex; + flex-direction: column; +} diff --git a/frontend/src/app/shared-components/full-size/full-size.component.ts b/frontend/src/app/shared-components/full-size/full-size.component.ts new file mode 100644 index 0000000..6ba74a9 --- /dev/null +++ b/frontend/src/app/shared-components/full-size/full-size.component.ts @@ -0,0 +1,80 @@ +import {AfterViewInit, Component, ElementRef, Input, OnDestroy, Renderer2} from '@angular/core'; + +@Component({ + selector: 'app-full-size', + standalone: true, + imports: [], + templateUrl: './full-size.component.html', + styleUrl: './full-size.component.scss' +}) +export class FullSizeComponent implements AfterViewInit, OnDestroy { + private resizeObserver: ResizeObserver | null = null; + private boundHandleResize: any; + + // Optional extra offset in pixels to subtract from available height + @Input() extraOffset: number = 0; + + constructor( + private elementRef: ElementRef, + private renderer: Renderer2 + ) { + } + + ngAfterViewInit(): void { + this.setupResizeObserver(); + this.updateContainerHeight(); + + this.boundHandleResize = this.handleResize.bind(this); + window.addEventListener('resize', this.boundHandleResize); + + // Ensure first paint sets correct height + setTimeout(() => this.updateContainerHeight(), 0); + } + + ngOnDestroy(): void { + if (this.resizeObserver) { + this.resizeObserver.disconnect(); + this.resizeObserver = null; + } + + if (this.boundHandleResize) { + window.removeEventListener('resize', this.boundHandleResize); + } + } + + private handleResize() { + this.updateContainerHeight(); + } + + private setupResizeObserver() { + this.resizeObserver = new ResizeObserver(() => { + this.updateContainerHeight(); + }); + + const headerElement = document.querySelector('app-header'); + if (headerElement) { + this.resizeObserver.observe(headerElement); + } + + const footerElement = document.querySelector('footer'); + if (footerElement) { + this.resizeObserver.observe(footerElement); + } + } + + private updateContainerHeight() { + const headerElement = document.querySelector('app-header'); + const footerElement = document.querySelector('footer'); + + const container: HTMLElement | null = this.elementRef.nativeElement.querySelector('.full-size-container'); + + if (container) { + const headerHeight = headerElement ? headerElement.getBoundingClientRect().height : 0; + const footerHeight = footerElement ? footerElement.getBoundingClientRect().height : 0; + + const totalOffset = headerHeight + footerHeight + (this.extraOffset || 0); + const calculatedHeight = `calc(100vh - ${totalOffset}px)`; + this.renderer.setStyle(container, 'height', calculatedHeight); + } + } +} diff --git a/frontend/src/styles.scss b/frontend/src/styles.scss index 3cfd2b9..f9ff852 100644 --- a/frontend/src/styles.scss +++ b/frontend/src/styles.scss @@ -479,3 +479,7 @@ main .container { width: 100%; } } + +.margin-auto { + margin: auto +}