Skip to content

Commit c10e821

Browse files
committed
test(modal): adding programatic modal angular standalone tests for creating and accessing modals through angular
1 parent 85a1d0e commit c10e821

File tree

14 files changed

+124
-4
lines changed

14 files changed

+124
-4
lines changed

packages/angular/test/apps/ng18/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
"@angular/platform-server": "^18.0.0",
3030
"@angular/router": "^18.0.0",
3131
"@angular/ssr": "^18.0.0",
32-
"@ionic/angular": "^8.0.0",
33-
"@ionic/angular-server": "^8.0.0",
32+
"@ionic/angular": "^8.6.0",
33+
"@ionic/angular-server": "^8.6.0",
3434
"core-js": "^3.33.2",
3535
"express": "^4.15.2",
3636
"ionicons": "^7.2.0",

packages/angular/test/apps/ng19/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
"@angular/platform-server": "^19.0.0",
3030
"@angular/router": "^19.0.0",
3131
"@angular/ssr": "^19.0.2",
32-
"@ionic/angular": "^8.4.0",
33-
"@ionic/angular-server": "^8.4.0",
32+
"@ionic/angular": "^8.6.0",
33+
"@ionic/angular-server": "^8.6.0",
3434
"core-js": "^3.33.2",
3535
"express": "^4.18.2",
3636
"ionicons": "^7.2.0",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<p>
2+
modal works!
3+
<ion-button (click)="close()">Close Modal</ion-button>
4+
</p>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Component, Inject } from '@angular/core';
2+
import { IonButton, IonModalToken } from "@ionic/angular/standalone";
3+
4+
@Component({
5+
selector: 'app-modal',
6+
templateUrl: './modal.component.html',
7+
imports: [IonButton],
8+
standalone: true,
9+
})
10+
export class ModalComponent {
11+
constructor(@Inject(IonModalToken) private modalToken: HTMLIonModalElement) {
12+
this.modalToken.onDidDismiss().then(() => {
13+
console.log('Modal dismissed');
14+
});
15+
}
16+
17+
public close() {
18+
this.modalToken.dismiss();
19+
}
20+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<ion-button (click)="open()">Open Modal</ion-button>
2+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Component } from '@angular/core';
2+
import { IonButton } from '@ionic/angular/standalone';
3+
import { ProgramaticModalService } from './programatic-modal.service';
4+
5+
@Component({
6+
selector: 'app-test',
7+
templateUrl: './programatic-modal.component.html',
8+
standalone: true,
9+
imports: [IonButton]
10+
})
11+
export class ProgramaticModalComponent {
12+
constructor(private modalService: ProgramaticModalService) {}
13+
14+
public open() {
15+
this.modalService.open();
16+
}
17+
}
18+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { inject, Injectable } from '@angular/core';
2+
import { ModalController } from "@ionic/angular/standalone";
3+
import { ModalComponent } from "./modal/modal.component";
4+
5+
@Injectable({
6+
providedIn: 'root'
7+
})
8+
export class ProgramaticModalService {
9+
#modalController = inject(ModalController);
10+
11+
async open() {
12+
const modal = await this.#modalController.create({
13+
component: ModalComponent,
14+
focusTrap: true,
15+
});
16+
await modal.present();
17+
}
18+
}

packages/angular/test/base/src/app/standalone/app-standalone/app.routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export const routes: Routes = [
1111
{ path: 'action-sheet-controller', loadComponent: () => import('../action-sheet-controller/action-sheet-controller.component').then(c => c.ActionSheetControllerComponent) },
1212
{ path: 'popover', loadComponent: () => import('../popover/popover.component').then(c => c.PopoverComponent) },
1313
{ path: 'modal', loadComponent: () => import('../modal/modal.component').then(c => c.ModalComponent) },
14+
{ path: 'programatic-modal', loadComponent: () => import('../programatic-modal/programatic-modal.component').then(c => c.ProgramaticModalComponent) },
1415
{ path: 'router-outlet', loadComponent: () => import('../router-outlet/router-outlet.component').then(c => c.RouterOutletComponent) },
1516
{ path: 'back-button', loadComponent: () => import('../back-button/back-button.component').then(c => c.BackButtonComponent) },
1617
{ path: 'router-link', loadComponent: () => import('../router-link/router-link.component').then(c => c.RouterLinkComponent) },

packages/angular/test/base/src/app/standalone/home-page/home-page.component.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
Modal Test
8686
</ion-label>
8787
</ion-item>
88+
<ion-item routerLink="/standalone/programatic-modal">
89+
<ion-label>
90+
Programatic Modal Test
91+
</ion-label>
92+
</ion-item>
8893
<ion-item routerLink="/standalone/overlay-controllers">
8994
<ion-label>
9095
Overlay Controllers Test
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<p>
2+
modal works!
3+
</p>

0 commit comments

Comments
 (0)