@ionic/react 8.8.1-dev.11773929121.1aabdf46 → 8.8.1-dev.11774029927.130994f5
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.
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/display.css +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic-swiper.css +1 -1
- package/css/ionic-swiper.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/normalize.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/palettes/dark.always.css.map +1 -1
- package/css/palettes/dark.class.css.map +1 -1
- package/css/palettes/dark.system.css.map +1 -1
- package/css/palettes/high-contrast-dark.always.css.map +1 -1
- package/css/palettes/high-contrast-dark.class.css.map +1 -1
- package/css/palettes/high-contrast-dark.system.css.map +1 -1
- package/css/palettes/high-contrast.always.css.map +1 -1
- package/css/palettes/high-contrast.class.css.map +1 -1
- package/css/palettes/high-contrast.system.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/index.js +241 -188
- package/dist/index.js.map +1 -1
- package/dist/types/components/IonRoute.d.ts +3 -2
- package/dist/types/components/IonRouterOutlet.d.ts +1 -0
- package/dist/types/components/index.d.ts +0 -1
- package/dist/types/components/proxies.d.ts +0 -1
- package/dist/types/contexts/NavContext.d.ts +0 -2
- package/dist/types/routing/LocationHistory.d.ts +7 -0
- package/dist/types/routing/NavManager.d.ts +0 -4
- package/dist/types/routing/OutletPageManager.d.ts +1 -0
- package/dist/types/routing/PageManager.d.ts +7 -0
- package/dist/types/routing/RouteManagerContext.d.ts +6 -1
- package/dist/types/routing/ViewStacks.d.ts +2 -2
- package/package.json +2 -2
- package/css/ionic/bundle.ionic.css +0 -1
- package/css/ionic/bundle.ionic.css.map +0 -1
- package/css/ionic/core.ionic.css +0 -1
- package/css/ionic/core.ionic.css.map +0 -1
- package/css/ionic/global.bundle.ionic.css +0 -1
- package/css/ionic/global.bundle.ionic.css.map +0 -1
- package/css/ionic/ionic-swiper.ionic.css +0 -1
- package/css/ionic/ionic-swiper.ionic.css.map +0 -1
- package/css/ionic/link.ionic.css +0 -1
- package/css/ionic/link.ionic.css.map +0 -1
- package/css/ionic/structure.ionic.css +0 -1
- package/css/ionic/structure.ionic.css.map +0 -1
- package/css/ionic/typography.ionic.css +0 -1
- package/css/ionic/typography.ionic.css.map +0 -1
- package/css/ionic/utils.bundle.ionic.css +0 -1
- package/css/ionic/utils.bundle.ionic.css.map +0 -1
- package/dist/types/components/IonRedirect.d.ts +0 -16
package/dist/index.js
CHANGED
|
@@ -20,62 +20,61 @@ import { defineCustomElement as defineCustomElement$e } from '@ionic/core/compon
|
|
|
20
20
|
import { defineCustomElement as defineCustomElement$f } from '@ionic/core/components/ion-content.js';
|
|
21
21
|
import { defineCustomElement as defineCustomElement$g } from '@ionic/core/components/ion-datetime.js';
|
|
22
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-
|
|
24
|
-
import { defineCustomElement as defineCustomElement$j } from '@ionic/core/components/ion-fab.js';
|
|
25
|
-
import { defineCustomElement as defineCustomElement$k } from '@ionic/core/components/ion-
|
|
26
|
-
import { defineCustomElement as defineCustomElement$l } from '@ionic/core/components/ion-
|
|
27
|
-
import { defineCustomElement as defineCustomElement$m } from '@ionic/core/components/ion-
|
|
28
|
-
import { defineCustomElement as defineCustomElement$n } from '@ionic/core/components/ion-
|
|
29
|
-
import { defineCustomElement as defineCustomElement$o } from '@ionic/core/components/ion-
|
|
30
|
-
import { defineCustomElement as defineCustomElement$p } from '@ionic/core/components/ion-infinite-scroll.js';
|
|
31
|
-
import { defineCustomElement as defineCustomElement$q } from '@ionic/core/components/ion-
|
|
32
|
-
import { defineCustomElement as defineCustomElement$r } from '@ionic/core/components/ion-input.js';
|
|
33
|
-
import { defineCustomElement as defineCustomElement$s } from '@ionic/core/components/ion-input-
|
|
34
|
-
import { defineCustomElement as defineCustomElement$t } from '@ionic/core/components/ion-
|
|
35
|
-
import { defineCustomElement as defineCustomElement$u } from '@ionic/core/components/ion-item-
|
|
36
|
-
import { defineCustomElement as defineCustomElement$v } from '@ionic/core/components/ion-item-
|
|
37
|
-
import { defineCustomElement as defineCustomElement$w } from '@ionic/core/components/ion-item-
|
|
38
|
-
import { defineCustomElement as defineCustomElement$x } from '@ionic/core/components/ion-
|
|
39
|
-
import { defineCustomElement as defineCustomElement$y } from '@ionic/core/components/ion-
|
|
40
|
-
import { defineCustomElement as defineCustomElement$z } from '@ionic/core/components/ion-list.js';
|
|
41
|
-
import { defineCustomElement as defineCustomElement$A } from '@ionic/core/components/ion-
|
|
42
|
-
import { defineCustomElement as defineCustomElement$B } from '@ionic/core/components/ion-menu.js';
|
|
43
|
-
import { defineCustomElement as defineCustomElement$C } from '@ionic/core/components/ion-menu-
|
|
44
|
-
import { defineCustomElement as defineCustomElement$
|
|
45
|
-
import { defineCustomElement as defineCustomElement$
|
|
46
|
-
import { defineCustomElement as defineCustomElement$E } from '@ionic/core/components/ion-
|
|
47
|
-
import { defineCustomElement as defineCustomElement$F } from '@ionic/core/components/ion-
|
|
48
|
-
import { defineCustomElement as defineCustomElement$G } from '@ionic/core/components/ion-picker.js';
|
|
49
|
-
import { defineCustomElement as defineCustomElement$H } from '@ionic/core/components/ion-picker-column.js';
|
|
50
|
-
import { defineCustomElement as defineCustomElement$I } from '@ionic/core/components/ion-
|
|
51
|
-
import { defineCustomElement as defineCustomElement$J } from '@ionic/core/components/ion-
|
|
52
|
-
import { defineCustomElement as defineCustomElement$K } from '@ionic/core/components/ion-radio.js';
|
|
53
|
-
import { defineCustomElement as defineCustomElement$L } from '@ionic/core/components/ion-
|
|
54
|
-
import { defineCustomElement as defineCustomElement$M } from '@ionic/core/components/ion-
|
|
55
|
-
import { defineCustomElement as defineCustomElement$N } from '@ionic/core/components/ion-refresher.js';
|
|
56
|
-
import { defineCustomElement as defineCustomElement$O } from '@ionic/core/components/ion-
|
|
57
|
-
import { defineCustomElement as defineCustomElement$P } from '@ionic/core/components/ion-reorder.js';
|
|
58
|
-
import { defineCustomElement as defineCustomElement$Q } from '@ionic/core/components/ion-
|
|
59
|
-
import { defineCustomElement as defineCustomElement$R } from '@ionic/core/components/ion-
|
|
60
|
-
import { defineCustomElement as defineCustomElement$S } from '@ionic/core/components/ion-
|
|
61
|
-
import { defineCustomElement as defineCustomElement$T } from '@ionic/core/components/ion-
|
|
62
|
-
import { defineCustomElement as defineCustomElement$U } from '@ionic/core/components/ion-segment.js';
|
|
63
|
-
import { defineCustomElement as defineCustomElement$V } from '@ionic/core/components/ion-segment-
|
|
64
|
-
import { defineCustomElement as defineCustomElement$W } from '@ionic/core/components/ion-segment-
|
|
65
|
-
import { defineCustomElement as defineCustomElement$X } from '@ionic/core/components/ion-
|
|
66
|
-
import { defineCustomElement as defineCustomElement$Y } from '@ionic/core/components/ion-select.js';
|
|
67
|
-
import { defineCustomElement as defineCustomElement$Z } from '@ionic/core/components/ion-select-
|
|
68
|
-
import { defineCustomElement as defineCustomElement$_ } from '@ionic/core/components/ion-
|
|
69
|
-
import { defineCustomElement as defineCustomElement$$ } from '@ionic/core/components/ion-
|
|
70
|
-
import { defineCustomElement as defineCustomElement$10 } from '@ionic/core/components/ion-
|
|
71
|
-
import { defineCustomElement as defineCustomElement$11 } from '@ionic/core/components/ion-
|
|
72
|
-
import { defineCustomElement as defineCustomElement$12 } from '@ionic/core/components/ion-
|
|
73
|
-
import { defineCustomElement as defineCustomElement$13 } from '@ionic/core/components/ion-
|
|
74
|
-
import { defineCustomElement as defineCustomElement$14 } from '@ionic/core/components/ion-
|
|
75
|
-
import { defineCustomElement as defineCustomElement$15 } from '@ionic/core/components/ion-
|
|
76
|
-
import { defineCustomElement as defineCustomElement$16 } from '@ionic/core/components/ion-
|
|
77
|
-
import { defineCustomElement as defineCustomElement$17 } from '@ionic/core/components/ion-
|
|
78
|
-
import { defineCustomElement as defineCustomElement$18 } from '@ionic/core/components/ion-toolbar.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-otp.js';
|
|
33
|
+
import { defineCustomElement as defineCustomElement$s } from '@ionic/core/components/ion-input-password-toggle.js';
|
|
34
|
+
import { defineCustomElement as defineCustomElement$t } from '@ionic/core/components/ion-item-divider.js';
|
|
35
|
+
import { defineCustomElement as defineCustomElement$u } from '@ionic/core/components/ion-item-group.js';
|
|
36
|
+
import { defineCustomElement as defineCustomElement$v } from '@ionic/core/components/ion-item-options.js';
|
|
37
|
+
import { defineCustomElement as defineCustomElement$w } from '@ionic/core/components/ion-item-sliding.js';
|
|
38
|
+
import { defineCustomElement as defineCustomElement$x } from '@ionic/core/components/ion-label.js';
|
|
39
|
+
import { defineCustomElement as defineCustomElement$y } from '@ionic/core/components/ion-list.js';
|
|
40
|
+
import { defineCustomElement as defineCustomElement$z } from '@ionic/core/components/ion-list-header.js';
|
|
41
|
+
import { defineCustomElement as defineCustomElement$A } from '@ionic/core/components/ion-menu.js';
|
|
42
|
+
import { defineCustomElement as defineCustomElement$B } from '@ionic/core/components/ion-menu-button.js';
|
|
43
|
+
import { defineCustomElement as defineCustomElement$C } from '@ionic/core/components/ion-menu-toggle.js';
|
|
44
|
+
import { defineCustomElement as defineCustomElement$1m } from '@ionic/core/components/ion-nav.js';
|
|
45
|
+
import { defineCustomElement as defineCustomElement$D } from '@ionic/core/components/ion-nav-link.js';
|
|
46
|
+
import { defineCustomElement as defineCustomElement$E } from '@ionic/core/components/ion-note.js';
|
|
47
|
+
import { defineCustomElement as defineCustomElement$F } from '@ionic/core/components/ion-picker.js';
|
|
48
|
+
import { defineCustomElement as defineCustomElement$G } from '@ionic/core/components/ion-picker-column.js';
|
|
49
|
+
import { defineCustomElement as defineCustomElement$H } from '@ionic/core/components/ion-picker-column-option.js';
|
|
50
|
+
import { defineCustomElement as defineCustomElement$I } from '@ionic/core/components/ion-progress-bar.js';
|
|
51
|
+
import { defineCustomElement as defineCustomElement$J } from '@ionic/core/components/ion-radio.js';
|
|
52
|
+
import { defineCustomElement as defineCustomElement$K } from '@ionic/core/components/ion-radio-group.js';
|
|
53
|
+
import { defineCustomElement as defineCustomElement$L } from '@ionic/core/components/ion-range.js';
|
|
54
|
+
import { defineCustomElement as defineCustomElement$M } from '@ionic/core/components/ion-refresher.js';
|
|
55
|
+
import { defineCustomElement as defineCustomElement$N } from '@ionic/core/components/ion-refresher-content.js';
|
|
56
|
+
import { defineCustomElement as defineCustomElement$O } from '@ionic/core/components/ion-reorder.js';
|
|
57
|
+
import { defineCustomElement as defineCustomElement$P } from '@ionic/core/components/ion-reorder-group.js';
|
|
58
|
+
import { defineCustomElement as defineCustomElement$Q } from '@ionic/core/components/ion-ripple-effect.js';
|
|
59
|
+
import { defineCustomElement as defineCustomElement$R } from '@ionic/core/components/ion-row.js';
|
|
60
|
+
import { defineCustomElement as defineCustomElement$S } from '@ionic/core/components/ion-searchbar.js';
|
|
61
|
+
import { defineCustomElement as defineCustomElement$T } from '@ionic/core/components/ion-segment.js';
|
|
62
|
+
import { defineCustomElement as defineCustomElement$U } from '@ionic/core/components/ion-segment-button.js';
|
|
63
|
+
import { defineCustomElement as defineCustomElement$V } from '@ionic/core/components/ion-segment-content.js';
|
|
64
|
+
import { defineCustomElement as defineCustomElement$W } from '@ionic/core/components/ion-segment-view.js';
|
|
65
|
+
import { defineCustomElement as defineCustomElement$X } from '@ionic/core/components/ion-select.js';
|
|
66
|
+
import { defineCustomElement as defineCustomElement$Y } from '@ionic/core/components/ion-select-modal.js';
|
|
67
|
+
import { defineCustomElement as defineCustomElement$Z } from '@ionic/core/components/ion-select-option.js';
|
|
68
|
+
import { defineCustomElement as defineCustomElement$_ } from '@ionic/core/components/ion-skeleton-text.js';
|
|
69
|
+
import { defineCustomElement as defineCustomElement$$ } from '@ionic/core/components/ion-spinner.js';
|
|
70
|
+
import { defineCustomElement as defineCustomElement$10 } from '@ionic/core/components/ion-split-pane.js';
|
|
71
|
+
import { defineCustomElement as defineCustomElement$11 } from '@ionic/core/components/ion-tab.js';
|
|
72
|
+
import { defineCustomElement as defineCustomElement$12 } from '@ionic/core/components/ion-text.js';
|
|
73
|
+
import { defineCustomElement as defineCustomElement$13 } from '@ionic/core/components/ion-textarea.js';
|
|
74
|
+
import { defineCustomElement as defineCustomElement$14 } from '@ionic/core/components/ion-thumbnail.js';
|
|
75
|
+
import { defineCustomElement as defineCustomElement$15 } from '@ionic/core/components/ion-title.js';
|
|
76
|
+
import { defineCustomElement as defineCustomElement$16 } from '@ionic/core/components/ion-toggle.js';
|
|
77
|
+
import { defineCustomElement as defineCustomElement$17 } from '@ionic/core/components/ion-toolbar.js';
|
|
79
78
|
import { IonBreadcrumb as IonBreadcrumb$1 } from '@ionic/core/components/ion-breadcrumb.js';
|
|
80
79
|
import { IonButton as IonButton$1 } from '@ionic/core/components/ion-button.js';
|
|
81
80
|
import { IonCard as IonCard$1 } from '@ionic/core/components/ion-card.js';
|
|
@@ -83,20 +82,20 @@ import { IonFabButton as IonFabButton$1 } from '@ionic/core/components/ion-fab-b
|
|
|
83
82
|
import { IonItemOption as IonItemOption$1 } from '@ionic/core/components/ion-item-option.js';
|
|
84
83
|
import { IonItem as IonItem$1 } from '@ionic/core/components/ion-item.js';
|
|
85
84
|
import { IonRouterLink as IonRouterLink$1 } from '@ionic/core/components/ion-router-link.js';
|
|
86
|
-
import { defineCustomElement as defineCustomElement$
|
|
87
|
-
import { defineCustomElement as defineCustomElement$
|
|
88
|
-
import { defineCustomElement as defineCustomElement$
|
|
89
|
-
import { defineCustomElement as defineCustomElement$
|
|
90
|
-
import { defineCustomElement as defineCustomElement$
|
|
91
|
-
import { defineCustomElement as defineCustomElement$
|
|
92
|
-
import { defineCustomElement as defineCustomElement$
|
|
93
|
-
import { defineCustomElement as defineCustomElement$
|
|
94
|
-
import { defineCustomElement as defineCustomElement$
|
|
95
|
-
import { defineCustomElement as defineCustomElement$
|
|
96
|
-
import { defineCustomElement as defineCustomElement$
|
|
97
|
-
import { defineCustomElement as defineCustomElement$
|
|
98
|
-
import { defineCustomElement as defineCustomElement$
|
|
99
|
-
import { defineCustomElement as defineCustomElement$
|
|
85
|
+
import { defineCustomElement as defineCustomElement$18 } from '@ionic/core/components/ion-alert.js';
|
|
86
|
+
import { defineCustomElement as defineCustomElement$19 } from '@ionic/core/components/ion-loading.js';
|
|
87
|
+
import { defineCustomElement as defineCustomElement$1a } from '@ionic/core/components/ion-toast.js';
|
|
88
|
+
import { defineCustomElement as defineCustomElement$1b } from '@ionic/core/components/ion-picker-legacy.js';
|
|
89
|
+
import { defineCustomElement as defineCustomElement$1c } from '@ionic/core/components/ion-action-sheet.js';
|
|
90
|
+
import { defineCustomElement as defineCustomElement$1d } from '@ionic/core/components/ion-modal.js';
|
|
91
|
+
import { defineCustomElement as defineCustomElement$1e } from '@ionic/core/components/ion-popover.js';
|
|
92
|
+
import { defineCustomElement as defineCustomElement$1k } from '@ionic/core/components/ion-app.js';
|
|
93
|
+
import { defineCustomElement as defineCustomElement$1i } from '@ionic/core/components/ion-back-button.js';
|
|
94
|
+
import { defineCustomElement as defineCustomElement$1j } from '@ionic/core/components/ion-router-outlet.js';
|
|
95
|
+
import { defineCustomElement as defineCustomElement$1g } from '@ionic/core/components/ion-tab-bar.js';
|
|
96
|
+
import { defineCustomElement as defineCustomElement$1f } from '@ionic/core/components/ion-tab-button.js';
|
|
97
|
+
import { defineCustomElement as defineCustomElement$1h } from '@ionic/core/components/ion-tabs.js';
|
|
98
|
+
import { defineCustomElement as defineCustomElement$1l } from 'ionicons/components/ion-icon.js';
|
|
100
99
|
|
|
101
100
|
const IonLifeCycleContext = /*@__PURE__*/ React.createContext({
|
|
102
101
|
onIonViewWillEnter: () => {
|
|
@@ -381,9 +380,7 @@ const useIonViewDidLeave = (callback, deps = []) => {
|
|
|
381
380
|
};
|
|
382
381
|
|
|
383
382
|
const NavContext = /*@__PURE__*/ React.createContext({
|
|
384
|
-
getIonRedirect: () => undefined,
|
|
385
383
|
getIonRoute: () => undefined,
|
|
386
|
-
getPageManager: () => undefined,
|
|
387
384
|
getStackManager: () => undefined,
|
|
388
385
|
goBack: (route) => {
|
|
389
386
|
if (typeof window !== 'undefined') {
|
|
@@ -644,61 +641,60 @@ const IonCol = /*@__PURE__*/ createReactComponent('ion-col', undefined, undefine
|
|
|
644
641
|
const IonContent = /*@__PURE__*/ createReactComponent('ion-content', undefined, undefined, defineCustomElement$f);
|
|
645
642
|
const IonDatetime = /*@__PURE__*/ createReactComponent('ion-datetime', undefined, undefined, defineCustomElement$g);
|
|
646
643
|
const IonDatetimeButton = /*@__PURE__*/ createReactComponent('ion-datetime-button', undefined, undefined, defineCustomElement$h);
|
|
647
|
-
const
|
|
648
|
-
const
|
|
649
|
-
const
|
|
650
|
-
const
|
|
651
|
-
const
|
|
652
|
-
const
|
|
653
|
-
const
|
|
654
|
-
const
|
|
655
|
-
const
|
|
656
|
-
const
|
|
657
|
-
const
|
|
658
|
-
const
|
|
659
|
-
const
|
|
660
|
-
const
|
|
661
|
-
const
|
|
662
|
-
const
|
|
663
|
-
const
|
|
664
|
-
const
|
|
665
|
-
const
|
|
666
|
-
const
|
|
667
|
-
const
|
|
668
|
-
const
|
|
669
|
-
const
|
|
670
|
-
const
|
|
671
|
-
const
|
|
672
|
-
const
|
|
673
|
-
const
|
|
674
|
-
const
|
|
675
|
-
const
|
|
676
|
-
const
|
|
677
|
-
const
|
|
678
|
-
const
|
|
679
|
-
const
|
|
680
|
-
const
|
|
681
|
-
const
|
|
682
|
-
const
|
|
683
|
-
const
|
|
684
|
-
const
|
|
685
|
-
const
|
|
686
|
-
const
|
|
687
|
-
const
|
|
688
|
-
const
|
|
689
|
-
const
|
|
690
|
-
const
|
|
691
|
-
const
|
|
692
|
-
const
|
|
693
|
-
const
|
|
694
|
-
const
|
|
695
|
-
const
|
|
696
|
-
const
|
|
697
|
-
const
|
|
698
|
-
const
|
|
699
|
-
const
|
|
700
|
-
const
|
|
701
|
-
const IonToolbar = /*@__PURE__*/ createReactComponent('ion-toolbar', undefined, undefined, defineCustomElement$18);
|
|
644
|
+
const IonFab = /*@__PURE__*/ createReactComponent('ion-fab', undefined, undefined, defineCustomElement$i);
|
|
645
|
+
const IonFabList = /*@__PURE__*/ createReactComponent('ion-fab-list', undefined, undefined, defineCustomElement$j);
|
|
646
|
+
const IonFooter = /*@__PURE__*/ createReactComponent('ion-footer', undefined, undefined, defineCustomElement$k);
|
|
647
|
+
const IonGrid = /*@__PURE__*/ createReactComponent('ion-grid', undefined, undefined, defineCustomElement$l);
|
|
648
|
+
const IonHeader = /*@__PURE__*/ createReactComponent('ion-header', undefined, undefined, defineCustomElement$m);
|
|
649
|
+
const IonImg = /*@__PURE__*/ createReactComponent('ion-img', undefined, undefined, defineCustomElement$n);
|
|
650
|
+
const IonInfiniteScroll = /*@__PURE__*/ createReactComponent('ion-infinite-scroll', undefined, undefined, defineCustomElement$o);
|
|
651
|
+
const IonInfiniteScrollContent = /*@__PURE__*/ createReactComponent('ion-infinite-scroll-content', undefined, undefined, defineCustomElement$p);
|
|
652
|
+
const IonInput = /*@__PURE__*/ createReactComponent('ion-input', undefined, undefined, defineCustomElement$q);
|
|
653
|
+
const IonInputOtp = /*@__PURE__*/ createReactComponent('ion-input-otp', undefined, undefined, defineCustomElement$r);
|
|
654
|
+
const IonInputPasswordToggle = /*@__PURE__*/ createReactComponent('ion-input-password-toggle', undefined, undefined, defineCustomElement$s);
|
|
655
|
+
const IonItemDivider = /*@__PURE__*/ createReactComponent('ion-item-divider', undefined, undefined, defineCustomElement$t);
|
|
656
|
+
const IonItemGroup = /*@__PURE__*/ createReactComponent('ion-item-group', undefined, undefined, defineCustomElement$u);
|
|
657
|
+
const IonItemOptions = /*@__PURE__*/ createReactComponent('ion-item-options', undefined, undefined, defineCustomElement$v);
|
|
658
|
+
const IonItemSliding = /*@__PURE__*/ createReactComponent('ion-item-sliding', undefined, undefined, defineCustomElement$w);
|
|
659
|
+
const IonLabel = /*@__PURE__*/ createReactComponent('ion-label', undefined, undefined, defineCustomElement$x);
|
|
660
|
+
const IonList = /*@__PURE__*/ createReactComponent('ion-list', undefined, undefined, defineCustomElement$y);
|
|
661
|
+
const IonListHeader = /*@__PURE__*/ createReactComponent('ion-list-header', undefined, undefined, defineCustomElement$z);
|
|
662
|
+
const IonMenu = /*@__PURE__*/ createReactComponent('ion-menu', undefined, undefined, defineCustomElement$A);
|
|
663
|
+
const IonMenuButton = /*@__PURE__*/ createReactComponent('ion-menu-button', undefined, undefined, defineCustomElement$B);
|
|
664
|
+
const IonMenuToggle = /*@__PURE__*/ createReactComponent('ion-menu-toggle', undefined, undefined, defineCustomElement$C);
|
|
665
|
+
const IonNavLink = /*@__PURE__*/ createReactComponent('ion-nav-link', undefined, undefined, defineCustomElement$D);
|
|
666
|
+
const IonNote = /*@__PURE__*/ createReactComponent('ion-note', undefined, undefined, defineCustomElement$E);
|
|
667
|
+
const IonPicker = /*@__PURE__*/ createReactComponent('ion-picker', undefined, undefined, defineCustomElement$F);
|
|
668
|
+
const IonPickerColumn = /*@__PURE__*/ createReactComponent('ion-picker-column', undefined, undefined, defineCustomElement$G);
|
|
669
|
+
const IonPickerColumnOption = /*@__PURE__*/ createReactComponent('ion-picker-column-option', undefined, undefined, defineCustomElement$H);
|
|
670
|
+
const IonProgressBar = /*@__PURE__*/ createReactComponent('ion-progress-bar', undefined, undefined, defineCustomElement$I);
|
|
671
|
+
const IonRadio = /*@__PURE__*/ createReactComponent('ion-radio', undefined, undefined, defineCustomElement$J);
|
|
672
|
+
const IonRadioGroup = /*@__PURE__*/ createReactComponent('ion-radio-group', undefined, undefined, defineCustomElement$K);
|
|
673
|
+
const IonRange = /*@__PURE__*/ createReactComponent('ion-range', undefined, undefined, defineCustomElement$L);
|
|
674
|
+
const IonRefresher = /*@__PURE__*/ createReactComponent('ion-refresher', undefined, undefined, defineCustomElement$M);
|
|
675
|
+
const IonRefresherContent = /*@__PURE__*/ createReactComponent('ion-refresher-content', undefined, undefined, defineCustomElement$N);
|
|
676
|
+
const IonReorder = /*@__PURE__*/ createReactComponent('ion-reorder', undefined, undefined, defineCustomElement$O);
|
|
677
|
+
const IonReorderGroup = /*@__PURE__*/ createReactComponent('ion-reorder-group', undefined, undefined, defineCustomElement$P);
|
|
678
|
+
const IonRippleEffect = /*@__PURE__*/ createReactComponent('ion-ripple-effect', undefined, undefined, defineCustomElement$Q);
|
|
679
|
+
const IonRow = /*@__PURE__*/ createReactComponent('ion-row', undefined, undefined, defineCustomElement$R);
|
|
680
|
+
const IonSearchbar = /*@__PURE__*/ createReactComponent('ion-searchbar', undefined, undefined, defineCustomElement$S);
|
|
681
|
+
const IonSegment = /*@__PURE__*/ createReactComponent('ion-segment', undefined, undefined, defineCustomElement$T);
|
|
682
|
+
const IonSegmentButton = /*@__PURE__*/ createReactComponent('ion-segment-button', undefined, undefined, defineCustomElement$U);
|
|
683
|
+
const IonSegmentContent = /*@__PURE__*/ createReactComponent('ion-segment-content', undefined, undefined, defineCustomElement$V);
|
|
684
|
+
const IonSegmentView = /*@__PURE__*/ createReactComponent('ion-segment-view', undefined, undefined, defineCustomElement$W);
|
|
685
|
+
const IonSelect = /*@__PURE__*/ createReactComponent('ion-select', undefined, undefined, defineCustomElement$X);
|
|
686
|
+
const IonSelectModal = /*@__PURE__*/ createReactComponent('ion-select-modal', undefined, undefined, defineCustomElement$Y);
|
|
687
|
+
const IonSelectOption = /*@__PURE__*/ createReactComponent('ion-select-option', undefined, undefined, defineCustomElement$Z);
|
|
688
|
+
const IonSkeletonText = /*@__PURE__*/ createReactComponent('ion-skeleton-text', undefined, undefined, defineCustomElement$_);
|
|
689
|
+
const IonSpinner = /*@__PURE__*/ createReactComponent('ion-spinner', undefined, undefined, defineCustomElement$$);
|
|
690
|
+
const IonSplitPane = /*@__PURE__*/ createReactComponent('ion-split-pane', undefined, undefined, defineCustomElement$10);
|
|
691
|
+
const IonTab = /*@__PURE__*/ createReactComponent('ion-tab', undefined, undefined, defineCustomElement$11);
|
|
692
|
+
const IonText = /*@__PURE__*/ createReactComponent('ion-text', undefined, undefined, defineCustomElement$12);
|
|
693
|
+
const IonTextarea = /*@__PURE__*/ createReactComponent('ion-textarea', undefined, undefined, defineCustomElement$13);
|
|
694
|
+
const IonThumbnail = /*@__PURE__*/ createReactComponent('ion-thumbnail', undefined, undefined, defineCustomElement$14);
|
|
695
|
+
const IonTitle = /*@__PURE__*/ createReactComponent('ion-title', undefined, undefined, defineCustomElement$15);
|
|
696
|
+
const IonToggle = /*@__PURE__*/ createReactComponent('ion-toggle', undefined, undefined, defineCustomElement$16);
|
|
697
|
+
const IonToolbar = /*@__PURE__*/ createReactComponent('ion-toolbar', undefined, undefined, defineCustomElement$17);
|
|
702
698
|
|
|
703
699
|
const createForwardRef = (ReactComponent, // TODO(FW-2959): type
|
|
704
700
|
displayName) => {
|
|
@@ -990,19 +986,19 @@ const createInlineOverlayComponent = (tagName, defineCustomElement, hasDelegateH
|
|
|
990
986
|
};
|
|
991
987
|
const DELEGATE_HOST = 'ion-delegate-host';
|
|
992
988
|
|
|
993
|
-
const IonAlert = /*@__PURE__*/ createInlineOverlayComponent('ion-alert', defineCustomElement$
|
|
989
|
+
const IonAlert = /*@__PURE__*/ createInlineOverlayComponent('ion-alert', defineCustomElement$18);
|
|
994
990
|
|
|
995
|
-
const IonLoading = /*@__PURE__*/ createInlineOverlayComponent('ion-loading', defineCustomElement$
|
|
991
|
+
const IonLoading = /*@__PURE__*/ createInlineOverlayComponent('ion-loading', defineCustomElement$19);
|
|
996
992
|
|
|
997
|
-
const IonToast = /*@__PURE__*/ createInlineOverlayComponent('ion-toast', defineCustomElement$
|
|
993
|
+
const IonToast = /*@__PURE__*/ createInlineOverlayComponent('ion-toast', defineCustomElement$1a);
|
|
998
994
|
|
|
999
|
-
const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent('ion-picker-legacy', defineCustomElement$
|
|
995
|
+
const IonPickerLegacy = /*@__PURE__*/ createInlineOverlayComponent('ion-picker-legacy', defineCustomElement$1b);
|
|
1000
996
|
|
|
1001
|
-
const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent('ion-action-sheet', defineCustomElement$
|
|
997
|
+
const IonActionSheet = /*@__PURE__*/ createInlineOverlayComponent('ion-action-sheet', defineCustomElement$1c);
|
|
1002
998
|
|
|
1003
|
-
const IonModal = /*@__PURE__*/ createInlineOverlayComponent('ion-modal', defineCustomElement$
|
|
999
|
+
const IonModal = /*@__PURE__*/ createInlineOverlayComponent('ion-modal', defineCustomElement$1d, true);
|
|
1004
1000
|
|
|
1005
|
-
const IonPopover = /*@__PURE__*/ createInlineOverlayComponent('ion-popover', defineCustomElement$
|
|
1001
|
+
const IonPopover = /*@__PURE__*/ createInlineOverlayComponent('ion-popover', defineCustomElement$1e);
|
|
1006
1002
|
|
|
1007
1003
|
const IonContext = React.createContext({
|
|
1008
1004
|
addOverlay: () => {
|
|
@@ -1094,14 +1090,14 @@ const IonOverlayManager = ({ onAddOverlay, onRemoveOverlay }) => {
|
|
|
1094
1090
|
}) }));
|
|
1095
1091
|
};
|
|
1096
1092
|
|
|
1097
|
-
const IonTabButtonInner = /*@__PURE__*/ createReactComponent('ion-tab-button', undefined, undefined, defineCustomElement$
|
|
1098
|
-
const IonTabBarInner = /*@__PURE__*/ createReactComponent('ion-tab-bar', undefined, undefined, defineCustomElement$
|
|
1099
|
-
const IonTabsInner = /*@__PURE__*/ createReactComponent('ion-tabs', undefined, undefined, defineCustomElement$
|
|
1100
|
-
const IonBackButtonInner = /*@__PURE__*/ createReactComponent('ion-back-button', undefined, undefined, defineCustomElement$
|
|
1101
|
-
const IonRouterOutletInner = /*@__PURE__*/ createReactComponent('ion-router-outlet', undefined, undefined, defineCustomElement$
|
|
1102
|
-
const IonAppInner = /*@__PURE__*/ createReactComponent('ion-app', undefined, undefined, defineCustomElement$
|
|
1093
|
+
const IonTabButtonInner = /*@__PURE__*/ createReactComponent('ion-tab-button', undefined, undefined, defineCustomElement$1f);
|
|
1094
|
+
const IonTabBarInner = /*@__PURE__*/ createReactComponent('ion-tab-bar', undefined, undefined, defineCustomElement$1g);
|
|
1095
|
+
const IonTabsInner = /*@__PURE__*/ createReactComponent('ion-tabs', undefined, undefined, defineCustomElement$1h);
|
|
1096
|
+
const IonBackButtonInner = /*@__PURE__*/ createReactComponent('ion-back-button', undefined, undefined, defineCustomElement$1i);
|
|
1097
|
+
const IonRouterOutletInner = /*@__PURE__*/ createReactComponent('ion-router-outlet', undefined, undefined, defineCustomElement$1j);
|
|
1098
|
+
const IonAppInner = /*@__PURE__*/ createReactComponent('ion-app', undefined, undefined, defineCustomElement$1k);
|
|
1103
1099
|
// ionicons
|
|
1104
|
-
const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$
|
|
1100
|
+
const IonIconInner = /*@__PURE__*/ createReactComponent('ion-icon', undefined, undefined, defineCustomElement$1l);
|
|
1105
1101
|
|
|
1106
1102
|
class IonApp extends React.Component {
|
|
1107
1103
|
constructor(props) {
|
|
@@ -1139,7 +1135,18 @@ class PageManager extends React.PureComponent {
|
|
|
1139
1135
|
super(props);
|
|
1140
1136
|
this.ionPageElementRef = React.createRef();
|
|
1141
1137
|
// React refs must be stable (not created inline).
|
|
1142
|
-
|
|
1138
|
+
// Wrap merged refs to add ion-page-invisible synchronously when element is created
|
|
1139
|
+
const baseMergedRefs = mergeRefs(this.ionPageElementRef, this.props.forwardedRef);
|
|
1140
|
+
this.stableMergedRefs = (node) => {
|
|
1141
|
+
if (node && !node.classList.contains('ion-page-invisible') && !node.classList.contains('ion-page-hidden')) {
|
|
1142
|
+
// Add ion-page-invisible synchronously before first paint (if in an outlet)
|
|
1143
|
+
// This prevents the flash that occurs when componentDidMount runs after paint
|
|
1144
|
+
if (this.context?.isInOutlet?.()) {
|
|
1145
|
+
node.classList.add('ion-page-invisible');
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
baseMergedRefs(node);
|
|
1149
|
+
};
|
|
1143
1150
|
/**
|
|
1144
1151
|
* This binds the scope of the following methods to the class scope.
|
|
1145
1152
|
* The `.bind` method returns a new function, so we need to assign it
|
|
@@ -1151,11 +1158,38 @@ class PageManager extends React.PureComponent {
|
|
|
1151
1158
|
this.ionViewWillLeaveHandler = this.ionViewWillLeaveHandler.bind(this);
|
|
1152
1159
|
this.ionViewDidLeaveHandler = this.ionViewDidLeaveHandler.bind(this);
|
|
1153
1160
|
}
|
|
1161
|
+
parseClasses(className) {
|
|
1162
|
+
if (!className)
|
|
1163
|
+
return new Set();
|
|
1164
|
+
return new Set(className.split(/\s+/).filter(Boolean));
|
|
1165
|
+
}
|
|
1166
|
+
/**
|
|
1167
|
+
* Updates classList by diffing old/new className props.
|
|
1168
|
+
* Preserves framework-added classes (can-go-back, ion-page-invisible, etc.).
|
|
1169
|
+
*/
|
|
1170
|
+
updateUserClasses(oldClassName, newClassName) {
|
|
1171
|
+
if (!this.ionPageElementRef.current)
|
|
1172
|
+
return;
|
|
1173
|
+
const oldClasses = this.parseClasses(oldClassName);
|
|
1174
|
+
const newClasses = this.parseClasses(newClassName);
|
|
1175
|
+
oldClasses.forEach((cls) => {
|
|
1176
|
+
if (!newClasses.has(cls)) {
|
|
1177
|
+
this.ionPageElementRef.current.classList.remove(cls);
|
|
1178
|
+
}
|
|
1179
|
+
});
|
|
1180
|
+
newClasses.forEach((cls) => {
|
|
1181
|
+
if (!oldClasses.has(cls)) {
|
|
1182
|
+
this.ionPageElementRef.current.classList.add(cls);
|
|
1183
|
+
}
|
|
1184
|
+
});
|
|
1185
|
+
}
|
|
1154
1186
|
componentDidMount() {
|
|
1155
1187
|
if (this.ionPageElementRef.current) {
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1188
|
+
// Add user classes via DOM manipulation to preserve framework-added classes.
|
|
1189
|
+
// We only set "ion-page" in JSX; user classes are added here.
|
|
1190
|
+
// Note: ion-page-invisible is added in the ref callback (stableMergedRefs) to prevent flash.
|
|
1191
|
+
// The ref callback runs synchronously when the element is created, before the browser paints.
|
|
1192
|
+
this.updateUserClasses(undefined, this.props.className);
|
|
1159
1193
|
this.context.registerIonPage(this.ionPageElementRef.current, this.props.routeInfo);
|
|
1160
1194
|
this.ionPageElementRef.current.addEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);
|
|
1161
1195
|
this.ionPageElementRef.current.addEventListener('ionViewDidEnter', this.ionViewDidEnterHandler);
|
|
@@ -1163,6 +1197,11 @@ class PageManager extends React.PureComponent {
|
|
|
1163
1197
|
this.ionPageElementRef.current.addEventListener('ionViewDidLeave', this.ionViewDidLeaveHandler);
|
|
1164
1198
|
}
|
|
1165
1199
|
}
|
|
1200
|
+
componentDidUpdate(prevProps) {
|
|
1201
|
+
if (prevProps.className !== this.props.className) {
|
|
1202
|
+
this.updateUserClasses(prevProps.className, this.props.className);
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1166
1205
|
componentWillUnmount() {
|
|
1167
1206
|
if (this.ionPageElementRef.current) {
|
|
1168
1207
|
this.ionPageElementRef.current.removeEventListener('ionViewWillEnter', this.ionViewWillEnterHandler);
|
|
@@ -1192,9 +1231,11 @@ class PageManager extends React.PureComponent {
|
|
|
1192
1231
|
render() {
|
|
1193
1232
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1194
1233
|
const { className, children, routeInfo, forwardedRef, ...props } = this.props;
|
|
1234
|
+
// Only set "ion-page" in JSX. User classes are managed via DOM in componentDidMount/componentDidUpdate
|
|
1235
|
+
// to preserve framework-added classes (can-go-back, ion-page-invisible, etc.) when className prop changes.
|
|
1195
1236
|
return (jsx(IonLifeCycleContext.Consumer, { children: (context) => {
|
|
1196
1237
|
this.ionLifeCycleContext = context;
|
|
1197
|
-
return (jsx("div", { className:
|
|
1238
|
+
return (jsx("div", { className: "ion-page", ref: this.stableMergedRefs, ...props, children: children }));
|
|
1198
1239
|
} }));
|
|
1199
1240
|
}
|
|
1200
1241
|
static get contextType() {
|
|
@@ -1254,7 +1295,7 @@ const ReactDelegate = (addView, removeView) => {
|
|
|
1254
1295
|
};
|
|
1255
1296
|
};
|
|
1256
1297
|
|
|
1257
|
-
const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$
|
|
1298
|
+
const IonNavInner = createReactComponent('ion-nav', undefined, undefined, defineCustomElement$1m);
|
|
1258
1299
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1259
1300
|
const IonNavInternal = ({ children, forwardedRef, ...restOfProps }) => {
|
|
1260
1301
|
const [views, setViews] = useState([]);
|
|
@@ -1333,10 +1374,10 @@ class OutletPageManager extends React.Component {
|
|
|
1333
1374
|
this.ionLifeCycleContext.ionViewDidLeave();
|
|
1334
1375
|
}
|
|
1335
1376
|
render() {
|
|
1336
|
-
const { StackManager, children, routeInfo, ...props } = this.props;
|
|
1377
|
+
const { StackManager, children, routeInfo, id, ...props } = this.props;
|
|
1337
1378
|
return (jsx(IonLifeCycleContext.Consumer, { children: (context) => {
|
|
1338
1379
|
this.ionLifeCycleContext = context;
|
|
1339
|
-
return (jsx(StackManager, { routeInfo: routeInfo, children: jsx(IonRouterOutletInner, { setRef: (val) => (this.ionRouterOutlet = val), ...props, children: children }) }));
|
|
1380
|
+
return (jsx(StackManager, { id: id, routeInfo: routeInfo, children: jsx(IonRouterOutletInner, { id: id, setRef: (val) => (this.ionRouterOutlet = val), ...props, children: children }) }));
|
|
1340
1381
|
} }));
|
|
1341
1382
|
}
|
|
1342
1383
|
static get contextType() {
|
|
@@ -1347,11 +1388,13 @@ class OutletPageManager extends React.Component {
|
|
|
1347
1388
|
class IonRouterOutletContainer extends React.Component {
|
|
1348
1389
|
constructor(props) {
|
|
1349
1390
|
super(props);
|
|
1391
|
+
this.outletId = props.id ?? `routerOutlet-${generateId('routerOutlet')}`;
|
|
1350
1392
|
}
|
|
1351
1393
|
render() {
|
|
1352
1394
|
const StackManager = this.context.getStackManager();
|
|
1353
1395
|
const { children, forwardedRef, ...props } = this.props;
|
|
1354
|
-
|
|
1396
|
+
const outletId = props.id ?? this.outletId;
|
|
1397
|
+
return this.context.hasIonicRouter() ? (props.ionPage ? (jsx(OutletPageManager, { StackManager: StackManager, routeInfo: this.context.routeInfo, ...props, children: children })) : (jsx(StackManager, { routeInfo: this.context.routeInfo, id: outletId, children: jsx(IonRouterOutletInner, { ...props, id: outletId, forwardedRef: forwardedRef, children: children }) }))) : (jsx(IonRouterOutletInner, { ref: forwardedRef, ...this.props, children: this.props.children }));
|
|
1355
1398
|
}
|
|
1356
1399
|
static get contextType() {
|
|
1357
1400
|
return NavContext;
|
|
@@ -1548,7 +1591,9 @@ const matchesTab = (pathname, href) => {
|
|
|
1548
1591
|
if (href === undefined) {
|
|
1549
1592
|
return false;
|
|
1550
1593
|
}
|
|
1551
|
-
|
|
1594
|
+
// Strip query string before comparing — href may contain search params (e.g., "/tabs/home?foo=bar")
|
|
1595
|
+
const hrefPathname = href.split('?')[0];
|
|
1596
|
+
const normalizedHref = hrefPathname.endsWith('/') && hrefPathname !== '/' ? hrefPathname.slice(0, -1) : hrefPathname;
|
|
1552
1597
|
return pathname === normalizedHref || pathname.startsWith(normalizedHref + '/');
|
|
1553
1598
|
};
|
|
1554
1599
|
class IonTabBarUnwrapped extends React.PureComponent {
|
|
@@ -1640,7 +1685,7 @@ class IonTabBarUnwrapped extends React.PureComponent {
|
|
|
1640
1685
|
const prevHref = state.tabs[prevActiveTab].currentHref;
|
|
1641
1686
|
const prevRouteOptions = state.tabs[prevActiveTab].currentRouteOptions;
|
|
1642
1687
|
if (activeTab !== prevActiveTab ||
|
|
1643
|
-
prevHref !== props.routeInfo?.pathname ||
|
|
1688
|
+
prevHref !== (props.routeInfo?.pathname || '') + (props.routeInfo?.search || '') ||
|
|
1644
1689
|
prevRouteOptions !== props.routeInfo?.routeOptions) {
|
|
1645
1690
|
tabs[activeTab] = {
|
|
1646
1691
|
originalHref: tabs[activeTab].originalHref,
|
|
@@ -1707,7 +1752,7 @@ class IonTabBarUnwrapped extends React.PureComponent {
|
|
|
1707
1752
|
return (child) => {
|
|
1708
1753
|
if (child != null && child.props && (child.type === IonTabButton || child.type.isTabButton)) {
|
|
1709
1754
|
const href = child.props.tab === activeTab
|
|
1710
|
-
? this.props.routeInfo?.pathname
|
|
1755
|
+
? (this.props.routeInfo?.pathname || '') + (this.props.routeInfo?.search || '')
|
|
1711
1756
|
: this.state.tabs[child.props.tab].currentHref;
|
|
1712
1757
|
const routeOptions = child.props.tab === activeTab
|
|
1713
1758
|
? this.props.routeInfo?.routeOptions
|
|
@@ -1832,20 +1877,6 @@ class IonRoute extends React.PureComponent {
|
|
|
1832
1877
|
}
|
|
1833
1878
|
}
|
|
1834
1879
|
|
|
1835
|
-
class IonRedirect extends React.PureComponent {
|
|
1836
|
-
render() {
|
|
1837
|
-
const IonRedirectInner = this.context.getIonRedirect();
|
|
1838
|
-
if (!this.context.hasIonicRouter() || !IonRedirect) {
|
|
1839
|
-
console.error('You either do not have an Ionic Router package, or your router does not support using <IonRedirect>');
|
|
1840
|
-
return null;
|
|
1841
|
-
}
|
|
1842
|
-
return jsx(IonRedirectInner, { ...this.props });
|
|
1843
|
-
}
|
|
1844
|
-
static get contextType() {
|
|
1845
|
-
return NavContext;
|
|
1846
|
-
}
|
|
1847
|
-
}
|
|
1848
|
-
|
|
1849
1880
|
const IonRouterContext = React.createContext({
|
|
1850
1881
|
routeInfo: undefined, // TODO(FW-2959): type
|
|
1851
1882
|
push: () => {
|
|
@@ -2026,7 +2057,7 @@ function useController(displayName, controller, defineCustomElement) {
|
|
|
2026
2057
|
* @returns Returns the present and dismiss methods in an array
|
|
2027
2058
|
*/
|
|
2028
2059
|
function useIonActionSheet() {
|
|
2029
|
-
const controller = useController('IonActionSheet', actionSheetController, defineCustomElement$
|
|
2060
|
+
const controller = useController('IonActionSheet', actionSheetController, defineCustomElement$1c);
|
|
2030
2061
|
const present = useCallback((buttonsOrOptions, header) => {
|
|
2031
2062
|
if (Array.isArray(buttonsOrOptions)) {
|
|
2032
2063
|
return controller.present({
|
|
@@ -2046,7 +2077,7 @@ function useIonActionSheet() {
|
|
|
2046
2077
|
* @returns Returns the present and dismiss methods in an array
|
|
2047
2078
|
*/
|
|
2048
2079
|
function useIonAlert() {
|
|
2049
|
-
const controller = useController('IonAlert', alertController, defineCustomElement$
|
|
2080
|
+
const controller = useController('IonAlert', alertController, defineCustomElement$18);
|
|
2050
2081
|
const present = useCallback((messageOrOptions, buttons) => {
|
|
2051
2082
|
if (typeof messageOrOptions === 'string') {
|
|
2052
2083
|
return controller.present({
|
|
@@ -2066,7 +2097,7 @@ function useIonAlert() {
|
|
|
2066
2097
|
* @returns Returns the present and dismiss methods in an array
|
|
2067
2098
|
*/
|
|
2068
2099
|
function useIonToast() {
|
|
2069
|
-
const controller = useController('IonToast', toastController, defineCustomElement$
|
|
2100
|
+
const controller = useController('IonToast', toastController, defineCustomElement$1a);
|
|
2070
2101
|
const present = useCallback((messageOrOptions, duration) => {
|
|
2071
2102
|
if (typeof messageOrOptions === 'string') {
|
|
2072
2103
|
return controller.present({
|
|
@@ -2152,7 +2183,7 @@ function useOverlay(displayName, controller, defineCustomElement, component, com
|
|
|
2152
2183
|
* @returns Returns the present and dismiss methods in an array
|
|
2153
2184
|
*/
|
|
2154
2185
|
function useIonModal(component, componentProps) {
|
|
2155
|
-
const controller = useOverlay('IonModal', modalController, defineCustomElement$
|
|
2186
|
+
const controller = useOverlay('IonModal', modalController, defineCustomElement$1d, component, componentProps);
|
|
2156
2187
|
const present = useCallback((options = {}) => {
|
|
2157
2188
|
controller.present(options);
|
|
2158
2189
|
}, [controller.present]);
|
|
@@ -2167,7 +2198,7 @@ function useIonModal(component, componentProps) {
|
|
|
2167
2198
|
* @returns Returns the present and dismiss methods in an array
|
|
2168
2199
|
*/
|
|
2169
2200
|
function useIonPopover(component, componentProps) {
|
|
2170
|
-
const controller = useOverlay('IonPopover', popoverController, defineCustomElement$
|
|
2201
|
+
const controller = useOverlay('IonPopover', popoverController, defineCustomElement$1e, component, componentProps);
|
|
2171
2202
|
const present = useCallback((options = {}) => {
|
|
2172
2203
|
controller.present(options);
|
|
2173
2204
|
}, [controller.present]);
|
|
@@ -2180,7 +2211,7 @@ function useIonPopover(component, componentProps) {
|
|
|
2180
2211
|
* @deprecated Use the inline ion-picker component instead.
|
|
2181
2212
|
*/
|
|
2182
2213
|
function useIonPicker() {
|
|
2183
|
-
const controller = useController('IonPicker', pickerController, defineCustomElement$
|
|
2214
|
+
const controller = useController('IonPicker', pickerController, defineCustomElement$1b);
|
|
2184
2215
|
const present = useCallback((columnsOrOptions, buttons) => {
|
|
2185
2216
|
if (Array.isArray(columnsOrOptions)) {
|
|
2186
2217
|
return controller.present({
|
|
@@ -2200,7 +2231,7 @@ function useIonPicker() {
|
|
|
2200
2231
|
* @returns Returns the present and dismiss methods in an array
|
|
2201
2232
|
*/
|
|
2202
2233
|
function useIonLoading() {
|
|
2203
|
-
const controller = useController('IonLoading', loadingController, defineCustomElement$
|
|
2234
|
+
const controller = useController('IonLoading', loadingController, defineCustomElement$19);
|
|
2204
2235
|
const present = useCallback((messageOrOptions = {}, duration, spinner) => {
|
|
2205
2236
|
if (typeof messageOrOptions === 'string') {
|
|
2206
2237
|
return controller.present({
|
|
@@ -2242,6 +2273,7 @@ const RouteManagerContext = /*@__PURE__*/ React.createContext({
|
|
|
2242
2273
|
findLeavingViewItemByRouteInfo: () => undefined,
|
|
2243
2274
|
findViewItemByRouteInfo: () => undefined,
|
|
2244
2275
|
getChildrenToRender: () => undefined,
|
|
2276
|
+
getViewItemsForOutlet: () => [],
|
|
2245
2277
|
goBack: () => undefined,
|
|
2246
2278
|
unMountViewItem: () => undefined,
|
|
2247
2279
|
});
|
|
@@ -2360,7 +2392,14 @@ class LocationHistory {
|
|
|
2360
2392
|
_replace(routeInfo) {
|
|
2361
2393
|
const routeInfos = this._getRouteInfosByKey(routeInfo.tab);
|
|
2362
2394
|
routeInfos && routeInfos.pop();
|
|
2363
|
-
|
|
2395
|
+
// Get the current route that's being replaced
|
|
2396
|
+
const currentRoute = this.locationHistory[this.locationHistory.length - 1];
|
|
2397
|
+
// Only pop from global history if we're replacing in the same outlet context.
|
|
2398
|
+
// Don't pop if we're entering a nested outlet (current route has no tab, new route has a tab)
|
|
2399
|
+
const isEnteringNestedOutlet = currentRoute && !currentRoute.tab && !!routeInfo.tab;
|
|
2400
|
+
if (!isEnteringNestedOutlet) {
|
|
2401
|
+
this.locationHistory.pop();
|
|
2402
|
+
}
|
|
2364
2403
|
this._add(routeInfo);
|
|
2365
2404
|
}
|
|
2366
2405
|
_clear() {
|
|
@@ -2392,6 +2431,20 @@ class LocationHistory {
|
|
|
2392
2431
|
}
|
|
2393
2432
|
return undefined;
|
|
2394
2433
|
}
|
|
2434
|
+
/**
|
|
2435
|
+
* Returns the most recent RouteInfo in global history (excluding the current
|
|
2436
|
+
* entry) whose pathname matches the given value. Unlike findLastLocation,
|
|
2437
|
+
* this search is tab-agnostic. Used by the multi-step back detection.
|
|
2438
|
+
*/
|
|
2439
|
+
findLastLocationByPathname(pathname) {
|
|
2440
|
+
for (let i = this.locationHistory.length - 2; i >= 0; i--) {
|
|
2441
|
+
const ri = this.locationHistory[i];
|
|
2442
|
+
if (ri && ri.pathname === pathname) {
|
|
2443
|
+
return ri;
|
|
2444
|
+
}
|
|
2445
|
+
}
|
|
2446
|
+
return undefined;
|
|
2447
|
+
}
|
|
2395
2448
|
findLastLocation(routeInfo) {
|
|
2396
2449
|
const routeInfos = this._getRouteInfosByKey(routeInfo.tab);
|
|
2397
2450
|
if (routeInfos) {
|
|
@@ -2423,6 +2476,17 @@ class LocationHistory {
|
|
|
2423
2476
|
canGoBack() {
|
|
2424
2477
|
return this.locationHistory.length > 1;
|
|
2425
2478
|
}
|
|
2479
|
+
findTabForPathname(pathname) {
|
|
2480
|
+
for (const tab of Object.keys(this.tabHistory)) {
|
|
2481
|
+
const routeInfos = this.tabHistory[tab];
|
|
2482
|
+
for (let i = routeInfos.length - 1; i >= 0; i--) {
|
|
2483
|
+
if (routeInfos[i].pathname === pathname) {
|
|
2484
|
+
return tab;
|
|
2485
|
+
}
|
|
2486
|
+
}
|
|
2487
|
+
}
|
|
2488
|
+
return undefined;
|
|
2489
|
+
}
|
|
2426
2490
|
}
|
|
2427
2491
|
|
|
2428
2492
|
class NavManager extends React.PureComponent {
|
|
@@ -2443,10 +2507,8 @@ class NavManager extends React.PureComponent {
|
|
|
2443
2507
|
goBack: this.goBack.bind(this),
|
|
2444
2508
|
hasIonicRouter: () => true,
|
|
2445
2509
|
navigate: this.navigate.bind(this),
|
|
2446
|
-
getIonRedirect: this.getIonRedirect.bind(this),
|
|
2447
2510
|
getIonRoute: this.getIonRoute.bind(this),
|
|
2448
2511
|
getStackManager: this.getStackManager.bind(this),
|
|
2449
|
-
getPageManager: this.getPageManager.bind(this),
|
|
2450
2512
|
routeInfo: this.props.routeInfo,
|
|
2451
2513
|
setCurrentTab: this.props.onSetCurrentTab,
|
|
2452
2514
|
changeTab: this.props.onChangeTab,
|
|
@@ -2479,12 +2541,6 @@ class NavManager extends React.PureComponent {
|
|
|
2479
2541
|
navigate(path, direction = 'forward', action = 'push', animationBuilder, options, tab) {
|
|
2480
2542
|
this.props.onNavigate(path, action, direction, animationBuilder, options, tab);
|
|
2481
2543
|
}
|
|
2482
|
-
getPageManager() {
|
|
2483
|
-
return PageManager;
|
|
2484
|
-
}
|
|
2485
|
-
getIonRedirect() {
|
|
2486
|
-
return this.props.ionRedirect;
|
|
2487
|
-
}
|
|
2488
2544
|
getIonRoute() {
|
|
2489
2545
|
return this.props.ionRoute;
|
|
2490
2546
|
}
|
|
@@ -2514,10 +2570,7 @@ class ViewStacks {
|
|
|
2514
2570
|
}
|
|
2515
2571
|
}
|
|
2516
2572
|
clear(outletId) {
|
|
2517
|
-
|
|
2518
|
-
return setTimeout(() => {
|
|
2519
|
-
delete this.viewStacks[outletId];
|
|
2520
|
-
}, 500);
|
|
2573
|
+
delete this.viewStacks[outletId];
|
|
2521
2574
|
}
|
|
2522
2575
|
getViewItemsForOutlet(outletId) {
|
|
2523
2576
|
return this.viewStacks[outletId] || [];
|
|
@@ -2546,5 +2599,5 @@ class ViewStacks {
|
|
|
2546
2599
|
}
|
|
2547
2600
|
}
|
|
2548
2601
|
|
|
2549
|
-
export { CreateAnimation, DefaultIonLifeCycleContext, IonAccordion, IonAccordionGroup, IonActionSheet, IonAlert, IonApp, IonAvatar, IonBackButton, IonBackdrop, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonChip, IonCol, IonContent, IonDatetime, IonDatetimeButton,
|
|
2602
|
+
export { CreateAnimation, DefaultIonLifeCycleContext, IonAccordion, IonAccordionGroup, IonActionSheet, IonAlert, IonApp, IonAvatar, IonBackButton, IonBackdrop, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonButton, IonButtons, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonCheckbox, IonChip, IonCol, IonContent, IonDatetime, IonDatetimeButton, IonFab, IonFabButton, IonFabList, IonFooter, IonGrid, IonHeader, IonIcon, IonImg, IonInfiniteScroll, IonInfiniteScrollContent, IonInput, IonInputOtp, IonInputPasswordToggle, IonItem, IonItemDivider, IonItemGroup, IonItemOption, IonItemOptions, IonItemSliding, IonLabel, IonLifeCycleContext, IonList, IonListHeader, IonLoading, IonMenu, IonMenuButton, IonMenuToggle, IonModal, IonNav, IonNavLink, IonNote, IonPage, IonPicker, IonPickerColumn, IonPickerColumnOption, IonPickerLegacy, IonPopover, IonProgressBar, IonRadio, IonRadioGroup, IonRange, IonRefresher, IonRefresherContent, IonReorder, IonReorderGroup, IonRippleEffect, IonRoute, IonRouterContext, IonRouterLink, IonRouterOutlet, IonRow, IonSearchbar, IonSegment, IonSegmentButton, IonSegmentContent, IonSegmentView, IonSelect, IonSelectModal, IonSelectOption, IonSkeletonText, IonSpinner, IonSplitPane, IonTab, IonTabBar, IonTabButton, IonTabs, IonTabsContext, IonText, IonTextarea, IonThumbnail, IonTitle, IonToast, IonToggle, IonToolbar, LocationHistory, NavContext, NavManager, RouteManagerContext, StackContext, ViewLifeCycleManager, ViewStacks, generateId, getConfig, getPlatforms, isPlatform, setupIonicReact, useIonActionSheet, useIonAlert, useIonLoading, useIonModal, useIonPicker, useIonPopover, useIonRouter, useIonToast, useIonViewDidEnter, useIonViewDidLeave, useIonViewWillEnter, useIonViewWillLeave, withIonLifeCycle };
|
|
2550
2603
|
//# sourceMappingURL=index.js.map
|