@ionic/react 8.2.8-dev.11725452518.16aa47d3 → 8.2.8-dev.11725551009.1bc973e7

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 (77) hide show
  1. package/css/core.css +1 -1
  2. package/css/core.css.map +1 -1
  3. package/css/display.css.map +1 -1
  4. package/css/flex-utils.css.map +1 -1
  5. package/css/float-elements.css.map +1 -1
  6. package/css/global.bundle.css +1 -1
  7. package/css/global.bundle.css.map +1 -1
  8. package/css/ionic-swiper.css +1 -1
  9. package/css/ionic-swiper.css.map +1 -1
  10. package/css/ionic.bundle.css +1 -1
  11. package/css/ionic.bundle.css.map +1 -1
  12. package/css/normalize.css.map +1 -1
  13. package/css/padding.css.map +1 -1
  14. package/css/palettes/dark.always.css.map +1 -1
  15. package/css/palettes/dark.class.css.map +1 -1
  16. package/css/palettes/dark.system.css.map +1 -1
  17. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  18. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  19. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  20. package/css/palettes/high-contrast.always.css.map +1 -1
  21. package/css/palettes/high-contrast.class.css.map +1 -1
  22. package/css/palettes/high-contrast.system.css.map +1 -1
  23. package/css/structure.css +1 -1
  24. package/css/structure.css.map +1 -1
  25. package/css/text-alignment.css.map +1 -1
  26. package/css/text-transformation.css.map +1 -1
  27. package/css/typography.css +1 -1
  28. package/css/typography.css.map +1 -1
  29. package/css/utils.bundle.css.map +1 -1
  30. package/dist/index.js +278 -685
  31. package/dist/index.js.map +1 -1
  32. package/dist/types/components/IonActionSheet.d.ts +1 -0
  33. package/dist/types/components/IonAlert.d.ts +1 -0
  34. package/dist/types/components/IonApp.d.ts +3 -3
  35. package/dist/types/components/IonLoading.d.ts +1 -0
  36. package/dist/types/components/IonModal.d.ts +1 -0
  37. package/dist/types/components/IonPickerLegacy.d.ts +1 -0
  38. package/dist/types/components/IonPopover.d.ts +1 -0
  39. package/dist/types/components/IonRouterOutlet.d.ts +3 -3
  40. package/dist/types/components/IonToast.d.ts +1 -0
  41. package/dist/types/components/createControllerComponent.d.ts +1 -1
  42. package/dist/types/components/createOverlayComponent.d.ts +1 -1
  43. package/dist/types/components/index.d.ts +1 -1
  44. package/dist/types/components/inner-proxies.d.ts +5 -3
  45. package/dist/types/components/navigation/IonBackButton.d.ts +2 -2
  46. package/dist/types/components/navigation/IonNav.d.ts +1 -1
  47. package/dist/types/components/navigation/IonTabBar.d.ts +6 -6
  48. package/dist/types/components/navigation/IonTabButton.d.ts +1 -1
  49. package/dist/types/components/navigation/IonTabs.d.ts +2 -2
  50. package/dist/types/components/proxies.d.ts +70 -0
  51. package/dist/types/components/react-component-lib/createComponent.d.ts +1 -1
  52. package/dist/types/components/react-component-lib/createOverlayComponent.d.ts +1 -1
  53. package/dist/types/components/react-component-lib/utils/attachProps.d.ts +2 -2
  54. package/dist/types/components/routing-proxies.d.ts +29 -28
  55. package/dist/types/contexts/IonLifeCycleContext.d.ts +1 -1
  56. package/dist/types/lifecycle/IonLifeCycleHOC.d.ts +1 -1
  57. package/dist/types/routing/ViewLifeCycleManager.d.ts +1 -1
  58. package/dist/types/routing/ViewStacks.d.ts +2 -0
  59. package/dist/types/utils/HTMLElementSSR.d.ts +4 -1
  60. package/package.json +5 -8
  61. package/css/ionic/bundle.ionic.css +0 -1
  62. package/css/ionic/bundle.ionic.css.map +0 -1
  63. package/css/ionic/core.ionic.css +0 -1
  64. package/css/ionic/core.ionic.css.map +0 -1
  65. package/css/ionic/global.bundle.ionic.css +0 -1
  66. package/css/ionic/global.bundle.ionic.css.map +0 -1
  67. package/css/ionic/ionic-swiper.ionic.css +0 -1
  68. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  69. package/css/ionic/link.ionic.css +0 -1
  70. package/css/ionic/link.ionic.css.map +0 -1
  71. package/css/ionic/structure.ionic.css +0 -1
  72. package/css/ionic/structure.ionic.css.map +0 -1
  73. package/css/ionic/typography.ionic.css +0 -1
  74. package/css/ionic/typography.ionic.css.map +0 -1
  75. package/css/ionic/utils.bundle.ionic.css +0 -1
  76. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  77. package/dist/types/components/components.d.ts +0 -258
package/dist/index.js CHANGED
@@ -1,75 +1,76 @@
1
1
  import React, { useContext, useRef, useEffect, createElement, useState, useMemo, Fragment, useCallback } from 'react';
2
2
  import { isPlatform as isPlatform$1, getPlatforms as getPlatforms$1, componentOnReady, createAnimation, actionSheetController, alertController, toastController, modalController, popoverController, pickerController, loadingController, initialize } from '@ionic/core/components';
3
3
  export { IonicSafeString, IonicSlides, createAnimation, createGesture, getIonPageElement, getTimeGivenProgression, iosTransitionAnimation, mdTransitionAnimation, openURL } from '@ionic/core/components';
4
- import { IonAccordionGroup as IonAccordionGroup$1, defineCustomElement as defineCustomElement$2 } from '@ionic/core/components/ion-accordion-group.js';
5
- import { IonAccordion as IonAccordion$1, defineCustomElement as defineCustomElement$1 } from '@ionic/core/components/ion-accordion.js';
6
- import { IonAvatar as IonAvatar$1, defineCustomElement as defineCustomElement$3 } from '@ionic/core/components/ion-avatar.js';
7
- import { IonBackdrop as IonBackdrop$1, defineCustomElement as defineCustomElement$4 } from '@ionic/core/components/ion-backdrop.js';
8
- import { IonBadge as IonBadge$1, defineCustomElement as defineCustomElement$5 } from '@ionic/core/components/ion-badge.js';
9
- import { IonBreadcrumbs as IonBreadcrumbs$1, defineCustomElement as defineCustomElement$6 } from '@ionic/core/components/ion-breadcrumbs.js';
10
- import { IonButtons as IonButtons$1, defineCustomElement as defineCustomElement$7 } from '@ionic/core/components/ion-buttons.js';
11
- import { IonCardContent as IonCardContent$1, defineCustomElement as defineCustomElement$8 } from '@ionic/core/components/ion-card-content.js';
12
- import { IonCardHeader as IonCardHeader$1, defineCustomElement as defineCustomElement$9 } from '@ionic/core/components/ion-card-header.js';
13
- import { IonCardSubtitle as IonCardSubtitle$1, defineCustomElement as defineCustomElement$a } from '@ionic/core/components/ion-card-subtitle.js';
14
- import { IonCardTitle as IonCardTitle$1, defineCustomElement as defineCustomElement$b } from '@ionic/core/components/ion-card-title.js';
15
- import { IonCheckbox as IonCheckbox$1, defineCustomElement as defineCustomElement$c } from '@ionic/core/components/ion-checkbox.js';
16
- import { IonChip as IonChip$1, defineCustomElement as defineCustomElement$d } from '@ionic/core/components/ion-chip.js';
17
- import { IonCol as IonCol$1, defineCustomElement as defineCustomElement$e } from '@ionic/core/components/ion-col.js';
18
- import { IonContent as IonContent$1, defineCustomElement as defineCustomElement$f } from '@ionic/core/components/ion-content.js';
19
- import { IonDatetimeButton as IonDatetimeButton$1, defineCustomElement as defineCustomElement$h } from '@ionic/core/components/ion-datetime-button.js';
20
- import { IonDatetime as IonDatetime$1, defineCustomElement as defineCustomElement$g } from '@ionic/core/components/ion-datetime.js';
21
- import { IonFabList as IonFabList$1, defineCustomElement as defineCustomElement$j } from '@ionic/core/components/ion-fab-list.js';
22
- import { IonFab as IonFab$1, defineCustomElement as defineCustomElement$i } from '@ionic/core/components/ion-fab.js';
23
- import { IonFooter as IonFooter$1, defineCustomElement as defineCustomElement$k } from '@ionic/core/components/ion-footer.js';
24
- import { IonGrid as IonGrid$1, defineCustomElement as defineCustomElement$l } from '@ionic/core/components/ion-grid.js';
25
- import { IonHeader as IonHeader$1, defineCustomElement as defineCustomElement$m } from '@ionic/core/components/ion-header.js';
26
- import { IonImg as IonImg$1, defineCustomElement as defineCustomElement$n } from '@ionic/core/components/ion-img.js';
27
- import { IonInfiniteScrollContent as IonInfiniteScrollContent$1, defineCustomElement as defineCustomElement$p } from '@ionic/core/components/ion-infinite-scroll-content.js';
28
- import { IonInfiniteScroll as IonInfiniteScroll$1, defineCustomElement as defineCustomElement$o } from '@ionic/core/components/ion-infinite-scroll.js';
29
- import { IonInputPasswordToggle as IonInputPasswordToggle$1, defineCustomElement as defineCustomElement$r } from '@ionic/core/components/ion-input-password-toggle.js';
30
- import { IonInput as IonInput$1, defineCustomElement as defineCustomElement$q } from '@ionic/core/components/ion-input.js';
31
- import { IonItemDivider as IonItemDivider$1, defineCustomElement as defineCustomElement$s } from '@ionic/core/components/ion-item-divider.js';
32
- import { IonItemGroup as IonItemGroup$1, defineCustomElement as defineCustomElement$t } from '@ionic/core/components/ion-item-group.js';
33
- import { IonItemOptions as IonItemOptions$1, defineCustomElement as defineCustomElement$u } from '@ionic/core/components/ion-item-options.js';
34
- import { IonItemSliding as IonItemSliding$1, defineCustomElement as defineCustomElement$v } from '@ionic/core/components/ion-item-sliding.js';
35
- import { IonLabel as IonLabel$1, defineCustomElement as defineCustomElement$w } from '@ionic/core/components/ion-label.js';
36
- import { IonListHeader as IonListHeader$1, defineCustomElement as defineCustomElement$y } from '@ionic/core/components/ion-list-header.js';
37
- import { IonList as IonList$1, defineCustomElement as defineCustomElement$x } from '@ionic/core/components/ion-list.js';
38
- import { IonMenuButton as IonMenuButton$1, defineCustomElement as defineCustomElement$A } from '@ionic/core/components/ion-menu-button.js';
39
- import { IonMenuToggle as IonMenuToggle$1, defineCustomElement as defineCustomElement$B } from '@ionic/core/components/ion-menu-toggle.js';
40
- import { IonMenu as IonMenu$1, defineCustomElement as defineCustomElement$z } from '@ionic/core/components/ion-menu.js';
41
- import { IonNavLink as IonNavLink$1, defineCustomElement as defineCustomElement$C } from '@ionic/core/components/ion-nav-link.js';
42
- import { defineCustomElement as defineCustomElement$1h } from '@ionic/core/components/ion-nav.js';
43
- import { IonNote as IonNote$1, defineCustomElement as defineCustomElement$D } from '@ionic/core/components/ion-note.js';
44
- import { IonPickerColumnOption as IonPickerColumnOption$1, defineCustomElement as defineCustomElement$G } from '@ionic/core/components/ion-picker-column-option.js';
45
- import { IonPickerColumn as IonPickerColumn$1, defineCustomElement as defineCustomElement$F } from '@ionic/core/components/ion-picker-column.js';
46
- import { IonPicker as IonPicker$1, defineCustomElement as defineCustomElement$E } from '@ionic/core/components/ion-picker.js';
47
- import { IonProgressBar as IonProgressBar$1, defineCustomElement as defineCustomElement$H } from '@ionic/core/components/ion-progress-bar.js';
48
- import { IonRadioGroup as IonRadioGroup$1, defineCustomElement as defineCustomElement$J } from '@ionic/core/components/ion-radio-group.js';
49
- import { IonRadio as IonRadio$1, defineCustomElement as defineCustomElement$I } from '@ionic/core/components/ion-radio.js';
50
- import { IonRange as IonRange$1, defineCustomElement as defineCustomElement$K } from '@ionic/core/components/ion-range.js';
51
- import { IonRefresherContent as IonRefresherContent$1, defineCustomElement as defineCustomElement$M } from '@ionic/core/components/ion-refresher-content.js';
52
- import { IonRefresher as IonRefresher$1, defineCustomElement as defineCustomElement$L } from '@ionic/core/components/ion-refresher.js';
53
- import { IonReorderGroup as IonReorderGroup$1, defineCustomElement as defineCustomElement$O } from '@ionic/core/components/ion-reorder-group.js';
54
- import { IonReorder as IonReorder$1, defineCustomElement as defineCustomElement$N } from '@ionic/core/components/ion-reorder.js';
55
- import { IonRippleEffect as IonRippleEffect$1, defineCustomElement as defineCustomElement$P } from '@ionic/core/components/ion-ripple-effect.js';
56
- import { IonRow as IonRow$1, defineCustomElement as defineCustomElement$Q } from '@ionic/core/components/ion-row.js';
57
- import { IonSearchbar as IonSearchbar$1, defineCustomElement as defineCustomElement$R } from '@ionic/core/components/ion-searchbar.js';
58
- import { IonSegmentButton as IonSegmentButton$1, defineCustomElement as defineCustomElement$T } from '@ionic/core/components/ion-segment-button.js';
59
- import { IonSegment as IonSegment$1, defineCustomElement as defineCustomElement$S } from '@ionic/core/components/ion-segment.js';
60
- import { IonSelectOption as IonSelectOption$1, defineCustomElement as defineCustomElement$V } from '@ionic/core/components/ion-select-option.js';
61
- import { IonSelect as IonSelect$1, defineCustomElement as defineCustomElement$U } from '@ionic/core/components/ion-select.js';
62
- import { IonSkeletonText as IonSkeletonText$1, defineCustomElement as defineCustomElement$W } from '@ionic/core/components/ion-skeleton-text.js';
63
- import { IonSpinner as IonSpinner$1, defineCustomElement as defineCustomElement$X } from '@ionic/core/components/ion-spinner.js';
64
- import { IonSplitPane as IonSplitPane$1, defineCustomElement as defineCustomElement$Y } from '@ionic/core/components/ion-split-pane.js';
65
- import { IonTab as IonTab$1, defineCustomElement as defineCustomElement$Z } from '@ionic/core/components/ion-tab.js';
66
- import { IonText as IonText$1, defineCustomElement as defineCustomElement$_ } from '@ionic/core/components/ion-text.js';
67
- import { IonTextarea as IonTextarea$1, defineCustomElement as defineCustomElement$$ } from '@ionic/core/components/ion-textarea.js';
68
- import { IonThumbnail as IonThumbnail$1, defineCustomElement as defineCustomElement$10 } from '@ionic/core/components/ion-thumbnail.js';
69
- import { IonTitle as IonTitle$1, defineCustomElement as defineCustomElement$11 } from '@ionic/core/components/ion-title.js';
70
- import { IonToggle as IonToggle$1, defineCustomElement as defineCustomElement$12 } from '@ionic/core/components/ion-toggle.js';
71
- import { IonToolbar as IonToolbar$1, defineCustomElement as defineCustomElement$13 } from '@ionic/core/components/ion-toolbar.js';
72
- import { createComponent } from '@stencil/react-output-target/runtime';
4
+ import { __rest } from 'tslib';
5
+ import ReactDOM, { createPortal } from 'react-dom';
6
+ import { defineCustomElement as defineCustomElement$1 } from '@ionic/core/components/ion-accordion.js';
7
+ import { defineCustomElement as defineCustomElement$2 } from '@ionic/core/components/ion-accordion-group.js';
8
+ import { defineCustomElement as defineCustomElement$3 } from '@ionic/core/components/ion-avatar.js';
9
+ import { defineCustomElement as defineCustomElement$4 } from '@ionic/core/components/ion-backdrop.js';
10
+ import { defineCustomElement as defineCustomElement$5 } from '@ionic/core/components/ion-badge.js';
11
+ import { defineCustomElement as defineCustomElement$6 } from '@ionic/core/components/ion-breadcrumbs.js';
12
+ import { defineCustomElement as defineCustomElement$7 } from '@ionic/core/components/ion-buttons.js';
13
+ import { defineCustomElement as defineCustomElement$8 } from '@ionic/core/components/ion-card-content.js';
14
+ import { defineCustomElement as defineCustomElement$9 } from '@ionic/core/components/ion-card-header.js';
15
+ import { defineCustomElement as defineCustomElement$a } from '@ionic/core/components/ion-card-subtitle.js';
16
+ import { defineCustomElement as defineCustomElement$b } from '@ionic/core/components/ion-card-title.js';
17
+ import { defineCustomElement as defineCustomElement$c } from '@ionic/core/components/ion-checkbox.js';
18
+ import { defineCustomElement as defineCustomElement$d } from '@ionic/core/components/ion-chip.js';
19
+ import { defineCustomElement as defineCustomElement$e } from '@ionic/core/components/ion-col.js';
20
+ import { defineCustomElement as defineCustomElement$f } from '@ionic/core/components/ion-content.js';
21
+ import { defineCustomElement as defineCustomElement$g } from '@ionic/core/components/ion-datetime.js';
22
+ import { defineCustomElement as defineCustomElement$h } from '@ionic/core/components/ion-datetime-button.js';
23
+ import { defineCustomElement as defineCustomElement$i } from '@ionic/core/components/ion-fab.js';
24
+ import { defineCustomElement as defineCustomElement$j } from '@ionic/core/components/ion-fab-list.js';
25
+ import { defineCustomElement as defineCustomElement$k } from '@ionic/core/components/ion-footer.js';
26
+ import { defineCustomElement as defineCustomElement$l } from '@ionic/core/components/ion-grid.js';
27
+ import { defineCustomElement as defineCustomElement$m } from '@ionic/core/components/ion-header.js';
28
+ import { defineCustomElement as defineCustomElement$n } from '@ionic/core/components/ion-img.js';
29
+ import { defineCustomElement as defineCustomElement$o } from '@ionic/core/components/ion-infinite-scroll.js';
30
+ import { defineCustomElement as defineCustomElement$p } from '@ionic/core/components/ion-infinite-scroll-content.js';
31
+ import { defineCustomElement as defineCustomElement$q } from '@ionic/core/components/ion-input.js';
32
+ import { defineCustomElement as defineCustomElement$r } from '@ionic/core/components/ion-input-password-toggle.js';
33
+ import { defineCustomElement as defineCustomElement$s } from '@ionic/core/components/ion-item-divider.js';
34
+ import { defineCustomElement as defineCustomElement$t } from '@ionic/core/components/ion-item-group.js';
35
+ import { defineCustomElement as defineCustomElement$u } from '@ionic/core/components/ion-item-options.js';
36
+ import { defineCustomElement as defineCustomElement$v } from '@ionic/core/components/ion-item-sliding.js';
37
+ import { defineCustomElement as defineCustomElement$w } from '@ionic/core/components/ion-label.js';
38
+ import { defineCustomElement as defineCustomElement$x } from '@ionic/core/components/ion-list.js';
39
+ import { defineCustomElement as defineCustomElement$y } from '@ionic/core/components/ion-list-header.js';
40
+ import { defineCustomElement as defineCustomElement$z } from '@ionic/core/components/ion-menu.js';
41
+ import { defineCustomElement as defineCustomElement$A } from '@ionic/core/components/ion-menu-button.js';
42
+ import { defineCustomElement as defineCustomElement$B } from '@ionic/core/components/ion-menu-toggle.js';
43
+ import { defineCustomElement as defineCustomElement$1i } from '@ionic/core/components/ion-nav.js';
44
+ import { defineCustomElement as defineCustomElement$C } from '@ionic/core/components/ion-nav-link.js';
45
+ import { defineCustomElement as defineCustomElement$D } from '@ionic/core/components/ion-note.js';
46
+ import { defineCustomElement as defineCustomElement$E } from '@ionic/core/components/ion-picker.js';
47
+ import { defineCustomElement as defineCustomElement$F } from '@ionic/core/components/ion-picker-column.js';
48
+ import { defineCustomElement as defineCustomElement$G } from '@ionic/core/components/ion-picker-column-option.js';
49
+ import { defineCustomElement as defineCustomElement$H } from '@ionic/core/components/ion-progress-bar.js';
50
+ import { defineCustomElement as defineCustomElement$I } from '@ionic/core/components/ion-radio.js';
51
+ import { defineCustomElement as defineCustomElement$J } from '@ionic/core/components/ion-radio-group.js';
52
+ import { defineCustomElement as defineCustomElement$K } from '@ionic/core/components/ion-range.js';
53
+ import { defineCustomElement as defineCustomElement$L } from '@ionic/core/components/ion-refresher.js';
54
+ import { defineCustomElement as defineCustomElement$M } from '@ionic/core/components/ion-refresher-content.js';
55
+ import { defineCustomElement as defineCustomElement$N } from '@ionic/core/components/ion-reorder.js';
56
+ import { defineCustomElement as defineCustomElement$O } from '@ionic/core/components/ion-reorder-group.js';
57
+ import { defineCustomElement as defineCustomElement$P } from '@ionic/core/components/ion-ripple-effect.js';
58
+ import { defineCustomElement as defineCustomElement$Q } from '@ionic/core/components/ion-row.js';
59
+ import { defineCustomElement as defineCustomElement$R } from '@ionic/core/components/ion-searchbar.js';
60
+ import { defineCustomElement as defineCustomElement$S } from '@ionic/core/components/ion-segment.js';
61
+ import { defineCustomElement as defineCustomElement$T } from '@ionic/core/components/ion-segment-button.js';
62
+ import { defineCustomElement as defineCustomElement$U } from '@ionic/core/components/ion-select.js';
63
+ import { defineCustomElement as defineCustomElement$V } from '@ionic/core/components/ion-select-option.js';
64
+ import { defineCustomElement as defineCustomElement$W } from '@ionic/core/components/ion-skeleton-text.js';
65
+ import { defineCustomElement as defineCustomElement$X } from '@ionic/core/components/ion-spinner.js';
66
+ import { defineCustomElement as defineCustomElement$Y } from '@ionic/core/components/ion-split-pane.js';
67
+ import { defineCustomElement as defineCustomElement$Z } from '@ionic/core/components/ion-tab.js';
68
+ import { defineCustomElement as defineCustomElement$_ } from '@ionic/core/components/ion-text.js';
69
+ import { defineCustomElement as defineCustomElement$$ } from '@ionic/core/components/ion-textarea.js';
70
+ import { defineCustomElement as defineCustomElement$10 } from '@ionic/core/components/ion-thumbnail.js';
71
+ import { defineCustomElement as defineCustomElement$11 } from '@ionic/core/components/ion-title.js';
72
+ import { defineCustomElement as defineCustomElement$12 } from '@ionic/core/components/ion-toggle.js';
73
+ import { defineCustomElement as defineCustomElement$13 } from '@ionic/core/components/ion-toolbar.js';
73
74
  import { IonBreadcrumb as IonBreadcrumb$1 } from '@ionic/core/components/ion-breadcrumb.js';
