DEV Community

Sean Perkins
Sean Perkins

Posted on

7 1

Ionic 6.1: Dynamically changing the breakpoint of a Sheet Modal

Ionic Framework 6.1 introduces the ability to dynamically change the current breakpoint of a sheet modal. This features enables developers to animate sheet modals to predefined breakpoints based on your application needs.

To get started with this feature, you will need to use a sheet modal in Ionic. The below example is of Angular, but this feature applies to the vanilla web component implementation and all supported frameworks.

<ion-button id="sheet-modal">Click to open modal</ion-button>
<ion-modal #modal 
  trigger="sheet-modal"
  [initialBreakpoint]="0.25" 
  [breakpoints]="[0.25, 0.5, 1]">
  <ng-template>
    <ion-content>
      <ion-list>
        <ion-item button (click)="moveTo(0.25)">
          <ion-label>Move to 0.25</ion-label>
        </ion-item>
        <ion-item button (click)="moveTo(0.5)">
          <ion-label>Move to 0.5</ion-label>
        </ion-item>
        <ion-item button (click)="moveTo(1)">
          <ion-label>Move to 1</ion-label>
        </ion-item>
      </ion-list>
    </ion-content>
  </ng-template>
</ion-modal>
Enter fullscreen mode Exit fullscreen mode

The above sheet modal will initially display when the button is clicked, to the 0.25 breakpoint. It has available breakpoints for 0.25, 0.5, and 1 (fully expanded).

To change the breakpoint dynamically, we need to query the ion-modal element to access the public API function: setCurrentBreakpoint.

import { Component, ElementRef, ViewChild } from '@angular/core';

@Component({
  selector: 'app-sheet-modal-example',
  templateUrl: 'sheet-modal-example.component.html'
})
export class SheetModalExample {

  @ViewChild('#modal') modal: ElementRef;

  moveTo(breakpoint: number) {
    const { nativeElement } = this.modal;
    if (!nativeElement) {
      return;
    }
    nativeElement.setCurrentBreakpoint(breakpoint);
  }

}
Enter fullscreen mode Exit fullscreen mode

That is it, your sheet modal should now dynamically change the breakpoint value after interacting with the individual items to move to a specific breakpoint.

You can use this concept to make features such as an iOS maps clone:

Source code: https://github.com/sean-perkins/ionic-6.1.0-maps-example

We hope that you find value in this feature and others in the 6.1.0 release.

AWS Q Developer image

Your AI Code Assistant

Implement features, document your code, or refactor your projects.
Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay