@ionic/angular 8.8.9-dev.11781024903.1e4268e5 → 8.8.9-dev.11781098612.122c6758

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 (244) hide show
  1. package/README.md +1 -1
  2. package/css/core.css +1 -1
  3. package/css/core.css.map +1 -1
  4. package/css/display.css +1 -1
  5. package/css/display.css.map +1 -1
  6. package/css/flex-utils.css +1 -1
  7. package/css/flex-utils.css.map +1 -1
  8. package/css/float-elements.css.map +1 -1
  9. package/css/global.bundle.css.map +1 -1
  10. package/css/ionic-swiper.css +1 -1
  11. package/css/ionic-swiper.css.map +1 -1
  12. package/css/ionic.bundle.css +1 -1
  13. package/css/ionic.bundle.css.map +1 -1
  14. package/css/normalize.css.map +1 -1
  15. package/css/padding.css.map +1 -1
  16. package/css/palettes/dark.always.css.map +1 -1
  17. package/css/palettes/dark.class.css.map +1 -1
  18. package/css/palettes/dark.system.css.map +1 -1
  19. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  20. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  21. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  22. package/css/palettes/high-contrast.always.css.map +1 -1
  23. package/css/palettes/high-contrast.class.css.map +1 -1
  24. package/css/palettes/high-contrast.system.css.map +1 -1
  25. package/css/structure.css.map +1 -1
  26. package/css/text-alignment.css.map +1 -1
  27. package/css/text-transformation.css.map +1 -1
  28. package/css/typography.css.map +1 -1
  29. package/css/utils.bundle.css +1 -1
  30. package/css/utils.bundle.css.map +1 -1
  31. package/fesm2022/ionic-angular-common.mjs +107 -93
  32. package/fesm2022/ionic-angular-common.mjs.map +1 -1
  33. package/fesm2022/ionic-angular-standalone.mjs +900 -882
  34. package/fesm2022/ionic-angular-standalone.mjs.map +1 -1
  35. package/fesm2022/ionic-angular.mjs +1087 -752
  36. package/fesm2022/ionic-angular.mjs.map +1 -1
  37. package/package.json +16 -16
  38. package/schematics/add/index.js +2 -2
  39. package/schematics/utils/ast.js +35 -3
  40. package/schematics/utils/config.js +10 -11
  41. package/schematics/utils/package.js +5 -2
  42. package/types/ionic-angular-common.d.ts +1021 -0
  43. package/types/ionic-angular-standalone.d.ts +1560 -0
  44. package/{directives/proxies.d.ts → types/ionic-angular.d.ts} +703 -469
  45. package/app-initialize.d.ts +0 -3
  46. package/common/directives/control-value-accessors/index.d.ts +0 -1
  47. package/common/directives/control-value-accessors/value-accessor.d.ts +0 -36
  48. package/common/directives/navigation/back-button.d.ts +0 -23
  49. package/common/directives/navigation/nav-params.d.ts +0 -45
  50. package/common/directives/navigation/nav.d.ts +0 -21
  51. package/common/directives/navigation/router-link-delegate.d.ts +0 -60
  52. package/common/directives/navigation/router-outlet.d.ts +0 -104
  53. package/common/directives/navigation/stack-controller.d.ts +0 -42
  54. package/common/directives/navigation/stack-utils.d.ts +0 -38
  55. package/common/directives/navigation/tabs.d.ts +0 -83
  56. package/common/index.d.ts +0 -22
  57. package/common/overlays/modal.d.ts +0 -62
  58. package/common/overlays/popover.d.ts +0 -46
  59. package/common/providers/angular-delegate.d.ts +0 -28
  60. package/common/providers/config.d.ts +0 -11
  61. package/common/providers/dom-controller.d.ts +0 -16
  62. package/common/providers/menu-controller.d.ts +0 -78
  63. package/common/providers/nav-controller.d.ts +0 -116
  64. package/common/providers/platform.d.ts +0 -174
  65. package/common/types/interfaces.d.ts +0 -8
  66. package/common/types/ionic-lifecycle-hooks.d.ts +0 -27
  67. package/common/types/overlay-options.d.ts +0 -16
  68. package/common/utils/overlay.d.ts +0 -21
  69. package/common/utils/proxy.d.ts +0 -8
  70. package/common/utils/routing.d.ts +0 -28
  71. package/common/utils/util.d.ts +0 -1
  72. package/css/ionic/bundle.ionic.css +0 -1
  73. package/css/ionic/bundle.ionic.css.map +0 -1
  74. package/css/ionic/core.ionic.css +0 -1
  75. package/css/ionic/core.ionic.css.map +0 -1
  76. package/css/ionic/global.bundle.ionic.css +0 -1
  77. package/css/ionic/global.bundle.ionic.css.map +0 -1
  78. package/css/ionic/ionic-swiper.ionic.css +0 -1
  79. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  80. package/css/ionic/link.ionic.css +0 -1
  81. package/css/ionic/link.ionic.css.map +0 -1
  82. package/css/ionic/structure.ionic.css +0 -1
  83. package/css/ionic/structure.ionic.css.map +0 -1
  84. package/css/ionic/typography.ionic.css +0 -1
  85. package/css/ionic/typography.ionic.css.map +0 -1
  86. package/css/ionic/utils.bundle.ionic.css +0 -1
  87. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  88. package/directives/angular-component-lib/utils.d.ts +0 -9
  89. package/directives/control-value-accessors/boolean-value-accessor.d.ts +0 -10
  90. package/directives/control-value-accessors/index.d.ts +0 -4
  91. package/directives/control-value-accessors/numeric-value-accessor.d.ts +0 -11
  92. package/directives/control-value-accessors/select-value-accessor.d.ts +0 -9
  93. package/directives/control-value-accessors/text-value-accessor.d.ts +0 -9
  94. package/directives/navigation/ion-back-button.d.ts +0 -9
  95. package/directives/navigation/ion-nav.d.ts +0 -8
  96. package/directives/navigation/ion-router-outlet.d.ts +0 -25
  97. package/directives/navigation/ion-tabs.d.ts +0 -13
  98. package/directives/navigation/router-link-delegate.d.ts +0 -16
  99. package/directives/overlays/modal.d.ts +0 -6
  100. package/directives/overlays/popover.d.ts +0 -6
  101. package/directives/proxies-list.d.ts +0 -2
  102. package/directives/validators/index.d.ts +0 -2
  103. package/directives/validators/max-validator.d.ts +0 -12
  104. package/directives/validators/min-validator.d.ts +0 -12
  105. package/esm2022/app-initialize.mjs +0 -29
  106. package/esm2022/common/directives/control-value-accessors/index.mjs +0 -2
  107. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +0 -153
  108. package/esm2022/common/directives/navigation/back-button.mjs +0 -61
  109. package/esm2022/common/directives/navigation/nav-params.mjs +0 -47
  110. package/esm2022/common/directives/navigation/nav.mjs +0 -49
  111. package/esm2022/common/directives/navigation/router-link-delegate.mjs +0 -156
  112. package/esm2022/common/directives/navigation/router-outlet.mjs +0 -480
  113. package/esm2022/common/directives/navigation/stack-controller.mjs +0 -280
  114. package/esm2022/common/directives/navigation/stack-utils.mjs +0 -73
  115. package/esm2022/common/directives/navigation/tabs.mjs +0 -279
  116. package/esm2022/common/index.mjs +0 -20
  117. package/esm2022/common/ionic-angular-common.mjs +0 -5
  118. package/esm2022/common/overlays/modal.mjs +0 -103
  119. package/esm2022/common/overlays/popover.mjs +0 -91
  120. package/esm2022/common/providers/angular-delegate.mjs +0 -203
  121. package/esm2022/common/providers/config.mjs +0 -45
  122. package/esm2022/common/providers/dom-controller.mjs +0 -45
  123. package/esm2022/common/providers/menu-controller.mjs +0 -114
  124. package/esm2022/common/providers/nav-controller.mjs +0 -235
  125. package/esm2022/common/providers/platform.mjs +0 -258
  126. package/esm2022/common/types/interfaces.mjs +0 -2
  127. package/esm2022/common/types/ionic-lifecycle-hooks.mjs +0 -5
  128. package/esm2022/common/types/overlay-options.mjs +0 -2
  129. package/esm2022/common/utils/overlay.mjs +0 -26
  130. package/esm2022/common/utils/proxy.mjs +0 -47
  131. package/esm2022/common/utils/routing.mjs +0 -55
  132. package/esm2022/common/utils/util.mjs +0 -10
  133. package/esm2022/directives/angular-component-lib/utils.mjs +0 -59
  134. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +0 -42
  135. package/esm2022/directives/control-value-accessors/index.mjs +0 -5
  136. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +0 -50
  137. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +0 -39
  138. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +0 -38
  139. package/esm2022/directives/navigation/ion-back-button.mjs +0 -24
  140. package/esm2022/directives/navigation/ion-nav.mjs +0 -21
  141. package/esm2022/directives/navigation/ion-router-outlet.mjs +0 -52
  142. package/esm2022/directives/navigation/ion-tabs.mjs +0 -59
  143. package/esm2022/directives/navigation/router-link-delegate.mjs +0 -32
  144. package/esm2022/directives/overlays/modal.mjs +0 -22
  145. package/esm2022/directives/overlays/popover.mjs +0 -18
  146. package/esm2022/directives/proxies-list.mjs +0 -92
  147. package/esm2022/directives/proxies.mjs +0 -2438
  148. package/esm2022/directives/validators/index.mjs +0 -3
  149. package/esm2022/directives/validators/max-validator.mjs +0 -27
  150. package/esm2022/directives/validators/min-validator.mjs +0 -27
  151. package/esm2022/index.mjs +0 -32
  152. package/esm2022/ionic-angular.mjs +0 -5
  153. package/esm2022/ionic-module.mjs +0 -111
  154. package/esm2022/providers/action-sheet-controller.mjs +0 -19
  155. package/esm2022/providers/alert-controller.mjs +0 -19
  156. package/esm2022/providers/animation-controller.mjs +0 -38
  157. package/esm2022/providers/gesture-controller.mjs +0 -33
  158. package/esm2022/providers/loading-controller.mjs +0 -19
  159. package/esm2022/providers/menu-controller.mjs +0 -19
  160. package/esm2022/providers/modal-controller.mjs +0 -26
  161. package/esm2022/providers/picker-controller.mjs +0 -22
  162. package/esm2022/providers/popover-controller.mjs +0 -19
  163. package/esm2022/providers/toast-controller.mjs +0 -19
  164. package/esm2022/standalone/directives/angular-component-lib/utils.mjs +0 -59
  165. package/esm2022/standalone/directives/checkbox.mjs +0 -76
  166. package/esm2022/standalone/directives/datetime.mjs +0 -95
  167. package/esm2022/standalone/directives/icon.mjs +0 -35
  168. package/esm2022/standalone/directives/index.mjs +0 -13
  169. package/esm2022/standalone/directives/input-otp.mjs +0 -90
  170. package/esm2022/standalone/directives/input.mjs +0 -113
  171. package/esm2022/standalone/directives/proxies.mjs +0 -2326
  172. package/esm2022/standalone/directives/radio-group.mjs +0 -60
  173. package/esm2022/standalone/directives/range.mjs +0 -78
  174. package/esm2022/standalone/directives/searchbar.mjs +0 -82
  175. package/esm2022/standalone/directives/segment.mjs +0 -60
  176. package/esm2022/standalone/directives/select.mjs +0 -84
  177. package/esm2022/standalone/directives/textarea.mjs +0 -91
  178. package/esm2022/standalone/directives/toggle.mjs +0 -76
  179. package/esm2022/standalone/index.mjs +0 -25
  180. package/esm2022/standalone/ionic-angular-standalone.mjs +0 -5
  181. package/esm2022/standalone/navigation/back-button.mjs +0 -32
  182. package/esm2022/standalone/navigation/nav.mjs +0 -28
  183. package/esm2022/standalone/navigation/router-link-delegate.mjs +0 -28
  184. package/esm2022/standalone/navigation/router-outlet.mjs +0 -60
  185. package/esm2022/standalone/navigation/tabs.mjs +0 -58
  186. package/esm2022/standalone/overlays/modal.mjs +0 -32
  187. package/esm2022/standalone/overlays/popover.mjs +0 -28
  188. package/esm2022/standalone/providers/action-sheet-controller.mjs +0 -21
  189. package/esm2022/standalone/providers/alert-controller.mjs +0 -21
  190. package/esm2022/standalone/providers/animation-controller.mjs +0 -38
  191. package/esm2022/standalone/providers/gesture-controller.mjs +0 -33
  192. package/esm2022/standalone/providers/ionic-angular.mjs +0 -38
  193. package/esm2022/standalone/providers/loading-controller.mjs +0 -21
  194. package/esm2022/standalone/providers/menu-controller.mjs +0 -19
  195. package/esm2022/standalone/providers/modal-controller.mjs +0 -28
  196. package/esm2022/standalone/providers/picker-controller.mjs +0 -24
  197. package/esm2022/standalone/providers/popover-controller.mjs +0 -21
  198. package/esm2022/standalone/providers/toast-controller.mjs +0 -21
  199. package/index.d.ts +0 -27
  200. package/ionic-module.d.ts +0 -28
  201. package/providers/action-sheet-controller.d.ts +0 -8
  202. package/providers/alert-controller.d.ts +0 -8
  203. package/providers/animation-controller.d.ts +0 -25
  204. package/providers/gesture-controller.d.ts +0 -13
  205. package/providers/loading-controller.d.ts +0 -8
  206. package/providers/menu-controller.d.ts +0 -7
  207. package/providers/modal-controller.d.ts +0 -12
  208. package/providers/picker-controller.d.ts +0 -11
  209. package/providers/popover-controller.d.ts +0 -9
  210. package/providers/toast-controller.d.ts +0 -8
  211. package/standalone/directives/angular-component-lib/utils.d.ts +0 -9
  212. package/standalone/directives/checkbox.d.ts +0 -30
  213. package/standalone/directives/datetime.d.ts +0 -30
  214. package/standalone/directives/icon.d.ts +0 -9
  215. package/standalone/directives/index.d.ts +0 -12
  216. package/standalone/directives/input-otp.d.ts +0 -49
  217. package/standalone/directives/input.d.ts +0 -47
  218. package/standalone/directives/proxies.d.ts +0 -1053
  219. package/standalone/directives/radio-group.d.ts +0 -18
  220. package/standalone/directives/range.d.ts +0 -47
  221. package/standalone/directives/searchbar.d.ts +0 -45
  222. package/standalone/directives/segment.d.ts +0 -19
  223. package/standalone/directives/select.d.ts +0 -34
  224. package/standalone/directives/textarea.d.ts +0 -37
  225. package/standalone/directives/toggle.d.ts +0 -28
  226. package/standalone/index.d.ts +0 -23
  227. package/standalone/navigation/back-button.d.ts +0 -9
  228. package/standalone/navigation/nav.d.ts +0 -8
  229. package/standalone/navigation/router-link-delegate.d.ts +0 -10
  230. package/standalone/navigation/router-outlet.d.ts +0 -25
  231. package/standalone/navigation/tabs.d.ts +0 -13
  232. package/standalone/overlays/modal.d.ts +0 -6
  233. package/standalone/overlays/popover.d.ts +0 -6
  234. package/standalone/providers/action-sheet-controller.d.ts +0 -8
  235. package/standalone/providers/alert-controller.d.ts +0 -8
  236. package/standalone/providers/animation-controller.d.ts +0 -25
  237. package/standalone/providers/gesture-controller.d.ts +0 -13
  238. package/standalone/providers/ionic-angular.d.ts +0 -7
  239. package/standalone/providers/loading-controller.d.ts +0 -8
  240. package/standalone/providers/menu-controller.d.ts +0 -7
  241. package/standalone/providers/modal-controller.d.ts +0 -12
  242. package/standalone/providers/picker-controller.d.ts +0 -11
  243. package/standalone/providers/popover-controller.d.ts +0 -9
  244. package/standalone/providers/toast-controller.d.ts +0 -8
@@ -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,9 +887,18 @@ 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);
893
+ /**
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`.
900
+ */
901
+ componentRef.changeDetectorRef.detectChanges();
896
902
  elRefMap.set(hostElement, componentRef);
897
903
  elEventsMap.set(hostElement, unbindEvents);
898
904
  return hostElement;
@@ -904,10 +910,24 @@ const LIFECYCLES = [
904
910
  LIFECYCLE_DID_LEAVE,
905
911
  LIFECYCLE_WILL_UNLOAD,
906
912
  ];
907
- 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
+ */
908
919
  return zone.run(() => {
909
920
  const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === 'function').map((eventName) => {
910
- 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
+ };
911
931
  element.addEventListener(eventName, handler);
912
932
  return () => element.removeEventListener(eventName, handler);
913
933
  });
@@ -1010,14 +1030,7 @@ const MODAL_METHODS = [
1010
1030
  'setCurrentBreakpoint',
1011
1031
  'getCurrentBreakpoint',
1012
1032
  ];
1013
- let IonModal =
1014
- /**
1015
- * @Component extends from @Directive
1016
- * so by defining the inputs here we
1017
- * do not need to re-define them for the
1018
- * lazy loaded popover.
1019
- */
1020
- class IonModal {
1033
+ let IonModal = class IonModal {
1021
1034
  z;
1022
1035
  // TODO(FW-2827): type
1023
1036
  template;
@@ -1049,8 +1062,8 @@ class IonModal {
1049
1062
  'ionDragEnd',
1050
1063
  ]);
1051
1064
  }
