@ionic/angular 8.8.12-dev.11781813448.16e7a064 → 8.8.12-dev.11782342444.186b6e9c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/ionic-angular-common.mjs +104 -131
  3. package/fesm2022/ionic-angular-common.mjs.map +1 -1
  4. package/fesm2022/ionic-angular-standalone.mjs +716 -634
  5. package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
  6. package/fesm2022/ionic-angular.mjs +943 -543
  7. package/fesm2022/ionic-angular.mjs.map +1 -1
  8. package/package.json +16 -16
  9. package/schematics/add/index.js +2 -2
  10. package/schematics/utils/ast.js +35 -3
  11. package/schematics/utils/config.js +10 -11
  12. package/schematics/utils/package.js +5 -2
  13. package/types/ionic-angular-common.d.ts +1021 -0
  14. package/types/ionic-angular-standalone.d.ts +1560 -0
  15. package/{directives/proxies.d.ts → types/ionic-angular.d.ts} +652 -399
  16. package/app-initialize.d.ts +0 -3
  17. package/common/directives/control-value-accessors/index.d.ts +0 -1
  18. package/common/directives/control-value-accessors/value-accessor.d.ts +0 -36
  19. package/common/directives/navigation/back-button.d.ts +0 -23
  20. package/common/directives/navigation/nav-params.d.ts +0 -45
  21. package/common/directives/navigation/nav.d.ts +0 -21
  22. package/common/directives/navigation/router-link-delegate.d.ts +0 -70
  23. package/common/directives/navigation/router-outlet.d.ts +0 -104
  24. package/common/directives/navigation/stack-controller.d.ts +0 -42
  25. package/common/directives/navigation/stack-utils.d.ts +0 -38
  26. package/common/directives/navigation/tabs.d.ts +0 -83
  27. package/common/index.d.ts +0 -22
  28. package/common/overlays/modal.d.ts +0 -62
  29. package/common/overlays/popover.d.ts +0 -46
  30. package/common/providers/angular-delegate.d.ts +0 -28
  31. package/common/providers/config.d.ts +0 -11
  32. package/common/providers/dom-controller.d.ts +0 -16
  33. package/common/providers/menu-controller.d.ts +0 -78
  34. package/common/providers/nav-controller.d.ts +0 -116
  35. package/common/providers/platform.d.ts +0 -174
  36. package/common/types/interfaces.d.ts +0 -8
  37. package/common/types/ionic-lifecycle-hooks.d.ts +0 -27
  38. package/common/types/overlay-options.d.ts +0 -16
  39. package/common/utils/overlay.d.ts +0 -21
  40. package/common/utils/proxy.d.ts +0 -8
  41. package/common/utils/routing.d.ts +0 -28
  42. package/common/utils/util.d.ts +0 -1
  43. package/directives/angular-component-lib/utils.d.ts +0 -9
  44. package/directives/control-value-accessors/boolean-value-accessor.d.ts +0 -10
  45. package/directives/control-value-accessors/index.d.ts +0 -4
  46. package/directives/control-value-accessors/numeric-value-accessor.d.ts +0 -11
  47. package/directives/control-value-accessors/select-value-accessor.d.ts +0 -9
  48. package/directives/control-value-accessors/text-value-accessor.d.ts +0 -9
  49. package/directives/navigation/ion-back-button.d.ts +0 -9
  50. package/directives/navigation/ion-nav.d.ts +0 -8
  51. package/directives/navigation/ion-router-outlet.d.ts +0 -25
  52. package/directives/navigation/ion-tabs.d.ts +0 -13
  53. package/directives/navigation/router-link-delegate.d.ts +0 -16
  54. package/directives/overlays/modal.d.ts +0 -6
  55. package/directives/overlays/popover.d.ts +0 -6
  56. package/directives/proxies-list.d.ts +0 -2
  57. package/directives/validators/index.d.ts +0 -2
  58. package/directives/validators/max-validator.d.ts +0 -12
  59. package/directives/validators/min-validator.d.ts +0 -12
  60. package/esm2022/app-initialize.mjs +0 -29
  61. package/esm2022/common/directives/control-value-accessors/index.mjs +0 -2
  62. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +0 -153
  63. package/esm2022/common/directives/navigation/back-button.mjs +0 -61
  64. package/esm2022/common/directives/navigation/nav-params.mjs +0 -47
  65. package/esm2022/common/directives/navigation/nav.mjs +0 -49
  66. package/esm2022/common/directives/navigation/router-link-delegate.mjs +0 -190
  67. package/esm2022/common/directives/navigation/router-outlet.mjs +0 -480
  68. package/esm2022/common/directives/navigation/stack-controller.mjs +0 -280
  69. package/esm2022/common/directives/navigation/stack-utils.mjs +0 -73
  70. package/esm2022/common/directives/navigation/tabs.mjs +0 -279
  71. package/esm2022/common/index.mjs +0 -20
  72. package/esm2022/common/ionic-angular-common.mjs +0 -5
  73. package/esm2022/common/overlays/modal.mjs +0 -103
  74. package/esm2022/common/overlays/popover.mjs +0 -91
  75. package/esm2022/common/providers/angular-delegate.mjs +0 -210
  76. package/esm2022/common/providers/config.mjs +0 -45
  77. package/esm2022/common/providers/dom-controller.mjs +0 -45
  78. package/esm2022/common/providers/menu-controller.mjs +0 -114
  79. package/esm2022/common/providers/nav-controller.mjs +0 -235
  80. package/esm2022/common/providers/platform.mjs +0 -258
  81. package/esm2022/common/types/interfaces.mjs +0 -2
  82. package/esm2022/common/types/ionic-lifecycle-hooks.mjs +0 -5
  83. package/esm2022/common/types/overlay-options.mjs +0 -2
  84. package/esm2022/common/utils/overlay.mjs +0 -26
  85. package/esm2022/common/utils/proxy.mjs +0 -47
  86. package/esm2022/common/utils/routing.mjs +0 -55
  87. package/esm2022/common/utils/util.mjs +0 -10
  88. package/esm2022/directives/angular-component-lib/utils.mjs +0 -59
  89. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +0 -42
  90. package/esm2022/directives/control-value-accessors/index.mjs +0 -5
  91. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +0 -50
  92. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +0 -39
  93. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +0 -38
  94. package/esm2022/directives/navigation/ion-back-button.mjs +0 -24
  95. package/esm2022/directives/navigation/ion-nav.mjs +0 -21
  96. package/esm2022/directives/navigation/ion-router-outlet.mjs +0 -52
  97. package/esm2022/directives/navigation/ion-tabs.mjs +0 -59
  98. package/esm2022/directives/navigation/router-link-delegate.mjs +0 -32
  99. package/esm2022/directives/overlays/modal.mjs +0 -22
  100. package/esm2022/directives/overlays/popover.mjs +0 -18
  101. package/esm2022/directives/proxies-list.mjs +0 -90
  102. package/esm2022/directives/proxies.mjs +0 -2373
  103. package/esm2022/directives/validators/index.mjs +0 -3
  104. package/esm2022/directives/validators/max-validator.mjs +0 -27
  105. package/esm2022/directives/validators/min-validator.mjs +0 -27
  106. package/esm2022/index.mjs +0 -32
  107. package/esm2022/ionic-angular.mjs +0 -5
  108. package/esm2022/ionic-module.mjs +0 -111
  109. package/esm2022/providers/action-sheet-controller.mjs +0 -19
  110. package/esm2022/providers/alert-controller.mjs +0 -19
  111. package/esm2022/providers/animation-controller.mjs +0 -38
  112. package/esm2022/providers/gesture-controller.mjs +0 -33
  113. package/esm2022/providers/loading-controller.mjs +0 -19
  114. package/esm2022/providers/menu-controller.mjs +0 -19
  115. package/esm2022/providers/modal-controller.mjs +0 -26
  116. package/esm2022/providers/picker-controller.mjs +0 -22
  117. package/esm2022/providers/popover-controller.mjs +0 -19
  118. package/esm2022/providers/toast-controller.mjs +0 -19
  119. package/esm2022/standalone/directives/angular-component-lib/utils.mjs +0 -59
  120. package/esm2022/standalone/directives/checkbox.mjs +0 -76
  121. package/esm2022/standalone/directives/datetime.mjs +0 -95
  122. package/esm2022/standalone/directives/icon.mjs +0 -35
  123. package/esm2022/standalone/directives/index.mjs +0 -13
  124. package/esm2022/standalone/directives/input-otp.mjs +0 -90
  125. package/esm2022/standalone/directives/input.mjs +0 -113
  126. package/esm2022/standalone/directives/proxies.mjs +0 -2260
  127. package/esm2022/standalone/directives/radio-group.mjs +0 -60
  128. package/esm2022/standalone/directives/range.mjs +0 -78
  129. package/esm2022/standalone/directives/searchbar.mjs +0 -82
  130. package/esm2022/standalone/directives/segment.mjs +0 -60
  131. package/esm2022/standalone/directives/select.mjs +0 -84
  132. package/esm2022/standalone/directives/textarea.mjs +0 -91
  133. package/esm2022/standalone/directives/toggle.mjs +0 -76
  134. package/esm2022/standalone/index.mjs +0 -25
  135. package/esm2022/standalone/ionic-angular-standalone.mjs +0 -5
  136. package/esm2022/standalone/navigation/back-button.mjs +0 -32
  137. package/esm2022/standalone/navigation/nav.mjs +0 -28
  138. package/esm2022/standalone/navigation/router-link-delegate.mjs +0 -28
  139. package/esm2022/standalone/navigation/router-outlet.mjs +0 -60
  140. package/esm2022/standalone/navigation/tabs.mjs +0 -58
  141. package/esm2022/standalone/overlays/modal.mjs +0 -32
  142. package/esm2022/standalone/overlays/popover.mjs +0 -28
  143. package/esm2022/standalone/providers/action-sheet-controller.mjs +0 -21
  144. package/esm2022/standalone/providers/alert-controller.mjs +0 -21
  145. package/esm2022/standalone/providers/animation-controller.mjs +0 -38
  146. package/esm2022/standalone/providers/gesture-controller.mjs +0 -33
  147. package/esm2022/standalone/providers/ionic-angular.mjs +0 -38
  148. package/esm2022/standalone/providers/loading-controller.mjs +0 -21
  149. package/esm2022/standalone/providers/menu-controller.mjs +0 -19
  150. package/esm2022/standalone/providers/modal-controller.mjs +0 -28
  151. package/esm2022/standalone/providers/picker-controller.mjs +0 -24
  152. package/esm2022/standalone/providers/popover-controller.mjs +0 -21
  153. package/esm2022/standalone/providers/toast-controller.mjs +0 -21
  154. package/index.d.ts +0 -27
  155. package/ionic-module.d.ts +0 -28
  156. package/providers/action-sheet-controller.d.ts +0 -8
  157. package/providers/alert-controller.d.ts +0 -8
  158. package/providers/animation-controller.d.ts +0 -25
  159. package/providers/gesture-controller.d.ts +0 -13
  160. package/providers/loading-controller.d.ts +0 -8
  161. package/providers/menu-controller.d.ts +0 -7
  162. package/providers/modal-controller.d.ts +0 -12
  163. package/providers/picker-controller.d.ts +0 -11
  164. package/providers/popover-controller.d.ts +0 -9
  165. package/providers/toast-controller.d.ts +0 -8
  166. package/standalone/directives/angular-component-lib/utils.d.ts +0 -9
  167. package/standalone/directives/checkbox.d.ts +0 -30
  168. package/standalone/directives/datetime.d.ts +0 -30
  169. package/standalone/directives/icon.d.ts +0 -9
  170. package/standalone/directives/index.d.ts +0 -12
  171. package/standalone/directives/input-otp.d.ts +0 -49
  172. package/standalone/directives/input.d.ts +0 -47
  173. package/standalone/directives/proxies.d.ts +0 -1035
  174. package/standalone/directives/radio-group.d.ts +0 -18
  175. package/standalone/directives/range.d.ts +0 -47
  176. package/standalone/directives/searchbar.d.ts +0 -45
  177. package/standalone/directives/segment.d.ts +0 -19
  178. package/standalone/directives/select.d.ts +0 -34
  179. package/standalone/directives/textarea.d.ts +0 -37
  180. package/standalone/directives/toggle.d.ts +0 -28
  181. package/standalone/index.d.ts +0 -23
  182. package/standalone/navigation/back-button.d.ts +0 -9
  183. package/standalone/navigation/nav.d.ts +0 -8
  184. package/standalone/navigation/router-link-delegate.d.ts +0 -10
  185. package/standalone/navigation/router-outlet.d.ts +0 -25
  186. package/standalone/navigation/tabs.d.ts +0 -13
  187. package/standalone/overlays/modal.d.ts +0 -6
  188. package/standalone/overlays/popover.d.ts +0 -6
  189. package/standalone/providers/action-sheet-controller.d.ts +0 -8
  190. package/standalone/providers/alert-controller.d.ts +0 -8
  191. package/standalone/providers/animation-controller.d.ts +0 -25
  192. package/standalone/providers/gesture-controller.d.ts +0 -13
  193. package/standalone/providers/ionic-angular.d.ts +0 -7
  194. package/standalone/providers/loading-controller.d.ts +0 -8
  195. package/standalone/providers/menu-controller.d.ts +0 -7
  196. package/standalone/providers/modal-controller.d.ts +0 -12
  197. package/standalone/providers/picker-controller.d.ts +0 -11
  198. package/standalone/providers/popover-controller.d.ts +0 -9
  199. package/standalone/providers/toast-controller.d.ts +0 -8