74
75
  import { IonButton as IonButton$1 } from '@ionic/core/components/ion-button.js';
75
76
  import { IonCard as IonCard$1 } from '@ionic/core/components/ion-card.js';
@@ -77,7 +78,6 @@ import { IonFabButton as IonFabButton$1 } from '@ionic/core/components/ion-fab-b
77
78
  import { IonItemOption as IonItemOption$1 } from '@ionic/core/components/ion-item-option.js';
78
79
  import { IonItem as IonItem$1 } from '@ionic/core/components/ion-item.js';
79
80
  import { IonRouterLink as IonRouterLink$1 } from '@ionic/core/components/ion-router-link.js';
80
- import { __rest } from 'tslib';
81
81
  import { defineCustomElement as defineCustomElement$14 } from '@ionic/core/components/ion-alert.js';
82
82
  import { defineCustomElement as defineCustomElement$15 } from '@ionic/core/components/ion-loading.js';
83
83
  import { defineCustomElement as defineCustomElement$16 } from '@ionic/core/components/ion-toast.js';
@@ -85,12 +85,12 @@ import { defineCustomElement as defineCustomElement$17 } from '@ionic/core/compo
85
85
  import { defineCustomElement as defineCustomElement$18 } from '@ionic/core/components/ion-action-sheet.js';
86
86
  import { defineCustomElement as defineCustomElement$19 } from '@ionic/core/components/ion-modal.js';
87
87
  import { defineCustomElement as defineCustomElement$1a } from '@ionic/core/components/ion-popover.js';
88
- import ReactDOM, { createPortal } from 'react-dom';
89
- import { defineCustomElement as defineCustomElement$1g } from '@ionic/core/components/ion-app.js';
90
- import { defineCustomElement as defineCustomElement$1f } from '@ionic/core/components/ion-back-button.js';
88
+ import { defineCustomElement as defineCustomElement$1h } from '@ionic/core/components/ion-app.js';
89
+ import { defineCustomElement as defineCustomElement$1g } from '@ionic/core/components/ion-back-button.js';
91
90
  import { defineCustomElement as defineCustomElement$1c } from '@ionic/core/components/ion-router-outlet.js';
92
91
  import { defineCustomElement as defineCustomElement$1b } from '@ionic/core/components/ion-tab-bar.js';
93
92
  import { defineCustomElement as defineCustomElement$1e } from '@ionic/core/components/ion-tab-button.js';
93
+ import { defineCustomElement as defineCustomElement$1f } from '@ionic/core/components/ion-tabs.js';
94
94
  import { defineCustomElement as defineCustomElement$1d } from 'ionicons/components/ion-icon.js';
95
95
 
96
96
  const IonLifeCycleContext = /*@__PURE__*/ React.createContext({
@@ -410,543 +410,6 @@ const NavContext = /*@__PURE__*/ React.createContext({
410
410
  },
411
411
  });
412
412
 
413
- /**
414
- * This file was automatically generated by the Stencil React Output Target.
415
- * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
416
- */
417
- const IonAccordion = /*@__PURE__*/ createComponent({
418
- tagName: 'ion-accordion',
419
- elementClass: IonAccordion$1,
420
- react: React,
421
- events: {},
422
- defineCustomElement: defineCustomElement$1
423
- });
424
- const IonAccordionGroup = /*@__PURE__*/ createComponent({
425
- tagName: 'ion-accordion-group',
426
- elementClass: IonAccordionGroup$1,
427
- react: React,
428
- events: { onIonChange: 'ionChange' },
429
- defineCustomElement: defineCustomElement$2
430
- });
431
- const IonAvatar = /*@__PURE__*/ createComponent({
432
- tagName: 'ion-avatar',
433
- elementClass: IonAvatar$1,
434
- react: React,
435
- events: {},
436
- defineCustomElement: defineCustomElement$3
437
- });
438
- const IonBackdrop = /*@__PURE__*/ createComponent({
439
- tagName: 'ion-backdrop',
440
- elementClass: IonBackdrop$1,
441
- react: React,
442
- events: { onIonBackdropTap: 'ionBackdropTap' },
443
- defineCustomElement: defineCustomElement$4
444
- });
445
- const IonBadge = /*@__PURE__*/ createComponent({
446
- tagName: 'ion-badge',
447
- elementClass: IonBadge$1,
448
- react: React,
449
- events: {},
450
- defineCustomElement: defineCustomElement$5
451
- });
452
- const IonBreadcrumbs = /*@__PURE__*/ createComponent({
453
- tagName: 'ion-breadcrumbs',
454
- elementClass: IonBreadcrumbs$1,
455
- react: React,
456
- events: { onIonCollapsedClick: 'ionCollapsedClick' },
457
- defineCustomElement: defineCustomElement$6
458
- });
459
- const IonButtons = /*@__PURE__*/ createComponent({
460
- tagName: 'ion-buttons',
461
- elementClass: IonButtons$1,
462
- react: React,
463
- events: {},
464
- defineCustomElement: defineCustomElement$7
465
- });
466
- const IonCardContent = /*@__PURE__*/ createComponent({
467
- tagName: 'ion-card-content',
468
- elementClass: IonCardContent$1,
469
- react: React,
470
- events: {},
471
- defineCustomElement: defineCustomElement$8
472
- });
473
- const IonCardHeader = /*@__PURE__*/ createComponent({
474
- tagName: 'ion-card-header',
475
- elementClass: IonCardHeader$1,
476
- react: React,
477
- events: {},
478
- defineCustomElement: defineCustomElement$9
479
- });
480
- const IonCardSubtitle = /*@__PURE__*/ createComponent({
481
- tagName: 'ion-card-subtitle',
482
- elementClass: IonCardSubtitle$1,
483
- react: React,
484
- events: {},
485
- defineCustomElement: defineCustomElement$a
486
- });
487
- const IonCardTitle = /*@__PURE__*/ createComponent({
488
- tagName: 'ion-card-title',
489
- elementClass: IonCardTitle$1,
490
- react: React,
491
- events: {},
492
- defineCustomElement: defineCustomElement$b
493
- });
494
- const IonCheckbox = /*@__PURE__*/ createComponent({
495
- tagName: 'ion-checkbox',
496
- elementClass: IonCheckbox$1,
497
- react: React,
498
- events: {
499
- onIonChange: 'ionChange',
500
- onIonFocus: 'ionFocus',
501
- onIonBlur: 'ionBlur'
502
- },
503
- defineCustomElement: defineCustomElement$c
504
- });
505
- const IonChip = /*@__PURE__*/ createComponent({
506
- tagName: 'ion-chip',
507
- elementClass: IonChip$1,
508
- react: React,
509
- events: {},
510
- defineCustomElement: defineCustomElement$d
511
- });
512
- const IonCol = /*@__PURE__*/ createComponent({
513
- tagName: 'ion-col',
514
- elementClass: IonCol$1,
515
- react: React,
516
- events: {},
517
- defineCustomElement: defineCustomElement$e
518
- });
519
- const IonContent = /*@__PURE__*/ createComponent({
520
- tagName: 'ion-content',
521
- elementClass: IonContent$1,
522
- react: React,
523
- events: {
524
- onIonScrollStart: 'ionScrollStart',
525
- onIonScroll: 'ionScroll',
526
- onIonScrollEnd: 'ionScrollEnd'
527
- },
528
- defineCustomElement: defineCustomElement$f
529
- });
530
- const IonDatetime = /*@__PURE__*/ createComponent({
531
- tagName: 'ion-datetime',
532
- elementClass: IonDatetime$1,
533
- react: React,
534
- events: {
535
- onIonCancel: 'ionCancel',
536
- onIonChange: 'ionChange',
537
- onIonFocus: 'ionFocus',
538
- onIonBlur: 'ionBlur'
539
- },
540
- defineCustomElement: defineCustomElement$g
541
- });
542
- const IonDatetimeButton = /*@__PURE__*/ createComponent({
543
- tagName: 'ion-datetime-button',
544
- elementClass: IonDatetimeButton$1,
545
- react: React,
546
- events: {},
547
- defineCustomElement: defineCustomElement$h
548
- });
549
- const IonFab = /*@__PURE__*/ createComponent({
550
- tagName: 'ion-fab',
551
- elementClass: IonFab$1,
552
- react: React,
553
- events: {},
554
- defineCustomElement: defineCustomElement$i
555
- });
556
- const IonFabList = /*@__PURE__*/ createComponent({
557
- tagName: 'ion-fab-list',
558
- elementClass: IonFabList$1,
559
- react: React,
560
- events: {},
561
- defineCustomElement: defineCustomElement$j
562
- });
563
- const IonFooter = /*@__PURE__*/ createComponent({
564
- tagName: 'ion-footer',
565
- elementClass: IonFooter$1,
566
- react: React,
567
- events: {},
568
- defineCustomElement: defineCustomElement$k
569
- });
570
- const IonGrid = /*@__PURE__*/ createComponent({
571
- tagName: 'ion-grid',
572
- elementClass: IonGrid$1,
573
- react: React,
574
- events: {},
575
- defineCustomElement: defineCustomElement$l
576
- });
577
- const IonHeader = /*@__PURE__*/ createComponent({
578
- tagName: 'ion-header',
579
- elementClass: IonHeader$1,
580
- react: React,
581
- events: {},
582
- defineCustomElement: defineCustomElement$m
583
- });
584
- const IonImg = /*@__PURE__*/ createComponent({
585
- tagName: 'ion-img',
586
- elementClass: IonImg$1,
587
- react: React,
588
- events: {
589
- onIonImgWillLoad: 'ionImgWillLoad',
590
- onIonImgDidLoad: 'ionImgDidLoad',
591
- onIonError: 'ionError'
592
- },
593
- defineCustomElement: defineCustomElement$n
594
- });
595
- const IonInfiniteScroll = /*@__PURE__*/ createComponent({
596
- tagName: 'ion-infinite-scroll',
597
- elementClass: IonInfiniteScroll$1,
598
- react: React,
599
- events: { onIonInfinite: 'ionInfinite' },
600
- defineCustomElement: defineCustomElement$o
601
- });
602
- const IonInfiniteScrollContent = /*@__PURE__*/ createComponent({
603
- tagName: 'ion-infinite-scroll-content',
604
- elementClass: IonInfiniteScrollContent$1,
605
- react: React,
606
- events: {},
607
- defineCustomElement: defineCustomElement$p
608
- });
609
- const IonInput = /*@__PURE__*/ createComponent({
610
- tagName: 'ion-input',
611
- elementClass: IonInput$1,
612
- react: React,
613
- events: {
614
- onIonInput: 'ionInput',
615
- onIonChange: 'ionChange',
616
- onIonBlur: 'ionBlur',
617
- onIonFocus: 'ionFocus'
618
- },
619
- defineCustomElement: defineCustomElement$q
620
- });
621
- const IonInputPasswordToggle = /*@__PURE__*/ createComponent({
622
- tagName: 'ion-input-password-toggle',
623
- elementClass: IonInputPasswordToggle$1,
624
- react: React,
625
- events: {},
626
- defineCustomElement: defineCustomElement$r
627
- });
628
- const IonItemDivider = /*@__PURE__*/ createComponent({
629
- tagName: 'ion-item-divider',
630
- elementClass: IonItemDivider$1,
631
- react: React,
632
- events: {},
633
- defineCustomElement: defineCustomElement$s
634
- });
635
- const IonItemGroup = /*@__PURE__*/ createComponent({
636
- tagName: 'ion-item-group',
637
- elementClass: IonItemGroup$1,
638
- react: React,
639
- events: {},
640
- defineCustomElement: defineCustomElement$t
641
- });
642
- const IonItemOptions = /*@__PURE__*/ createComponent({
643
- tagName: 'ion-item-options',
644
- elementClass: IonItemOptions$1,
645
- react: React,
646
- events: { onIonSwipe: 'ionSwipe' },
647
- defineCustomElement: defineCustomElement$u
648
- });
649
- const IonItemSliding = /*@__PURE__*/ createComponent({
650
- tagName: 'ion-item-sliding',
651
- elementClass: IonItemSliding$1,
652
- react: React,
653
- events: { onIonDrag: 'ionDrag' },
654
- defineCustomElement: defineCustomElement$v
655
- });
656
- const IonLabel = /*@__PURE__*/ createComponent({
657
- tagName: 'ion-label',
658
- elementClass: IonLabel$1,
659
- react: React,
660
- events: {},
661
- defineCustomElement: defineCustomElement$w
662
- });
663
- const IonList = /*@__PURE__*/ createComponent({
664
- tagName: 'ion-list',
665
- elementClass: IonList$1,
666
- react: React,
667
- events: {},
668
- defineCustomElement: defineCustomElement$x
669
- });
670
- const IonListHeader = /*@__PURE__*/ createComponent({
671
- tagName: 'ion-list-header',
672
- elementClass: IonListHeader$1,
673
- react: React,
674
- events: {},
675
- defineCustomElement: defineCustomElement$y
676
- });
677
- const IonMenu = /*@__PURE__*/ createComponent({
678
- tagName: 'ion-menu',
679
- elementClass: IonMenu$1,
680
- react: React,
681
- events: {
682
- onIonWillOpen: 'ionWillOpen',
683
- onIonWillClose: 'ionWillClose',
684
- onIonDidOpen: 'ionDidOpen',
685
- onIonDidClose: 'ionDidClose'
686
- },
687
- defineCustomElement: defineCustomElement$z
688
- });
689
- const IonMenuButton = /*@__PURE__*/ createComponent({
690
- tagName: 'ion-menu-button',
691
- elementClass: IonMenuButton$1,
692
- react: React,
693
- events: {},
694
- defineCustomElement: defineCustomElement$A
695
- });
696
- const IonMenuToggle = /*@__PURE__*/ createComponent({
697
- tagName: 'ion-menu-toggle',
698
- elementClass: IonMenuToggle$1,
699
- react: React,
700
- events: {},
701
- defineCustomElement: defineCustomElement$B
702
- });
703
- const IonNavLink = /*@__PURE__*/ createComponent({
704
- tagName: 'ion-nav-link',
705
- elementClass: IonNavLink$1,
706
- react: React,
707
- events: {},
708
- defineCustomElement: defineCustomElement$C
709
- });
710
- const IonNote = /*@__PURE__*/ createComponent({
711
- tagName: 'ion-note',
712
- elementClass: IonNote$1,
713
- react: React,
714
- events: {},
715
- defineCustomElement: defineCustomElement$D
716
- });
717
- const IonPicker = /*@__PURE__*/ createComponent({
718
- tagName: 'ion-picker',
719
- elementClass: IonPicker$1,
720
- react: React,
721
- events: {},
722
- defineCustomElement: defineCustomElement$E
723
- });
724
- const IonPickerColumn = /*@__PURE__*/ createComponent({
725
- tagName: 'ion-picker-column',
726
- elementClass: IonPickerColumn$1,
727
- react: React,
728
- events: { onIonChange: 'ionChange' },
729
- defineCustomElement: defineCustomElement$F
730
- });
731
- const IonPickerColumnOption = /*@__PURE__*/ createComponent({
732
- tagName: 'ion-picker-column-option',
733
- elementClass: IonPickerColumnOption$1,
734
- react: React,
735
- events: {},
736
- defineCustomElement: defineCustomElement$G
737
- });
738
- const IonProgressBar = /*@__PURE__*/ createComponent({
739
- tagName: 'ion-progress-bar',
740
- elementClass: IonProgressBar$1,
741
- react: React,
742
- events: {},
743
- defineCustomElement: defineCustomElement$H
744
- });
745
- const IonRadio = /*@__PURE__*/ createComponent({
746
- tagName: 'ion-radio',
747
- elementClass: IonRadio$1,
748
- react: React,
749
- events: {
750
- onIonFocus: 'ionFocus',
751
- onIonBlur: 'ionBlur'
752
- },
753
- defineCustomElement: defineCustomElement$I
754
- });
755
- const IonRadioGroup = /*@__PURE__*/ createComponent({
756
- tagName: 'ion-radio-group',
757
- elementClass: IonRadioGroup$1,
758
- react: React,
759
- events: { onIonChange: 'ionChange' },
760
- defineCustomElement: defineCustomElement$J
761
- });
762
- const IonRange = /*@__PURE__*/ createComponent({
763
- tagName: 'ion-range',
764
- elementClass: IonRange$1,
765
- react: React,
766
- events: {
767
- onIonChange: 'ionChange',
768
- onIonInput: 'ionInput',
769
- onIonFocus: 'ionFocus',
770
- onIonBlur: 'ionBlur',
771
- onIonKnobMoveStart: 'ionKnobMoveStart',
772
- onIonKnobMoveEnd: 'ionKnobMoveEnd'
773
- },
774
- defineCustomElement: defineCustomElement$K
775
- });
776
- const IonRefresher = /*@__PURE__*/ createComponent({
777
- tagName: 'ion-refresher',
778
- elementClass: IonRefresher$1,
779
- react: React,
780
- events: {
781
- onIonRefresh: 'ionRefresh',
782
- onIonPull: 'ionPull',
783
- onIonStart: 'ionStart'
784
- },
785
- defineCustomElement: defineCustomElement$L
786
- });
787
- const IonRefresherContent = /*@__PURE__*/ createComponent({
788
- tagName: 'ion-refresher-content',
789
- elementClass: IonRefresherContent$1,
790
- react: React,
791
- events: {},
792
- defineCustomElement: defineCustomElement$M
793
- });
794
- const IonReorder = /*@__PURE__*/ createComponent({
795
- tagName: 'ion-reorder',
796
- elementClass: IonReorder$1,
797
- react: React,
798
- events: {},
799
- defineCustomElement: defineCustomElement$N
800
- });
801
- const IonReorderGroup = /*@__PURE__*/ createComponent({
802
- tagName: 'ion-reorder-group',
803
- elementClass: IonReorderGroup$1,
804
- react: React,
805
- events: { onIonItemReorder: 'ionItemReorder' },
806
- defineCustomElement: defineCustomElement$O
807
- });
808
- const IonRippleEffect = /*@__PURE__*/ createComponent({
809
- tagName: 'ion-ripple-effect',
810
- elementClass: IonRippleEffect$1,
811
- react: React,
812
- events: {},
813
- defineCustomElement: defineCustomElement$P
814
- });
815
- const IonRow = /*@__PURE__*/ createComponent({
816
- tagName: 'ion-row',
817
- elementClass: IonRow$1,
818
- react: React,
819
- events: {},
820
- defineCustomElement: defineCustomElement$Q
821
- });
822
- const IonSearchbar = /*@__PURE__*/ createComponent({
823
- tagName: 'ion-searchbar',
824
- elementClass: IonSearchbar$1,
825
- react: React,
826
- events: {
827
- onIonInput: 'ionInput',
828
- onIonChange: 'ionChange',
829
- onIonCancel: 'ionCancel',
830
- onIonClear: 'ionClear',
831
- onIonBlur: 'ionBlur',
832
- onIonFocus: 'ionFocus'
833
- },
834
- defineCustomElement: defineCustomElement$R
835
- });
836
- const IonSegment = /*@__PURE__*/ createComponent({
837
- tagName: 'ion-segment',
838
- elementClass: IonSegment$1,
839
- react: React,
840
- events: { onIonChange: 'ionChange' },
841
- defineCustomElement: defineCustomElement$S
842
- });
843
- const IonSegmentButton = /*@__PURE__*/ createComponent({
844
- tagName: 'ion-segment-button',
845
- elementClass: IonSegmentButton$1,
846
- react: React,
847
- events: {},
848
- defineCustomElement: defineCustomElement$T
849
- });
850
- const IonSelect = /*@__PURE__*/ createComponent({
851
- tagName: 'ion-select',
852
- elementClass: IonSelect$1,
853
- react: React,
854
- events: {
855
- onIonChange: 'ionChange',
856
- onIonCancel: 'ionCancel',
857
- onIonDismiss: 'ionDismiss',
858
- onIonFocus: 'ionFocus',
859
- onIonBlur: 'ionBlur'
860
- },
861
- defineCustomElement: defineCustomElement$U
862
- });
863
- const IonSelectOption = /*@__PURE__*/ createComponent({
864
- tagName: 'ion-select-option',
865
- elementClass: IonSelectOption$1,
866
- react: React,
867
- events: {},
868
- defineCustomElement: defineCustomElement$V
869
- });
870
- const IonSkeletonText = /*@__PURE__*/ createComponent({
871
- tagName: 'ion-skeleton-text',
872
- elementClass: IonSkeletonText$1,
873
- react: React,
874
- events: {},
875
- defineCustomElement: defineCustomElement$W
876
- });
877
- const IonSpinner = /*@__PURE__*/ createComponent({
878
- tagName: 'ion-spinner',
879
- elementClass: IonSpinner$1,
880
- react: React,
881
- events: {},
882
- defineCustomElement: defineCustomElement$X
883
- });
884
- const IonSplitPane = /*@__PURE__*/ createComponent({
885
- tagName: 'ion-split-pane',
886
- elementClass: IonSplitPane$1,
887
- react: React,
888
- events: { onIonSplitPaneVisible: 'ionSplitPaneVisible' },
889
- defineCustomElement: defineCustomElement$Y
890
- });
891
- const IonTab = /*@__PURE__*/ createComponent({
892
- tagName: 'ion-tab',
893
- elementClass: IonTab$1,
894
- react: React,
895
- events: {},
896
- defineCustomElement: defineCustomElement$Z
897
- });
898
- const IonText = /*@__PURE__*/ createComponent({
899
- tagName: 'ion-text',
900
- elementClass: IonText$1,
901
- react: React,
902
- events: {},
903
- defineCustomElement: defineCustomElement$_
904
- });
905
- const IonTextarea = /*@__PURE__*/ createComponent({
906
- tagName: 'ion-textarea',
907
- elementClass: IonTextarea$1,
908
- react: React,
909
- events: {
910
- onIonChange: 'ionChange',
911
- onIonInput: 'ionInput',
912
- onIonBlur: 'ionBlur',
913
- onIonFocus: 'ionFocus'
914
- },
915
- defineCustomElement: defineCustomElement$$
916
- });
917
- const IonThumbnail = /*@__PURE__*/ createComponent({
918
- tagName: 'ion-thumbnail',
919
- elementClass: IonThumbnail$1,
920
- react: React,
921
- events: {},
922
- defineCustomElement: defineCustomElement$10
923
- });
924
- const IonTitle = /*@__PURE__*/ createComponent({
925
- tagName: 'ion-title',
926
- elementClass: IonTitle$1,
927
- react: React,
928
- events: {},
929
- defineCustomElement: defineCustomElement$11
930
- });
931
- const IonToggle = /*@__PURE__*/ createComponent({
932
- tagName: 'ion-toggle',
933
- elementClass: IonToggle$1,
934
- react: React,
935
- events: {
936
- onIonChange: 'ionChange',
937
- onIonFocus: 'ionFocus',
938
- onIonBlur: 'ionBlur'
939
- },
940
- defineCustomElement: defineCustomElement$12
941
- });
942
- const IonToolbar = /*@__PURE__*/ createComponent({
943
- tagName: 'ion-toolbar',
944
- elementClass: IonToolbar$1,
945
- react: React,
946
- events: {},
947
- defineCustomElement: defineCustomElement$13
948
- });
949
-
950
413
  const dashToPascalCase = (str) => str
951
414
  .toLowerCase()
952
415
  .split('-')
@@ -1090,6 +553,139 @@ const defineCustomElement = (tagName, customElement) => {
1090
553
  }
1091
554
  };
1092
555
 
556
+ const createReactComponent = (tagName, ReactComponentContext, manipulatePropsFunction, defineCustomElement) => {
557
+ if (defineCustomElement !== undefined) {
558
+ defineCustomElement();
559
+ }
560
+ const displayName = dashToPascalCase(tagName);
561
+ const ReactComponent = class extends React.Component {
562
+ constructor(props) {
563
+ super(props);
564
+ this.setComponentElRef = (element) => {
565
+ this.componentEl = element;
566
+ };
567
+ }
568
+ componentDidMount() {
569
+ this.componentDidUpdate(this.props);
570
+ }
571
+ componentDidUpdate(prevProps) {
572
+ attachProps(this.componentEl, this.props, prevProps);
573
+ }
574
+ render() {
575
+ const _a = this.props, { children, forwardedRef, style, className, ref } = _a, cProps = __rest(_a, ["children", "forwardedRef", "style", "className", "ref"]);
576
+ let propsToPass = Object.keys(cProps).reduce((acc, name) => {
577
+ const value = cProps[name];
578
+ if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {
579
+ const eventName = name.substring(2).toLowerCase();
580
+ if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {
581
+ acc[name] = value;
582
+ }
583
+ }
584
+ else {
585
+ // we should only render strings, booleans, and numbers as attrs in html.
586
+ // objects, functions, arrays etc get synced via properties on mount.
587
+ const type = typeof value;
588
+ if (type === 'string' || type === 'boolean' || type === 'number') {
589
+ acc[camelToDashCase(name)] = value;
590
+ }
591
+ }
592
+ return acc;
593
+ }, {});
594
+ if (manipulatePropsFunction) {
595
+ propsToPass = manipulatePropsFunction(this.props, propsToPass);
596
+ }
597
+ const newProps = Object.assign(Object.assign({}, propsToPass), { ref: mergeRefs(forwardedRef, this.setComponentElRef), style });
598
+ /**
599
+ * We use createElement here instead of
600
+ * React.createElement to work around a
601
+ * bug in Vite (https://github.com/vitejs/vite/issues/6104).
602
+ * React.createElement causes all elements to be rendered
603
+ * as <tagname> instead of the actual Web Component.
604
+ */
605
+ return createElement(tagName, newProps, children);
606
+ }
607
+ static get displayName() {
608
+ return displayName;
609
+ }
610
+ };
611
+ // If context was passed to createReactComponent then conditionally add it to the Component Class
612
+ if (ReactComponentContext) {
613
+ ReactComponent.contextType = ReactComponentContext;
614
+ }
615
+ return createForwardRef$1(ReactComponent, displayName);
616
+ };
617
+
618
+ /* eslint-disable */
619
+ /* tslint:disable */
620
+ /* auto-generated react proxies */
621
+ const IonAccordion = /*@__PURE__*/ createReactComponent('ion-accordion', undefined, undefined, defineCustomElement$1);
622
+ const IonAccordionGroup = /*@__PURE__*/ createReactComponent('ion-accordion-group', undefined, undefined, defineCustomElement$2);
623
+ const IonAvatar = /*@__PURE__*/ createReactComponent('ion-avatar', undefined, undefined, defineCustomElement$3);
624
+ const IonBackdrop = /*@__PURE__*/ createReactComponent('ion-backdrop', undefined, undefined, defineCustomElement$4);
625
+ const IonBadge = /*@__PURE__*/ createReactComponent('ion-badge', undefined, undefined, defineCustomElement$5);
626
+ const IonBreadcrumbs = /*@__PURE__*/ createReactComponent('ion-breadcrumbs', undefined, undefined, defineCustomElement$6);
627
+ const IonButtons = /*@__PURE__*/ createReactComponent('ion-buttons', undefined, undefined, defineCustomElement$7);
628
+ const IonCardContent = /*@__PURE__*/ createReactComponent('ion-card-content', undefined, undefined, defineCustomElement$8);
629
+ const IonCardHeader = /*@__PURE__*/ createReactComponent('ion-card-header', undefined, undefined, defineCustomElement$9);
630
+ const IonCardSubtitle = /*@__PURE__*/ createReactComponent('ion-card-subtitle', undefined, undefined, defineCustomElement$a);
631
+ const IonCardTitle = /*@__PURE__*/ createReactComponent('ion-card-title', undefined, undefined, defineCustomElement$b);
632
+ const IonCheckbox = /*@__PURE__*/ createReactComponent('ion-checkbox', undefined, undefined, defineCustomElement$c);
633
+ const IonChip = /*@__PURE__*/ createReactComponent('ion-chip', undefined, undefined, defineCustomElement$d);
634
+ const IonCol = /*@__PURE__*/ createReactComponent('ion-col', undefined, undefined, defineCustomElement$e);
635
+ const IonContent = /*@__PURE__*/ createReactComponent('ion-content', undefined, undefined, defineCustomElement$f);
636
+ const IonDatetime = /*@__PURE__*/ createReactComponent('ion-datetime', undefined, undefined, defineCustomElement$g);
637
+ const IonDatetimeButton = /*@__PURE__*/ createReactComponent('ion-datetime-button', undefined, undefined, defineCustomElement$h);
638
+ const IonFab = /*@__PURE__*/ createReactComponent('ion-fab', undefined, undefined, defineCustomElement$i);
639
+ const IonFabList = /*@__PURE__*/ createReactComponent('ion-fab-list', undefined, undefined, defineCustomElement$j);
640
+ const IonFooter = /*@__PURE__*/ createReactComponent('ion-footer', undefined, undefined, defineCustomElement$k);
641
+ const IonGrid = /*@__PURE__*/ createReactComponent('ion-grid', undefined, undefined, defineCustomElement$l);
642
+ const IonHeader = /*@__PURE__*/ createReactComponent('ion-header', undefined, undefined, defineCustomElement$m);
643
+ const IonImg = /*@__PURE__*/ createReactComponent('ion-img', undefined, undefined, defineCustomElement$n);
644
+ const IonInfiniteScroll = /*@__PURE__*/ createReactComponent('ion-infinite-scroll', undefined, undefined, defineCustomElement$o);
645
+ const IonInfiniteScrollContent = /*@__PURE__*/ createReactComponent('ion-infinite-scroll-content', undefined, undefined, defineCustomElement$p);
646
+ const IonInput = /*@__PURE__*/ createReactComponent('ion-input', undefined, undefined, defineCustomElement$q);
647
+ const IonInputPasswordToggle = /*@__PURE__*/ createReactComponent('ion-input-password-toggle', undefined, undefined, defineCustomElement$r);
648
+ const IonItemDivider = /*@__PURE__*/ createReactComponent('ion-item-divider', undefined, undefined, defineCustomElement$s);
649
+ const IonItemGroup = /*@__PURE__*/ createReactComponent('ion-item-group', undefined, undefined, defineCustomElement$t);
650
+ const IonItemOptions = /*@__PURE__*/ createReactComponent('ion-item-options', undefined, undefined, defineCustomElement$u);
651
+ const IonItemSliding = /*@__PURE__*/ createReactComponent('ion-item-sliding', undefined, undefined, defineCustomElement$v);
652
+ const IonLabel = /*@__PURE__*/ createReactComponent('ion-label', undefined, undefined, defineCustomElement$w);
653
+ const IonList = /*@__PURE__*/ createReactComponent('ion-list', undefined, undefined, defineCustomElement$x);
654
+ const IonListHeader = /*@__PURE__*/ createReactComponent('ion-list-header', undefined, undefined, defineCustomElement$y);
655
+ const IonMenu = /*@__PURE__*/ createReactComponent('ion-menu', undefined, undefined, defineCustomElement$z);
656
+ const IonMenuButton = /*@__PURE__*/ createReactComponent('ion-menu-button', undefined, undefined, defineCustomElement$A);
657
+ const IonMenuToggle = /*@__PURE__*/ createReactComponent('ion-menu-toggle', undefined, undefined, defineCustomElement$B);
658
+ const IonNavLink = /*@__PURE__*/ createReactComponent('ion-nav-link', undefined, undefined, defineCustomElement$C);
659
+ const IonNote = /*@__PURE__*/ createReactComponent('ion-note', undefined, undefined, defineCustomElement$D);
660
+ const IonPicker = /*@__PURE__*/ createReactComponent('ion-picker', undefined, undefined, defineCustomElement$E);
661
+ const IonPickerColumn = /*@__PURE__*/ createReactComponent('ion-picker-column', undefined, undefined, defineCustomElement$F);
662
+ const IonPickerColumnOption = /*@__PURE__*/ createReactComponent('ion-picker-column-option', undefined, undefined, defineCustomElement$G);
663
+ const IonProgressBar = /*@__PURE__*/ createReactComponent('ion-progress-bar', undefined, undefined, defineCustomElement$H);
664
+ const IonRadio = /*@__PURE__*/ createReactComponent('ion-radio', undefined, undefined, defineCustomElement$I);
665
+ const IonRadioGroup = /*@__PURE__*/ createReactComponent('ion-radio-group', undefined, undefined, defineCustomElement$J);
666
+ const IonRange = /*@__PURE__*/ createReactComponent('ion-range', undefined, undefined, defineCustomElement$K);
667
+ const IonRefresher = /*@__PURE__*/ createReactComponent('ion-refresher', undefined, undefined, defineCustomElement$L);
668
+ const IonRefresherContent = /*@__PURE__*/ createReactComponent('ion-refresher-content', undefined, undefined, defineCustomElement$M);
669
+ const IonReorder = /*@__PURE__*/ createReactComponent('ion-reorder', undefined, undefined, defineCustomElement$N);
670
+ const IonReorderGroup = /*@__PURE__*/ createReactComponent('ion-reorder-group', undefined, undefined, defineCustomElement$O);
671
+ const IonRippleEffect = /*@__PURE__*/ createReactComponent('ion-ripple-effect', undefined, undefined, defineCustomElement$P);
672
+ const IonRow = /*@__PURE__*/ createReactComponent('ion-row', undefined, undefined, defineCustomElement$Q);
673
+ const IonSearchbar = /*@__PURE__*/ createReactComponent('ion-searchbar', undefined, undefined, defineCustomElement$R);
674
+ const IonSegment = /*@__PURE__*/ createReactComponent('ion-segment', undefined, undefined, defineCustomElement$S);
675
+ const IonSegmentButton = /*@__PURE__*/ createReactComponent('ion-segment-button', undefined, undefined, defineCustomElement$T);
676
+ const IonSelect = /*@__PURE__*/ createReactComponent('ion-select', undefined, undefined, defineCustomElement$U);
677
+ const IonSelectOption = /*@__PURE__*/ createReactComponent('ion-select-option', undefined, undefined, defineCustomElement$V);
678
+ const IonSkeletonText = /*@__PURE__*/ createReactComponent('ion-skeleton-text', undefined, undefined, defineCustomElement$W);
679
+ const IonSpinner = /*@__PURE__*/ createReactComponent('ion-spinner', undefined, undefined, defineCustomElement$X);
680
+ const IonSplitPane = /*@__PURE__*/ createReactComponent('ion-split-pane', undefined, undefined, defineCustomElement$Y);
681
+ const IonTab = /*@__PURE__*/ createReactComponent('ion-tab', undefined, undefined, defineCustomElement$Z);
682
+ const IonText = /*@__PURE__*/ createReactComponent('ion-text', undefined, undefined, defineCustomElement$_);
683
+ const IonTextarea = /*@__PURE__*/ createReactComponent('ion-textarea', undefined, undefined, defineCustomElement$$);
684
+ const IonThumbnail = /*@__PURE__*/ createReactComponent('ion-thumbnail', undefined, undefined, defineCustomElement$10);
685
+ const IonTitle = /*@__PURE__*/ createReactComponent('ion-title', undefined, undefined, defineCustomElement$11);
686
+ const IonToggle = /*@__PURE__*/ createReactComponent('ion-toggle', undefined, undefined, defineCustomElement$12);
687
+ const IonToolbar = /*@__PURE__*/ createReactComponent('ion-toolbar', undefined, undefined, defineCustomElement$13);
688
+
1093
689
  const createForwardRef = (ReactComponent, // TODO(FW-2959): type
1094
690
  displayName) => {
1095
691
  const forwardRef = (props, ref) => {
@@ -1477,73 +1073,12 @@ const IonOverlayManager = ({ onAddOverlay, onRemoveOverlay }) => {
1477
1073
  })));
1478
1074
  };
1479
1075
 
1480
- const createReactComponent = (tagName, ReactComponentContext, manipulatePropsFunction, defineCustomElement) => {
1481
- if (defineCustomElement !== undefined) {
1482
- defineCustomElement();
1483
- }
1484
- const displayName = dashToPascalCase(tagName);
1485
- const ReactComponent = class extends React.Component {
1486
- constructor(props) {
1487
- super(props);
1488
- this.setComponentElRef = (element) => {
1489
- this.componentEl = element;
1490
- };
1491
- }
1492
- componentDidMount() {
1493
- this.componentDidUpdate(this.props);
1494
- }
1495
- componentDidUpdate(prevProps) {
1496
- attachProps(this.componentEl, this.props, prevProps);
1497
- }
1498
- render() {
1499
- const _a = this.props, { children, forwardedRef, style, className, ref } = _a, cProps = __rest(_a, ["children", "forwardedRef", "style", "className", "ref"]);
1500
- let propsToPass = Object.keys(cProps).reduce((acc, name) => {
1501
- const value = cProps[name];
1502
- if (name.indexOf('on') === 0 && name[2] === name[2].toUpperCase()) {
1503
- const eventName = name.substring(2).toLowerCase();
1504
- if (typeof document !== 'undefined' && isCoveredByReact(eventName)) {
1505
- acc[name] = value;
1506
- }
1507
- }
1508
- else {
1509
- // we should only render strings, booleans, and numbers as attrs in html.
1510
- // objects, functions, arrays etc get synced via properties on mount.
1511
- const type = typeof value;
1512
- if (type === 'string' || type === 'boolean' || type === 'number') {
1513
- acc[camelToDashCase(name)] = value;
1514
- }
1515
- }
1516
- return acc;
1517
- }, {});
1518
- if (manipulatePropsFunction) {
1519
- propsToPass = manipulatePropsFunction(this.props, propsToPass);
1520
- }
1521
- const newProps = Object.assign(Object.assign({}, propsToPass), { ref: mergeRefs(forwardedRef, this.setComponentElRef), style });
1522
- /**
1523
- * We use createElement here instead of
1524
- * React.createElement to work around a
1525
- * bug in Vite (https://github.com/vitejs/vite/issues/6104).
1526
- * React.createElement causes all elements to be rendered
1527
- * as <tagname> instead of the actual Web Component.
1528
- */
1529
- return createElement(tagName, newProps, children);
1530
- }
1531
- static get displayName() {
1532
- return displayName;
1533
- }
1534
- };
1535
- // If context was passed to createReactComponent then conditionally add it to the Component Class
1536
- if (ReactComponentContext) {
1537
- ReactComponent.contextType = ReactComponentContext;
1538
- }
1539
- return createForwardRef$1(ReactComponent, displayName);
1540
- };
1541
-
1542
1076
  const IonTabButtonInner = /*@__PURE__*/ createReactComponent('ion-tab-button', undefined, undefined, defineCustomElement$1e);
1543
1077
  const IonTabBarInner = /*@__PURE__*/ createReactComponent('ion-tab-bar', undefined, undefined, defineCustomElement$1b);
1544
- const IonBackButtonInner = /*@__PURE__*/ createReactComponent('ion-back-button', undefined, undefined, defineCustomElement$1f);
1078
+ const IonTabsInner = /*@__PURE__*/ createReactComponent('ion-tabs', undefined, undefined, defineCustomElement$1f);
1079
+ const IonBackButtonInner = /*@__PURE__*/ createReactComponent('ion-back-button', undefined, undefined, defineCustomElement$1g);
1545
1080
  const IonRouterOutletInner = /*@__PURE__*/ createReactComponent('ion-router-outlet', undefined, undefined, defineCustomElement$1c);
1546
- const IonAppInner = /*@__PURE__*/ createReactComponent('ion-app', undefined, undefined, defineCustomElement$1g);
1081
+ const IonAppInner = /*@__PURE__*/ createReactComponent('ion-app', undefined, undefined, defineCustomElement$1h);
1547
1082
  // ionicons
1548
1083
  const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$1d);
1549
1084
 
@@ -1706,7 +1241,7 @@ const ReactDelegate = (addView, removeView) => {
1706
1241
  };
1707
1242
  };
