Updated notes display and scaling. Moved carousel to absolute pixel positions manually calculated instead of % since that didn't work too well..."
parent
b35ecf7df9
commit
f3d72301b2
@ -0,0 +1,5 @@
|
|||||||
|
<div class="position-relative h-100 w-100" (resized)="onResize($event)" #container>
|
||||||
|
<div class="position-absolute" (resized)="onResize($event)" #element>
|
||||||
|
<ng-content></ng-content>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,51 @@
|
|||||||
|
import { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';
|
||||||
|
import { AngularResizeEventModule, ResizedEvent } from 'angular-resize-event';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'scalable',
|
||||||
|
templateUrl: './scalable.component.html',
|
||||||
|
imports: [ AngularResizeEventModule ],
|
||||||
|
standalone: true
|
||||||
|
})
|
||||||
|
export class ScalableComponent implements AfterViewInit {
|
||||||
|
@ViewChild('container') container?: ElementRef;
|
||||||
|
@ViewChild('element') element?: ElementRef;
|
||||||
|
|
||||||
|
ngAfterViewInit(): void {
|
||||||
|
if (!this.container || !this.element) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => this.update());
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
if(!this.container || !this.element) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const containerWidth = this.container?.nativeElement.clientWidth;
|
||||||
|
const containerHeight = this.container?.nativeElement.clientHeight;
|
||||||
|
const elementWidth = this.element?.nativeElement.clientWidth;
|
||||||
|
const elementHeight = this.element?.nativeElement.clientHeight;
|
||||||
|
|
||||||
|
this.element.nativeElement.style.transform = "";
|
||||||
|
|
||||||
|
this.element.nativeElement.style.left = '0';
|
||||||
|
this.element.nativeElement.style.top = '0';
|
||||||
|
|
||||||
|
this.element.nativeElement.style.transformOrigin = "left top";
|
||||||
|
|
||||||
|
let scale = containerWidth / elementWidth;
|
||||||
|
|
||||||
|
if(containerHeight < elementHeight * scale) {
|
||||||
|
scale = containerHeight / elementHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.element.nativeElement.style.transform += `scale(${scale}, ${scale})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
onResize(_event: ResizedEvent) {
|
||||||
|
this.update();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue