test(angular): add ng19 test app (#30041)

Issue number: internal

---------

## What is the current behavior?
There are tests apps for Angular 16, 17 and 18

## What is the new behavior?
Adds a test app for Angular 19

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

---------

Co-authored-by: Brandy Carney <6577830+brandyscarney@users.noreply.github.com>
This commit is contained in:
Brandy Carney
2024-12-04 12:02:06 -05:00
committed by GitHub
parent 000f55303e
commit e101f2e022
79 changed files with 19038 additions and 218 deletions

View File

@ -7,5 +7,5 @@ import { RouterModule } from '@angular/router';
standalone: true,
imports: [RouterModule]
})
export class AppComponentStandalone {
export class AppStandaloneComponent {
}

View File

@ -2,7 +2,8 @@ import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
templateUrl: './app.component.html',
standalone: false
})
export class AppComponent {
}

View File

@ -3,6 +3,7 @@ import { Component } from '@angular/core';
@Component({
selector: 'app-accordion-modal',
templateUrl: './accordion-modal.component.html',
standalone: false
})
export class AccordionModalComponent {
modal!: HTMLIonModalElement;

View File

@ -5,6 +5,7 @@ import { AccordionModalComponent } from './accordion-modal/accordion-modal.compo
@Component({
selector: 'app-accordion',
templateUrl: './accordion.component.html',
standalone: false
})
export class AccordionComponent {

View File

@ -4,6 +4,7 @@ import { AlertController } from '@ionic/angular';
@Component({
selector: 'app-alert',
templateUrl: './alert.component.html',
standalone: false
})
export class AlertComponent {

View File

@ -1,8 +1,9 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html'
selector: 'app-root',
templateUrl: './app.component.html',
standalone: false
})
export class AppComponent {
}

View File

@ -3,7 +3,8 @@ import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-range',
templateUrl: './range.component.html'
templateUrl: './range.component.html',
standalone: false
})
export class RangeComponent {

View File

@ -2,8 +2,9 @@ import { Component } from '@angular/core';
import { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormControl } from '@angular/forms';
@Component({
selector: 'app-form',
templateUrl: './form.component.html',
selector: 'app-form',
templateUrl: './form.component.html',
standalone: false
})
export class FormComponent {

View File

@ -2,8 +2,9 @@ import { Component, VERSION } from '@angular/core';
import { AnimationBuilder, AnimationController } from '@ionic/angular';
@Component({
selector: 'app-home-page',
templateUrl: './home-page.component.html',
selector: 'app-home-page',
templateUrl: './home-page.component.html',
standalone: false
})
export class HomePageComponent {

View File

@ -1,8 +1,9 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-inputs',
templateUrl: './inputs.component.html',
selector: 'app-inputs',
templateUrl: './inputs.component.html',
standalone: false
})
export class InputsComponent {

View File

@ -1,16 +1,16 @@
import { NgModule } from "@angular/core";
import { RouterModule } from "@angular/router";
import { OverlayKeepContentsMounted } from ".";
import { OverlayKeepContentsMountedComponent } from ".";
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: OverlayKeepContentsMounted
component: OverlayKeepContentsMountedComponent
}
])
],
exports: [RouterModule]
})
export class OverlayKeepContentsMountedRoutingModule { }
export class OverlayKeepContentsMountedComponentRoutingModule { }

View File