1052
- /** @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 });
1053
- /** @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 });
1054
1067
  };
1055
1068
  IonModal = __decorate([
1056
1069
  ProxyCmp({
@@ -1064,14 +1077,14 @@ IonModal = __decorate([
1064
1077
  * lazy loaded popover.
1065
1078
  */
1066
1079
  ], IonModal);
1067
- 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: [{
1068
1081
  type: Directive,
1069
1082
  args: [{
1070
1083
  selector: 'ion-modal',
1071
1084
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1072
1085
  inputs: MODAL_INPUTS,
1073
1086
  }]
1074
- }], 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: [{
1075
1088
  type: ContentChild,
1076
1089
  args: [TemplateRef, { static: false }]
1077
1090
  }] } });
@@ -1100,14 +1113,7 @@ const POPOVER_INPUTS = [
1100
1113
  'side',
1101
1114
  ];
1102
1115
  const POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];
1103
- let IonPopover =
1104
- /**
1105
- * @Component extends from @Directive
1106
- * so by defining the inputs here we
1107
- * do not need to re-define them for the
1108
- * lazy loaded popover.
1109
- */
1110
- class IonPopover {
1116
+ let IonPopover = class IonPopover {
1111
1117
  z;
1112
1118
  // TODO(FW-2827): type
1113
1119
  template;
@@ -1135,8 +1141,8 @@ class IonPopover {
1135
1141
  'didDismiss',
1136
1142
  ]);
1137
1143
  }
