Skip to content

Commit 29dcb75

Browse files
authored
Merge pull request #4646 from ionic-team/major-9.0
merge major-9.0
2 parents 1426984 + d6f761c commit 29dcb75

3,885 files changed

Lines changed: 166269 additions & 1672 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/CI.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ jobs:
2828
run: npm ci --legacy-peer-deps
2929
- name: 🖌️ Lint
3030
run: npm run lint
31+
- name: Test
32+
run: npm run test
3133
- name: 🔤 Spell Check
3234
run: npm run spellcheck
3335
- uses: ./.github/workflows/actions/check-translations

_templates/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Once you've generated your playground, you need to add it to the main markdown f
2626
```
2727
## Feature
2828
29-
import Feature from '@site/static/usage/v8/button/feature/index.md';
29+
import Feature from '@site/static/usage/v9/button/feature/index.md';
3030
3131
<Feature />
3232
```

_templates/playground/new/angular_example_component_ts.md.ejs.t

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ to: "<%= `static/usage/v${version}/${name}/${path}/angular/example_component_ts.
44
---
55
```ts
66
import { Component } from '@angular/core';
7-
import { <%= pascalComponent %> } from '@ionic/angular/standalone';
7+
import { <%= pascalComponent %> } from '@ionic/angular';
88

99
@Component({
1010
selector: 'app-example',

_templates/playground/new/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ module.exports = {
5454
type: 'select',
5555
name: 'version',
5656
message: 'Select the Ionic Framework version for the playground',
57-
initial: '8',
58-
choices: ['6', '7', '8'],
57+
initial: '9',
58+
choices: ['6', '7', '8', '9'],
5959
},
6060
{
6161
type: 'toggle',

cspell-wordlist.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ autogrow
3333
automations
3434
autoplay
3535
Callout
36+
codemods
3637
comparewith
3738
composables
3839
engageable
3940
flexbox
41+
fontawesome
42+
fortawesome
4043
frontmatter
4144
fullscreen
4245
geolocation
@@ -58,11 +61,15 @@ preconfigured
5861
preflighted
5962
proxying
6063
quickstart
64+
remixicon
6165
retargeted
6266
runtimes
6367
scroller
6468
subcomponent
6569
subcomponents
70+
subpath
71+
subpaths
72+
svgs
6673
swipeable
6774
templating
6875
transpiling

docs/angular/add-to-existing.md

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,22 +85,19 @@ While `core.css` is required, `normalize.css`, `structure.css`, and `typography.
8585
Update `src/app/app.config.ts` to include `provideIonicAngular`:
8686

8787
```typescript title="src/app/app.config.ts"
88-
import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';
88+
import { ApplicationConfig, provideBrowserGlobalErrorListeners } from '@angular/core';
8989
import { provideRouter } from '@angular/router';
9090

9191
import { routes } from './app.routes';
92-
import { provideIonicAngular } from '@ionic/angular/standalone';
92+
import { provideIonicAngular } from '@ionic/angular';
9393

9494
export const appConfig: ApplicationConfig = {
95-
providers: [
96-
provideBrowserGlobalErrorListeners(),
97-
provideZoneChangeDetection({ eventCoalescing: true }),
98-
provideRouter(routes),
99-
provideIonicAngular({}),
100-
],
95+
providers: [provideBrowserGlobalErrorListeners(), provideRouter(routes), provideIonicAngular({})],
10196
};
10297
```
10398

99+
This reflects the Angular 21 and 22 scaffold, which is zoneless by default. If your existing app is on Angular 18 through 20, it still has `provideZoneChangeDetection({ eventCoalescing: true })`; keep that provider and add `provideIonicAngular({})` alongside it. Refer to [Zoneless Change Detection](/docs/angular/zoneless.md) for details.
100+
104101
## Using Individual Components
105102

106103
After completing the setup above, you can start using Ionic components in your existing Angular app. Here's an example of how to use them:
@@ -115,7 +112,7 @@ Then, import the components in `src/app/app.ts`:
115112

116113
```ts title="src/app/app.ts"
117114
import { Component } from '@angular/core';
118-
import { IonButton, IonDatetime } from '@ionic/angular/standalone';
115+
import { IonButton, IonDatetime } from '@ionic/angular';
119116

120117
@Component({
121118
selector: 'app-root',
@@ -210,7 +207,7 @@ Then, update `src/app/app.ts` to include the component imports:
210207

211208
```ts title="src/app/app.ts"
212209
import { Component } from '@angular/core';
213-
import { IonApp, IonRouterOutlet } from '@ionic/angular/standalone';
210+
import { IonApp, IonRouterOutlet } from '@ionic/angular';
214211