@ -7,7 +7,8 @@ import { Component } from "@angular/core";
*/
@Component({
selector: 'app-keep-contents-mounted',
templateUrl: 'keep-contents-mounted.component.html'
templateUrl: 'keep-contents-mounted.component.html',
standalone: false
})
export class OverlayKeepContentsMounted {
export class OverlayKeepContentsMountedComponent {
}

View File

@ -1,12 +1,12 @@
import { CommonModule } from "@angular/common";
import { NgModule } from "@angular/core";
import { IonicModule } from "@ionic/angular";
import { OverlayKeepContentsMountedRoutingModule } from "./keep-contents-mounted-routing.module";
import { OverlayKeepContentsMounted } from "./keep-contents-mounted.component";
import { OverlayKeepContentsMountedComponentRoutingModule } from "./keep-contents-mounted-routing.module";
import { OverlayKeepContentsMountedComponent } from "./keep-contents-mounted.component";
@NgModule({
imports: [CommonModule, IonicModule, OverlayKeepContentsMountedRoutingModule],
declarations: [OverlayKeepContentsMounted],
exports: [OverlayKeepContentsMounted]
imports: [CommonModule, IonicModule, OverlayKeepContentsMountedComponentRoutingModule],
declarations: [OverlayKeepContentsMountedComponent],
exports: [OverlayKeepContentsMountedComponent]
})
export class OverlayAutoMountModule { }

View File

@ -3,8 +3,9 @@ import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
import { ModalController, IonNav, ViewWillLeave, ViewDidEnter, ViewDidLeave } from '@ionic/angular';
@Component({
selector: 'app-modal-example',
templateUrl: './modal-example.component.html',
selector: 'app-modal-example',
templateUrl: './modal-example.component.html',
standalone: false
})
export class ModalExampleComponent implements OnInit, ViewWillLeave, ViewDidEnter, ViewWillLeave, ViewDidLeave {

View File

@ -7,7 +7,8 @@ import { AfterViewInit, Component } from "@angular/core";
*/
@Component({
selector: 'app-modal-inline',
templateUrl: 'modal-inline.component.html'
templateUrl: 'modal-inline.component.html',
standalone: false
})
export class ModalInlineComponent implements AfterViewInit {

View File

@ -4,8 +4,9 @@ import { ModalExampleComponent } from '../modal-example/modal-example.component'
import { NavComponent } from '../nav/nav.component';
@Component({
selector: 'app-modal',
templateUrl: './modal.component.html',
selector: 'app-modal',
templateUrl: './modal.component.html',
standalone: false
})
export class ModalComponent {

View File

@ -1,11 +1,12 @@
import { Component, Input } from '@angular/core';
import { Component, Input, OnInit } from '@angular/core';
import { ModalExampleComponent } from '../modal-example/modal-example.component';
@Component({
selector: 'app-nav',
templateUrl: './nav.component.html',
selector: 'app-nav',
templateUrl: './nav.component.html',
standalone: false
})
export class NavComponent {
export class NavComponent implements OnInit {
rootPage = ModalExampleComponent;
rootParams: any;

View File

@ -5,6 +5,7 @@ let count = 0;
@Component({
selector: 'app-navigation-page1',
templateUrl: './navigation-page1.component.html',
standalone: false
})
export class NavigationPage1Component {
constructor(

View File

@ -5,6 +5,7 @@ import { NavController } from '@ionic/angular';
@Component({
selector: 'app-navigation-page2',
templateUrl: './navigation-page2.component.html',
standalone: false
})
export class NavigationPage2Component {
constructor(

View File

@ -4,6 +4,7 @@ import { NavController } from '@ionic/angular';
@Component({
selector: 'app-navigation-page3',
templateUrl: './navigation-page3.component.html',
standalone: false
})
export class NavigationPage3Component {
constructor(

View File

@ -2,8 +2,9 @@ import { Component, NgZone, OnDestroy, OnInit } from '@angular/core';
import { IonRouterOutlet } from '@ionic/angular';
@Component({
selector: 'app-nested-outlet-page',
templateUrl: './nested-outlet-page.component.html',
selector: 'app-nested-outlet-page',
templateUrl: './nested-outlet-page.component.html',
standalone: false
})
export class NestedOutletPageComponent implements OnDestroy, OnInit {
hasParentOutlet = false;

View File

@ -1,8 +1,9 @@
import { Component, NgZone, OnDestroy, OnInit } from '@angular/core';
@Component({
selector: 'app-nested-outlet-page2',
templateUrl: './nested-outlet-page2.component.html',
selector: 'app-nested-outlet-page2',
templateUrl: './nested-outlet-page2.component.html',
standalone: false
})
export class NestedOutletPage2Component implements OnDestroy, OnInit {

View File

@ -1,8 +1,9 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-nested-outlet',
templateUrl: './nested-outlet.component.html',
selector: 'app-nested-outlet',
templateUrl: './nested-outlet.component.html',
standalone: false
})
export class NestedOutletComponent {

View File

@ -5,7 +5,8 @@ import { Component } from "@angular/core";
*/
@Component({
selector: 'app-overlays-inline',
templateUrl: 'overlays-inline.component.html'
templateUrl: 'overlays-inline.component.html',
standalone: false
})
export class OverlaysInlineComponent {
public pickerButtons = [{ text: 'Ok' }, { text: 'Cancel', role: 'cancel' }];

View File

@ -9,7 +9,8 @@ import { IonPopover } from "@ionic/angular";
*/
@Component({
selector: 'app-popover-inline',
templateUrl: 'popover-inline.component.html'
templateUrl: 'popover-inline.component.html',
standalone: false
})
export class PopoverInlineComponent {

View File

@ -15,8 +15,9 @@ import {
} from '@ionic/angular';
@Component({
selector: 'app-providers',
templateUrl: './providers.component.html',
selector: 'app-providers',
templateUrl: './providers.component.html',
standalone: false
})
export class ProvidersComponent {
isLoaded = false;

View File

@ -2,8 +2,9 @@ import { Component, OnInit, NgZone } from '@angular/core';
import { IonRouterOutlet, ViewDidEnter, ViewDidLeave, ViewWillLeave } from '@ionic/angular';
@Component({
selector: 'app-router-link-page',
templateUrl: './router-link-page.component.html',
selector: 'app-router-link-page',
templateUrl: './router-link-page.component.html',
standalone: false
})
export class RouterLinkPageComponent implements OnInit, ViewWillLeave, ViewDidEnter, ViewWillLeave, ViewDidLeave {

View File

@ -1,8 +1,9 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-router-link-page2',
templateUrl: './router-link-page2.component.html'
selector: 'app-router-link-page2',
templateUrl: './router-link-page2.component.html',
standalone: false
})
export class RouterLinkPage2Component implements OnInit {

View File

@ -1,8 +1,9 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-router-link-page3',
templateUrl: './router-link-page3.component.html'
selector: 'app-router-link-page3',
templateUrl: './router-link-page3.component.html',
standalone: false
})
export class RouterLinkPage3Component implements OnInit {

View File

@ -3,8 +3,9 @@ import { NavController, ViewDidEnter, ViewDidLeave, ViewWillEnter, ViewWillLeave
import { Router } from '@angular/router';
@Component({
selector: 'app-router-link',
templateUrl: './router-link.component.html',
selector: 'app-router-link',
templateUrl: './router-link.component.html',
standalone: false
})
export class RouterLinkComponent implements OnInit, ViewWillEnter, ViewDidEnter, ViewWillLeave, ViewDidLeave {

View File

@ -4,6 +4,7 @@ import { FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-searchbar',
templateUrl: 'searchbar.component.html',
standalone: false
})
export class SearchbarComponent {
@ -13,4 +14,4 @@ export class SearchbarComponent {
constructor(private fb: FormBuilder) { }
}
}

View File

@ -4,6 +4,7 @@ import { IonSlides } from '@ionic/angular';
@Component({
selector: 'app-slides',
templateUrl: './slides.component.html',
standalone: false
})
export class SlidesComponent implements AfterViewInit {
@ViewChild(IonSlides, { static: true }) slides!: IonSlides;

View File

@ -4,7 +4,8 @@ import { IonTabBar } from '@ionic/angular';
@Component({
selector: 'app-tabs-basic',
templateUrl: './tabs-basic.component.html',
styleUrls: ['./tabs-basic.component.css']
styleUrls: ['./tabs-basic.component.css'],
standalone: false
})
export class TabsBasicComponent {
constructor() { }

View File

@ -8,7 +8,8 @@ import { NavController } from "@ionic/angular";
*/
@Component({
selector: 'app-tabs-global',
templateUrl: 'tabs-global.component.html'
templateUrl: 'tabs-global.component.html',
standalone: false
})
export class TabsGlobalComponent {

View File

@ -3,5 +3,6 @@ import { Component } from '@angular/core';
@Component({
selector: 'app-tabs-tab3-nested',
templateUrl: './tabs-tab3-nested.component.html',
standalone: false
})
export class TabsTab3NestedComponent {}

View File

@ -3,5 +3,6 @@ import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-tabs-tab3',
templateUrl: './tabs-tab3.component.html',
standalone: false
})
export class TabsTab3Component {}

View File

@ -5,6 +5,7 @@ import { NavController } from '@ionic/angular';
@Component({
selector: 'app-tabs-tab1-nested',
templateUrl: './tabs-tab1-nested.component.html',
standalone: false
})
export class TabsTab1NestedComponent implements OnInit {
id: string | null = '';

View File

@ -4,6 +4,7 @@ import { NavController } from '@ionic/angular';
@Component({
selector: 'app-tabs-tab1',
templateUrl: './tabs-tab1.component.html',
standalone: false
})
export class TabsTab1Component {
title = 'ERROR';

View File

@ -3,6 +3,7 @@ import { Component, NgZone, OnInit } from '@angular/core';
@Component({
selector: 'app-tabs-tab2',
templateUrl: './tabs-tab2.component.html',
standalone: false
})
export class TabsTab2Component implements OnInit {
title = 'ERROR';

View File

@ -4,7 +4,8 @@ import { IonTabBar } from '@ionic/angular';
@Component({
selector: 'app-tabs',
templateUrl: './tabs.component.html',
styleUrls: ['./tabs.component.css']
styleUrls: ['./tabs.component.css'],
standalone: false
})
export class TabsComponent {
tabsDidChangeCounter = 0;

View File

@ -5,6 +5,7 @@ import { FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-textarea',
templateUrl: 'textarea.component.html',
standalone: false
})
export class TextareaComponent {

View File

@ -0,0 +1,41 @@
import { Component, Input, OnInit } from "@angular/core";
import { IonicModule } from '@ionic/angular';
@Component({
selector: 'app-bind-route',
template: `
<ion-header>
<ion-toolbar>
<ion-title>bindToComponentInputs</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="ion-padding">
<div>
<h3>Bind Route</h3>
<p id="route-params">Route params: id: {{id}}</p>
<p id="query-params">Query params: query: {{query}}</p>
<p id="data">Data: title: {{title}}</p>
<p id="resolve">Resolve: name: {{name}}</p>
</div>
</ion-content>
`,
standalone: true,
imports: [IonicModule]
})
export class BindComponentInputsComponent implements OnInit {
@Input() id?: string; // path parameter
@Input() query?: string; // query parameter
@Input() title?: string; // data property
@Input() name?: string; // resolve property
ngOnInit(): void {
console.log('BindComponentInputsComponent.ngOnInit', {
id: this.id,
query: this.query,
title: this.title,
name: this.name
});
}
}

View File

@ -2,7 +2,8 @@ import { Component } from "@angular/core";
@Component({
selector: 'app-version-test',
templateUrl: 'version-test.component.html'
templateUrl: 'version-test.component.html',
standalone: false
})
export class VersionTestComponent {
}

View File

@ -2,8 +2,9 @@ import { Component, ViewChild, AfterViewInit, ElementRef } from '@angular/core';
import { IonTabs, IonButton } from '@ionic/angular';
@Component({
selector: 'app-view-child',
templateUrl: './view-child.component.html'
selector: 'app-view-child',
templateUrl: './view-child.component.html',
standalone: false
})
export class ViewChildComponent implements AfterViewInit {
@ViewChild(IonButton, { static: true }) button!: IonButton;

View File

@ -2,12 +2,12 @@ import { bootstrapApplication } from '@angular/platform-browser';
import { RouteReuseStrategy, provideRouter } from '@angular/router';
import { provideIonicAngular, IonicRouteStrategy } from '@ionic/angular/standalone';
import { AppComponentStandalone } from './app/app-standalone.component';
import { AppStandaloneComponent } from './app/app-standalone.component';
import { routes } from './app/app.routes';
export const bootstrapStandalone = () => {
bootstrapApplication(AppComponentStandalone, {
bootstrapApplication(AppStandaloneComponent, {
providers: [
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
provideRouter(routes),