1138
- /** @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 });
1139
- /** @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 });
1140
1146
  };
1141
1147
  IonPopover = __decorate([
1142
1148
  ProxyCmp({
@@ -1150,14 +1156,14 @@ IonPopover = __decorate([
1150
1156
  * lazy loaded popover.
1151
1157
  */
1152
1158
  ], IonPopover);
1153
- 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: [{
1154
1160
  type: Directive,
1155
1161
  args: [{
1156
1162
  selector: 'ion-popover',
1157
1163
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1158
1164
  inputs: POPOVER_INPUTS,
1159
1165
  }]
1160
- }], 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: [{
1161
1167
  type: ContentChild,
1162
1168
  args: [TemplateRef, { static: false }]
1163
1169
  }] } });
@@ -1259,7 +1265,7 @@ class StackController {
1259
1265
  createView(ref, activatedRoute) {
1260
1266
  const url = getUrl(this.router, activatedRoute);
1261
1267
  const element = ref?.location?.nativeElement;
1262
- const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element);
1268
+ const unlistenEvents = bindLifecycleEvents(this.zone, ref.changeDetectorRef, ref.instance, element);
1263
1269
  return {
1264
1270
  id: this.nextId++,
1265
1271
  stackId: computeStackId(this.tabsPrefix, url),
@@ -1425,7 +1431,6 @@ class StackController {
1425
1431
  return this.runningTask !== undefined;
1426
1432
  }
1427
1433
  destroy() {
1428
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1429
1434
  this.containerEl = undefined;
1430
1435
  this.views.forEach(destroyView);
1431
1436
  this.activeView = undefined;
@@ -1567,6 +1572,7 @@ class IonRouterOutlet {
1567
1572
  onEnd: (shouldContinue) => this.stackCtrl.endBackTransition(shouldContinue),
1568
1573
  }
1569
1574
  : undefined;
1575
+ this.nativeEl.swipeGesture = swipe;
1570
1576
  }
1571
1577
  constructor(name, tabs, commonLocation, elementRef, router, zone, activatedRoute, parentOutlet) {
1572
1578
  this.parentOutlet = parentOutlet;
@@ -1639,7 +1645,6 @@ class IonRouterOutlet {
1639
1645
  deactivate() {
1640
1646
  if (this.activated) {
1641
1647
  if (this.activatedView) {
1642
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1643
1648
  const context = this.getContext();
1644
1649
  this.activatedView.savedData = new Map(context.children['contexts']);
1645
1650
  /**
@@ -1684,7 +1689,6 @@ class IonRouterOutlet {
1684
1689
  const saved = enteringView.savedData;
1685
1690
  if (saved) {
1686
1691
  // self-restore
1687
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1688
1692
  const context = this.getContext();
1689
1693
  context.children['contexts'] = saved;
1690
1694
  }
@@ -1705,7 +1709,6 @@ class IonRouterOutlet {
1705
1709
  const component$ = new BehaviorSubject(null);
1706
1710
  const activatedRouteProxy = this.createActivatedRouteProxy(component$, activatedRoute);
1707
1711
  const injector = new OutletInjector(activatedRouteProxy, childContexts, this.location.injector);
1708
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1709
1712
  const component = snapshot.routeConfig.component ?? snapshot.component;
1710
1713
  /**
1711
1714
  * View components need to be added as a child of ion-router-outlet
@@ -1728,7 +1731,6 @@ class IonRouterOutlet {
1728
1731
  * At this point this.activated has been set earlier
1729
1732
  * in this function, so it is guaranteed to be non-null.
1730
1733
  */
1731
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1732
1734
  enteringView = this.stackCtrl.createView(this.activated, activatedRoute);
1733
1735
  // Store references to the proxy by component
1734
1736
  this.proxyMap.set(cmpRef.instance, activatedRouteProxy);
@@ -1839,10 +1841,10 @@ class IonRouterOutlet {
1839
1841
  proxy.component = activatedRoute.component;
1840
1842
  this.currentActivatedRoute$.next({ component, activatedRoute });
1841
1843
  }
1842
- /** @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 });
1843
- /** @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 });
1844
1846
  }
1845
- 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: [{
1846
1848
  type: Directive,
1847
1849
  args: [{
1848
1850
  selector: 'ion-router-outlet',
@@ -1850,7 +1852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1850
1852
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
1851
1853
  inputs: ['animated', 'animation', 'mode', 'swipeGesture'],
1852
1854
  }]
1853
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1855
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1854
1856
  type: Attribute,
1855
1857
  args: ['name']
1856
1858
  }] }, { type: undefined, decorators: [{
@@ -1862,7 +1864,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1862
1864
  type: SkipSelf
1863
1865
  }, {
1864
1866
  type: Optional
1865
- }] }]; }, propDecorators: { name: [{
1867
+ }] }], propDecorators: { name: [{
1866
1868
  type: Input
1867
1869
  }], stackWillChange: [{
1868
1870
  type: Output
@@ -1956,10 +1958,10 @@ class RoutedComponentInputBinder {
1956
1958
  });
1957
1959
  this.outletDataSubscriptions.set(outlet, dataSubscription);
1958
1960
  }
1959
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RoutedComponentInputBinder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1960
- /** @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 });
1961
1963
  }
1962
- 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: [{
1963
1965
  type: Injectable
1964
1966
  }] });
1965
1967
  const provideComponentInputBinding = () => {
@@ -2092,12 +2094,12 @@ class ValueAccessor {
2092
2094
  });
2093
2095
  }
2094
2096
  }
2095
- /** @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 });
2096
- /** @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 });
2097
2099
  }
2098
- 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: [{
2099
2101
  type: Directive
2100
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { _handleBlurEvent: [{
2102
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ElementRef }], propDecorators: { _handleBlurEvent: [{
2101
2103
  type: HostListener,
2102
2104
  args: ['ionBlur', ['$event.target']]
2103
2105
  }] } });
@@ -2170,23 +2172,23 @@ let IonBackButton = class IonBackButton {
2170
2172
  ev.preventDefault();
2171
2173
  }
2172
2174
  }
2173
- /** @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 });
2174
- /** @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 });
2175
2177
  };
2176
2178
  IonBackButton = __decorate([
2177
2179
  ProxyCmp({
2178
2180
  inputs: BACK_BUTTON_INPUTS,
2179
2181
  })
2180
2182
  ], IonBackButton);
2181
- 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: [{
2182
2184
  type: Directive,
2183
2185
  args: [{
2184
2186
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2185
2187
  inputs: BACK_BUTTON_INPUTS,
2186
2188
  }]
2187
- }], ctorParameters: function () { return [{ type: IonRouterOutlet, decorators: [{
2189
+ }], ctorParameters: () => [{ type: IonRouterOutlet, decorators: [{
2188
2190
  type: Optional
2189
- }] }, { 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: [{
2190
2192
  type: HostListener,
2191
2193
  args: ['click', ['$event']]
2192
2194
  }] } });
@@ -2217,8 +2219,8 @@ let IonNav = class IonNav {
2217
2219
  ref.nativeElement.delegate = angularDelegate.create(environmentInjector, injector);
2218
2220
  proxyOutputs(this, this.el, ['ionNavDidChange', 'ionNavWillChange']);
2219
2221
  }
2220
- /** @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 });
2221
- /** @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 });
2222
2224
  };
2223
2225
  IonNav = __decorate([
2224
2226
  ProxyCmp({
@@ -2226,13 +2228,13 @@ IonNav = __decorate([
2226
2228
  methods: NAV_METHODS,
2227
2229
  })
2228
2230
  ], IonNav);
2229
- 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: [{
2230
2232
  type: Directive,
2231
2233
  args: [{
2232
2234
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
2233
2235
  inputs: NAV_INPUTS,
2234
2236
  }]
2235
- }], 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 }] });
2236
2238
 
2237
2239
  /**
2238
2240
  * Adds support for Ionic routing directions and animations to the base Angular router link directive.
@@ -2313,17 +2315,17 @@ class RouterLinkDelegateDirective {
2313
2315
  */
2314
2316
  ev.preventDefault();
2315
2317
  }
2316
- /** @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 });
2317
- /** @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 });
2318
2320
  }
2319
- 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: [{
2320
2322
  type: Directive,
2321
2323
  args: [{
2322
2324
  selector: ':not(a):not(area)[routerLink]',
2323
2325
  }]
2324
- }], 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: [{
2325
2327
  type: Optional
2326
- }] }]; }, propDecorators: { routerDirection: [{
2328
+ }] }], propDecorators: { routerDirection: [{
2327
2329
  type: Input
2328
2330
  }], routerAnimation: [{
2329
2331
  type: Input
@@ -2364,17 +2366,17 @@ class RouterLinkWithHrefDelegateDirective {
2364
2366
  onClick() {
2365
2367
  this.navCtrl.setDirection(this.routerDirection, undefined, undefined, this.routerAnimation);
2366
2368
  }
2367
- /** @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 });
2368
- /** @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 });
2369
2371
  }
2370
- 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: [{
2371
2373
  type: Directive,
2372
2374
  args: [{
2373
2375
  selector: 'a[routerLink],area[routerLink]',
2374
2376
  }]
2375
- }], 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: [{
2376
2378
  type: Optional
2377
- }] }]; }, propDecorators: { routerDirection: [{
2379
+ }] }], propDecorators: { routerDirection: [{
2378
2380
  type: Input
2379
2381
  }], routerAnimation: [{
2380
2382
  type: Input
@@ -2481,6 +2483,16 @@ class IonTabs {
2481
2483
  this.ionTabsDidChange.emit({ tab: stackId });
2482
2484
  }
2483
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
+ }
2484
2496
  /**
2485
2497
  * When a tab button is clicked, there are several scenarios:
2486
2498
  * 1. If the selected tab is currently active (the tab button has been clicked
@@ -2541,6 +2553,8 @@ class IonTabs {
2541
2553
  return;
2542
2554
  }
2543
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
2544
2558
  const navigationExtras = rootView && tabRootUrl === rootView.url && rootView.savedExtras;
2545
2559
  return this.navCtrl.navigateRoot(tabRootUrl, {
2546
2560
  ...navigationExtras,
@@ -2638,22 +2652,22 @@ class IonTabs {
2638
2652
  this.tabsInner.nativeElement.after(tabBar);
2639
2653
  }
2640
2654
  }
2641
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonTabs, deps: [{ token: NavController }], target: i0.ɵɵFactoryTarget.Directive });
2642
- /** @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 });
2643
2657
  }
2644
- 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: [{
2645
2659
  type: Directive,
2646
2660
  args: [{
2647
2661
  selector: 'ion-tabs',
2648
2662
  }]
2649
- }], ctorParameters: function () { return [{ type: NavController }]; }, propDecorators: { tabsInner: [{
2663
+ }], ctorParameters: () => [{ type: NavController }], propDecorators: { tabsInner: [{
2650
2664
  type: ViewChild,
2651
2665
  args: ['tabsInner', { read: ElementRef, static: true }]
2652
2666
  }], ionTabsWillChange: [{
2653
2667
  type: Output
2654
2668
  }], ionTabsDidChange: [{
2655
2669
  type: Output
2656
- }], select: [{
2670
+ }], onTabButtonClick: [{
2657
2671
  type: HostListener,
2658
2672
  args: ['ionTabButtonClick', ['$event']]
2659
2673
  }] } });
@@ -2743,5 +2757,5 @@ class IonicRouteStrategy {
2743
2757
  * Generated bundle index. Do not edit.
2744
2758
  */
2745
2759
 
2746
- 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 };
2747
2761
  //# sourceMappingURL=ionic-angular-common.mjs.map