package/README.md CHANGED
@@ -72,7 +72,7 @@ This guide shows you how to test the local Ionic Framework build with a new Angu
72
72
  ```sh
73
73
  # Change to whichever directory you want the app in
74
74
  cd ~/Documents/
75
- ng new my-app --style=css --ssr=false --zoneless=false
75
+ ng new my-app --style=css --ssr=false
76
76
  cd my-app
77
77
  ```
78
78
 
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Inject, Optional, InjectionToken, inject, NgZone, ApplicationRef, Injector, createComponent, TemplateRef, Directive, ContentChild, EventEmitter, ViewContainerRef, EnvironmentInjector, Attribute, SkipSelf, Input, Output, reflectComponentType, HostListener, ElementRef, ViewChild } from '@angular/core';
2
+ import { Injectable, Inject, Optional, InjectionToken, inject, NgZone, ApplicationRef, Injector, createComponent, TemplateRef, ContentChild, Directive, EventEmitter, ViewContainerRef, EnvironmentInjector, Output, Input, Attribute, SkipSelf, reflectComponentType, HostListener, ElementRef, ViewChild } from '@angular/core';
3
3
  import * as i3 from '@angular/router';
4
4
  import { NavigationStart, NavigationCancel, NavigationError, PRIMARY_OUTLET, ChildrenOutletContexts, ActivatedRoute, Router } from '@angular/router';