1708
1243
 
1709
- const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1h);
1244
+ const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1i);
1710
1245
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1711
1246
  const IonNavInternal = (_a) => {
1712
1247
  var { children, forwardedRef } = _a, restOfProps = __rest(_a, ["children", "forwardedRef"]);
@@ -1961,9 +1496,15 @@ class IonTabBarUnwrapped extends React.PureComponent {
1961
1496
  };
1962
1497
  }
1963
1498
  onTabButtonClick(e, onClickFn) {
1499
+ var _a;
1964
1500
  const tappedTab = this.state.tabs[e.detail.tab];
1965
1501
  const originalHref = tappedTab.originalHref;
1966
- const currentHref = e.detail.href;
1502
+ /**
1503
+ * If the router outlet is not defined, then the tabs is being used
1504
+ * as a basic tab navigation without the router. In this case, we
1505
+ * don't want to update the href else the URL will change.
1506
+ */
1507
+ const currentHref = ((_a = this.props.routerOutletRef) === null || _a === void 0 ? void 0 : _a.current) ? e.detail.href : '';
1967
1508
  const { activeTab: prevActiveTab } = this.state;
1968
1509
  if (onClickFn) {
1969
1510
  /**
@@ -2077,23 +1618,36 @@ const IonTabs = /*@__PURE__*/ (() => class extends React.Component {
2077
1618
  render() {
2078
1619
  let outlet;
2079
1620
  let tabBar;
1621
+ // Check if IonTabs has any IonTab children
1622
+ let hasTab = false;
2080
1623
  const _a = this.props, { className, onIonTabsDidChange, onIonTabsWillChange } = _a, props = __rest(_a, ["className", "onIonTabsDidChange", "onIonTabsWillChange"]);
2081
1624
  const children = typeof this.props.children === 'function'
2082
1625
  ? this.props.children(this.ionTabContextState)
2083
1626
  : this.props.children;
1627
+ const outletProps = {
1628
+ ref: this.routerOutletRef,
1629
+ };
2084
1630
  React.Children.forEach(children, (child) => {
2085
1631
  // eslint-disable-next-line no-prototype-builtins
2086
1632
  if (child == null || typeof child !== 'object' || !child.hasOwnProperty('type')) {
2087
1633
  return;
2088
1634
  }
2089
1635
  if (child.type === IonRouterOutlet || child.type.isRouterOutlet) {
2090
- outlet = React.cloneElement(child);
1636
+ outlet = React.cloneElement(child, outletProps);
2091
1637
  }
2092
1638
  else if (child.type === Fragment && child.props.children[0].type === IonRouterOutlet) {
2093
- outlet = child.props.children[0];
1639
+ outlet = React.cloneElement(child.props.children[0], outletProps);
1640
+ }
1641
+ else if (child.type === IonTab) {
1642
+ /**
1643
+ * This indicates that IonTabs will be using a basic tab-based navigation
1644
+ * without the history stack or URL updates associated with the router.
1645
+ */
1646
+ hasTab = true;
2094
1647
  }
2095
1648
  let childProps = {
2096
1649
  ref: this.tabBarRef,
1650
+ routerOutletRef: this.routerOutletRef,
2097
1651
  };
2098
1652
  /**
2099
1653
  * Only pass these props
@@ -2116,17 +1670,56 @@ const IonTabs = /*@__PURE__*/ (() => class extends React.Component {
2116
1670
  tabBar = React.cloneElement(child.props.children[1], childProps);
2117
1671
  }
2118
1672
  });
2119
- if (!outlet) {
2120
- throw new Error('IonTabs must contain an IonRouterOutlet');
1673
+ if (!outlet && !hasTab) {
1674
+ throw new Error('IonTabs must contain an IonRouterOutlet or an IonTab');
1675
+ }
1676
+ if (outlet && hasTab) {
1677
+ throw new Error('IonTabs cannot contain an IonRouterOutlet and an IonTab at the same time');
2121
1678
  }
2122
1679
  if (!tabBar) {
2123
1680
  throw new Error('IonTabs needs a IonTabBar');
2124
1681
  }
1682
+ if (hasTab) {
1683
+ return React.createElement(IonTabsInner, Object.assign({}, this.props));
1684
+ }
1685
+ /**
1686
+ * TODO(ROU-11051)
1687
+ *
1688
+ * There is no error handling for the case where there
1689
+ * is no associated Route for the given IonTabButton.
1690
+ *
1691
+ * More investigation is needed to determine how to
1692
+ * handle this to prevent any overwriting of the
1693
+ * IonTabButton's onClick handler and how the routing
1694
+ * is handled.
1695
+ */
2125
1696
  return (React.createElement(IonTabsContext.Provider, { value: this.ionTabContextState }, this.context.hasIonicRouter() ? (React.createElement(PageManager, Object.assign({ className: className ? `${className}` : '', routeInfo: this.context.routeInfo }, props),
2126
- React.createElement("ion-tabs", { className: "ion-tabs", style: hostStyles },
2127
- tabBar.props.slot === 'top' ? tabBar : null,
2128
- React.createElement("div", { style: tabsInner, className: "tabs-inner" }, outlet),
2129
- tabBar.props.slot === 'bottom' ? tabBar : null))) : (React.createElement("div", Object.assign({ className: className ? `${className}` : 'ion-tabs' }, props, { style: hostStyles }),
1697
+ React.createElement(IonTabsInner, Object.assign({}, this.props), React.Children.map(children, (child) => {
1698
+ if (React.isValidElement(child)) {
1699
+ const isTabBar = child.type === IonTabBar ||
1700
+ child.type.isTabBar ||
1701
+ (child.type === Fragment &&
1702
+ (child.props.children[1].type === IonTabBar || child.props.children[1].type.isTabBar));
1703
+ const isRouterOutlet = child.type === IonRouterOutlet ||
1704
+ child.type.isRouterOutlet ||
1705
+ (child.type === Fragment && child.props.children[0].type === IonRouterOutlet);
1706
+ if (isTabBar) {
1707
+ /**
1708
+ * The modified tabBar needs to be returned to include
1709
+ * the context and the overridden methods.
1710
+ */
1711
+ return tabBar;
1712
+ }
1713
+ if (isRouterOutlet) {
1714
+ /**
1715
+ * The modified outlet needs to be returned to include
1716
+ * the ref.
1717
+ */
1718
+ return outlet;
1719
+ }
1720
+ }
1721
+ return child;
1722
+ })))) : (React.createElement("div", Object.assign({ className: className ? `${className}` : 'ion-tabs' }, props, { style: hostStyles }),
2130
1723
  tabBar.props.slot === 'top' ? tabBar : null,
2131
1724
  React.createElement("div", { style: tabsInner, className: "tabs-inner" }, outlet),
2132
1725
  tabBar.props.slot === 'bottom' ? tabBar : null))));
@@ -2230,7 +1823,7 @@ class IonRedirect extends React.PureComponent {
2230
1823
  }
2231
1824
 
2232
1825
  const IonRouterContext = React.createContext({
2233
- routeInfo: undefined, // TODO(FW-2959): type
1826
+ routeInfo: undefined,
2234
1827
  push: () => {
2235
1828
  throw new Error('An Ionic Router is required for IonRouterContext');
2236
1829
  },