/resize-observer

A library for idiomatic use of ResizeObserver with Angular

Primary LanguageTypeScriptMIT LicenseMIT



Attention! This repository is archived and the library has been moved to tinkoff/ng-web-apis monorepository



ng-web-apis logo Resize Observer API for Angular

Part of > Web APIs for Angular

npm version npm bundle size .github/workflows/ci.yml Coveralls github angular-open-source-starter

This is a library for declarative use of Resize Observer API with Angular.

Install

If you do not have @ng-web-apis/common:

npm i @ng-web-apis/common

Now install the package:

npm i @ng-web-apis/resize-observer

Usage

  1. Import ResizeObserverModule to the module where you plan to use it.
  2. Use waResizeObserver directive to observe an element:
<section>
  <h1 waResizeBox="content-box" (waResizeObserver)="onResize($event)">I'm being observed</h1>
</section>

Use waResizeBox to configure ResizeObserver options

NOTE: Keep in mind these are used one time in constructor so you cannot use binding, only strings.

Service

Alternatively you can use Observable-based ResizeObserverService and provide token RESIZE_OPTION_BOX manually:

@Component({
  selector: 'my-component',
  providers: [
    ResizeObserverService,
    {
      provide: RESIZE_OPTION_BOX,
      useValue: 'border-box',
    },
  ],
})
export class MyComponent {
  constructor(@Inject(ResizeObserverService) entries$: ResizeObserverService) {
    entries$.subscribe(entries => {
      // This will trigger when the component resizes
      // Don't forget to unsubscribe
      console.log(entries);
    });
  }
}

Browser support

IE / Edge
Firefox
Chrome
Safari
iOS Safari
79+ 69+ 64+ 13.1+ 13.4+

You can use polyfill to support older browsers

Demo

You can try online demo here

See also

Other Web APIs for Angular by @ng-web-apis

Open-source

Do you also want to open-source something, but hate the collateral work? Check out this Angular Open-source Library Starter we’ve created for our projects. It got you covered on continuous integration, pre-commit checks, linting, versioning + changelog, code coverage and all that jazz.