5
5
  import * as i1 from '@angular/common';
@@ -25,10 +25,10 @@ class DomController {
25
25
  write(cb) {
26
26
  getQueue().write(cb);
27
27
  }
28
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, providedIn: 'root' });
28
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: DomController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: DomController, providedIn: 'root' });
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: DomController, decorators: [{
32
32
  type: Injectable,
33
33
  args: [{
34
34
  providedIn: 'root',
@@ -228,7 +228,6 @@ class Platform {
228
228
  }, { once: true });
229
229
  }
230
230
  else {
231
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
232
231
  readyResolve('dom');
233
232
  }
234
233
  });
@@ -382,18 +381,18 @@ class Platform {
382
381
  height() {
383
382
  return this.win.innerHeight;
384
383
  }
385
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Platform, deps: [{ token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
386
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Platform, providedIn: 'root' });
384
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: Platform, deps: [{ token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
385
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: Platform, providedIn: 'root' });
387
386
  }
388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Platform, decorators: [{
387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: Platform, decorators: [{
389
388
  type: Injectable,
390
389
  args: [{
391
390
  providedIn: 'root',
392
391
  }]
393
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
392
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
394
393
  type: Inject,
395
394
  args: [DOCUMENT]
396
- }] }, { type: i0.NgZone }]; } });
395
+ }] }, { type: i0.NgZone }] });
397
396
  const readQueryParam = (url, key) => {
398
397
  key = key.replace(/[[\]\\]/g, '\\$&');
399
398
  const regex = new RegExp('[\\?&]' + key + '=([^&#]*)');
@@ -591,7 +590,6 @@ class NavController {
591
590
  }
592
591
  navigate(url, options) {
593
592
  if (Array.isArray(url)) {
594
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
595
593
  return this.router.navigate(url, options);
596
594
  }
597
595
  else {
@@ -613,21 +611,20 @@ class NavController {
613
611
  * that do not modify the url, such as `replaceUrl` which is why
614
612
  * `options` is passed in here.
615
613
  */
616
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
617
614
  return this.router.navigateByUrl(urlTree, options);
618
615
  }
619
616
  }
620
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavController, deps: [{ token: Platform }, { token: i1.Location }, { token: i3.UrlSerializer }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
621
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavController, providedIn: 'root' });
617
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: NavController, deps: [{ token: Platform }, { token: i1.Location }, { token: i3.UrlSerializer }, { token: i3.Router, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
618
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: NavController, providedIn: 'root' });
622
619
  }
623
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NavController, decorators: [{
620
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: NavController, decorators: [{
624
621
  type: Injectable,
625
622
  args: [{
626
623
  providedIn: 'root',
627
624
  }]
628
- }], ctorParameters: function () { return [{ type: Platform }, { type: i1.Location }, { type: i3.UrlSerializer }, { type: i3.Router, decorators: [{
625
+ }], ctorParameters: () => [{ type: Platform }, { type: i1.Location }, { type: i3.UrlSerializer }, { type: i3.Router, decorators: [{
629
626
  type: Optional
630
- }] }]; } });
627
+ }] }] });
631
628
  const getAnimation = (direction, animated, animationDirection) => {
632
629
  if (animated === false) {
633
630
  return undefined;
@@ -668,10 +665,10 @@ class Config {
668
665
  }
669
666
  return 0;
670
667
  }
671
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
672
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, providedIn: 'root' });
668
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: Config, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
669
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: Config, providedIn: 'root' });
673
670
  }