215212
@Component({
216213
selector: 'app-root',
@@ -253,7 +250,7 @@ Then, create `src/app/home/home.ts` with the following:
253250

254251
```ts title="src/app/home/home.ts"
255252
import { Component } from '@angular/core';
256-
import { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular/standalone';
253+
import { IonContent, IonHeader, IonTitle, IonToolbar } from '@ionic/angular';
257254

258255
@Component({
259256
selector: 'app-home',

docs/angular/build-options.md

Lines changed: 49 additions & 41 deletions
Large diffs are not rendered by default.

docs/angular/injection-tokens.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ To use the `IonModalToken`, inject it into your component's constructor:
3434

3535
```tsx
3636
import { Component, inject } from '@angular/core';
37-
import { IonButton, IonContent, IonHeader, IonModalToken, IonTitle, IonToolbar } from '@ionic/angular/standalone';
37+
import { IonButton, IonContent, IonHeader, IonModalToken, IonTitle, IonToolbar } from '@ionic/angular';
3838

3939
@Component({
4040
selector: 'app-modal',
@@ -66,7 +66,7 @@ You can use the injected modal reference to listen to modal lifecycle events:
6666

6767
```tsx
6868
import { Component, inject, OnInit } from '@angular/core';
69-
import { IonButton, IonContent, IonHeader, IonModalToken, IonTitle, IonToolbar } from '@ionic/angular/standalone';
69+
import { IonButton, IonContent, IonHeader, IonModalToken, IonTitle, IonToolbar } from '@ionic/angular';
7070

7171
@Component({
7272
selector: 'app-modal',
@@ -108,7 +108,7 @@ The injected modal reference provides access to all modal properties and methods
108108

109109
```tsx
110110
import { Component, inject, OnInit } from '@angular/core';
111-
import { IonButton, IonContent, IonHeader, IonModalToken, IonTitle, IonToolbar } from '@ionic/angular/standalone';
111+
import { IonButton, IonContent, IonHeader, IonModalToken, IonTitle, IonToolbar } from '@ionic/angular';
112112

113113
@Component({
114114
selector: 'app-modal',
@@ -149,7 +149,7 @@ When opening a modal that uses the injection token, you can pass the component d
149149

150150
```tsx
151151
import { Component, inject } from '@angular/core';
152-
import { IonContent, IonButton, ModalController } from '@ionic/angular/standalone';
152+
import { IonContent, IonButton, ModalController } from '@ionic/angular';
153153
import { ModalComponent } from './modal.component';
154154

155155
@Component({

docs/angular/navigation.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,9 @@ To get started with standalone components [visit Angular's official docs](https:
201201

202202
## Live Example
203203

204-
If you would prefer to get hands on with the concepts and code described above, please checkout our [live example](https://stackblitz.com/edit/ionic-angular-routing?file=src/app/app-routing.module.ts) of the topics above on StackBlitz.
204+
import NavigationPlayground from '@site/static/usage/v9/navigation/index.md';
205+
206+
<NavigationPlayground defaultFramework="angular" />
205207

206208
## Linear Routing versus Non-Linear Routing
207209

docs/angular/overlays.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Overlays can be created programmatically using their respective controllers:
1919

2020
```typescript
2121
import { Component } from '@angular/core';
22-
import { ModalController } from '@ionic/angular/standalone';
22+
import { ModalController } from '@ionic/angular';
2323
import { MyModalComponent } from './my-modal.component';
2424

2525
@Component({
@@ -61,7 +61,7 @@ To use a custom injector, pass it to the `create()` method:
6161

6262
```typescript
6363
import { Component, Injector } from '@angular/core';
64-
import { ModalController } from '@ionic/angular/standalone';
64+
import { ModalController } from '@ionic/angular';
6565
import { MyModalComponent } from './my-modal.component';
6666
import { MyRouteService } from './my-route.service';
6767

@@ -104,7 +104,7 @@ You can also create a custom injector with specific providers:
104104

105105
```typescript
106106
import { Component, Injector } from '@angular/core';
107-
import { ModalController } from '@ionic/angular/standalone';
107+
import { ModalController } from '@ionic/angular';
108108
import { MyModalComponent } from './my-modal.component';
109109
import { MyService } from './my.service';
110110

@@ -140,7 +140,7 @@ A common use case is providing the Angular CDK `Dir` directive to overlays for b
140140
```typescript
141141
import { Component, Injector } from '@angular/core';
142142
import { Dir } from '@angular/cdk/bidi';
143-
import { ModalController } from '@ionic/angular/standalone';
143+
import { ModalController } from '@ionic/angular';
144144
import { MyModalComponent } from './my-modal.component';
145145

146146
@Component({
@@ -166,7 +166,7 @@ The `PopoverController` supports the same `injector` option:
166166

167167
```typescript
168168
import { Component, Injector } from '@angular/core';
169-
import { PopoverController } from '@ionic/angular/standalone';
169+
import { PopoverController } from '@ionic/angular';
170170
import { MyPopoverComponent } from './my-popover.component';
171171

172172
@Component({
@@ -194,10 +194,10 @@ Ionic Angular exports its own `ModalOptions` and `PopoverOptions` types that ext
194194
- `ModalOptions` - Extends core `ModalOptions` with the `injector` property
195195
- `PopoverOptions` - Extends core `PopoverOptions` with the `injector` property
196196

197-
These types are exported from `@ionic/angular` and `@ionic/angular/standalone`:
197+
These types are exported from `@ionic/angular` and `@ionic/angular/lazy`:
198198

199199
```typescript
200-
import type { ModalOptions, PopoverOptions } from '@ionic/angular/standalone';
200+
import type { ModalOptions, PopoverOptions } from '@ionic/angular';
201201
```
202202

203203
## Docs for Overlays in Ionic

0 commit comments

Comments
 (0)