1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-19 02:44:01 +00:00
Files
browser/libs/components/src/resize-observer/resize-observer.directive.ts
2025-10-21 18:52:40 +02:00

33 lines
864 B
TypeScript

import { Directive, ElementRef, EventEmitter, Output, OnDestroy } from "@angular/core";
@Directive({
selector: "[resizeObserver]",
standalone: true,
})
export class ResizeObserverDirective implements OnDestroy {
private observer = new ResizeObserver((entries) => {
for (const entry of entries) {
if (entry.target === this.el.nativeElement) {
this._resizeCallback(entry);
}
}
});
// FIXME(https://bitwarden.atlassian.net/browse/CL-903): Migrate to Signals
// eslint-disable-next-line @angular-eslint/prefer-output-emitter-ref
@Output()
resize = new EventEmitter();
constructor(private el: ElementRef) {
this.observer.observe(this.el.nativeElement);
}
_resizeCallback(entry: ResizeObserverEntry) {
this.resize.emit(entry);
}
ngOnDestroy() {
this.observer.unobserve(this.el.nativeElement);
}
}