674
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, decorators: [{
671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: Config, decorators: [{
675
672
  type: Injectable,
676
673
  args: [{
677
674
  providedIn: 'root',
@@ -745,10 +742,10 @@ class AngularDelegate {
745
742
  create(environmentInjector, injector, elementReferenceKey, customInjector) {
746
743
  return new AngularFrameworkDelegate(environmentInjector, injector, this.applicationRef, this.zone, elementReferenceKey, this.config.useSetInputAPI ?? false, customInjector);
747
744
  }
748
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
749
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate });
745
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: AngularDelegate, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
746
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: AngularDelegate });
750
747
  }
751
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate, decorators: [{
748
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: AngularDelegate, decorators: [{
752
749
  type: Injectable
753
750
  }] });
754
751
  class AngularFrameworkDelegate {
@@ -890,14 +887,16 @@ const attachView = (zone, environmentInjector, injector, applicationRef, elRefMa
890
887
  hostElement.classList.add(cssClass);
891
888
  }
892
889
  }
893
- const unbindEvents = bindLifecycleEvents(zone, instance, hostElement);
890
+ const unbindEvents = bindLifecycleEvents(zone, componentRef.changeDetectorRef, instance, hostElement);
894
891
  container.appendChild(hostElement);
895
892
  applicationRef.attachView(componentRef.hostView);
896
893
  /**
897
- * Run change detection so template bindings (e.g. `<ion-nav [root]="rootPage">`)
898
- * apply during this synchronous pass, before the web component runs its load
899
- * lifecycle. `createComponent` only runs the creation pass, so without this the
900
- * binding lands after the element has loaded, too late for `ion-nav` to read it.
894
+ * Run change detection on the freshly attached view so Angular's init hooks
895
+ * (`ngOnInit`, `ngAfterViewInit`) fire before the web component dispatches its
896
+ * Ionic lifecycle events (`ionViewWillEnter`, etc.). `createComponent` only runs
897
+ * the creation pass. The init hooks run during an update pass. Under Zone.js an
898
+ * implicit tick used to cover this, but zoneless Angular schedules no such tick,
899
+ * so without this the first `ionViewWillEnter` could run before `ngOnInit`.
901
900
  */
902
901
  componentRef.changeDetectorRef.detectChanges();
903
902
  elRefMap.set(hostElement, componentRef);
@@ -911,10 +910,24 @@ const LIFECYCLES = [
911
910
  LIFECYCLE_DID_LEAVE,
912
911
  LIFECYCLE_WILL_UNLOAD,
913
912
  ];
914
- const bindLifecycleEvents = (zone, instance, element) => {
913
+ const bindLifecycleEvents = (zone, changeDetectorRef, instance, element) => {
914
+ /**
915
+ * `zone.run` keeps the listener registration (and, under Zone.js, the handler
916
+ * execution) inside the Angular zone, so async work started inside a lifecycle
917
+ * hook is still zone-tracked. Under zoneless Angular it is a passthrough.
918
+ */
915
919
  return zone.run(() => {
916
920
  const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === 'function').map((eventName) => {
917
- const handler = (ev) => instance[eventName](ev.detail);
921
+ const handler = (ev) => {
922
+ instance[eventName](ev.detail);
923
+ /**
924
+ * Ionic lifecycle events (`ionViewWillEnter`, etc.) are dispatched from
925
+ * the web component via a native event listener, so under zoneless
926
+ * Angular nothing schedules change detection for state the hook mutates.
927
+ * Mark the view dirty explicitly. This is a no-op-or-better under Zone.js.
928
+ */
929
+ changeDetectorRef.markForCheck();
930
+ };
918
931
  element.addEventListener(eventName, handler);
919
932
  return () => element.removeEventListener(eventName, handler);
920
933
  });
@@ -1017,14 +1030,7 @@ const MODAL_METHODS = [
1017
1030
  'setCurrentBreakpoint',
1018
1031
  'getCurrentBreakpoint',
1019
1032
  ];
1020
- let IonModal =
1021
- /**
1022
- * @Component extends from @Directive
1023
- * so by defining the inputs here we
1024
- * do not need to re-define them for the
1025
- * lazy loaded popover.
1026
- */
1027
- class IonModal {
1033
+ let IonModal = class IonModal {
1028
1034
  z;
1029
1035
  // TODO(FW-2827): type
1030
1036
  template;
@@ -1056,8 +1062,8 @@ class IonModal {
1056
1062
  'ionDragEnd',
1057
1063
  ]);
1058
1064
  }
1059
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1060
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonModal, selector: "ion-modal", inputs: { animated: "animated", keepContentsMounted: "keepContentsMounted", backdropBreakpoint: "backdropBreakpoint", backdropDismiss: "backdropDismiss", breakpoints: "breakpoints", canDismiss: "canDismiss", cssClass: "cssClass", enterAnimation: "enterAnimation", expandToScroll: "expandToScroll", event: "event", focusTrap: "focusTrap", handle: "handle", handleBehavior: "handleBehavior", initialBreakpoint: "initialBreakpoint", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", presentingElement: "presentingElement", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
1065
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonModal, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1066
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: IonModal, isStandalone: true, selector: "ion-modal", inputs: { animated: "animated", keepContentsMounted: "keepContentsMounted", backdropBreakpoint: "backdropBreakpoint", backdropDismiss: "backdropDismiss", breakpoints: "breakpoints", canDismiss: "canDismiss", cssClass: "cssClass", enterAnimation: "enterAnimation", expandToScroll: "expandToScroll", event: "event", focusTrap: "focusTrap", handle: "handle", handleBehavior: "handleBehavior", initialBreakpoint: "initialBreakpoint", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", presentingElement: "presentingElement", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
1061
1067
  };
1062
1068
  IonModal = __decorate([
1063
1069
  ProxyCmp({
@@ -1071,14 +1077,14 @@ IonModal = __decorate([
1071
1077
  * lazy loaded popover.
1072
1078
  */
1073
1079
  ], IonModal);
1074
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonModal, decorators: [{
1080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonModal, decorators: [{
1075
1081
  type: Directive,
1076
1082
  args: [{
1077
1083
  selector: 'ion-modal',
1078
1084
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1079
1085
  inputs: MODAL_INPUTS,
1080
1086
  }]
1081
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
1087
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { template: [{
1082
1088
  type: ContentChild,
1083
1089
  args: [TemplateRef, { static: false }]
1084
1090
  }] } });
@@ -1107,14 +1113,7 @@ const POPOVER_INPUTS = [
1107
1113
  'side',
1108
1114
  ];
1109
1115
  const POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];
1110
- let IonPopover =
1111
- /**
1112
- * @Component extends from @Directive
1113
- * so by defining the inputs here we
1114
- * do not need to re-define them for the
1115
- * lazy loaded popover.
1116
- */
1117
- class IonPopover {
1116
+ let IonPopover = class IonPopover {
1118
1117
  z;
1119
1118
  // TODO(FW-2827): type
1120
1119
  template;
@@ -1142,8 +1141,8 @@ class IonPopover {
1142
1141
  'didDismiss',
1143
1142
  ]);
1144
1143
  }
1145
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1146
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonPopover, selector: "ion-popover", inputs: { alignment: "alignment", animated: "animated", arrow: "arrow", keepContentsMounted: "keepContentsMounted", backdropDismiss: "backdropDismiss", cssClass: "cssClass", dismissOnSelect: "dismissOnSelect", enterAnimation: "enterAnimation", event: "event", focusTrap: "focusTrap", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
1144
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonPopover, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
1145
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: IonPopover, isStandalone: true, selector: "ion-popover", inputs: { alignment: "alignment", animated: "animated", arrow: "arrow", keepContentsMounted: "keepContentsMounted", backdropDismiss: "backdropDismiss", cssClass: "cssClass", dismissOnSelect: "dismissOnSelect", enterAnimation: "enterAnimation", event: "event", focusTrap: "focusTrap", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
1147
1146
  };
1148
1147
  IonPopover = __decorate([
1149
1148
  ProxyCmp({
@@ -1157,14 +1156,14 @@ IonPopover = __decorate([
1157
1156
  * lazy loaded popover.
1158
1157
  */
1159
1158
  ], IonPopover);
1160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, decorators: [{
1159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonPopover, decorators: [{
1161
1160
  type: Directive,
1162
1161
  args: [{
1163
1162
  selector: 'ion-popover',
1164
1163
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1165
1164
  inputs: POPOVER_INPUTS,
1166
1165
  }]
1167
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
1166
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { template: [{
1168
1167
  type: ContentChild,
1169
1168
  args: [TemplateRef, { static: false }]
1170
1169
  }] } });
@@ -1266,7 +1265,7 @@ class StackController {
1266
1265
  createView(ref, activatedRoute) {
1267
1266
  const url = getUrl(this.router, activatedRoute);
1268
1267
  const element = ref?.location?.nativeElement;
1269
- const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element);
1268
+ const unlistenEvents = bindLifecycleEvents(this.zone, ref.changeDetectorRef, ref.instance, element);
1270
1269
  return {
1271
1270
  id: this.nextId++,
1272
1271
  stackId: computeStackId(this.tabsPrefix, url),
@@ -1432,7 +1431,6 @@ class StackController {
1432
1431
  return this.runningTask !== undefined;
1433
1432
  }
1434
1433
  destroy() {
1435
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1436
1434
  this.containerEl = undefined;
1437
1435
  this.views.forEach(destroyView);
1438
1436
  this.activeView = undefined;
@@ -1574,6 +1572,7 @@ class IonRouterOutlet {
1574
1572
  onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue),
1575
1573
  }
1576
1574
  : undefined;
1575
+ this.nativeEl.swipeGesture = swipe;
1577
1576
  }
1578
1577
  constructor(name, tabs, commonLocation, elementRef, router, zone, activatedRoute, parentOutlet) {
1579
1578
  this.parentOutlet = parentOutlet;
@@ -1646,7 +1645,6 @@ class IonRouterOutlet {
1646
1645
  deactivate() {
1647
1646
  if (this.activated) {
1648
1647
  if (this.activatedView) {
1649
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1650
1648
  const context = this.getContext();
1651
1649
  this.activatedView.savedData = new Map(context.children['contexts']);
1652
1650
  /**
@@ -1691,7 +1689,6 @@ class IonRouterOutlet {
1691
1689
  const saved = enteringView.savedData;
1692
1690
  if (saved) {
1693
1691
  // self-restore
1694
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1695
1692
  const context = this.getContext();
1696
1693
  context.children['contexts'] = saved;
1697
1694
  }
@@ -1712,7 +1709,6 @@ class IonRouterOutlet {
1712
1709
  const component$ = new BehaviorSubject(null);
1713
1710
  const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute);
1714
1711
  const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector);
1715
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1716
1712
  const component = snapshot.routeConfig.component ?? snapshot.component;
1717
1713
  /**
1718
1714
  * View components need to be added as a child of ion-router-outlet
@@ -1735,7 +1731,6 @@ class IonRouterOutlet {
1735
1731
  * At this point this.activated has been set earlier
1736
1732
  * in this function, so it is guaranteed to be non-null.
1737
1733
  */
1738
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1739
1734
  enteringView = this.stackCtrl.createView(this.activated, activatedRoute);
1740
1735
  // Store references to the proxy by component
1741
1736
  this.proxyMap.set(cmpRef.instance, activatedRouteProxy);
@@ -1846,10 +1841,10 @@ class IonRouterOutlet {
1846
1841
  proxy.component = activatedRoute.component;
1847
1842
  this.currentActivatedRoute$.next({ component, activatedRoute });
1848
1843
  }
1849
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRouterOutlet, deps: [{ token: 'name', attribute: true }, { token: 'tabs', attribute: true, optional: true }, { token: i1.Location }, { token: i0.ElementRef }, { token: i3.Router }, { token: i0.NgZone }, { token: i3.ActivatedRoute }, { token: IonRouterOutlet, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
1850
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonRouterOutlet, selector: "ion-router-outlet", inputs: { animated: "animated", animation: "animation", mode: "mode", swipeGesture: "swipeGesture", name: "name" }, outputs: { stackWillChange: "stackWillChange", stackDidChange: "stackDidChange", activateEvents: "activate", deactivateEvents: "deactivate" }, exportAs: ["outlet"], ngImport: i0 });
1844
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonRouterOutlet, deps: [{ token: 'name', attribute: true }, { token: 'tabs', attribute: true, optional: true }, { token: i1.Location }, { token: i0.ElementRef }, { token: i3.Router }, { token: i0.NgZone }, { token: i3.ActivatedRoute }, { token: IonRouterOutlet, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
1845
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: IonRouterOutlet, isStandalone: true, selector: "ion-router-outlet", inputs: { animated: "animated", animation: "animation", mode: "mode", swipeGesture: "swipeGesture", name: "name" }, outputs: { stackWillChange: "stackWillChange", stackDidChange: "stackDidChange", activateEvents: "activate", deactivateEvents: "deactivate" }, exportAs: ["outlet"], ngImport: i0 });
1851
1846
  }
1852
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonRouterOutlet, decorators: [{
1847
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonRouterOutlet, decorators: [{
1853
1848
  type: Directive,
1854
1849
  args: [{
1855
1850
  selector: 'ion-router-outlet',
@@ -1857,7 +1852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1857
1852
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1858
1853
  inputs: ['animated', 'animation', 'mode', 'swipeGesture'],
1859
1854
  }]
1860
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1855
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1861
1856
  type: Attribute,
1862
1857
  args: ['name']
1863
1858
  }] }, { type: undefined, decorators: [{
@@ -1869,7 +1864,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1869
1864
  type: SkipSelf
1870
1865
  }, {
1871
1866
  type: Optional
1872
- }] }]; }, propDecorators: { name: [{
1867
+ }] }], propDecorators: { name: [{
1873
1868
  type: Input
1874
1869
  }], stackWillChange: [{
1875
1870
  type: Output
@@ -1963,10 +1958,10 @@ class RoutedComponentInputBinder {
1963
1958
  });
1964
1959
  this.outletDataSubscriptions.set(outlet, dataSubscription);
1965
1960
  }
1966
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1967
- /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RoutedComponentInputBinder });
1961
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1962
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RoutedComponentInputBinder });
1968
1963
  }
1969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
1964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RoutedComponentInputBinder, decorators: [{
1970
1965
  type: Injectable
1971
1966
  }] });
1972
1967
  const provideComponentInputBinding = () => {
@@ -2099,12 +2094,12 @@ class ValueAccessor {
2099
2094
  });
2100
2095
  }
2101
2096
  }
2102
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2103
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ValueAccessor, host: { listeners: { "ionBlur": "_handleBlurEvent($event.target)" } }, ngImport: i0 });
2097
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2098
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: ValueAccessor, isStandalone: true, host: { listeners: { "ionBlur": "_handleBlurEvent($event.target)" } }, ngImport: i0 });
2104
2099
  }
2105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValueAccessor, decorators: [{
2100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: ValueAccessor, decorators: [{
2106
2101
  type: Directive
2107
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { _handleBlurEvent: [{
2102
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }], propDecorators: { _handleBlurEvent: [{
2108
2103
  type: HostListener,
2109
2104
  args: ['ionBlur', ['$event.target']]
2110
2105
  }] } });
@@ -2177,23 +2172,23 @@ let IonBackButton = class IonBackButton {
2177
2172
  ev.preventDefault();
2178
2173
  }
2179
2174
  }
2180
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBackButton, deps: [{ token: IonRouterOutlet, optional: true }, { token: NavController }, { token: Config }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
2181
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonBackButton, inputs: { color: "color", defaultHref: "defaultHref", disabled: "disabled", icon: "icon", mode: "mode", routerAnimation: "routerAnimation", text: "text", type: "type" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
2175
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonBackButton, deps: [{ token: IonRouterOutlet, optional: true }, { token: NavController }, { token: Config }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
2176
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: IonBackButton, isStandalone: true, inputs: { color: "color", defaultHref: "defaultHref", disabled: "disabled", icon: "icon", mode: "mode", routerAnimation: "routerAnimation", text: "text", type: "type" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
2182
2177
  };
2183
2178
  IonBackButton = __decorate([
2184
2179
  ProxyCmp({
2185
2180
  inputs: BACK_BUTTON_INPUTS,
2186
2181
  })
2187
2182
  ], IonBackButton);
2188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonBackButton, decorators: [{
2183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonBackButton, decorators: [{
2189
2184
  type: Directive,
2190
2185
  args: [{
2191
2186
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2192
2187
  inputs: BACK_BUTTON_INPUTS,
2193
2188
  }]
2194
- }], ctorParameters: function () { return [{ type: IonRouterOutlet, decorators: [{
2189
+ }], ctorParameters: () => [{ type: IonRouterOutlet, decorators: [{
2195
2190
  type: Optional
2196
- }] }, { type: NavController }, { type: Config }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { onClick: [{
2191
+ }] }, { type: NavController }, { type: Config }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { onClick: [{
2197
2192
  type: HostListener,
2198
2193
  args: ['click', ['$event']]
2199
2194
  }] } });
@@ -2224,8 +2219,8 @@ let IonNav = class IonNav {
2224
2219
  ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector);
2225
2220
  proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);
2226
2221
  }
2227
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonNav, deps: [{ token: i0.ElementRef }, { token: i0.EnvironmentInjector }, { token: i0.Injector }, { token: AngularDelegate }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
2228
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonNav, inputs: { animated: "animated", animation: "animation", root: "root", rootParams: "rootParams", swipeGesture: "swipeGesture" }, ngImport: i0 });
2222
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonNav, deps: [{ token: i0.ElementRef }, { token: i0.EnvironmentInjector }, { token: i0.Injector }, { token: AngularDelegate }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
2223
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: IonNav, isStandalone: true, inputs: { animated: "animated", animation: "animation", root: "root", rootParams: "rootParams", swipeGesture: "swipeGesture" }, ngImport: i0 });
2229
2224
  };
2230
2225
  IonNav = __decorate([
2231
2226
  ProxyCmp({
@@ -2233,13 +2228,13 @@ IonNav = __decorate([
2233
2228
  methods: NAV_METHODS,
2234
2229
  })
2235
2230
  ], IonNav);
2236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonNav, decorators: [{
2231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonNav, decorators: [{
2237
2232
  type: Directive,
2238
2233
  args: [{
2239
2234
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2240
2235
  inputs: NAV_INPUTS,
2241
2236
  }]
2242
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.EnvironmentInjector }, { type: i0.Injector }, { type: AngularDelegate }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; } });
2237
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.EnvironmentInjector }, { type: i0.Injector }, { type: AngularDelegate }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }] });
2243
2238
 
2244
2239
  /**
2245
2240
  * Adds support for Ionic routing directions and animations to the base Angular router link directive.
@@ -2265,44 +2260,10 @@ class RouterLinkDelegateDirective {
2265
2260
  ngOnInit() {
2266
2261
  this.updateTargetUrlAndHref();
2267
2262
  this.updateTabindex();
2268
- /**
2269
- * Ionic components like `ion-item` render a native anchor in their shadow DOM,
2270
- * so a modifier click (ctrl/meta/shift/alt) or a non-`_self` target should let
2271
- * the browser handle the navigation natively (new tab, new window, download)
2272
- * instead of navigating in-app.
2273
- *
2274
- * We listen in the capture phase so this runs before Angular's `RouterLink`
2275
- * handler and our own bubble-phase `onClick`. On a native-navigation intent it
2276
- * stops propagation to cancel the in-app navigation, but leaves `preventDefault`
2277
- * alone so the native anchor can still act.
2278
- */
2279
- this.elementRef.nativeElement.addEventListener('click', this.onCaptureClick, { capture: true });
2280
2263
  }
2281
2264
  ngOnChanges() {
2282
2265
  this.updateTargetUrlAndHref();
2283
2266
  }
2284
- ngOnDestroy() {
2285
- this.elementRef.nativeElement.removeEventListener('click', this.onCaptureClick, { capture: true });
2286
- }
2287
- onCaptureClick = (ev) => {
2288
- if (this.opensNatively(ev)) {
2289
- ev.stopImmediatePropagation();
2290
- }
2291
- };
2292
- /**
2293
- * True when the browser should handle the click natively instead of routing
2294
- * in-app: a modifier was held (ctrl/meta/shift/alt), or the host targets
2295
- * something other than `_self`. This mirrors the modifier set Angular's own
2296
- * `RouterLink` guards on, so an Ionic `routerLink` behaves like a plain anchor
2297
- * for new-tab, new-window, and download intents.
2298
- */
2299
- opensNatively(ev) {
2300
- if (ev instanceof MouseEvent && (ev.ctrlKey || ev.metaKey || ev.shiftKey || ev.altKey)) {
2301
- return true;
2302
- }
2303
- const target = this.elementRef.nativeElement.target;
2304
- return target != null && target !== '' && target !== '_self';
2305
- }
2306
2267
  /**
2307
2268
  * The `tabindex` is set to `0` by default on the host element when
2308
2269
  * the `routerLink` directive is used. This causes issues with Ionic
@@ -2354,17 +2315,17 @@ class RouterLinkDelegateDirective {
2354
2315
  */
2355
2316
  ev.preventDefault();
2356
2317
  }
2357
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkDelegateDirective, deps: [{ token: i1.LocationStrategy }, { token: NavController }, { token: i0.ElementRef }, { token: i3.Router }, { token: i3.RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2358
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RouterLinkDelegateDirective, selector: ":not(a):not(area)[routerLink]", inputs: { routerDirection: "routerDirection", routerAnimation: "routerAnimation" }, host: { listeners: { "click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0 });
2318
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RouterLinkDelegateDirective, deps: [{ token: i1.LocationStrategy }, { token: NavController }, { token: i0.ElementRef }, { token: i3.Router }, { token: i3.RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2319
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: RouterLinkDelegateDirective, isStandalone: true, selector: ":not(a):not(area)[routerLink]", inputs: { routerDirection: "routerDirection", routerAnimation: "routerAnimation" }, host: { listeners: { "click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0 });
2359
2320
  }
2360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkDelegateDirective, decorators: [{
2321
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RouterLinkDelegateDirective, decorators: [{
2361
2322
  type: Directive,
2362
2323
  args: [{
2363
2324
  selector: ':not(a):not(area)[routerLink]',
2364
2325
  }]
2365
- }], ctorParameters: function () { return [{ type: i1.LocationStrategy }, { type: NavController }, { type: i0.ElementRef }, { type: i3.Router }, { type: i3.RouterLink, decorators: [{
2326
+ }], ctorParameters: () => [{ type: i1.LocationStrategy }, { type: NavController }, { type: i0.ElementRef }, { type: i3.Router }, { type: i3.RouterLink, decorators: [{
2366
2327
  type: Optional
2367
- }] }]; }, propDecorators: { routerDirection: [{
2328
+ }] }], propDecorators: { routerDirection: [{
2368
2329
  type: Input
2369
2330
  }], routerAnimation: [{
2370
2331
  type: Input
@@ -2405,17 +2366,17 @@ class RouterLinkWithHrefDelegateDirective {
2405
2366
  onClick() {
2406
2367
  this.navCtrl.setDirection(this.routerDirection, undefined, undefined, this.routerAnimation);
2407
2368
  }
2408
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkWithHrefDelegateDirective, deps: [{ token: i1.LocationStrategy }, { token: NavController }, { token: i0.ElementRef }, { token: i3.Router }, { token: i3.RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2409
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RouterLinkWithHrefDelegateDirective, selector: "a[routerLink],area[routerLink]", inputs: { routerDirection: "routerDirection", routerAnimation: "routerAnimation" }, host: { listeners: { "click": "onClick()" } }, usesOnChanges: true, ngImport: i0 });
2369
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RouterLinkWithHrefDelegateDirective, deps: [{ token: i1.LocationStrategy }, { token: NavController }, { token: i0.ElementRef }, { token: i3.Router }, { token: i3.RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2370
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: RouterLinkWithHrefDelegateDirective, isStandalone: true, selector: "a[routerLink],area[routerLink]", inputs: { routerDirection: "routerDirection", routerAnimation: "routerAnimation" }, host: { listeners: { "click": "onClick()" } }, usesOnChanges: true, ngImport: i0 });
2410
2371
  }
2411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterLinkWithHrefDelegateDirective, decorators: [{
2372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RouterLinkWithHrefDelegateDirective, decorators: [{
2412
2373
  type: Directive,
2413
2374
  args: [{
2414
2375
  selector: 'a[routerLink],area[routerLink]',
2415
2376
  }]
2416
- }], ctorParameters: function () { return [{ type: i1.LocationStrategy }, { type: NavController }, { type: i0.ElementRef }, { type: i3.Router }, { type: i3.RouterLink, decorators: [{
2377
+ }], ctorParameters: () => [{ type: i1.LocationStrategy }, { type: NavController }, { type: i0.ElementRef }, { type: i3.Router }, { type: i3.RouterLink, decorators: [{
2417
2378
  type: Optional
2418
- }] }]; }, propDecorators: { routerDirection: [{
2379
+ }] }], propDecorators: { routerDirection: [{
2419
2380
  type: Input
2420
2381
  }], routerAnimation: [{
2421
2382
  type: Input
@@ -2522,6 +2483,16 @@ class IonTabs {
2522
2483
  this.ionTabsDidChange.emit({ tab: stackId });
2523
2484
  }
2524
2485
  }
2486
+ /**
2487
+ * Host listener for the `ionTabButtonClick` event. Angular 22 enabled stricter
2488
+ * host-binding type checking, which types `$event` as the DOM `Event`. That is
2489
+ * not assignable to `select`'s public `string | CustomEvent` parameter, so this
2490
+ * thin wrapper narrows the event before forwarding to keep `select`'s public
2491
+ * signature intact.
2492
+ */
2493
+ onTabButtonClick(ev) {
2494
+ return this.select(ev);
2495
+ }
2525
2496
  /**
2526
2497
  * When a tab button is clicked, there are several scenarios:
2527
2498
  * 1. If the selected tab is currently active (the tab button has been clicked
@@ -2582,6 +2553,8 @@ class IonTabs {
2582
2553
  return;
2583
2554
  }
2584
2555
  const rootView = this.outlet.getRootView(tab);
2556
+ // Keep the explicit rootView null-guard; an optional-chain rewrite changes the short-circuit value spread below.
2557
+ // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
2585
2558
  const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;
2586
2559
  return this.navCtrl.navigateRoot(tabRootUrl, {
2587
2560
  ...navigationExtras,
@@ -2679,22 +2652,22 @@ class IonTabs {
2679
2652
  this.tabsInner.nativeElement.after(tabBar);
2680
2653
  }
2681
2654
  }
2682
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, deps: [{ token: NavController }], target: i0.ɵɵFactoryTarget.Directive });
2683
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonTabs, selector: "ion-tabs", outputs: { ionTabsWillChange: "ionTabsWillChange", ionTabsDidChange: "ionTabsDidChange" }, host: { listeners: { "ionTabButtonClick": "select($event)" } }, viewQueries: [{ propertyName: "tabsInner", first: true, predicate: ["tabsInner"], descendants: true, read: ElementRef, static: true }], ngImport: i0 });
2655
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonTabs, deps: [{ token: NavController }], target: i0.ɵɵFactoryTarget.Directive });
2656
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: IonTabs, isStandalone: true, selector: "ion-tabs", outputs: { ionTabsWillChange: "ionTabsWillChange", ionTabsDidChange: "ionTabsDidChange" }, host: { listeners: { "ionTabButtonClick": "onTabButtonClick($event)" } }, viewQueries: [{ propertyName: "tabsInner", first: true, predicate: ["tabsInner"], descendants: true, read: ElementRef, static: true }], ngImport: i0 });
2684
2657
  }
2685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, decorators: [{
2658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: IonTabs, decorators: [{
2686
2659
  type: Directive,
2687
2660
  args: [{
2688
2661
  selector: 'ion-tabs',
2689
2662
  }]
2690
- }], ctorParameters: function () { return [{ type: NavController }]; }, propDecorators: { tabsInner: [{
2663
+ }], ctorParameters: () => [{ type: NavController }], propDecorators: { tabsInner: [{
2691
2664
  type: ViewChild,
2692
2665
  args: ['tabsInner', { read: ElementRef, static: true }]
2693
2666
  }], ionTabsWillChange: [{
2694
2667
  type: Output
2695
2668
  }], ionTabsDidChange: [{
2696
2669
  type: Output
2697
- }], select: [{
2670
+ }], onTabButtonClick: [{
2698
2671
  type: HostListener,
2699
2672
  args: ['ionTabButtonClick', ['$event']]
2700
2673
  }] } });
@@ -2784,5 +2757,5 @@ class IonicRouteStrategy {
2784
2757
  * Generated bundle index. Do not edit.
2785
2758
  */
2786
2759
 
2787
- export { AngularDelegate, Config, ConfigToken, DomController, IonBackButton, IonModal, IonModalToken, IonNav, IonPopover, IonRouterOutlet, IonTabs, IonicRouteStrategy, MenuController, NavController, NavParams, OverlayBaseController, Platform, ProxyCmp, RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, ValueAccessor, bindLifecycleEvents, provideComponentInputBinding, raf, setIonicClasses };
2760
+ export { AngularDelegate, Config, ConfigToken, DomController, IonBackButton, IonModal, IonModalToken, IonNav, IonPopover, IonRouterOutlet, IonTabs, IonicRouteStrategy, MenuController, NavController, NavParams, OverlayBaseController, Platform, ProxyCmp, RouterLinkDelegateDirective, RouterLinkWithHrefDelegateDirective, ValueAccessor, provideComponentInputBinding, raf, setIonicClasses };
2788
2761
  //# sourceMappingURL=ionic-angular-common.mjs.map